[OE-core] [PATCH] serf: stop scons trying to create directories in hosts rootfs

Burton, Ross ross.burton at intel.com
Tue Jun 18 19:23:41 UTC 2019


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 <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 \
>             "
>
>  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


More information about the Openembedded-core mailing list