[OE-core] [PATCH] serf: stop scons trying to create directories in hosts rootfs
Martin Jansa
martin.jansa at gmail.com
Tue Jun 18 19:20:53 UTC 2019
oe-core likes to mix them :)
On Tue, Jun 18, 2019 at 9:14 PM Khem Raj <raj.khem at gmail.com> wrote:
> On Tue, Jun 18, 2019 at 12:09 PM Martin Jansa <martin.jansa at gmail.com>
> 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 <Martin.Jansa at gmail.com>
> > ---
> > ...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 0000000000..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 +0000
> > ++++ serf-1.3.9/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,
> > 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 guess ?
>
> > "
> >
> > SRC_URI[md5sum] = "370a6340ff20366ab088012cd13f2b57"
> > --
> > 2.17.1
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20190618/645afbd5/attachment.html>
More information about the Openembedded-core
mailing list