Opened 12 years ago

Closed 12 years ago

#36268 closed defect (fixed)

py27-pyqt4 @4.9.4 fails to upgrade

Reported by: nonstop.server@… Owned by: michaelld (Michael Dickens)
Priority: Normal Milestone:
Component: ports Version: 2.1.2
Keywords: Cc:
Port: py27-pyqt4

Description

Port py27-pyqt4 fails during the extract phase with the following errer message.

:error:extract org.macports.extract for port py27-pyqt4 returned: 

ERROR:
 In order to install this port as +debug,
Qt4 must also be installed with +debug.

:debug:extract Error code: NONE
:debug:extract Backtrace: 

ERROR:
 In order to install this port as +debug,Qt4 must also be installed with +debug.

Port qt4-mac is installed with the debug variant enabled.

% port -q installed name qt4-mac
  qt4-mac @4.8.3_0+debug+demos+examples+quartz+raster (active)

Version Information:

Mac OS Version:
Darwin 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386

Xcode Version:
Xcode 3.1.4
Component versions: DevToolsCore-1204.0; DevToolsSupport-1186.0
BuildVersion: 9M2809

Macports Version:
Version: 2.1.2

Attachments (1)

main.log (3.7 KB) - added by nonstop.server@… 12 years ago.

Download all attachments as: .zip

Change History (14)

Changed 12 years ago by nonstop.server@…

Attachment: main.log added

comment:1 Changed 12 years ago by michaelld (Michael Dickens)

So, just to be clear, you're trying to "sudo port install py27-pyqt4 +debug"? or the like but with +debug as a variant?

comment:2 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: michaelld@… removed
Owner: changed from macports-tickets@… to michaelld@…

This message is coming from the qt4 portgroup. It may need to be updated for the new all-framework qt4-mac build.

Currently the way it's supposed to work is: if the port debug variant is set, it requires that the qt4-mac debug variant is set. You may want to expand this to work the other way as well: if the port debug variant is not set, require that the qt4-mac debug variant is also not set. I'm not sure if that's actually required but it might be reasonable. I do this in the php portgroup.

The way the portgroup determines whether to show the message might be simplified using the new active_variants portgroup.

comment:3 Changed 12 years ago by michaelld (Michael Dickens)

I'd prefer to leave the +debug check in the qt4 portgroup with its current behavior: check for +debug only if +debug is selected as a variant of the current port.

comment:4 Changed 12 years ago by michaelld (Michael Dickens)

To the OP: What does the following return:

ls -lAF /opt/local/Library/Frameworks/QtCore.framework

I think I know the issue, but I want to confirm the 'ls' above first.

comment:5 in reply to:  1 Changed 12 years ago by nonstop.server@…

Replying to michaelld@…:

So, just to be clear, you're trying to "sudo port install py27-pyqt4 +debug"? or the like but with +debug as a variant?

I performed an upgrade of the port

% sudo port -dsu upgrade py27-pyqt4

which was installed with the debug variant enabled.

% port -q installed name py27-pyqt4
  py27-pyqt4 @4.9.1_1+debug+scintilla (active)

comment:6 in reply to:  4 Changed 12 years ago by nonstop.server@…

Replying to michaelld@…:

% ls -AFl /opt/local/Library/Frameworks/QtCore.framework 
total 40
drwxr-xr-x  3 root  wheel  102 Sep 21 14:04 Contents/
lrwxrwxrwx  1 root  wheel   18 Sep 21 14:03 Headers@ -> Versions/4/Headers
lrwxrwxrwx  1 root  wheel   17 Sep 21 14:03 QtCore@ -> Versions/4/QtCore
-rw-r--r--  1 root  wheel  975 Sep 21 13:59 QtCore.prl
lrwxrwxrwx  1 root  wheel   23 Sep 21 14:03 QtCore_debug@ -> Versions/4/QtCore_debug
-rw-r--r--  1 root  wheel  992 Sep 21 13:59 QtCore_debug.prl
drwxr-xr-x  4 root  wheel  136 Sep 21 14:04 Versions/

comment:7 Changed 12 years ago by michaelld (Michael Dickens)

Thanks. I just pushed r97988, which should fix this issue. Please do a "sudo port selfupdate" and then try your upgrade command again.

comment:8 in reply to:  7 Changed 12 years ago by nonstop.server@…

Replying to michaelld@…:

Yes, thank you r97988 fixed this issue! The port upgraded just fine.

% port -q installed name py27-pyqt4
  py27-pyqt4 @4.9.4_0+debug+scintilla (active)

comment:9 Changed 12 years ago by michaelld (Michael Dickens)

Glad to hear that. I'm a little concerned that the +debug isn't functioning correctly (it should configure, build, and installs correctly now). Can you test the actual functionality out? What does "ls -lAF /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/" return for you?

comment:10 in reply to:  9 Changed 12 years ago by nonstop.server@…

Replying to michaelld@…:

I did not yet test the functionality of the port, but here is the output of the ls.

% ls -AFl /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/
total 42240
-rwxr-xr-x   1 root  wheel     13180 Sep 21 15:29 Qt.so*
-rwxr-xr-x   1 root  wheel   4051584 Sep 21 15:29 QtCore.so*
-rwxr-xr-x   1 root  wheel    394624 Sep 21 15:29 QtDeclarative.so*
-rwxr-xr-x   1 root  wheel    594948 Sep 21 15:29 QtDesigner.so*
-rwxr-xr-x   1 root  wheel  12156836 Sep 21 15:29 QtGui.so*
-rwxr-xr-x   1 root  wheel    185536 Sep 21 15:29 QtHelp.so*
-rwxr-xr-x   1 root  wheel    210112 Sep 21 15:29 QtMultimedia.so*
-rwxr-xr-x   1 root  wheel   1098704 Sep 21 15:29 QtNetwork.so*
-rwxr-xr-x   1 root  wheel    414540 Sep 21 15:29 QtOpenGL.so*
-rwxr-xr-x   1 root  wheel    315968 Sep 21 15:29 QtScript.so*
-rwxr-xr-x   1 root  wheel     32964 Sep 21 15:29 QtScriptTools.so*
-rwxr-xr-x   1 root  wheel    460292 Sep 21 15:29 QtSql.so*
-rwxr-xr-x   1 root  wheel    131168 Sep 21 15:29 QtSvg.so*
-rwxr-xr-x   1 root  wheel     53784 Sep 21 15:29 QtTest.so*
-rwxr-xr-x   1 root  wheel    677372 Sep 21 15:29 QtWebKit.so*
-rwxr-xr-x   1 root  wheel    496104 Sep 21 15:29 QtXml.so*
-rwxr-xr-x   1 root  wheel    269552 Sep 21 15:29 QtXmlPatterns.so*
-rw-r--r--   1 root  wheel      1111 Sep 21 15:29 __init__.py
-rw-r--r--   1 root  wheel     14560 Sep 21 15:29 pyqtconfig.py
drwxr-xr-x  14 root  wheel       476 Sep 21 15:30 uic/

comment:11 Changed 12 years ago by michaelld (Michael Dickens)

Good. And, what does "otool -L /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/QtGui.so" return?

How would you usually verify that +debug is working? I think with the move to all-framework-all-the-time, one has to set the shell environment "DYLD_IMAGE_SUFFIX=_debug" to get the debug version of the framework. Which IIRC hasn't worked since the release of 10.7 because Apple hasn't released system debug frameworks. Or, something like that. Maybe one has to link directly to the debug framework now?

comment:12 in reply to:  11 Changed 12 years ago by nonstop.server@…

Replying to michaelld@…:

Output of the otool list:

% otool -L /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/QtGui.so
    /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyQt4/QtGui.so:
	/opt/local/Library/Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.3)
	/opt/local/Library/Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.3)
	/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.7)

Maybe using this tip will help you to get debugging working on 10.7. I archived it for future use, although I never actually implemented it myself. source: http://blog.odnous.net/2011/06/frequently-overlooked-and-practical.html

Quick tip: Qt4 debugging with (i)pdb / pudb 

Since Qt4 has its own event loop it's not that easy to debug PyQt4 applications using standard tools.
Python support for QtCreator is nowhere near. To be able to use your favourite Python debugger (pdb/ipdb/pudb)
prepare the following snippet and call it every time you want to pause the execution:

 1 def debug():
 2    from PyQt4.QtCore import pyqtRemoveInputHook
 3    pyqtRemoveInputHook()
 4    # Load either ipdb.
 5    from ipdb import set_trace
 6    # Or pdb.
 7    # from pdb import set_trace
 8    # Or pudb.
 9    # from pudb import set_trace
10    # Enter debugging mode.
11    set_trace()

Your debugger will show up when the execution reaches debug() call.
It's somewhat crude way of debugging since there are IDEs that allow you to debug PyQt4
application in usual step-in/-over/-out way.

comment:13 Changed 12 years ago by michaelld (Michael Dickens)

Resolution: fixed
Status: newclosed

Thanks for the output and the tip. I'll have to try that when I get a chance. I'm going ahead and closing this ticket. Thanks for your prompt responses!

Note: See TracTickets for help on using tickets.