[41395] trunk/dports/devel/autoconf/Portfile
Ryan Schmidt
ryandesign at macports.org
Sat Nov 1 12:34:18 PDT 2008
On Nov 1, 2008, at 14:15, Joshua Root wrote:
> Ryan Schmidt wrote:
>
>> On Nov 1, 2008, at 13:29, jmr at macports.org wrote:
>>
>>> Revision: 41395
>>> http://trac.macports.org/changeset/41395
>>> Author: jmr at macports.org
>>> Date: 2008-11-01 11:29:13 -0700 (Sat, 01 Nov 2008)
>>> Log Message:
>>> -----------
>>> autoconf: fix path to perl in dependency
>>>
>>> Modified Paths:
>>> --------------
>>> trunk/dports/devel/autoconf/Portfile
>>>
>>> Modified: trunk/dports/devel/autoconf/Portfile
>>> ===================================================================
>>> --- trunk/dports/devel/autoconf/Portfile 2008-11-01 18:05:23 UTC
>>> (rev 41394)
>>> +++ trunk/dports/devel/autoconf/Portfile 2008-11-01 18:29:13 UTC
>>> (rev 41395)
>>> @@ -31,7 +31,7 @@
>>> sha1 f15e14aa34acf871b47f659ef99a2e6707db4a18 \
>>> rmd160 273448a60bc4dfcfcb3ee455ef012333eeca3256
>>>
>>> -depends_lib path:${prefix}/bin/perl:perl5 \
>>> +depends_lib path:bin/perl:perl5 \
>>> port:m4 \
>>> port:help2man
>>
>> Why remove ${prefix} from the path? That doesn't seem right to me...
>> I've always included ${prefix} when defining a path:-style
>> dependency.
>> The Guide also shows that the ${prefix} should be there in its lone
>> path:-style dependency example:
>>
>> http://guide.macports.org/#reference.dependencies.types
>
> Because I noticed that when I upgraded autoconf, it was trying to
> install perl5 despite ${prefix}/bin/perl existing due to perl5.8 being
> installed, and I therefore went and read the actual code. :-)
>
> Turns out that depspecs are escaped, so variable substitution is not
> performed. Additionally, ${prefix} is prepended to any path that
> doesn't
> start with a slash. So it was actually looking for
> /opt/local/\${prefix}/bin/perl.
Well, the documentation shows that the path should start with $
{prefix} if that's what's meant. Such usage is easily understandable.
Auto-prepending ${prefix} for non-absolute paths is a convenience,
and one which is not documented, and which until your change to
autoconf was not used by any port [1]. We could document it and begin
using it. But lack of variable substitution in depspecs must be a
bug. As of r41396, we have 206 occurrences of "path:${prefix}" in the
ports tree [2]. There are also several depspecs that expect variable
substitution of variables other than ${prefix} [3].
So I think it would be easier and better to fix the base code to
match the documentation, rather than change the documentation and all
the affected ports.
[1] grep 'path:[^$ /]' */*/Portfile
[2] grep 'path:${prefix}' */*/Portfile
[3] grep 'path:\$' */*/Portfile | grep -v 'path:${prefix}'
More information about the macports-dev
mailing list