summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorMartin Jansa <martin.jansa@gmail.com>2019-06-18 21:45:34 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-06-19 22:13:39 +0100
commit107c5441aa2f24be12057c06433a31fd719f1d21 (patch)
tree8a83265effb53cc38213fe614de035b3995c9671 /meta
parent34750ea4b6176eaed6a673fea2365b524426c9c6 (diff)
downloadpoky-107c5441aa2f24be12057c06433a31fd719f1d21.tar.gz
serf: 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 (From OE-Core rev: 7ce8b1bc510cfe8b013430a3826ece6878d8568e) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch71
-rw-r--r--meta/recipes-support/serf/serf_1.3.9.bb1
2 files changed, 72 insertions, 0 deletions
diff --git a/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch
new file mode 100644
index 0000000000..91640d6044
--- /dev/null
+++ b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch
@@ -0,0 +1,71 @@
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,
diff --git a/meta/recipes-support/serf/serf_1.3.9.bb b/meta/recipes-support/serf/serf_1.3.9.bb
index 92cd5ca061..dd4133a45c 100644
--- a/meta/recipes-support/serf/serf_1.3.9.bb
+++ b/meta/recipes-support/serf/serf_1.3.9.bb
@@ -6,6 +6,7 @@ SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
6 file://0002-SConstruct-Fix-path-quoting-for-.def-generator.patch \ 6 file://0002-SConstruct-Fix-path-quoting-for-.def-generator.patch \
7 file://0003-gen_def.patch \ 7 file://0003-gen_def.patch \
8 file://0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch \ 8 file://0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch \
9 file://SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch \
9 " 10 "
10 11
11SRC_URI[md5sum] = "370a6340ff20366ab088012cd13f2b57" 12SRC_URI[md5sum] = "370a6340ff20366ab088012cd13f2b57"