stop scons trying to create directories in hosts rootfs * since 1522f09a4d serf: cleanup recipe serf.do_install fails in builds with multilib enabled (with libdir=/usr/lib64 on host where /usr/lib64 doesn't exist) DEBUG: Executing shell function do_install scons: Reading SConscript files ... PermissionError: [Errno 13] Permission denied: '/usr/lib64': File "TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/serf-1.3.9/SConstruct", line 158: ENV = os.environ, File "/TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/recipe-sysroot-native/usr/bin/../../usr/lib/python3.7/site-packages/SCons/Environment.py", line 965: variables.Update(self) File "/TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/recipe-sysroot-native/usr/bin/../../usr/lib/python3.7/site-packages/SCons/Variables/__init__.py", line 227: option.validator(option.key, env.subst('${%s}'%option.key), env) File "TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/serf-1.3.9/SConstruct", line 60: return PathVariable.PathIsDirCreate(key, val, env) File "/TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/recipe-sysroot-native/usr/bin/../../usr/lib/python3.7/site-packages/SCons/Variables/PathVariable.py", line 101: os.makedirs(val) File "TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/recipe-sysroot-native/usr/lib/python3.7/os.py", line 221: mkdir(name, mode) ERROR: scons install execution failed. * I don't know how exactly --install-sandbox is supposed to work but in this case it's trying to mkdir /usr/lib64 on the host rootfs which is clearly wrong and if I set LIBDIR together with --install-sandbox then the install paths are prefixed with $D twice in some cases (not for includedir and empty libdir at the end). So in the end I think it was an issue caused by the custom path validator in serf's SConstruct, removing that stops touching host and the installed paths (including the paths inside libserf*.pc) look correct Upstream-Status: Pending Signed-off-by: Martin Jansa --- serf-1.3.9/SConstruct 2019-06-18 15:49:19.968961108 +0000 +++ serf-1.3.9b/SConstruct 2019-06-18 18:53:21.412337151 +0000 @@ -51,17 +51,6 @@ """ return (key, '%s' % (help), default, None, lambda val: _converter(val)) -# Custom path validator, creates directory when a specified option is set. -# To be used to ensure a PREFIX directory is only created when installing. -def createPathIsDirCreateWithTarget(target): - def my_validator(key, val, env): - build_targets = (map(str, BUILD_TARGETS)) - if target in build_targets: - return PathVariable.PathIsDirCreate(key, val, env) - else: - return PathVariable.PathAccept(key, val, env) - return my_validator - # default directories if sys.platform == 'win32': default_incdir='..' @@ -77,11 +66,11 @@ PathVariable('PREFIX', 'Directory to install under', default_prefix, - createPathIsDirCreateWithTarget('install')), + PathVariable.PathAccept), PathVariable('LIBDIR', 'Directory to install architecture dependent libraries under', default_libdir, - createPathIsDirCreateWithTarget('install')), + PathVariable.PathAccept), PathVariable('APR', "Path to apr-1-config, or to APR's install area", default_incdir,