[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