On Sep 21, 2015, at 6:13 AM, [email protected] wrote:
> Revision
> 140505
> Author
> [email protected]
> Date
> 2015-09-21 04:13:44 -0700 (Mon, 21 Sep 2015)
> Log Message
>
> mojca/py-geomagpy: upgrade, create an app
> Modified: users/mojca/ports/python/py-GeomagPy/Portfile (140504 => 140505)
> PortSystem 1.0
> +PortGroup app 1.0
> PortGroup python 1.0
> python.versions 27 34
> + # this could be a +gui option, enabled by default
> + app.name MagPy-${python.version}
Why should it be a variant -- why would anyone want to turn it off?
> + # this doesn't work because post-destroot did not finish yet and xmagpy
> doesn't exist
> + # app.executable xmagpy-${python.version}
> + app.executable ${python.pkgd}/magpy/gui/xmagpy.py
There are two post-destroot blocks: one defined by the app portgroup and one
defined by the python portgroup. The blocks run in the order in which they're
defined. (Technically we don't guarantee that, but that's the order in which
they've been running for awhile and I don't know of any plans to change it,
since I'm sure that would break some things.) The app portgroup's post-destroot
block gets defined as soon as the app portgroup is included, which is to say:
first. It verifies that the app.executable specified exists. It doesn't yet,
because it's a symlink that won't get created until the python portgroup's
post-destroot block runs. The python portgroup's post-destroot block doesn't
get defined until python.versions is set. So you could work around this problem
by not including the app portgroup until after you set python.versions. The
solution you already used -- using the path of the real file, rather than a
symlink to it -- may be the better fix.
But in fact, you must make an additional change, because as it is now, the
py-geomagpy stub port fails to destroot:
Error: Failed to destroot py-geomagpy: app.executable py-geomagpy does not exist
This is because the app portgroup assumes that if you include it, you want it
to install an app. You can solve this by either including the portgroup only
inside the "if {${name} ne ${subport}}" block (this is probably messy; it's
nicer to keep portgroups at the top of the file), or else set "app.create no"
outside the "if" block and set "app.create yes" inside it. Use in a port with
subports, where some ports don't want to create an app, is a use case I didn't
consider when designing this portgroup. I should probably make the change I've
talked about for awhile: change the default of app.create from yes to no, and
update all ports using the portgroup to set it to yes where needed.
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev