[MacPorts] #36977: app portgroup can fail when used with python portgroup (was: linkchecker @8.1_0 Destroot error on OS X 10.8.2)
MacPorts
noreply at macports.org
Tue Nov 13 11:53:42 PST 2012
#36977: app portgroup can fail when used with python portgroup
---------------------------+--------------------------
Reporter: gcasiraghi@… | Owner: ryandesign@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.1.2
Resolution: | Keywords:
Port: app |
---------------------------+--------------------------
Changes (by ryandesign@…):
* cc: openmaintainer@… (removed)
* keywords: mountain =>
* port: linkchecker @8.1_0 => app
* owner: macports-tickets@… => ryandesign@…
Comment:
When the app portgroup was initially added to the linkchecker port in
r83054, the port was using the python27 portgroup. The python27 portgroup
was included first, so its post-destroot proc was included first and
therefore ran first, setting up the symlinks to the executables, including
the linkchecker-gui symlink. The app portgroup was included second, so its
post-destroot proc was included second and ran second, which checked for
the existence of linkchecker-gui before allowing it to be used as the
executable of the application wrapper.
But in r99462 the linkchecker port was updated to 8.1 and the portgroup
was changed from python27 to python. The python portgroup works
differently and does not define its post-destroot proc right away; it
waits until python.versions gets set. By that time the app portgroup's
post-destroot proc has already been included. So now the app portgroup's
post-destroot proc is running first, and failing, because the program it
expects to be there (the linkchecker-gui symlink) hasn't been created yet.
This sounds like a problem that would affect other ports wanting to use
both the python and app portgroups, and is not specific to the linkchecker
port. The only other port currently using both the python and app
portgroups is tortoisehg, but it is not affected because its app
executable is a file in workpath.
The solution could be to make the app portgroup wait to define its post-
destroot proc until app.executable is set. Portfile authors typically
define python.versions before dependencies are declared, so that
${python.version} can be used in the dependency names, while the app
portgroup's keywords are typically defined further down, near where other
destroot-phase operations happen. This would also have the advantage of
making the order of portgroup inclusion irrelevant.
--
Ticket URL: <https://trac.macports.org/ticket/36977#comment:1>
MacPorts <http://www.macports.org/>
Ports system for Mac OS
More information about the macports-tickets
mailing list