summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch
blob: 4105868a7e2abc726e1eb16331862c7448b127d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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: Inactive-Upstream [lastrelease: 2015, lastcommit: 2019]

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

--- 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,