On 2022-9-1 21:51 , Steven Smith wrote:
How does one convert a build.env list into a working string for sh env?

If I specify this build.env

build.env-append \
    CC=${configure.cc <http://configure.cc>} \
"CFLAGS=${configure.cflags} [get_canonical_archflags cc]"

and later say something like

system "env ${build.env}"

This tcl string with braces ‘{…}’ is passed to the shell, which breaks:

env CC=/usr/bin/clang {CFLAGS=-Os -arch x86_64}

Rather, I need a port file command that converts build.env to:

env CC=/usr/bin/clang CFLAGS="-Os -arch x86_64"


Ideally you would run this as part of build.cmd (or some other command) and have MacPorts set up the environment directly for you. But if you have to do it this way, something like this should work:

foreach e ${build.env} {
    lappend envargs [shellescape $e]
}
system "env [join $envargs] ..."

- Josh

Reply via email to