Re: [OE-core] [PATCH] serf: stop scons trying to create directories in hosts rootfs
No S-o-b in the patch, but more importantly no Upstream-Status. Have you reported this upstream? Or compared what we're doing to what other distros that package serf do? Ross On Tue, 18 Jun 2019 at 20:09, Martin Jansa wrote: > > * 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 > > Signed-off-by: Martin Jansa > --- > ...ories.without.sandbox-install.prefix.patch | 34 +++ > meta/recipes-support/serf/serf_1.3.9.bb | 1 + > 2 files changed, 35 insertions(+) > create mode 100644 > meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch > > 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 00..bfb2f5a2aa > --- /dev/null > +++ > b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch > @@ -0,0 +1,34 @@ > +--- ../1.3.9-r0-bad-double/serf-1.3.9/SConstruct 2019-06-18 > 15:49:19.968961108 + > serf-1.3.9/SConstruct 2019-06-18 18:53:21.412337151 + > +@@ -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, > diff --git a/meta/recipes-support/serf/serf_1.3.9.bb > b/meta/recipes-support/serf/serf_1.3.9.bb > index 92cd5ca061..25ccd79e00 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 \ > file://0002-SConstruct-Fix-path-quoting-for-.def-generator.patch \ > file://0003-gen_def.patch \ > > file://0004-Follow-up-
Re: [OE-core] [PATCH] serf: stop scons trying to create directories in hosts rootfs
oe-core likes to mix them :) On Tue, Jun 18, 2019 at 9:14 PM Khem Raj wrote: > On Tue, Jun 18, 2019 at 12:09 PM Martin Jansa > wrote: > > > > * 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 > > > > Signed-off-by: Martin Jansa > > --- > > ...ories.without.sandbox-install.prefix.patch | 34 +++ > > meta/recipes-support/serf/serf_1.3.9.bb | 1 + > > 2 files changed, 35 insertions(+) > > create mode 100644 > meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch > > > > 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 00..bfb2f5a2aa > > --- /dev/null > > +++ > b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch > > @@ -0,0 +1,34 @@ > > +--- ../1.3.9-r0-bad-double/serf-1.3.9/SConstruct 2019-06-18 > 15:49:19.968961108 + > > serf-1.3.9/SConstruct 2019-06-18 18:53:21.412337151 + > > +@@ -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, > > diff --git a/meta/recipes-support/serf/serf_1.3.9.bb > b/meta/recipes-support/serf/serf_1.3.9.bb > > index 92cd5ca061..25ccd79e00 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 \ > > > file://0002-SConstruct-Fix-path-quoting-for-.def-generator.patch \ > > file://0003-
Re: [OE-core] [PATCH] serf: stop scons trying to create directories in hosts rootfs
On Tue, Jun 18, 2019 at 12:09 PM Martin Jansa wrote: > > * 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 > > Signed-off-by: Martin Jansa > --- > ...ories.without.sandbox-install.prefix.patch | 34 +++ > meta/recipes-support/serf/serf_1.3.9.bb | 1 + > 2 files changed, 35 insertions(+) > create mode 100644 > meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch > > 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 00..bfb2f5a2aa > --- /dev/null > +++ > b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch > @@ -0,0 +1,34 @@ > +--- ../1.3.9-r0-bad-double/serf-1.3.9/SConstruct 2019-06-18 > 15:49:19.968961108 + > serf-1.3.9/SConstruct 2019-06-18 18:53:21.412337151 + > +@@ -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, > diff --git a/meta/recipes-support/serf/serf_1.3.9.bb > b/meta/recipes-support/serf/serf_1.3.9.bb > index 92cd5ca061..25ccd79e00 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 \ > file://0002-SConstruct-Fix-path-quoting-for-.def-generator.patch \ > file://0003-gen_def.patch \ > > file://0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch \ > + > file://SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch > \ tabs or spaces mismatch I gu
[OE-core] [PATCH] 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 Signed-off-by: Martin Jansa --- ...ories.without.sandbox-install.prefix.patch | 34 +++ meta/recipes-support/serf/serf_1.3.9.bb | 1 + 2 files changed, 35 insertions(+) create mode 100644 meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch 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 00..bfb2f5a2aa --- /dev/null +++ b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch @@ -0,0 +1,34 @@ +--- ../1.3.9-r0-bad-double/serf-1.3.9/SConstruct 2019-06-18 15:49:19.968961108 + serf-1.3.9/SConstruct 2019-06-18 18:53:21.412337151 + +@@ -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, diff --git a/meta/recipes-support/serf/serf_1.3.9.bb b/meta/recipes-support/serf/serf_1.3.9.bb index 92cd5ca061..25ccd79e00 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 \ file://0002-SConstruct-Fix-path-quoting-for-.def-generator.patch \ file://0003-gen_def.patch \ file://0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch \ + file://SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch \ " SRC_URI[md5sum] = "370a6340ff20366ab088012cd13f2b57" -- 2.17.1 -- ___ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core