Spec URL: http://fitzsim.org/packages/NanoEngineer-1.spec SRPM URL: http://fitzsim.org/packages/NanoEngineer-1-1.1.1.12-1.fc11.src.rpm Description: NanoEngineer-1 is a 3D multi-scale modeling and simulation program for nano-composites with special support for structural DNA nanotechnology.
Summary: a few minor points, and one more major one: - Can you verify that the license really is GPLv2+ and not GPLv2? - It would be helpful to add comments indicating what each of the patches does - The rpmlint output warns on the explicit Require: libgle after the renaming; please verify that it's really needed - Please create a .desktop file for the GUI application - My local build of this package segfaults when I run the NanoEngineer-1 executable. :( Here's the full checklist: [+] MUST: rpmlint must be run on every package. The output should be posted in the review. With the s/gle/libgle/ modification, I get this: NanoEngineer-1.x86_64: E: explicit-lib-dependency libgle This is probably not an issue, as the package doesn't have an automatic dependency on libgle from anything else, but can you confirm that it really does need libgle at runtime? [+] MUST: The package must be named according to the Package Naming Guidelines . [+] MUST: The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption. [+] MUST: The package must be licensed with a Fedora approved license and meet the Licensing Guidelines . [+] MUST: The License field in the package spec file must match the actual license. -- As far as I can tell, the combined package is GPLv2 -- how do you get the +? (I'm prepared to be convinced because of all of the other License files shipped for libraries that it links against) [+] MUST: If (and only if) the source package includes the text of the license(s) in its own file, then that file, containing the text of the license(s) for the package must be included in %doc. [+] MUST: The spec file must be written in American English. [5] [+] MUST: The spec file for the package MUST be legible. [6] [+] MUST: The sources used to build the package must match the upstream source, as provided in the spec URL. Reviewers should use md5sum for this task. If no upstream URL can be specified for this package, please see the Source URL Guidelines for how to deal with this. -- md5sum Downloads/NanoEngineer-1_Suite_v1.1.1.12.tar.gz rpmbuild/SOURCES/NanoEngineer-1_Suite_v1.1.1.12.tar.gz 65646dc685d14156631d6c31d95b1b56 Downloads/NanoEngineer-1_Suite_v1.1.1.12.tar.gz 65646dc685d14156631d6c31d95b1b56 rpmbuild/SOURCES/NanoEngineer-1_Suite_v1.1.1.12.tar.gz [+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture. [7] [+] MUST: All build dependencies must be listed in BuildRequires, except for any that are listed in the exceptions section of the Packaging Guidelines ; inclusion of those as BuildRequires is optional. Apply common sense. -- Looks good, and it was nice of upstream to create the page you reference. Don't forget to change "gle" to "libgle" [+] MUST: A package must own all directories that it creates. If it does not create a directory that it uses, then it should require a package which does create that directory. [13] [+] MUST: A Fedora package must not list a file more than once in the spec file's %files listings. [14] [+] MUST: Permissions on files must be set properly. Executables should be set with executable permissions, for example. Every %files section must include a %defattr(...) line. [15] [+] MUST: Each package must have a %clean section, which contains rm -rf %{buildroot} (or $RPM_BUILD_ROOT). [16] [+] MUST: Each package must consistently use macros. [17] [+] MUST: The package must contain code, or permissable content. [18] [+] MUST: If a package includes something as %doc, it must not affect the runtime of the application. To summarize: If it is in %doc, the program must run properly if it is not present. [19] [-] MUST: Packages containing GUI applications must include a %{name}.desktop file, and that file must be properly installed with desktop-file-install in the %install section. [+] MUST: Packages must not own files or directories already owned by other packages. [+] MUST: At the beginning of %install, each package MUST run rm -rf %{buildroot} (or $RPM_BUILD_ROOT). [26] [+] MUST: All filenames in rpm packages must be valid UTF-8. [27] [*] SHOULD: The reviewer should test that the package builds in mock. [30] -- Can't test this yet until libgle gets accepted [-] SHOULD: The reviewer should test that the package functions as described. A package should not segfault instead of running, for example. I built this package locally on my x86_64, Fedora 12 machine, and here's what happened when I try to run it: starting NanoEngineer-1 in [/home/mef3], Mon Nov 30 11:14:04 2009 using Python: 2.6.2 (r262:71600, Aug 21 2009, 12:23:57) [GCC 4.4.1 20090818 (Red Hat 4.4.1-6)] on path: /usr/bin/python Version: NanoEngineer-1 v1.1.1 (running a GPL distribution) enabling developer features DISABLE_SLOT_ARGCOUNT_RETRY = True samevals.so/dll or Numeric not available, not using SAMEVALS_SPEEDUP made prefs db, basename /home/mef3/Nanorex/Preferences/bsddb-shelf didn't find /home/mef3/Nanorex/Preferences/default_prefs_v1-1-1.txt note: KNOWN_MMPFORMAT_VERSIONS contains more recent versions than the one we're writing by default, '080327 required; 080529 preferred' (saving history in file "/home/mef3/Nanorex/Histories/h20091130-111407.txt") Traceback (most recent call last): File "./main.py", line 142, in <module> File "./main.py", line 137, in _start_NE1 File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_startup/main_startup.py", line 201, in startup_script foo = MWsemantics() # This does a lot of initialization (in MainWindow.__init__) File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/MWsemantics.py", line 192, in __init__ self.setupUi() # Ui_MainWindow.setupUi() File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/Ui_MainWindow.py", line 97, in setupUi self.commandToolbar = CommandToolbar(self) File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/commandToolbar/CommandToolbar.py", line 162, in __init__ self.setupUi() File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/toolbars/Ui_CommandToolbar.py", line 171, in setupUi self.flyoutToolBar = FlyoutToolBar(self) File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/toolbars/FlyoutToolbar.py", line 35, in __init__ self._setExtensionButtonIcon() File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/toolbars/FlyoutToolbar.py", line 71, in _setExtensionButtonIcon extension_button.setIcon(geticon( AttributeError: 'NoneType' object has no attribute 'setIcon'
Created attachment 378154 [details] x86-64 Fedora 12 Live USB installation package list I just tried this on an x86-64 Fedora 12 Live USB installation and it works as well as on x86. Sometimes on startup the UI hangs, and a forced quit is required, but most of the time the UI comes up without incident. I've attached the sorted package list from my test system. Can you compare this with yours? Also, did you try restarting NanoEngineer-1 after you saw the crash?
I updated my Live USB system to the latest Fedora 12 packages and I still can't replicate the crash.
I fixed the UI hang on startup -- see NanoEngineer-1_Suite_v1.1.1.12-fix-startup-hang.patch -- and made all the changes you requested. Here are the updated spec and SRPM files: http://fitzsim.org/packages/NanoEngineer-1.spec http://fitzsim.org/packages/NanoEngineer-1-1.1.1.12-0.2.fc12.src.rpm Please review and retest these on your x86-64 machine.
The new package looks good, except that it still crashes on my computer :( starting NanoEngineer-1 in [/home/mef3], Mon Jan 18 12:11:23 2010 using Python: 2.6.2 (r262:71600, Jan 8 2010, 22:06:26) [GCC 4.4.2 20091222 (Red Hat 4.4.2-20)] on path: /usr/bin/python Version: NanoEngineer-1 v1.1.1 (running a GPL distribution) enabling developer features DISABLE_SLOT_ARGCOUNT_RETRY = True samevals.so/dll or Numeric not available, not using SAMEVALS_SPEEDUP prefs db already existed, basename /home/mef3/Nanorex/Preferences/bsddb-shelf note: KNOWN_MMPFORMAT_VERSIONS contains more recent versions than the one we're writing by default, '080327 required; 080529 preferred' (saving history in file "/home/mef3/Nanorex/Histories/h20100118-121124.txt") Traceback (most recent call last): File "./main.py", line 142, in <module> File "./main.py", line 137, in _start_NE1 File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_startup/main_startup.py", line 201, in startup_script foo = MWsemantics() # This does a lot of initialization (in MainWindow.__init__) File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/MWsemantics.py", line 192, in __init__ self.setupUi() # Ui_MainWindow.setupUi() File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/Ui_MainWindow.py", line 97, in setupUi self.commandToolbar = CommandToolbar(self) File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/commandToolbar/CommandToolbar.py", line 162, in __init__ self.setupUi() File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/toolbars/Ui_CommandToolbar.py", line 171, in setupUi self.flyoutToolBar = FlyoutToolBar(self) File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/toolbars/FlyoutToolbar.py", line 35, in __init__ self._setExtensionButtonIcon() File "/usr/lib64/NanoEngineer-1_0.9.2.app/program/ne1_ui/toolbars/FlyoutToolbar.py", line 71, in _setExtensionButtonIcon extension_button.setIcon(geticon( AttributeError: 'NoneType' object has no attribute 'setIcon'
p.s -- I had a crazy thought that the crash have to do with the fact I'm running KDE, but I just tried logging into Gnome and the same thing happened.
What video hardware do you have?
Mary, can you provide more information about your hardware configuration? I'll have to try to replicate your setup so that I can debug the crash.
Sorry, I was on the road for a while -- I have an nVidia graphics card in this machine, and unfortunately the only driver that properly works for on my hardware setup is the proprietary driver so that's what I'm running. :( I'll test things on my (Intel) laptop today and see if the crash happens there too ...
Hi Mary, Have you had a chance to test these NE-1 packages on your Intel laptop?
It crashes for me, too, with AMD cpu and ATI video. I'm guessing it's a bug somewhere in /usr/lib/NanoEngineer-1_0.9.2.app/program/utilities/icon_utilites.py, which is where geticon() lives, but my PyQT4-fu is weak.
Aha, here's a thought -- I'm using the PyQt4 from the kde-redhat repository, not from the F12 main repo. Wonder if that has something to do with it ...
I doubt it, mine's from F12.
(In reply to comment #12) > Aha, here's a thought -- I'm using the PyQt4 from the kde-redhat repository, > not from the F12 main repo. Wonder if that has something to do with it ... No, going to the version from updates didn't seem to change it :(
OK, thanks for the further testing. It looks like FlyoutToolBar.getExtensionButton() can fail to find the button if the order or number of children returned by QToolbar.children() changes. I've patched the search to be order-independent. Can you try this new release? http://fitzsim.org/packages/NanoEngineer-1.spec http://fitzsim.org/packages/NanoEngineer-1-1.1.1.12-0.3.fc12.src.rpm
(In reply to comment #12) > Aha, here's a thought -- I'm using the PyQt4 from the kde-redhat repository, > not from the F12 main repo. Wonder if that has something to do with it ... That doesn't matter. See FlyoutToolbar.py:74: def getExtensionButton(self): """ Returns the extension popup indicator toolbutton ">>" """ btn = None clist = self.children() if len(clist) > 2: if isinstance(clist[2], QToolButton): btn = clist[2] return btn The clist[2] is none, which is later passed to the function _setExtensionButtonIcon in line 65. One solution would be to patch that last function from: extension_button = self.getExtensionButton() extension_button.setIcon(geticon( "ui/actions/Command Toolbar/ExtensionButtonImage.png")) to: extension_button = self.getExtensionButton() if extension_button: extension_button.setIcon(geticon( "ui/actions/Command Toolbar/ExtensionButtonImage.png")) So there won't be an icon in that case (and maybe breaking something else). Please test that... You should query upstream to ask what exactly could break or so... (I didn't watch anything else at this package, just noticed this because of Marys' post on the devel list.)
The patched version no longer crashes, but the toolbar looks kind of bad ... I'll post two pictures of what it looks like before and after I resize the window.
Created attachment 403777 [details] NanoEngineer-1 window before resizing
Created attachment 403778 [details] NanoEngineer-1 window after resizing
Mary, can you run NanoEngineer-1 in a terminal window and post the output?
Also, if you horizontally shrink the window until the "Atoms DNA Nanotube..." toolbar can't fit fully in the available space, do you see the extension button image on the right end of the toolbar?
I'm going to withdraw this package request for now. There were stability problems with the NE-1 GUI on Fedora 12, uncovered by Mary's testing. On Fedora 13 on my machine the GUI hangs on startup. Upstream is currently dormant so it's unlikely these stability issues will be resolved any time soon. That said, I will keep the SPEC files and SRPMs accessible on my website so that if upstream is revived and stabilizes we'll have a good starting point for Fedora integration. Closing WONTFIX.