how to prepend or append to DYLD_LIBRARY_PATH in Portfile?
Ken Cunningham
ken.cunningham.webuse at gmail.com
Sat Oct 24 16:46:28 UTC 2020
> On Oct 24, 2020, at 8:52 AM, Joshua Root <jmr at macports.org> wrote:
>
> On 2020-10-25 02:18 , Ken Cunningham wrote:
>> It's easy to prepend or append to PATH in a Portfile, but I'm having difficulty seeing how to modify, rather than overwrite, DYLD_LIBRARY_PATH.
>>
>> Usually you just want to set it, but now that it might or might not be set in legacysupport 1.1, I was hoping to just modify rather than overwrite it.
>>
>> I tried a number of different things, but couldn't spot the magic incantation...am
>> i missing something simple?
>
> What did you try? The configure.env, build.env etc. options can be read
> like any other option. You can use lsearch on it to look for entries
> starting with the variable name you're after.
>
> - Josh
Ah, thanks for the clue.
I had hoped that just something like this would set them both:
configure.env-append "DYLD_LIBRARY_PATH=${prefix}/lib/lilbgcc"
configure.env-append “DYLD_LIBRARY_PATH=${workpath}/build”
but I found the second one just obliterates the first one.
DYLD_LIBRARY_PATH='/opt/local/lib/lilbgcc'
So I tried variations of this construct, that works for PATH:
configure.env-append "PATH=$env(PATH):${bootstrap_dir}/bin”
eg:
configure.env-append "DYLD_LIBRARY_PATH=${prefix}/lib/lilbgcc"
configure.env-append “DYLD_LIBRARY_PATH=$env(DYLD_LIBRARY_PATH):${workpath}/build”
but that just gives
DEBUG: no such variable
(read trace on "env(DYLD_LIBRARY_PATH)")
because the first one doesn’t get set into the environment until the whole Portfile is parsed, obviously in retrospect.
And likewise testing for it with [info exists …] won’t work either, I can see, because it’s not there yet.
So instead of this method, I will look into running lsearch on *.env, and see if I can sort out how to add some entries if something is already there.
It looks like the Makefile-1.0 PortGroup might be doing something along these lines — getting a tad complicated, however:
====
foreach env_var { \
PKG_CONFIG_PATH \
} {
set value [option configure.[string tolower $env_var]]
if {$value ne ""} {
${phase}.env-append "$env_var=[join $value :]"
if {[lsearch -exact ${makefile.override} ${env_var}] != -1} {
${phase}.args-append $env_var="[join $value :]"
}
}
}
=====
Do you think this:
configure.env-append "DYLD_LIBRARY_PATH=${prefix}/lib/lilbgcc"
configure.env-append “DYLD_LIBRARY_PATH=${workpath}/build”
should “just work" to set both without added shenanigans?
Ken
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-dev/attachments/20201024/7626bf62/attachment.htm>
More information about the macports-dev
mailing list