1stop scons trying to create directories in hosts rootfs
2
3* since 1522f09a4d serf: cleanup recipe
4  serf.do_install fails in builds with multilib enabled (with
5  libdir=/usr/lib64 on host where /usr/lib64 doesn't exist)
6
7DEBUG: Executing shell function do_install
8scons: Reading SConscript files ...
9PermissionError: [Errno 13] Permission denied: '/usr/lib64':
10  File "TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/serf-1.3.9/SConstruct", line 158:
11    ENV = os.environ,
12  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:
13    variables.Update(self)
14  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:
15    option.validator(option.key, env.subst('${%s}'%option.key), env)
16  File "TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/serf-1.3.9/SConstruct", line 60:
17    return PathVariable.PathIsDirCreate(key, val, env)
18  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:
19    os.makedirs(val)
20  File "TOPDIR/BUILD/work/qemux86-signage-linux/serf/1.3.9-r0/recipe-sysroot-native/usr/lib/python3.7/os.py", line 221:
21    mkdir(name, mode)
22ERROR: scons install execution failed.
23
24* I don't know how exactly --install-sandbox is supposed to work but
25  in this case it's trying to mkdir /usr/lib64 on the host rootfs
26  which is clearly wrong and if I set LIBDIR together with
27  --install-sandbox then the install paths are prefixed with $D twice
28  in some cases (not for includedir and empty libdir at the end).
29  So in the end I think it was an issue caused by the custom path
30  validator in serf's SConstruct, removing that stops touching host
31  and the installed paths (including the paths inside libserf*.pc)
32  look correct
33
34Upstream-Status: Pending
35
36Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
37
38--- serf-1.3.9/SConstruct	2019-06-18 15:49:19.968961108 +0000
39+++ serf-1.3.9b/SConstruct	2019-06-18 18:53:21.412337151 +0000
40@@ -51,17 +51,6 @@
41     """
42     return (key, '%s' % (help), default, None, lambda val: _converter(val))
43
44-# Custom path validator, creates directory when a specified option is set.
45-# To be used to ensure a PREFIX directory is only created when installing.
46-def createPathIsDirCreateWithTarget(target):
47-  def my_validator(key, val, env):
48-    build_targets = (map(str, BUILD_TARGETS))
49-    if target in build_targets:
50-      return PathVariable.PathIsDirCreate(key, val, env)
51-    else:
52-      return PathVariable.PathAccept(key, val, env)
53-  return my_validator
54-
55 # default directories
56 if sys.platform == 'win32':
57   default_incdir='..'
58@@ -77,11 +66,11 @@
59   PathVariable('PREFIX',
60                'Directory to install under',
61                default_prefix,
62-               createPathIsDirCreateWithTarget('install')),
63+               PathVariable.PathAccept),
64   PathVariable('LIBDIR',
65                'Directory to install architecture dependent libraries under',
66                default_libdir,
67-               createPathIsDirCreateWithTarget('install')),
68+               PathVariable.PathAccept),
69   PathVariable('APR',
70                "Path to apr-1-config, or to APR's install area",
71                default_incdir,
72