tcl or portfile keyword for alias

Ryan Schmidt ryandesign at macports.org
Mon Feb 9 21:57:12 PST 2009


On Feb 9, 2009, at 22:52, Bradley Giesbrecht wrote:

> On Feb 9, 2009, at 8:41 PM, Ryan Schmidt wrote:
>
>> On Feb 9, 2009, at 22:34, Bradley Giesbrecht wrote:
>>
>>> On Feb 9, 2009, at 4:18 PM, Ryan Schmidt wrote:
>>>
>>>> On Feb 9, 2009, at 17:53, Ryan Schmidt wrote:
>>>>
>>>>> You could prepend ${prefix}/lib/mysql5/bin to the PATH. That's  
>>>>> where the program "mysql_config" lives.
>>>>>
>>>>> configure.env-append    PATH=${prefix}/lib/mysql5/bin:$env(PATH)
>>>>
>>>> The reason it then still doesn't work is because libzdb is  
>>>> calling mysql_config incorrectly. As you note, it uses  
>>>> "mysql_config --libs $LDFLAGS". It is not correct to put  
>>>> "$LDFLAGS" at the end of that command invocation. The correct  
>>>> way to call it is just "mysql_config --libs". It works for you  
>>>> on the command line because LDFLAGS is empty by default, but  
>>>> MacPorts fills it with a value, so when run within MacPorts, it  
>>>> fails. If you look in the config.log, you see that mysql_config  
>>>> is printing its usage message, showing that the way it is being  
>>>> used is not correct. Attached is a Portfile and patch that work  
>>>> for me. You should send the patchfile to the author of libzdb.
>>>>
>>>> In the Portfile, I also added a dependency on mysql5, and added  
>>>> configure arguments to disable postgresql and sqlite. If you  
>>>> want to enable postgresql or sqlite, remove the corresponding  
>>>> configure argument and add the required dependency.
>>>
>>> I had a more complex Portfile which I trimmed down before posting  
>>> to make it simple to try.
>>>
>>> I guess I'm old school that way.
>>>
>>> The patch Portfile attached to your email removed the patch file.  
>>> I like it but it didn't work.
>>> If I add the patch and remove the $LDFLAGS in the patch  
>>> "mysql_config --libs $LDFLAGS" to "mysql_config --libs" it works.
>>
>> But... the Portfile I attached said
>>
>> patchfiles                  patch-configure
>>
>> And I attached my revised patch-configure which said
>>
>> -	LDFLAGS=`mysql_config --libs $LDFLAGS`
>> -	CPPFLAGS=`mysql_config --include $CPPFLAGS`
>> +	LDFLAGS="`mysql_config --libs` $LDFLAGS"
>> +	CPPFLAGS="`mysql_config --include` $CPPFLAGS"
>>
>> to fix the problem with calling mysql_config. My Portfile also  
>> fixed the PATH in the configure phase with
>>
>> configure.env-append        PATH=${prefix}/lib/mysql5/bin:$env(PATH)
>>
>> so that mysql_config could be found. I tested this before  
>> attaching it to the email and it worked for me as sent.
>
> Reading your comment " It is not correct to put "$LDFLAGS" at the  
> end of that command invocation." and without looking in  
> "config.log" personally I assumed you meant to remove the  
> "$LDFLAGS" from "mysql_config --libs $LDFLAGS" in the patch.
>
> I just copied your revised Portfile and patch-configure file and  
> ran "port clean --all" and "port configure" and it failed.
>
> Altering the patch to remove ""$LDFLAGS"" fixed the configure  
> problems.
>
> Anyways, without looking at the configure.log I believe you are  
> right and that is very cool. I will pass your/our patch upstream.

LDFLAGS should not be inside the backticks, but should presumably be  
outside the backticks. The way the developer had it, he was saying  
"set LDFLAGS to the value of the program invocation `mysql_config -- 
libs $LDFLAGS`" and that's not a valid invocation of mysql_config if  
$LDFLAGS is nonempty. I changed it to say "set LDFLAGS to the value  
of the program invocation `mysql_config --libs` and then a space and  
then whatever was already in $LDFLAGS" which I think is what the  
developer was trying to say, but maybe he never tested with LDFLAGS  
nonempty.

I just tried again with the files I sent earlier and it works fine.  
Make a directory libzdb, put Portfile in it, make a files directory  
in it, put patch-configure in the files directory, cd to the libzdb  
directory, and run port -d configure. For me it says:

checking for mysql... checking for mysql_init in -lmysqlclient... yes
checking mysql version... checking mysql.h usability... yes
checking mysql.h presence... yes
checking for mysql.h... yes
ok

And then

|   SQLite3:                                      DISABLED   |
|   Mysql:                                        ENABLED    |
|   PostgreSQL:                                   DISABLED   |

I've attached my debug log so you can compare it to yours; maybe that  
will point out what's different.

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: libzdb.txt
URL: <http://lists.macosforge.org/pipermail/macports-dev/attachments/20090209/1cfe4567/attachment-0001.txt>


More information about the macports-dev mailing list