| Summary: | Missing files in qscintilla-python cause pyuic4 to generate Python code with broken import | ||
|---|---|---|---|
| Product: | [Fedora] Fedora EPEL | Reporter: | Kuan-Yi Li <kyli.tw> |
| Component: | qscintilla | Assignee: | Rex Dieter <rdieter> |
| Status: | NEW --- | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | medium | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | epel7 | CC: | dennis, rdieter |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | Type: | Bug | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
Oops! Version-Release number should be 2.8-1. Anyone seeing this? I think you should file this bug against PyQt4, and ask that those files a no longer explicitly removed. I don't think this is fixable here (in qscintilla packaging). |
Description of problem: In RHEL/CentOS 7, unlike in RHEL/CentOS 6, certain files in widget-plugins are explicitly removed from official PyQt4 package. *** excerpt from official PyQt4.spec *** # qscintilla %if ! 0%{?qscintilla} rm -rf %{buildroot}%{python3_sitearch}/PyQt4/uic/widget-plugins/qscintilla* \ %{buildroot}%{python_sitearch}/PyQt4/uic/widget-plugins/qscintilla* %endif # webkit %if ! 0%{?webkit} rm -rf %{buildroot}%{python3_sitearch}/PyQt4/uic/widget-plugins/qtwebkit* \ %{buildroot}%{python_sitearch}/PyQt4/uic/widget-plugins/qtwebkit* %endif *** end of excerpt *** Files like qscintilla.py in widget-plugins should be added back when installing qscintilla-python -- otherwise pyuic4 will generate code with broken import while processing .ui files that use Qsci. As other widget-plugins are placed in official PyQt4 package, I would personally suggest following changes: 1. Put qscintilla.py into qscintilla-python package 2. Make qscintilla-python-devel requires qscintilla-python Version-Release number of selected component (if applicable): 2.4-1 How reproducible: Always Steps to Reproduce: 1. Install PyQt4, PyQt4-devel, qscintilla-python, qscintilla-python-devel 2. cd /tmp 3. wget https://github.com/qgis/QGIS/raw/release-2_8/python/console/console_compile_apis.ui 4. pyuic4 console_compile_apis.ui --output=ui_console_compile_apis.py 6. pyuic4 --debug --preview console_compile_apis.ui Actual results: Program exits with error. Traceback (most recent call last): File "/usr/lib64/python2.7/site-packages/PyQt4/uic/port_v2/invoke.py", line 39, in invoke exit_status = driver.invoke() File "/usr/lib64/python2.7/site-packages/PyQt4/uic/driver.py", line 62, in invoke return self._preview() File "/usr/lib64/python2.7/site-packages/PyQt4/uic/driver.py", line 76, in _preview widget = loadUi(self._ui_file) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/__init__.py", line 238, in loadUi return DynamicUILoader(package).loadUi(uifile, baseinstance, resource_suffix) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/Loader/loader.py", line 71, in loadUi return self.parse(filename, resource_suffix, basedir) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 933, in parse actor(elem) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 772, in createUserInterface self.traverseWidgetTree(elem) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 750, in traverseWidgetTree handler(self, child) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 461, in createLayout self.traverseWidgetTree(elem) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 750, in traverseWidgetTree handler(self, child) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 504, in handleItem self.traverseWidgetTree(elem) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 750, in traverseWidgetTree handler(self, child) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 215, in createWidget self.stack.push(self.setupObject(widget_class, parent, elem)) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line 176, in setupObject obj = self.factory.createQObject(clsname, name, args, is_attribute) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/objcreator.py", line 106, in createQObject factory = self.findQObjectType(classname) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/objcreator.py", line 131, in findQObjectType w = module.search(classname) File "/usr/lib64/python2.7/site-packages/PyQt4/uic/Loader/qobjectcreator.py", line 107, in search module = __import__(mname, {}, {}, (cls,)) ImportError: No module named Qsci.qsciscintilla Expected results: A window should open without error. If everything works correctly, generated Python code (ui_console_compile_apis.py) should end with "from PyQt4 import Qsci" instead of "from Qsci.qsciscintilla import QsciScintilla". Additional info: Same problem exists in package "PyQt4-webkit".