]> code.ossystems Code Review - openembedded-core.git/blob
91640d60443088ee4b8d16c81068aeef224366fe
[openembedded-core.git] /
1 stop 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
7 DEBUG: Executing shell function do_install
8 scons: Reading SConscript files ...
9 PermissionError: [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)
22 ERROR: 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
34 Upstream-Status: Pending
35
36 Signed-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,