Bug 541765 - Review Request: NanoEngineer-1 - Nano-composite modeling and simulation program
Summary: Review Request: NanoEngineer-1 - Nano-composite modeling and simulation program
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Mary Ellen Foster
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 526426
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-11-27 01:20 UTC by Thomas Fitzsimmons
Modified: 2010-08-25 03:57 UTC (History)
6 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2010-08-25 03:57:26 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
x86-64 Fedora 12 Live USB installation package list (38.76 KB, text/plain)
2009-12-14 07:13 UTC, Thomas Fitzsimmons
no flags Details
NanoEngineer-1 window before resizing (102.19 KB, image/png)
2010-03-31 16:07 UTC, Mary Ellen Foster
no flags Details
NanoEngineer-1 window after resizing (121.70 KB, image/png)
2010-03-31 16:07 UTC, Mary Ellen Foster
no flags Details

Description Thomas Fitzsimmons 2009-11-27 01:20:00 UTC
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.

Comment 1 Mary Ellen Foster 2009-11-30 11:22:56 UTC
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'

Comment 2 Thomas Fitzsimmons 2009-12-14 07:13:38 UTC
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?

Comment 3 Thomas Fitzsimmons 2009-12-15 17:39:42 UTC
I updated my Live USB system to the latest Fedora 12 packages and I still can't replicate the crash.

Comment 4 Thomas Fitzsimmons 2009-12-21 07:49:11 UTC
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.

Comment 5 Mary Ellen Foster 2010-01-18 12:11:52 UTC
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'

Comment 6 Mary Ellen Foster 2010-01-18 12:28:22 UTC
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.

Comment 7 Thomas Fitzsimmons 2010-01-22 18:33:30 UTC
What video hardware do you have?

Comment 8 Thomas Fitzsimmons 2010-01-28 23:16:44 UTC
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.

Comment 9 Mary Ellen Foster 2010-02-01 11:22:28 UTC
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 ...

Comment 10 Thomas Fitzsimmons 2010-03-04 02:22:41 UTC
Hi Mary,

Have you had a chance to test these NE-1 packages on your Intel laptop?

Comment 11 Gwyn Ciesla 2010-03-31 13:28:23 UTC
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.

Comment 12 Mary Ellen Foster 2010-03-31 13:36:16 UTC
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 ...

Comment 13 Gwyn Ciesla 2010-03-31 13:43:50 UTC
I doubt it, mine's from F12.

Comment 14 Mary Ellen Foster 2010-03-31 13:44:26 UTC
(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 :(

Comment 15 Thomas Fitzsimmons 2010-03-31 14:58:41 UTC
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

Comment 16 Thomas Spura 2010-03-31 15:44:23 UTC
(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.)

Comment 17 Mary Ellen Foster 2010-03-31 16:06:12 UTC
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.

Comment 18 Mary Ellen Foster 2010-03-31 16:07:32 UTC
Created attachment 403777 [details]
NanoEngineer-1 window before resizing

Comment 19 Mary Ellen Foster 2010-03-31 16:07:51 UTC
Created attachment 403778 [details]
NanoEngineer-1 window after resizing

Comment 20 Thomas Fitzsimmons 2010-03-31 17:47:11 UTC
Mary, can you run NanoEngineer-1 in a terminal window and post the output?

Comment 21 Thomas Fitzsimmons 2010-03-31 17:56:23 UTC
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?

Comment 22 Thomas Fitzsimmons 2010-08-25 03:57:26 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.