meta: various fixes
v2 cover meta: various fixes
* V2:
Rebase to up-to-date master branch and drop already merged patches.
* V1:
Initial version
// Robert
The following changes since commit 760103cdaed3e820888d8984ec0b76cfc831d534:
nativesdk-rpm: Add wrappers for nativesdk support (2018-05-29 21:06:03 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rbt/fix_from_wr
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/fix_from_wr
Catalin Enache (1):
init-install: add timeout for legacy grub
Chen Qi (1):
populate_sdk_ext.bbclass: add ESDK_MANIFEST_EXCLUDES
Jackie Huang (3):
rootfs-postcommands: split ssh_allow_empty_password
dropbear: add default config file to disable root login
glibc: re-package for libnss-db
Jian Liu (1):
lsof: fix LSOF_CCV in version.h
Kai Kang (1):
toolchain-scripts.bbclass: do not extend dependency if extended
already
Li Wang (1):
rpcbind: add option to make user able to use fixed port number
Mark Hatle (1):
base.bbclass: Add buildcfg multilib values
Ovidiu Panait (1):
openssl-nativesdk: Fix "can't open config file" warning
Robert Yang (3):
runqemu-extract-sdk: allow install debugfs on rootfs oe/copy_buildsystem.py: add SDK_LAYERS_EXCLUDE_PATTERN site/powerpc64-linux: add cvs_cv_func_printf_ptr
Shan Hai (1):
xinetd: add Init Script Actions to xinetd script
Yadi.hu (1):
busybox: handle syslog
Yuanjie Huang (1):
gcc-sanitizers: Fix libtool .la files
meta/classes/base.bbclass | 13 ++- meta/classes/image.bbclass | 2 +- meta/classes/populate_sdk_ext.bbclass | 6 + meta/classes/rootfs-postcommands.bbclass | 25 +++- meta/classes/toolchain-scripts.bbclass | 13 ++- meta/conf/bitbake.conf | 2 +- meta/lib/oe/copy_buildsystem.py | 18 +++ .../openssl/openssl/environment.d-openssl.sh | 1 + meta/recipes-connectivity/openssl/openssl10.inc | 7 ++ .../recipes-connectivity/openssl/openssl_1.0.2o.bb | 5 + .../recipes-connectivity/openssl/openssl_1.1.0h.bb | 11 ++ meta/recipes-core/busybox/busybox.inc | 14 ++- meta/recipes-core/dropbear/dropbear.inc | 3 + .../dropbear/dropbear/dropbear.default | 2 + meta/recipes-core/glibc/glibc-package.inc | 5 +- .../initrdscripts/files/init-install.sh | 2 + meta/recipes-devtools/gcc/gcc-sanitizers.inc | 2 + .../files/Configure-fix-LSOF_CCV-assignment.patch | 31 +++++ meta/recipes-extended/lsof/lsof_4.89.bb | 4 +- .../rpcbind_add_option_to_fix_port_number.patch | 130 +++++++++++++++++++++ meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb | 1 + meta/recipes-extended/xinetd/xinetd/xinetd.init | 12 +- meta/site/powerpc64-linux | 2 + scripts/runqemu-extract-sdk | 4 +- 24 files changed, 298 insertions(+), 17 deletions(-) create mode 100644 meta/recipes-connectivity/openssl/openssl/environment.d-openssl.sh create mode 100644 meta/recipes-core/dropbear/dropbear/dropbear.default create mode 100644 meta/recipes-extended/lsof/files/Configure-fix-LSOF_CCV-assignment.patch create mode 100644 meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch
Signature · 1 line
2.7.4
PATCH v2 1/16 base.bbclass: Add buildcfg multilib values
From: Mark Hatle <[email protected]>
When displaying the buildcfg for the end user, add in processing of the multilib variants. Only the items that are not the same as the DEFAULTTUNE are displayed.
I.e.:
Build Configuration:
BB_VERSION = "1.19.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "CentOS-6.4" DISTRO_VERSION = "oe-core.0" MACHINE = "qemux86-64" DEFAULTTUNE = "x86-64" TARGET_SYS = "x86_64-oe-linux" TUNE_FEATURES = "m64" TARGET_FPU = "" lib32: DEFAULTTUNE = "x86" lib32: TARGET_SYS = "i586-oe-linux" lib32: TUNE_FEATURES = "m32"
meta = "master:1975f3d7bbeb184489a5d0a2e0de231f317d3e1b"
The order of the displayed elements was changed slightly to group the host information together, as well as group the target information together.
--- meta/classes/base.bbclass | 13 ++++++++++++- meta/conf/bitbake.conf | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-)
meta/classes/base.bbclass +12 -1
@@ -188,7 +188,7 @@ def get_layers_branch_rev(d): return layers_branch_rev -BUILDCFG_FUNCS ??= "buildcfg_vars get_layers_branch_rev buildcfg_neededvars" +BUILDCFG_FUNCS ??= "buildcfg_vars buildcfg_multilibs get_layers_branch_rev buildcfg_neededvars" BUILDCFG_FUNCS[type] = "list" def buildcfg_vars(d):
@@ -198,6 +198,17 @@ def buildcfg_vars(d): if value is not None: yield '%-20s = "%s"' % (var, value) +def buildcfg_multilibs(d): + variants = d.getVar("MULTILIB_VARIANTS", True) or "" + for variant in variants.split(): + localdata = get_multilib_datastore(variant, d) + statusvars = oe.data.typed_value('BUILDCFG_VARS', d) + for var in statusvars: + origvalue = d.getVar(var, True) + variantvalue = localdata.getVar(var, True) + if origvalue and variantvalue and origvalue != variantvalue: + yield '%-7s %-17s = "%s"' % (variant + ":", var, variantvalue) + def buildcfg_neededvars(d): needed_vars = oe.data.typed_value("BUILDCFG_NEEDEDVARS", d) pesteruser = []
meta/conf/bitbake.conf +1 -1
@@ -699,7 +699,7 @@ PREFERRED_PROVIDER_virtual/fakeroot-native ?= "pseudo-native" # Pre-build configuration output BUILDCFG_HEADER = "Build Configuration:" -BUILDCFG_VARS = "BB_VERSION BUILD_SYS NATIVELSBSTRING TARGET_SYS MACHINE DISTRO DISTRO_VERSION TUNE_FEATURES TARGET_FPU" +BUILDCFG_VARS = "BB_VERSION BUILD_SYS NATIVELSBSTRING DISTRO DISTRO_VERSION MACHINE DEFAULTTUNE TARGET_SYS TUNE_FEATURES TARGET_FPU" BUILDCFG_VARS[type] = "list" BUILDCFG_NEEDEDVARS = "TARGET_ARCH TARGET_OS" BUILDCFG_NEEDEDVARS[type] = "list"
Signature · 1 line
2.7.4
PATCH v2 2/16 runqemu-extract-sdk: allow install debugfs on rootfs
In reply to Robert YangUsually, the debugfs' (-dbg.tar.*) work follow is:
1) Install regular rootfs to dir_foo
2) Install debugfs (-dbg.tar.*) to the same dir_foo
So we need to allow installing the debugfs on top of the rootfs.
--- scripts/runqemu-extract-sdk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
scripts/runqemu-extract-sdk +3 -1
@@ -76,7 +76,9 @@ fi pseudo_state_dir="$SDK_ROOTFS_DIR/../$(basename "$SDK_ROOTFS_DIR").pseudo_state" pseudo_state_dir="$(readlink -f $pseudo_state_dir)" -if [ -e "$pseudo_state_dir" ]; then +debug_image="`echo $ROOTFS_TARBALL | grep '\-dbg\.tar\.'`" + +if [ -e "$pseudo_state_dir" -a -z "$debug_image" ]; then echo "Error: $pseudo_state_dir already exists!" echo "Please delete the rootfs tree and pseudo directory manually" echo "if this is really what you want."
Signature · 1 line
2.7.4
PATCH v2 3/16 lsof: fix LSOF_CCV in version.h
In reply to Robert YangFrom: Jian Liu <[email protected]>
When using cross compiler to build the package "lsof" on a host, the value of LSOF_CCV in version.h genegrated by the Makefile is the version of the compiler on the host while it should be the version of cross compiler.
On Ubuntu host before fixed:
#define LSOF_CCV "4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) "
After fixed:
#define LSOF_CCV "4.9.1 (GCC) "
--- .../files/Configure-fix-LSOF_CCV-assignment.patch | 31 ++++++++++++++++++++++ meta/recipes-extended/lsof/lsof_4.89.bb | 4 ++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-extended/lsof/files/Configure-fix-LSOF_CCV-assignment.patch
meta/recipes-extended/lsof/files/Configure-fix-LSOF_CCV-assignment.patch new file +31 -0
@@ -0,0 +1,31 @@ +From c197389c9d8ccdbfcfe1dc31da6b4ce69b90ecf6 Mon Sep 17 00:00:00 2001 +From: Wenzong Fan <[email protected]> +Date: Thu, 23 Oct 2014 03:43:27 -0400 +Subject: [PATCH] Configure: fix LSOF_CCV assignment + +Allow to use specified LSOF_CC to get the version of linux compiler. + +Upstream-Status: Pending + +Signed-off-by: Wenzong Fan <[email protected]> +--- + Configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Configure b/Configure +index 29c1292..e5a199f 100755 +--- a/Configure ++++ b/Configure +@@ -2705,8 +2705,8 @@ LOCKF_OWNER4 + if test "X$LSOF_CC" = "X" # { + then + LSOF_CC=cc +- LSOF_CCV=`$LSOF_CC -v 2>&1 | sed -n 's/.*version \(.*\)/\1/p'` + fi # } ++ LSOF_CCV=`$LSOF_CC -v 2>&1 | sed -n 's/.*version \(.*\)/\1/p'` + if test "X$LINUX_CONF_CC" = "X" # { + then + LINUX_CONF_CC=$LSOF_CC +-- +1.7.9.5 +
meta/recipes-extended/lsof/lsof_4.89.bb +3 -1
@@ -13,7 +13,8 @@ LIC_FILES_CHKSUM = "file://00README;beginline=645;endline=679;md5=964df275d26429 SRC_URI = "http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2 \ file://lsof-remove-host-information.patch \ - " + file://Configure-fix-LSOF_CCV-assignment.patch \ +" SRC_URI[md5sum] = "1b9cd34f3fb86856a125abbf2be3a386" SRC_URI[sha256sum] = "81ac2fc5fdc944793baf41a14002b6deb5a29096b387744e28f8c30a360a3718"
@@ -40,6 +41,7 @@ python do_unpack () { export LSOF_INCLUDE = "${STAGING_INCDIR}" do_configure () { + export LSOF_CC="${CC}" export LSOF_AR="${AR} cr" export LSOF_RANLIB="${RANLIB}" if [ "x${GLIBCVERSION}" != "x" ]; then
Signature · 1 line
2.7.4
Re: [PATCH 03/16] lsof: fix LSOF_CCV in version.h
Quoted 7 lines · Robert Yang
From: Jian Liu <[email protected]>
When using cross compiler to build the package "lsof" on a host, the value of
LSOF_CCVinversion.hgenegrated by theMakefileis the version of the compiler on the host while it should be the version of cross compiler.
Quoted 5 lines
On Ubuntu host before fixed:
#defineLSOF_CCV"4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) "After fixed:
#defineLSOF_CCV"4.9.1 (GCC) "
The above is good info but its not included in the patch header which this patch adds. Could you add it there please so that we can understand what the patch does and why in the future without having to trawl git history please.
Cheers,
Richard
Re: [PATCH 03/16] lsof: fix LSOF_CCV in version.h
Quoted 11 lines · Richard Purdie
Quoted 10 lines · Robert Yang
From: Jian Liu <[email protected]>
When using cross compiler to build the package "lsof" on a host, the value of
LSOF_CCVinversion.hgenegrated by theMakefileis the version of the compiler on the host while it should be the version of cross compiler.On Ubuntu host before fixed:
#define LSOF_CCV "4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) "
Quoted 7 lines
Quoted 2 lines
After fixed:
#define LSOF_CCV "4.9.1 (GCC) "The above is good info but its not included in the patch header which this patch adds. Could you add it there please so that we can understand what the patch does and why in the future without having to trawl git history please.
Thanks, updated.
// Robert
Quoted 6 lines
Cheers,
Richard
PATCH v2 4/16 busybox: handle syslog
In reply to Robert YangFrom: "Yadi.hu" <[email protected]>
If CONFIG_KLOGD is not enabled, then the related service file should not be installed, The error message is below:
Cannot add dependency job for unit busybox-klogd.service,
ignoring: Unit busybox-klogd.service failed to load:
No such file or directory.
So we should first check the configuration before we install these service files.
--- meta/recipes-core/busybox/busybox.inc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
meta/recipes-core/busybox/busybox.inc +9 -5
@@ -315,20 +315,24 @@ do_install () { fi if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + if grep -q "CONFIG_KLOGD=y" ${B}/.config; then + install -d ${D}${systemd_unitdir}/system + sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-klogd.service.in \ + > ${D}${systemd_unitdir}/system/busybox-klogd.service + fi + if grep -q "CONFIG_SYSLOGD=y" ${B}/.config; then install -d ${D}${systemd_unitdir}/system sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-syslog.service.in \ > ${D}${systemd_unitdir}/system/busybox-syslog.service + if [ ! -e ${D}${systemd_unitdir}/system/busybox-klogd.service ] ; then + sed -i '/klog/d' ${D}${systemd_unitdir}/system/busybox-syslog.service + fi if [ -f ${WORKDIR}/busybox-syslog.default ] ; then install -d ${D}${sysconfdir}/default install -m 0644 ${WORKDIR}/busybox-syslog.default ${D}${sysconfdir}/default/busybox-syslog fi fi - if grep -q "CONFIG_KLOGD=y" ${B}/.config; then - install -d ${D}${systemd_unitdir}/system - sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-klogd.service.in \ - > ${D}${systemd_unitdir}/system/busybox-klogd.service - fi fi # Remove the sysvinit specific configuration file for systemd systems to avoid confusion
Signature · 1 line
2.7.4
PATCH v2 5/16 xinetd: add Init Script Actions to xinetd script
In reply to Robert YangFrom: Shan Hai <[email protected]>
The chkconfig fails to list the xinetd service because the xinetd lacks Init Script Actions in it, add the actions to fix it.
--- meta/recipes-extended/xinetd/xinetd/xinetd.init | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
meta/recipes-extended/xinetd/xinetd/xinetd.init +11 -1
@@ -1,5 +1,15 @@ #!/bin/sh -# +### BEGIN INIT INFO +# Provides: inetd +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Should-Start: $syslog +# Should-Stop: $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start or stop the xinetd daemon. +### END INIT INFO + # /etc/init.d/xinetd -- script to start and stop xinetd. # Source function library.
Signature · 1 line
2.7.4
Re: [PATCH 05/16] xinetd: add Init Script Actions to xinetd script
Quoted 20 lines · Robert Yang
From: Shan Hai <[email protected]>
The chkconfig fails to list the xinetd service because the xinetd lacks Init Script Actions in it, add the actions to fix it.
Signed-off-by Shan Hai <[email protected]>Signed-off-by Mingli Yu <[email protected]>--- meta/recipes-extended/xinetd/xinetd/xinetd.init | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)meta/recipes-extended/xinetd/xinetd/xinetd.init +1
-1@@ -1,5 +1,15 @@ #!/bin/sh -# +### BEGIN INIT INFO
meta/recipes-extended/xinetd/xinetd/xinetd.init line 12
Quoted 10 lines
meta/recipes-extended/xinetd/xinetd/xinetd.init +10
-0+# Provides: inetd +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Should-Start: $syslog +# Should-Stop: $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start or stop the xinetd daemon. +### END INIT INFO +
Have we some kind of policy which says all init scripts have to have a header like this? I'm wondering why this is just getting applied for xinetd when there are probably other init scripts which don't have this. Are we planning to add this everywhere?
Cheers,
Richard
Re: [PATCH 05/16] xinetd: add Init Script Actions to xinetd script
Quoted 28 lines · Richard Purdie
Quoted 27 lines · Robert Yang
From: Shan Hai <[email protected]>
The chkconfig fails to list the xinetd service because the xinetd lacks Init Script Actions in it, add the actions to fix it.
Signed-off-by Shan Hai <[email protected]>Signed-off-by Mingli Yu <[email protected]>--- meta/recipes-extended/xinetd/xinetd/xinetd.init | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)meta/recipes-extended/xinetd/xinetd/xinetd.init +8
-1@@ -1,5 +1,15 @@ #!/bin/sh -# +### BEGIN INIT INFO +# Provides: inetd +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Should-Start: $syslog +# Should-Stop: $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6
Quoted 8 lines
meta/recipes-extended/xinetd/xinetd/xinetd.init line 12
Quoted 3 lines
meta/recipes-extended/xinetd/xinetd/xinetd.init +3
-0+# Short-Description: Start or stop the xinetd daemon. +### END INIT INFO +Have we some kind of policy which says all init scripts have to have a header like this? I'm wondering why this is just getting applied for xinetd when there are probably other init scripts which don't have this. Are we planning to add this everywhere?
We added this is because customer requires, and only for this one. We don't have any plan to add more.
// Robert
Quoted 7 lines
Cheers,
Richard
Re: [PATCH 05/16] xinetd: add Init Script Actions to xinetd script
Quoted 42 lines · Robert Yang
Quoted 31 lines · Richard Purdie
Quoted 30 lines · Robert Yang
From: Shan Hai <[email protected]>
The chkconfig fails to list the xinetd service because the xinetd lacks Init Script Actions in it, add the actions to fix it.
Signed-off-by Shan Hai <[email protected]>Signed-off-by Mingli Yu <[email protected]>--- meta/recipes-extended/xinetd/xinetd/xinetd.init | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)meta/recipes-extended/xinetd/xinetd/xinetd.init +10
-1@@ -1,5 +1,15 @@ #!/bin/sh -# +### BEGIN INIT INFO +# Provides: inetd +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Should-Start: $syslog +# Should-Stop: $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start or stop the xinetd daemon. +### END INIT INFOQuoted 8 lines
meta/recipes-extended/xinetd/xinetd/xinetd.init line 12
Quoted 1 line
meta/recipes-extended/xinetd/xinetd/xinetd.init +1
-0+Have we some kind of policy which says all init scripts have to have a
header like this? I'm wondering why this is just getting applied for
xinetd when there are probably other init scripts which don't have this. Are we planning to add this everywhere?
Quoted 2 lines
We added this is because customer requires, and only for this one. We don't have any plan to add more.
I don't see the need to have this in OE-Core, it just duplicates information from the recipe which can easily become outdated...
Cheers,
Richard
Re: [PATCH 05/16] xinetd: add Init Script Actions to xinetd script
Hi RP,
Quoted 43 lines · Richard Purdie
Quoted 42 lines · Robert Yang
Quoted 39 lines · Richard Purdie
Quoted 21 lines · Robert Yang
From: Shan Hai <[email protected]>
The chkconfig fails to list the xinetd service because the xinetd lacks Init Script Actions in it, add the actions to fix it.
Signed-off-by Shan Hai <[email protected]>Signed-off-by Mingli Yu <[email protected]>--- meta/recipes-extended/xinetd/xinetd/xinetd.init | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)meta/recipes-extended/xinetd/xinetd/xinetd.init +1
-1@@ -1,5 +1,15 @@ #!/bin/sh -# +### BEGIN INIT INFOmeta/recipes-extended/xinetd/xinetd/xinetd.init line 12
Quoted 10 lines
meta/recipes-extended/xinetd/xinetd/xinetd.init +10
-0+# Provides: inetd +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Should-Start: $syslog +# Should-Stop: $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start or stop the xinetd daemon. +### END INIT INFO +Have we some kind of policy which says all init scripts have to have a
header like this? I'm wondering why this is just getting applied for
xinetd when there are probably other init scripts which don't have this. Are we planning to add this everywhere?
Quoted 5 lines
Quoted 2 lines
We added this is because customer requires, and only for this one. We don't have any plan to add more.
I don't see the need to have this in OE-Core, it just duplicates information from the recipe which can easily become outdated...
Yes, they may become outdated, but these info are required by lsb:
http://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html
The OE-Core also has other similar init scripts which have similar info:
$ find meta/recipes-* -name '*.init' -exec grep -H '# Provides:' {} \;
meta/recipes-core/dbus/dbus/dbus-1.init:# Provides: dbus
meta/recipes-core/sysvinit/sysvinit/bootlogd.init:# Provides: bootlogd
meta/recipes-devtools/tcf-agent/tcf-agent/tcf-agent.init:# Provides: tcf-agent
meta/recipes-extended/watchdog/watchdog/wd_keepalive.init:# Provides: wd_keepalive
meta/recipes-extended/cronie/cronie/crond.init:# Provides: crond crontabAnd xinetd/xinetd.init is owned by oe-core, it seems that this is the only way to fix it.
// Robert
Quoted 5 lines
Cheers,
Richard
PATCH v2 6/16 gcc-sanitizers: Fix libtool .la files
In reply to Robert YangFrom: Yuanjie Huang <[email protected]>
Since libtool sysroot is not set when compiling sanitizers, the libtool does no prefix the dependency path correctly. Fix it, so that programs can link to sanitizer libraries without error.
--- meta/recipes-devtools/gcc/gcc-sanitizers.inc | 2 ++ 1 file changed, 2 insertions(+)
meta/recipes-devtools/gcc/gcc-sanitizers.inc +2 -0
@@ -39,6 +39,8 @@ do_install () { rmdir --ignore-fail-on-non-empty -p ${D}${infodir} fi chown -R root:root ${D} + # Fix broken libtool with stdc++, as sysroot is not set. + find ${D} -name \*.la -exec sed -i "/^dependency_libs=/s@'${libdir}'@=${libdir}@g" {} \; } INHIBIT_DEFAULT_DEPS = "1"
Signature · 1 line
2.7.4
Re: [PATCH 06/16] gcc-sanitizers: Fix libtool .la files
Quoted 19 lines · Robert Yang
From: Yuanjie Huang <[email protected]>
Since libtool sysroot is not set when compiling sanitizers, the libtool
does no prefix the dependency path correctly. Fix it, so that programs
can link to sanitizer libraries without error.Signed-off-by Yuanjie Huang <[email protected]>Signed-off-by Mark Hatle <[email protected]>--- meta/recipes-devtools/gcc/gcc-sanitizers.inc | 2 ++ 1 file changed, 2 insertions(+)meta/recipes-devtools/gcc/gcc-sanitizers.inc +0
-0
meta/recipes-devtools/gcc/gcc-sanitizers.inc do_install () { · line 46
Quoted 8 lines
meta/recipes-devtools/gcc/gcc-sanitizers.inc +2
-0@@ -39,6 +39,8 @@ do_install () { rmdir --ignore-fail-on-non-empty -p ${D}${infodir} fi chown -R root:root ${D} + # Fix broken libtool with stdc++, as sysroot is not set. + find ${D} -name \*.la -exec sed -i "/^dependency_libs=/s@'${libdir}'@=${libdir}@g" {} \; } INHIBIT_DEFAULT_DEPS = "1"
At this point we gave up and started just deleting .la files so I'm not sure this matters any more. Do you still need to do this?
Regardless, it would be better to pass in the right libtool sysroot rather than hacking the .la files.
Cheers,
Richard
Re: [PATCH 06/16] gcc-sanitizers: Fix libtool .la files
Quoted 27 lines · Richard Purdie
Quoted 26 lines · Robert Yang
From: Yuanjie Huang <[email protected]>
Since libtool sysroot is not set when compiling sanitizers, the libtool
does no prefix the dependency path correctly. Fix it, so that programs
can link to sanitizer libraries without error.Signed-off-by Yuanjie Huang <[email protected]>Signed-off-by Mark Hatle <[email protected]>--- meta/recipes-devtools/gcc/gcc-sanitizers.inc | 2 ++ 1 file changed, 2 insertions(+)meta/recipes-devtools/gcc/gcc-sanitizers.inc +2
-0@@ -39,6 +39,8 @@ do_install () { rmdir --ignore-fail-on-non-empty -p ${D}${infodir} fi chown -R root:root ${D} + # Fix broken libtool with stdc++, as sysroot is not set. + find ${D} -name \*.la -exec sed -i "/^dependency_libs=/s@'${libdir}'@=${libdir}@g" {} \; }
Quoted 4 lines
meta/recipes-devtools/gcc/gcc-sanitizers.inc do_install () { · line 46
Quoted 1 line
meta/recipes-devtools/gcc/gcc-sanitizers.inc +0
-0INHIBIT_DEFAULT_DEPS = "1"At this point we gave up and started just deleting .la files so I'm not sure this matters any more. Do you still need to do this?
Sory, I can't find any la files in ${D}, I think that is not needed any more, I will drop it in V3.
// Robert
Quoted 9 lines
Regardless, it would be better to pass in the right libtool sysroot rather than hacking the .la files.
Cheers,
Richard
PATCH v2 7/16 oe/copy_buildsystem.py: add SDK_LAYERS_EXCLUDE_PATTERN
In reply to Robert YangIt is helpful when exclude a lot of layers. It uses python re, and supports multiple patterns (separated by space).
--- meta/lib/oe/copy_buildsystem.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
meta/lib/oe/copy_buildsystem.py +18 -0
@@ -1,5 +1,12 @@ # This class should provide easy access to the different aspects of the # buildsystem such as layers, bitbake location, etc. +# +# SDK_LAYERS_EXCLUDE: Layers which will be excluded from SDK layers. +# SDK_LAYERS_EXCLUDE_PATTERN: The simiar to SDK_LAYERS_EXCLUDE, this supports +# python regular expression, use space as separator, +# e.g.: ".*-downloads closed-.*" +# + import stat import shutil
@@ -23,8 +30,10 @@ class BuildSystem(object): self.context = context self.layerdirs = [os.path.abspath(pth) for pth in d.getVar('BBLAYERS').split()] self.layers_exclude = (d.getVar('SDK_LAYERS_EXCLUDE') or "").split() + self.layers_exclude_pattern = d.getVar('SDK_LAYERS_EXCLUDE_PATTERN') def copy_bitbake_and_layers(self, destdir, workspace_name=None): + import re # Copy in all metadata layers + bitbake (as repositories) layers_copied = [] bb.utils.mkdirhier(destdir)
@@ -40,8 +49,17 @@ class BuildSystem(object): # Exclude layers for layer_exclude in self.layers_exclude: if layer_exclude in layers: + bb.note('Excluded %s from sdk layers since it is in SDK_LAYERS_EXCLUDE' % layer_exclude) layers.remove(layer_exclude) + if self.layers_exclude_pattern: + layers_cp = layers[:] + for pattern in self.layers_exclude_pattern.split(): + for layer in layers_cp: + if re.match(pattern, layer): + bb.note('Excluded %s from sdk layers since matched SDK_LAYERS_EXCLUDE_PATTERN' % layer) + layers.remove(layer) + workspace_newname = workspace_name if workspace_newname: layernames = [os.path.basename(layer) for layer in layers]
Signature · 1 line
2.7.4
PATCH v2 8/16 site/powerpc64-linux: add cvs_cv_func_printf_ptr
In reply to Robert YangFixed when powerpc64:
$ bitbake <image> -ctestsdk [snip] checking whether printf supports %p... configure: error: cannot run test program while cross compiling See `config.log' for more details. test_cvs (oeqa.sdk.buildcvs.BuildCvsTest) ... FAIL [snip]
The cvs_cv_func_printf_ptr is already in powerpc32-linux.
--- meta/site/powerpc64-linux | 2 ++ 1 file changed, 2 insertions(+)
meta/site/powerpc64-linux +2 -0
@@ -37,3 +37,5 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2} # apr apr_cv_tcp_nodelay_with_cork=${apr_cv_tcp_nodelay_with_cork=yes} +# cvs +cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
Signature · 1 line
2.7.4
PATCH v2 9/16 rootfs-postcommands: split ssh_allow_empty_password
In reply to Robert YangFrom: Jackie Huang <[email protected]>
"allow root login" should not be bundled in ssh_allow_empty_password, because some distro may want only one of "allow root login" and "allow empty password", so split it out into ssh_allow_root_login and add new imagefeature allow-root-login so they can be controlled separately, debug-tweaks will still include both of them.
--- meta/classes/image.bbclass | 2 +- meta/classes/rootfs-postcommands.bbclass | 25 ++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-)
meta/classes/image.bbclass +1 -1
@@ -23,7 +23,7 @@ inherit ${TESTIMAGECLASS} # IMAGE_FEATURES may contain any available package group IMAGE_FEATURES ?= "" IMAGE_FEATURES[type] = "list" -IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs empty-root-password allow-empty-password post-install-logging" +IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs empty-root-password allow-empty-password allow-root-login post-install-logging" # Generate companion debugfs? IMAGE_GEN_DEBUGFS ?= "0"
meta/classes/rootfs-postcommands.bbclass +22 -3
@@ -2,9 +2,12 @@ # Zap the root password if debug-tweaks feature is not enabled ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'empty-root-password' ], "", "zap_empty_root_password ; ",d)}' -# Allow dropbear/openssh to accept logins from accounts with an empty password string if debug-tweaks is enabled +# Allow dropbear/openssh to accept logins from accounts with an empty password string if debug-tweaks or allow-empty-password is enabled ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'allow-empty-password' ], "ssh_allow_empty_password; ", "",d)}' +# Allow dropbear/openssh to accept root logins if debug-tweaks or allow-root-login is enabled +ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'allow-root-login' ], "ssh_allow_root_login; ", "",d)}' + # Enable postinst logging if debug-tweaks is enabled ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains_any("IMAGE_FEATURES", [ 'debug-tweaks', 'post-install-logging' ], "postinst_enable_logging; ", "",d)}'
@@ -146,12 +149,11 @@ zap_empty_root_password () { } # -# allow dropbear/openssh to accept root logins and logins from accounts with an empty password string +# allow dropbear/openssh to accept logins from accounts with an empty password string # ssh_allow_empty_password () { for config in sshd_config sshd_config_readonly; do if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config ]; then - sed -i 's/^[#[:space:]]*PermitRootLogin.*/PermitRootLogin yes/' ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config sed -i 's/^[#[:space:]]*PermitEmptyPasswords.*/PermitEmptyPasswords yes/' ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config fi done
@@ -174,6 +176,23 @@ ssh_allow_empty_password () { fi } +# +# allow dropbear/openssh to accept root logins +# +ssh_allow_root_login () { + for config in sshd_config sshd_config_readonly; do + if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config ]; then + sed -i 's/^[#[:space:]]*PermitRootLogin.*/PermitRootLogin yes/' ${IMAGE_ROOTFS}${sysconfdir}/ssh/$config + fi + done + + if [ -e ${IMAGE_ROOTFS}${sbindir}/dropbear ] ; then + if grep -q DROPBEAR_EXTRA_ARGS ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear 2>/dev/null ; then + sed -i '/^DROPBEAR_EXTRA_ARGS=/ s/-w//' ${IMAGE_ROOTFS}${sysconfdir}/default/dropbear + fi + fi +} + ssh_disable_dns_lookup () { if [ -e ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config ]; then sed -i -e 's:#UseDNS yes:UseDNS no:' ${IMAGE_ROOTFS}${sysconfdir}/ssh/sshd_config
Signature · 1 line
2.7.4
PATCH v2 10/16 dropbear: add default config file to disable root login
In reply to Robert YangFrom: Jackie Huang <[email protected]>
root login is disabled by default for openssh and we can enable it through IMAGE_FEATURES 'debug-tweaks' or 'allow-empty-password', so change to the same default behavior for dropbear.
--- meta/recipes-core/dropbear/dropbear.inc | 3 +++ meta/recipes-core/dropbear/dropbear/dropbear.default | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 meta/recipes-core/dropbear/dropbear/dropbear.default
meta/recipes-core/dropbear/dropbear.inc +3 -0
@@ -20,6 +20,7 @@ SRC_URI = "http://matt.ucc.asn.au/dropbear/releases/dropbear-${PV}.tar.bz2 \ file://dropbearkey.service \ file://[email protected] \ file://dropbear.socket \ + file://dropbear.default \ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} " PAM_SRC_URI = "file://0005-dropbear-enable-pam.patch \
@@ -63,6 +64,8 @@ do_install() { ${D}${sbindir} \ ${D}${localstatedir} + install -m 0644 ${WORKDIR}/dropbear.default ${D}${sysconfdir}/default/dropbear + install -m 0755 dropbearmulti ${D}${sbindir}/ ln -s ${sbindir}/dropbearmulti ${D}${bindir}/dbclient
meta/recipes-core/dropbear/dropbear/dropbear.default new file +2 -0
@@ -0,0 +1,2 @@ +# Disallow root logins by default +DROPBEAR_EXTRA_ARGS="-w"
Signature · 1 line
2.7.4
Re: [PATCH 10/16] dropbear: add default config file to disable root login
Quoted 7 lines · Robert Yang
From: Jackie Huang <[email protected]>
root login is disabled by default for openssh and we can enable it through
IMAGE_FEATURES'debug-tweaks' or 'allow-empty-password', so change to the same default behavior for dropbear.
Quoted 7 lines
Signed-off-by Jackie Huang <[email protected]>--- meta/recipes-core/dropbear/dropbear.inc | 3 +++ meta/recipes-core/dropbear/dropbear/dropbear.default | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 meta/recipes-core/dropbear/dropbear/dropbear.default
This or the preceeding patch in the series appears to cause the first failure in:
(FAIL: test_non_root_user_can_connect_via_ssh_without_password (imagefeatures.ImageFeatures))
Cheers,
Richard
Re: [PATCH 10/16] dropbear: add default config file to disable root login
Quoted 16 lines · Richard Purdie
Quoted 7 lines · Robert Yang
From: Jackie Huang <[email protected]>
root login is disabled by default for openssh and we can enable it through
IMAGE_FEATURES'debug-tweaks' or 'allow-empty-password', so change to the same default behavior for dropbear.Quoted 7 lines
Signed-off-by Jackie Huang <[email protected]>--- meta/recipes-core/dropbear/dropbear.inc | 3 +++ meta/recipes-core/dropbear/dropbear/dropbear.default | 2 ++ 2 files changed, 5 insertions(+)create mode 100644 meta/recipes-
core/dropbear/dropbear/dropbear.default
Quoted 7 lines
This or the preceeding patch in the series appears to cause the first failure in:
(FAIL:
test_non_root_user_can_connect_via_ssh_without_password(imagefeatures.ImageFeatures))
Sorry, I'm working on this today, but needs more time to test it.
// Robert
Quoted 5 lines
Cheers,
Richard
PATCH v2 11/16 toolchain-scripts.bbclass: do not extend dependency if extended already
In reply to Robert YangFrom: Kai Kang <[email protected]>
When set MULTILIBS with two or more items, such as for mips64:
MULTILIBS ?= "multilib:lib32 multilib:libn32"
It expands dependency once in mutlib.bbclass, and expand again in toolchain-scripts.bbclass which causes error:
| ERROR: Nothing PROVIDES 'virtual/lib32-libn32-libc'. Close matches: | virtual/libn32-libc | virtual/lib32-libc | virtual/libn32-librpc | ERROR: Required build target 'libn32-meta-ide-support' has no buildable providers. | Missing or unbuildable dependency chain was: ['libn32-meta-ide-support', 'virtual/lib32-libn32-libc']
--- meta/classes/toolchain-scripts.bbclass | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
meta/classes/toolchain-scripts.bbclass +12 -1
@@ -170,7 +170,18 @@ python __anonymous () { deps = "" for dep in (d.getVar('TOOLCHAIN_NEED_CONFIGSITE_CACHE') or "").split(): deps += " %s:do_populate_sysroot" % dep - for variant in (d.getVar('MULTILIB_VARIANTS') or "").split(): + ml_variants = (d.getVar('MULTILIB_VARIANTS') or "").split() + + # don't extend if dep has been extended already + extended = False + for variant in ml_variants: + if dep.startswith(variant) or dep.startswith('virtual/' + variant): + extended = True + break + if extended: + continue + + for variant in ml_variants: clsextend = oe.classextend.ClassExtender(variant, d) newdep = clsextend.extend_name(dep) deps += " %s:do_populate_sysroot" % newdep
Signature · 1 line
2.7.4
PATCH v2 12/16 populate_sdk_ext.bbclass: add ESDK_MANIFEST_EXCLUDES
In reply to Robert YangFrom: Chen Qi <[email protected]>
Add ESDK_MANIFEST_EXCLUDES to enable excluding items in sdk-conf-manifest.
By default, files under conf/ are all added to sdk-conf-manifest, as the manifest file is set to 'conf/*'.
However, there are situations where some configuration files under conf/ directory are not intended to be added to sdk-conf-manifest, thus adding ESDK_MANIFEST_EXCLUDES to enable users to do this.
This variable takes the form of glob matching.
e.g.ESDK_MANIFEST_EXCLUDES = "conf/autogen*"
This would exclude all files under conf/ starting with 'autogen' from sdk-conf-manifest.
--- meta/classes/populate_sdk_ext.bbclass | 6 ++++++ 1 file changed, 6 insertions(+)
meta/classes/populate_sdk_ext.bbclass +6 -0
@@ -484,12 +484,18 @@ python copy_buildsystem () { # sdk_ext_postinst() below) thus the checksum we take here would always # be different. manifest_file_list = ['conf/*'] + esdk_manifest_excludes = (d.getVar('ESDK_MANIFEST_EXCLUDES') or '').split() + esdk_manifest_excludes_list = [] + for exclude_item in esdk_manifest_excludes: + esdk_manifest_excludes_list += glob.glob(os.path.join(baseoutpath, exclude_item)) manifest_file = os.path.join(baseoutpath, 'conf', 'sdk-conf-manifest') with open(manifest_file, 'w') as f: for item in manifest_file_list: for fn in glob.glob(os.path.join(baseoutpath, item)): if fn == manifest_file: continue + if fn in esdk_manifest_excludes_list: + continue chksum = bb.utils.sha256_file(fn) f.write('%s\t%s\n' % (chksum, os.path.relpath(fn, baseoutpath))) }
Signature · 1 line
2.7.4
PATCH v2 13/16 init-install: add timeout for legacy grub
In reply to Robert YangFrom: Catalin Enache <[email protected]>
After installing an image from an iso, booting the system using the legacy boots makes the grub prompt wait for an enter.
This is not desirable since many of this devices are embedded devices that should start by them self without user entry.
--- meta/recipes-core/initrdscripts/files/init-install.sh | 2 ++ 1 file changed, 2 insertions(+)
meta/recipes-core/initrdscripts/files/init-install.sh +2 -0
@@ -302,6 +302,8 @@ if [ -f /etc/grub.d/00_header -a $grub_version -ne 0 ] ; then GRUBCFG="/boot/grub/grub.cfg" mkdir -p $(dirname $GRUBCFG) cat >$GRUBCFG <<_EOF +timeout=5 +default=0 menuentry "Linux" { search --no-floppy --fs-uuid $boot_uuid --set root linux /$kernel root=PARTUUID=$root_part_uuid $rootwait rw $5 $3 $4 quiet
Signature · 1 line
2.7.4
PATCH v2 14/16 glibc: re-package for libnss-db
In reply to Robert YangFrom: Jackie Huang <[email protected]>
On other distros like ubuntu/centos, libnss-db usually provides:
- The libraries
- The Makefile to create database
(in /var/db for centos, /var/lib/misc/ for ubuntu)
- The makedb command (it's in glibc-common for centos7)
What we had is:
- The libraries are in glibc-extra-nss
- The Makefile is removed
- The makedb command is in glibc-utils (lack of dependency)
So when glibc-extra-nss is installed but glibc-utils is not,
we see error like:
nscd[165]: 165 checking for monitored file /var/db/group.db': No such file or directory nscd[165]: 165 checking for monitored file /var/db/passwd.db': No such file or directory
And there is not an easy way to create these databases.
To fix the issue:
- Re-package the libraries into libnss-db
- Don't remove the Makefile and add it in libnss-db
- Add RDEPENDS for libnss-db on glibc-utils and make
Notes:
For external toolchain, an extra package 'libnss-db' need to be provided If replacing glibc from core.
--- meta/recipes-core/glibc/glibc-package.inc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
meta/recipes-core/glibc/glibc-package.inc +3 -2
@@ -1,6 +1,6 @@ INHIBIT_SYSROOT_STRIP = "1" -PACKAGES = "${PN}-dbg catchsegv sln nscd ldd tzcode glibc-thread-db ${PN}-pic libcidn libmemusage libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc" +PACKAGES = "${PN}-dbg catchsegv sln nscd ldd tzcode glibc-thread-db ${PN}-pic libcidn libmemusage libnss-db libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc" # The ld.so in this glibc supports the GNU_HASH RPROVIDES_${PN} = "eglibc rtld(GNU_HASH)"
@@ -23,6 +23,8 @@ FILES_ldd = "${bindir}/ldd" FILES_libsegfault = "${base_libdir}/libSegFault*" FILES_libcidn = "${base_libdir}/libcidn-*.so ${base_libdir}/libcidn.so.*" FILES_libmemusage = "${base_libdir}/libmemusage.so" +FILES_libnss-db = "${base_libdir}/libnss_db.so.* ${base_libdir}/libnss_db-*.so ${localstatedir}/db/Makefile" +RDEPENDS_libnss-db = "${PN}-utils make" FILES_glibc-extra-nss = "${base_libdir}/libnss_*-*.so ${base_libdir}/libnss_*.so.*" FILES_sln = "${base_sbindir}/sln" FILES_${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
@@ -59,7 +61,6 @@ inherit libc-common multilib_header do_install_append () { rm -f ${D}${sysconfdir}/localtime - rm -rf ${D}${localstatedir} # remove empty glibc dir if [ -d ${D}${libexecdir} ]; then
Signature · 1 line
2.7.4
PATCH v2 15/16 rpcbind: add option to make user able to use fixed port number
In reply to Robert YangFrom: Li Wang <[email protected]>
Add option "-p" to specify fixed port number
--- .../rpcbind_add_option_to_fix_port_number.patch | 130 +++++++++++++++++++++ meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb | 1 + 2 files changed, 131 insertions(+) create mode 100644 meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch
meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch new file +130 -0
@@ -0,0 +1,130 @@ +From 76f8598fd20727908e760cbb497dd6a17eda4af5 Mon Sep 17 00:00:00 2001 +From: Roy Li <[email protected]> +Date: Wed, 17 Sep 2014 13:22:14 +0800 +Subject: [PATCH] add option to make users able to use fixed port number + +Upstream-Status: Submitted [https://sourceforge.net/p/rpcbind/discussion/716839/thread/32af721d/] + +Signed-off-by: Li Wang <[email protected]> +Signed-off-by: Roy Li <[email protected]> +Signed-off-by: Yi Zhao <[email protected]> +--- + man/rpcbind.8 | 4 +++- + src/rpcb_svc_com.c | 17 +++++++++++++++++ + src/rpcbind.c | 8 ++++++-- + 3 files changed, 26 insertions(+), 3 deletions(-) + +diff --git a/man/rpcbind.8 b/man/rpcbind.8 +index af6200f..2e6146b 100644 +--- a/man/rpcbind.8 ++++ b/man/rpcbind.8 +@@ -11,7 +11,7 @@ + .Nd universal addresses to RPC program number mapper + .Sh SYNOPSIS + .Nm +-.Op Fl adhiLls ++.Op Fl adhpiLls + .Sh DESCRIPTION + The + .Nm +@@ -107,6 +107,8 @@ will automatically add + and if IPv6 is enabled, + .Li ::1 + to the list. ++.It Fl p ++Bind for fixed UDP port number + .It Fl i + .Dq Insecure + mode. +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index 8aef9e5..c2632a4 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -48,6 +48,7 @@ + #include <rpc/rpc.h> + #include <rpc/rpcb_prot.h> + #include <rpc/svc_dg.h> ++#include <rpc/rpc_com.h> + #include <netconfig.h> + #include <errno.h> + #include <syslog.h> +@@ -497,6 +498,7 @@ xdr_opaque_parms(XDR *xdrs, struct r_rmtcall_args *cap) + + static struct rmtcallfd_list *rmthead; + static struct rmtcallfd_list *rmttail; ++extern unsigned short fixed_port; + + int + create_rmtcall_fd(struct netconfig *nconf) +@@ -504,6 +506,8 @@ create_rmtcall_fd(struct netconfig *nconf) + int fd; + struct rmtcallfd_list *rmt; + SVCXPRT *xprt; ++ struct __rpc_sockinfo si; ++ struct t_bind taddr; + + if ((fd = __rpc_nconf2fd(nconf)) == -1) { + if (debugging) +@@ -512,6 +516,19 @@ create_rmtcall_fd(struct netconfig *nconf) + nconf->nc_device, errno); + return (-1); + } ++ ++ if (fixed_port) { ++ __rpc_fd2sockinfo(fd, &si); ++ memset(&taddr, 0, sizeof(taddr)); ++ taddr.addr.maxlen = taddr.addr.len = si.si_alen; ++ taddr.addr.buf = malloc(si.si_alen); ++ if (taddr.addr.buf == NULL) { ++ return -1; ++ } ++ *(unsigned short *)(&(taddr.addr.buf[0])) = si.si_af; ++ *(unsigned short *)(&(taddr.addr.buf[2])) = htons(fixed_port); ++ xprt = svc_tli_create(fd, nconf, &taddr, RPC_MAXDATASIZE, RPC_MAXDATASIZE); ++ } else + xprt = svc_tli_create(fd, 0, (struct t_bind *) 0, 0, 0); + if (xprt == NULL) { + if (debugging) +diff --git a/src/rpcbind.c b/src/rpcbind.c +index 137011b..dc3d2d6 100644 +--- a/src/rpcbind.c ++++ b/src/rpcbind.c +@@ -111,6 +111,7 @@ int runasdaemon = 0; + int insecure = 0; + int oldstyle_local = 0; + int verboselog = 0; ++unsigned short fixed_port = 0; + + char **hosts = NULL; + int nhosts = 0; +@@ -869,7 +870,7 @@ parseargs(int argc, char *argv[]) + { + int c; + oldstyle_local = 1; +- while ((c = getopt(argc, argv, "adh:ilswf")) != -1) { ++ while ((c = getopt(argc, argv, "adh:p:ilswf")) != -1) { + switch (c) { + case 'a': + doabort = 1; /* when debugging, do an abort on */ +@@ -887,6 +888,9 @@ parseargs(int argc, char *argv[]) + if (hosts[nhosts - 1] == NULL) + errx(1, "Out of memory"); + break; ++ case 'p': ++ fixed_port = atoi(optarg); ++ break; + case 'i': + insecure = 1; + break; +@@ -905,7 +909,7 @@ parseargs(int argc, char *argv[]) + break; + #endif + default: /* error */ +- fprintf(stderr, "usage: rpcbind [-adhilswf]\n"); ++ fprintf(stderr, "usage: rpcbind [-adhpilswf]\n"); + exit (1); + } + } +-- +1.9.1 +
meta/recipes-extended/rpcbind/rpcbind_0.2.4.bb +1 -0
@@ -18,6 +18,7 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/rpcbind/rpcbind-${PV}.tar.bz2 \ file://0001-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch \ file://pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch \ file://rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch \ + file://rpcbind_add_option_to_fix_port_number.patch \ " SRC_URI[md5sum] = "cf10cd41ed8228fc54c316191c1f07fe" SRC_URI[sha256sum] = "074a9a530dc7c11e0d905aa59bcb0847c009313f02e98d3d798aa9568f414c66"
Signature · 1 line
2.7.4
PATCH v2 16/16 openssl-nativesdk: Fix "can't open config file" warning
In reply to Robert YangFrom: Ovidiu Panait <[email protected]>
When SDK is not installed in the default location, openssl will not be able to find the the openssl.cnf config file:
"WARNING: can't open config file: XXXX/usr/lib/ssl/openssl.cnf"
To fix this, we need to provide the environment variable $OPENSSL_CONF pointing to the correct config file location.
--- .../openssl/openssl/environment.d-openssl.sh | 1 + meta/recipes-connectivity/openssl/openssl10.inc | 7 +++++++ meta/recipes-connectivity/openssl/openssl_1.0.2o.bb | 5 +++++ meta/recipes-connectivity/openssl/openssl_1.1.0h.bb | 11 +++++++++++ 4 files changed, 24 insertions(+) create mode 100644 meta/recipes-connectivity/openssl/openssl/environment.d-openssl.sh
meta/recipes-connectivity/openssl/openssl/environment.d-openssl.sh new file +1 -0
@@ -0,0 +1 @@ +export OPENSSL_CONF="$OECORE_NATIVE_SYSROOT/usr/lib/ssl/openssl.cnf"
meta/recipes-connectivity/openssl/openssl10.inc +7 -0
@@ -282,5 +282,12 @@ do_install_append_class-native() { OPENSSL_ENGINES=${libdir}/ssl/engines } +do_install_append_class-nativesdk() { + mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d + install -m 644 ${WORKDIR}/environment.d-openssl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh +} + +FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh" + BBCLASSEXTEND = "native nativesdk"
meta/recipes-connectivity/openssl/openssl_1.0.2o.bb +5 -0
@@ -47,6 +47,11 @@ SRC_URI_append_class-target = "\ file://reproducible-cflags.patch \ file://reproducible-mkbuildinf.patch \ " + +SRC_URI_append_class-nativesdk = " \ + file://environment.d-openssl.sh \ + " + SRC_URI[md5sum] = "44279b8557c3247cbe324e2322ecd114" SRC_URI[sha256sum] = "ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d"
meta/recipes-connectivity/openssl/openssl_1.1.0h.bb +11 -0
@@ -19,6 +19,10 @@ SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ file://0001-Take-linking-flags-from-LDFLAGS-env-var.patch \ " +SRC_URI_append_class-nativesdk = " \ + file://environment.d-openssl.sh \ + " + S = "${WORKDIR}/openssl-${PV}" inherit lib_package multilib_header ptest
@@ -142,6 +146,13 @@ do_install_append_class-native () { sed -i -e 's,/etc/openssl,${sysconfdir}/ssl,g' ${D}${bindir}/c_rehash } +do_install_append_class-nativesdk() { + mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d + install -m 644 ${WORKDIR}/environment.d-openssl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh +} + +FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh" + do_install_ptest() { cp -r * ${D}${PTEST_PATH}
Signature · 1 line
2.7.4