mirror of
https://git.FreeBSD.org/ports.git
synced 2024-10-18 19:49:40 +00:00
Add a function to export vars that bsd.port.mk generates from fork/exec.
This will be useful in Poudriere to avoid needless fork/exec for every port when gathering dependencies. Example usage: MAKE=make sh -c '. Mk/Scripts/functions.sh; export_index_env; export PACKAGE_BUILDING=1; truss -f make -C sysutils/zfstools -V BUILD_DEPENDS 2>&1' | grep exec This eliminates 14 exec/fork calls for this example, when PACKAGE_BUILDING is also set during -V. Care should be taken with UID not being passed down into actual builds as it may conflict with non-root builds. With hat: portmgr
This commit is contained in:
parent
ca73961376
commit
6221392fff
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=399170
@ -158,3 +158,54 @@ validate_env() {
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
export_index_env() {
|
||||
local export_vars make_cmd make_env var results value
|
||||
|
||||
validate_env MAKE PORTSDIR
|
||||
|
||||
make_env="\
|
||||
PACKAGE_BUILDING=1 \
|
||||
GNU_CONFIGURE=1 \
|
||||
USE_JAVA=1 \
|
||||
USE_LINUX=1 \
|
||||
"
|
||||
|
||||
make_cmd="${make_env}"
|
||||
|
||||
export_vars="\
|
||||
ARCH \
|
||||
CONFIGURE_MAX_CMD_LEN \
|
||||
HAVE_COMPAT_IA32_KERN \
|
||||
LINUX_OSRELEASE \
|
||||
OPSYS \
|
||||
OSREL \
|
||||
OSVERSION \
|
||||
UID \
|
||||
_JAVA_OS_LIST_REGEXP \
|
||||
_JAVA_PORTS_INSTALLED \
|
||||
_JAVA_VENDOR_LIST_REGEXP \
|
||||
_JAVA_VERSION_LIST_REGEXP \
|
||||
_OSRELEASE \
|
||||
_PKG_CHECKED \
|
||||
_SMP_CPUS \
|
||||
"
|
||||
|
||||
for var in ${export_vars}; do
|
||||
make_cmd="${make_cmd}${make_cmd:+ }-V ${var}=\${${var}}"
|
||||
done
|
||||
|
||||
# Bring in all the vars, but not empty ones.
|
||||
eval $(${MAKE} -f ${PORTSDIR}/Mk/bsd.port.mk ${make_cmd} | grep -v '=$')
|
||||
for var in ${export_vars}; do
|
||||
# Export and display non-empty ones. This is not redundant
|
||||
# with above since we're looping on all vars here; do not
|
||||
# export a var we didn't eval in.
|
||||
value="$(eval echo \$${var})"
|
||||
|
||||
if [ -n "${value}" ]; then
|
||||
export ${var}
|
||||
echo "export ${var}=${value}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user