some backported patches
Hi,
Can these fixes/patches from master please be applied to pyro.
Cheers,
Andre'
PATCH 1/17 gdb: fix gdbserver not working in musl/mips context
From: André Draszik <[email protected]>
Similar to
https://bugs.lede-project.org/index.php?do=details&task_id=637&openedfrom=-1%2Bweek
--- meta/recipes-devtools/gdb/gdb-7.12.1.inc | 1 + ..._gdb_patches_120-sigprocmask-invalid-call.patch | 45 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 meta/recipes-devtools/gdb/gdb/package_devel_gdb_patches_120-sigprocmask-invalid-call.patch
meta/recipes-devtools/gdb/gdb-7.12.1.inc +1 -0
@@ -15,6 +15,7 @@ SRC_URI = "http://ftp.gnu.org/gnu/gdb/gdb-${PV}.tar.xz \ file://0008-Use-exorted-definitions-of-SIGRTMIN.patch \ file://0009-Change-order-of-CFLAGS.patch \ file://0010-resolve-restrict-keyword-conflict.patch \ + file://package_devel_gdb_patches_120-sigprocmask-invalid-call.patch \ " SRC_URI[md5sum] = "193453347ddced7acb6b1cd2ee8f2e4b" SRC_URI[sha256sum] = "4607680b973d3ec92c30ad029f1b7dbde3876869e6b3a117d8a7e90081113186"
meta/recipes-devtools/gdb/gdb/package_devel_gdb_patches_120-sigprocmask-invalid-call.patch new file +45 -0
45 lines not on this page · raw message
Signature · 1 line
2.14.2
PATCH 2/17 busybox: fix a linking issue
In reply to André DraszikFrom: Ming Liu <[email protected]>
A following linking error was observed:
| ========== | archival/lib.a(tar.o): In function `tar_main': | archival/tar.c:1168: undefined reference to `unpack_Z_stream' | archival/tar.c:1168: undefined reference to `unpack_Z_stream' | ld: busybox_unstripped: hidden symbol `unpack_Z_stream' isn't defined | ld: final link failed: Bad value
this happened with clang compiler, with the following configs:
| CONFIG_TAR=y
| # CONFIG_FEATURE_SEAMLESS_Z is not set
which can be fixed by adding IF_FEATURE_* checks in.
--- .../busybox-tar-add-IF_FEATURE_-checks.patch | 70 ++++++++++++++++++++++ meta/recipes-core/busybox/busybox_1.24.1.bb | 1 + 2 files changed, 71 insertions(+) create mode 100644 meta/recipes-core/busybox/busybox/busybox-tar-add-IF_FEATURE_-checks.patch
meta/recipes-core/busybox/busybox/busybox-tar-add-IF_FEATURE_-checks.patch new file +70 -0
@@ -0,0 +1,70 @@ +From f94412f6bb49136694c5478d0aecb19118d1b08d Mon Sep 17 00:00:00 2001 +From: Ming Liu <[email protected]> +Date: Wed, 31 May 2017 11:48:09 +0200 +Subject: [PATCH] tar: add IF_FEATURE_* checks + +A following linking error was observed: +| ========== +| archival/lib.a(tar.o): In function `tar_main': +| archival/tar.c:1168: undefined reference to `unpack_Z_stream' +| archival/tar.c:1168: undefined reference to `unpack_Z_stream' +| ld: busybox_unstripped: hidden symbol `unpack_Z_stream' isn't defined +| ld: final link failed: Bad value + +this happened with clang compiler, with the following configs: +| CONFIG_TAR=y +| # CONFIG_FEATURE_SEAMLESS_Z is not set + +which can be fixed by adding IF_FEATURE_* checks in. + +Upstream-Status: Pending [ Sent to busybox upstream on 2017-06-02 ] + +Signed-off-by: Ming Liu <[email protected]> +--- + archival/tar.c | 25 +++++++++++++++---------- + 1 file changed, 15 insertions(+), 10 deletions(-) + +diff --git a/archival/tar.c b/archival/tar.c +index b70e00a..7598b71 100644 +--- a/archival/tar.c ++++ b/archival/tar.c +@@ -1216,21 +1216,26 @@ int tar_main(int argc UNUSED_PARAM, char **argv) + USE_FOR_MMU(IF_DESKTOP(long long) int FAST_FUNC (*xformer)(transformer_state_t *xstate);) + USE_FOR_NOMMU(const char *xformer_prog;) + +- if (opt & OPT_COMPRESS) +- USE_FOR_MMU(xformer = unpack_Z_stream;) ++ if (opt & OPT_COMPRESS) { ++ USE_FOR_MMU(IF_FEATURE_SEAMLESS_Z(xformer = unpack_Z_stream;)) + USE_FOR_NOMMU(xformer_prog = "uncompress";) +- if (opt & OPT_GZIP) +- USE_FOR_MMU(xformer = unpack_gz_stream;) ++ } ++ if (opt & OPT_GZIP) { ++ USE_FOR_MMU(IF_FEATURE_SEAMLESS_GZ(xformer = unpack_gz_stream;)) + USE_FOR_NOMMU(xformer_prog = "gunzip";) +- if (opt & OPT_BZIP2) +- USE_FOR_MMU(xformer = unpack_bz2_stream;) ++ } ++ if (opt & OPT_BZIP2) { ++ USE_FOR_MMU(IF_FEATURE_SEAMLESS_BZ2(xformer = unpack_bz2_stream;)) + USE_FOR_NOMMU(xformer_prog = "bunzip2";) +- if (opt & OPT_LZMA) +- USE_FOR_MMU(xformer = unpack_lzma_stream;) ++ } ++ if (opt & OPT_LZMA) { ++ USE_FOR_MMU(IF_FEATURE_SEAMLESS_LZMA(xformer = unpack_lzma_stream;)) + USE_FOR_NOMMU(xformer_prog = "unlzma";) +- if (opt & OPT_XZ) +- USE_FOR_MMU(xformer = unpack_xz_stream;) ++ } ++ if (opt & OPT_XZ) { ++ USE_FOR_MMU(IF_FEATURE_SEAMLESS_XZ(xformer = unpack_xz_stream;)) + USE_FOR_NOMMU(xformer_prog = "unxz";) ++ } + + fork_transformer_with_sig(tar_handle->src_fd, xformer, xformer_prog); + /* Can't lseek over pipes */ +-- +2.7.4 +
meta/recipes-core/busybox/busybox_1.24.1.bb +1 -0
@@ -57,6 +57,7 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://0001-libiproute-handle-table-ids-larger-than-255.patch \ file://ifupdown-pass-interface-device-name-for-ipv6-route-c.patch \ file://BUG9071_buffer_overflow_arp.patch \ + file://busybox-tar-add-IF_FEATURE_-checks.patch \ " SRC_URI_append_libc-musl = " file://musl.cfg "
Signature · 1 line
2.14.2
PATCH 3/17 busybox: add backported patch to support iproute 'scope'
In reply to André DraszikFrom: André Draszik <[email protected]>
This is needed for avahi-autoipd, which attempts to create a link-scope route as part of its work.
Without iproute scope support in busybox, the route is not created due to an error message, and hence we aren't accessible by, and can't access ourselves, IP addresses outside the link-local scope (169.254.0.0/16) unless we also have a proper non link-local IP address, which somehow defeats the purpose of zeroconf.
--- ...mproper-optimization-req.r.rtm_scope-may-.patch | 33 ++++++ .../0001-iproute-support-scope-.-Closes-8561.patch | 122 +++++++++++++++++++++ meta/recipes-core/busybox/busybox_1.24.1.bb | 2 + 3 files changed, 157 insertions(+) create mode 100644 meta/recipes-core/busybox/busybox/0001-ip-fix-an-improper-optimization-req.r.rtm_scope-may-.patch create mode 100644 meta/recipes-core/busybox/busybox/0001-iproute-support-scope-.-Closes-8561.patch
meta/recipes-core/busybox/busybox/0001-ip-fix-an-improper-optimization-req.r.rtm_scope-may-.patch new file +33 -0
@@ -0,0 +1,33 @@ +From 34ecc3b7aefdd6c31e8691bd5485037bbabedbd4 Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko <[email protected]> +Date: Sun, 14 Aug 2016 01:30:34 +0200 +Subject: [PATCH] ip: fix an improper optimization: req.r.rtm_scope may be + nonzero here + +Signed-off-by: Denys Vlasenko <[email protected]> +--- +Upstream-Status: Backport +Signed-off-by: André Draszik <[email protected]> + + networking/libiproute/iproute.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/networking/libiproute/iproute.c b/networking/libiproute/iproute.c +index e674e9a0d..48dc6e3d9 100644 +--- a/networking/libiproute/iproute.c ++++ b/networking/libiproute/iproute.c +@@ -362,10 +362,9 @@ IF_FEATURE_IP_RULE(ARG_table,) + req.r.rtm_scope = RT_SCOPE_NOWHERE; + + if (cmd != RTM_DELROUTE) { ++ req.r.rtm_scope = RT_SCOPE_UNIVERSE; + if (RTPROT_BOOT != 0) + req.r.rtm_protocol = RTPROT_BOOT; +- if (RT_SCOPE_UNIVERSE != 0) +- req.r.rtm_scope = RT_SCOPE_UNIVERSE; + if (RTN_UNICAST != 0) + req.r.rtm_type = RTN_UNICAST; + } +-- +2.11.0 +
meta/recipes-core/busybox/busybox/0001-iproute-support-scope-.-Closes-8561.patch new file +122 -0
122 lines not on this page · raw message
meta/recipes-core/busybox/busybox_1.24.1.bb +2 -0
@@ -58,6 +58,8 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ file://ifupdown-pass-interface-device-name-for-ipv6-route-c.patch \ file://BUG9071_buffer_overflow_arp.patch \ file://busybox-tar-add-IF_FEATURE_-checks.patch \ + file://0001-iproute-support-scope-.-Closes-8561.patch \ + file://0001-ip-fix-an-improper-optimization-req.r.rtm_scope-may-.patch \ " SRC_URI_append_libc-musl = " file://musl.cfg "
Signature · 1 line
2.14.2
PATCH 4/17 openssh: allow to override OpenSSL HostKeys when read-only-rootfs
In reply to André DraszikFrom: André Draszik <[email protected]>
With these changes it is possible to have a .bbappend that
- sets SYSCONFDIR to some persistent storage
- modifies SYSCONFDIR/sshd_config to use ssh host keys from the (writable) sysconfdir
--- meta/classes/rootfs-postcommands.bbclass | 4 +-- meta/recipes-connectivity/openssh/openssh/init | 46 +++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 6 deletions(-)
meta/classes/rootfs-postcommands.bbclass +2 -2
@@ -91,10 +91,10 @@ read_only_rootfs_hook () { # and the keys under /var/run/ssh. if [ -d ${IMAGE_ROOTFS}/etc/ssh ]; then if [ -e ${IMAGE_ROOTFS}/etc/ssh/ssh_host_rsa_key ]; then - echo "SYSCONFDIR=/etc/ssh" >> ${IMAGE_ROOTFS}/etc/default/ssh + echo "SYSCONFDIR=\${SYSCONFDIR:-/etc/ssh}" >> ${IMAGE_ROOTFS}/etc/default/ssh echo "SSHD_OPTS=" >> ${IMAGE_ROOTFS}/etc/default/ssh else - echo "SYSCONFDIR=/var/run/ssh" >> ${IMAGE_ROOTFS}/etc/default/ssh + echo "SYSCONFDIR=\${SYSCONFDIR:-/var/run/ssh}" >> ${IMAGE_ROOTFS}/etc/default/ssh echo "SSHD_OPTS='-f /etc/ssh/sshd_config_readonly'" >> ${IMAGE_ROOTFS}/etc/default/ssh fi fi
meta/recipes-connectivity/openssh/openssh/init +42 -4
73 lines not on this page · raw message
Signature · 1 line
2.14.2
Re: [pyro][PATCH 04/17] openssh: allow to override OpenSSL HostKeys when read-only-rootfs
Quoted 141 lines · André Draszik
From: André Draszik <[email protected]>
With these changes it is possible to have a .bbappend that
- sets SYSCONFDIR to some persistent storage
- modifies SYSCONFDIR/sshd_config to use ssh host keys from the (writable) sysconfdirSigned-off-by André Draszik <[email protected]>Reviewed-by Stephane Ayotte <[email protected]>Signed-off-by Ross Burton <[email protected]>(cherry picked from commit 106b59d9f96f70d133fa1421091ad280d27a5b6a)Signed-off-by André Draszik <[email protected]>--- meta/classes/rootfs-postcommands.bbclass | 4 +-- meta/recipes-connectivity/openssh/openssh/init | 46 +++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 6 deletions(-)meta/classes/rootfs-postcommands.bbclass +0
-0@@ -91,10 +91,10 @@ read_only_rootfs_hook () { # and the keys under /var/run/ssh. if [ -d ${IMAGE_ROOTFS}/etc/ssh ]; then if [ -e ${IMAGE_ROOTFS}/etc/ssh/ssh_host_rsa_key ];then
meta/classes/rootfs-postcommands.bbclass +0
-1- echo "SYSCONFDIR=/etc/ssh" >>${IMAGE_ROOTFS}/etc/default/ssh
meta/classes/rootfs-postcommands.bbclass +1
-0+ echo "SYSCONFDIR=\${SYSCONFDIR:-/etc/ssh}"Quoted 1 line
Quoted 1 line
${IMAGE_ROOTFS}/etc/default/ssh
echo "SSHD_OPTS=" >>
${IMAGE_ROOTFS}/etc/default/sshmeta/classes/rootfs-postcommands.bbclass +0
-1else - echo "SYSCONFDIR=/var/run/ssh" >>${IMAGE_ROOTFS}/etc/default/ssh
meta/classes/rootfs-postcommands.bbclass +1
-0+ echo "SYSCONFDIR=\${SYSCONFDIR:-
/var/run/ssh}" >> ${IMAGE_ROOTFS}/etc/default/ssh
echo "SSHD_OPTS='-f/etc/ssh/sshd_config_readonly'" >> ${IMAGE_ROOTFS}/etc/default/sshmeta/classes/rootfs-postcommands.bbclass +0
-0fi fimeta/recipes-connectivity/openssh/openssh/init +18
-4@@ -19,10 +19,24 @@ fi [ -z "$SYSCONFDIR" ] && SYSCONFDIR=/etc/ssh mkdir -p $SYSCONFDIR -HOST_KEY_RSA=$SYSCONFDIR/ssh_host_rsa_key -HOST_KEY_DSA=$SYSCONFDIR/ssh_host_dsa_key -HOST_KEY_ECDSA=$SYSCONFDIR/ssh_host_ecdsa_key -HOST_KEY_ED25519=$SYSCONFDIR/ssh_host_ed25519_key +parse_sshd_opts() { + set -- ${SSHD_OPTS} -- + sshd_config=/etc/ssh/sshd_config + while true ; do + case "$1" in + -f*) if [ "$1" = "-f" ] ; then + sshd_config="$2" + shift + else + sshd_config="${1#-f}" + fi + shift + ;; + --) shift; break;; + *) shift;; + esac + done +} check_for_no_start() { # forget it if we're trying to start, and
/etc/ssh/sshd_not_to_be_runexistsmeta/recipes-connectivity/openssh/openssh/init +10
-0@@ -45,21 +59,45 @@ check_config() { } check_keys() { + # parse location of keys + local HOST_KEY_RSA + local HOST_KEY_DSA + local HOST_KEY_ECDSA + local HOST_KEY_ED25519 + + parse_sshd_opts + HOST_KEY_RSA=$(grep ^HostKey "${sshd_config}" | grep _rsa_ | tail -1 | awk ' { print $2 } ') + [ -z "${HOST_KEY_RSA}" ] && HOST_KEY_RSA=$(grep HostKey "${sshd_config}" | grep _rsa_ | tail -1 | awk ' { print $2 } ') + [ -z "${HOST_KEY_RSA}" ] &&HOST_KEY_RSA=$SYSCONFDIR/ssh_host_rsa_key
meta/recipes-connectivity/openssh/openssh/init +1
-0+ HOST_KEY_DSA=$(grep ^HostKey "${sshd_config}" | grep _dsa_ |tail -1 | awk ' { print $2 } ')
meta/recipes-connectivity/openssh/openssh/init +1
-0+ [ -z "${HOST_KEY_DSA}" ] && HOST_KEY_DSA=$(grep HostKey"${sshd_config}" | grep _dsa_ | tail -1 | awk ' { print $2 } ')
meta/recipes-connectivity/openssh/openssh/init +1
-0+ [ -z "${HOST_KEY_DSA}" ] &&HOST_KEY_DSA=$SYSCONFDIR/ssh_host_dsa_key
meta/recipes-connectivity/openssh/openssh/init +1
-0+ HOST_KEY_ECDSA=$(grep ^HostKey "${sshd_config}" | grep_ecdsa_ | tail -1 | awk ' { print $2 } ')
meta/recipes-connectivity/openssh/openssh/init +1
-0+ [ -z "${HOST_KEY_ECDSA}" ] && HOST_KEY_ECDSA=$(grep HostKey"${sshd_config}" | grep _ecdsa_ | tail -1 | awk ' { print $2 } ')
meta/recipes-connectivity/openssh/openssh/init +1
-0+ [ -z "${HOST_KEY_ECDSA}" ] &&HOST_KEY_ECDSA=$SYSCONFDIR/ssh_host_ecdsa_key
meta/recipes-connectivity/openssh/openssh/init +1
-0+ HOST_KEY_ED25519=$(grep ^HostKey "${sshd_config}" | grep_ed25519_ | tail -1 | awk ' { print $2 } ')
meta/recipes-connectivity/openssh/openssh/init +1
-0+ [ -z "${HOST_KEY_ED25519}" ] && HOST_KEY_ED25519=$(grepHostKey "${sshd_config}" | grep _ed25519_ | tail -1 | awk ' { print $2 } ')
meta/recipes-connectivity/openssh/openssh/init +1
-0+ [ -z "${HOST_KEY_ED25519}" ] &&HOST_KEY_ED25519=$SYSCONFDIR/ssh_host_ed25519_key
meta/recipes-connectivity/openssh/openssh/init +5
-0+ # create keys if necessary if [ ! -f $HOST_KEY_RSA ]; then echo " generating ssh RSA key..." + mkdir -p $(dirname $HOST_KEY_RSA) ssh-keygen -q -f $HOST_KEY_RSA -N '' -t rsa fi if [ ! -f $HOST_KEY_ECDSA ]; then echo " generating ssh ECDSA key..." + mkdir -p $(dirname $HOST_KEY_ECDSA) ssh-keygen -q -f $HOST_KEY_ECDSA -N '' -t ecdsa fi if [ ! -f $HOST_KEY_DSA ]; then echo " generating ssh DSA key..." + mkdir -p $(dirname $HOST_KEY_DSA) ssh-keygen -q -f $HOST_KEY_DSA -N '' -t dsa fi if [ ! -f $HOST_KEY_ED25519 ]; then echo " generating ssh ED25519 key..." + mkdir -p $(dirname $HOST_KEY_ED25519) ssh-keygen -q -f $HOST_KEY_ED25519 -N '' -t ed25519 fi }Signature · 1 line
2.14.2
If you are backporting this, please also backport ae32558a19ae3b3f175365dc0e10fa74a91e28ce (https://patchwork.openembedde
d.org/series/7509/)
PATCH 5/17 selftest/archiver: add tests for recipe type filtering
In reply to André DraszikFrom: André Draszik <[email protected]>
The archiver used to be able to filter based on COPYLEFT_RECIPE_TYPES.
Unfortunately, this got broken with the fix for
https://bugzilla.yoctoproject.org/show_bug.cgi?id=6929
in commit ae9102bda398 ("copyleft_filter.bbclass: Allow to filter on name")
Add two tests to prevent that from happening again.
--- meta/lib/oeqa/selftest/archiver.py | 76 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+)
meta/lib/oeqa/selftest/archiver.py +76 -0
@@ -41,3 +41,79 @@ class Archiver(oeSelfTest): # Check that exclude_recipe was excluded excluded_present = len(glob.glob(src_path + '/%s-*' % exclude_recipe)) self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % exclude_recipe) + + + def test_archiver_filters_by_type(self): + """ + Summary: The archiver is documented to filter on the recipe type. + Expected: 1. included recipe type (target) should be included + 2. other types should be excluded + Product: oe-core + Author: André Draszik <[email protected]> + """ + + target_recipe = 'initscripts' + native_recipe = 'zlib-native' + + features = 'INHERIT += "archiver"\n' + features += 'ARCHIVER_MODE[src] = "original"\n' + features += 'COPYLEFT_RECIPE_TYPES = "target"\n' + self.write_config(features) + + bitbake('-c clean %s %s' % (target_recipe, native_recipe)) + bitbake("%s -c deploy_archives %s" % (target_recipe, native_recipe)) + + bb_vars = get_bb_vars(['DEPLOY_DIR_SRC', 'TARGET_SYS', 'BUILD_SYS']) + src_path_target = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['TARGET_SYS']) + src_path_native = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS']) + + # Check that target_recipe was included + included_present = len(glob.glob(src_path_target + '/%s-*' % target_recipe)) + self.assertTrue(included_present, 'Recipe %s was not included.' % target_recipe) + + # Check that native_recipe was excluded + excluded_present = len(glob.glob(src_path_native + '/%s-*' % native_recipe)) + self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % native_recipe) + + def test_archiver_filters_by_type_and_name(self): + """ + Summary: Test that the archiver archives by recipe type, taking the + recipe name into account. + Expected: 1. included recipe type (target) should be included + 2. other types should be excluded + 3. recipe by name should be included / excluded, + overriding previous decision by type + Product: oe-core + Author: André Draszik <[email protected]> + """ + + target_recipes = [ 'initscripts', 'zlib' ] + native_recipes = [ 'update-rc.d-native', 'zlib-native' ] + + features = 'INHERIT += "archiver"\n' + features += 'ARCHIVER_MODE[src] = "original"\n' + features += 'COPYLEFT_RECIPE_TYPES = "target"\n' + features += 'COPYLEFT_PN_INCLUDE = "%s"\n' % native_recipes[1] + features += 'COPYLEFT_PN_EXCLUDE = "%s"\n' % target_recipes[1] + self.write_config(features) + + bitbake('-c clean %s %s' % (' '.join(target_recipes), ' '.join(native_recipes))) + bitbake('-c deploy_archives %s %s' % (' '.join(target_recipes), ' '.join(native_recipes))) + + bb_vars = get_bb_vars(['DEPLOY_DIR_SRC', 'TARGET_SYS', 'BUILD_SYS']) + src_path_target = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['TARGET_SYS']) + src_path_native = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS']) + + # Check that target_recipe[0] and native_recipes[1] were included + included_present = len(glob.glob(src_path_target + '/%s-*' % target_recipes[0])) + self.assertTrue(included_present, 'Recipe %s was not included.' % target_recipes[0]) + + included_present = len(glob.glob(src_path_native + '/%s-*' % native_recipes[1])) + self.assertTrue(included_present, 'Recipe %s was not included.' % native_recipes[1]) + + # Check that native_recipes[0] and target_recipes[1] were excluded + excluded_present = len(glob.glob(src_path_native + '/%s-*' % native_recipes[0])) + self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % native_recipes[0]) + + excluded_present = len(glob.glob(src_path_target + '/%s-*' % target_recipes[1])) + self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % target_recipes[1])
Signature · 1 line
2.14.2
PATCH 6/17 selftest/archiver: only execute deploy_archives task
In reply to André DraszikFrom: André Draszik <[email protected]>
There should be no reason to execute a full build, as we're just interested in the deployment of the archives.
The newly added tests already do the same.
--- meta/lib/oeqa/selftest/archiver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/lib/oeqa/selftest/archiver.py +1 -1
@@ -29,7 +29,7 @@ class Archiver(oeSelfTest): self.write_config(features) bitbake('-c clean %s %s' % (include_recipe, exclude_recipe)) - bitbake("%s %s" % (include_recipe, exclude_recipe)) + bitbake("-c deploy_archives %s %s" % (include_recipe, exclude_recipe)) bb_vars = get_bb_vars(['DEPLOY_DIR_SRC', 'TARGET_SYS']) src_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['TARGET_SYS'])
Signature · 1 line
2.14.2
PATCH 7/17 copyleft_filter.bbclass: restore possiblity to filter on type
In reply to André DraszikFrom: André Draszik <[email protected]>
Since the changes introduced in ae9102bda398 ("copyleft_filter.bbclass: Allow to filter on name"), it is impossible to filter on the recipe type, all recipes are treated as though they should be included if the license matches, irrespective of the COPYLEFT_RECIPE_TYPES variable.
Fix this.
--- meta/classes/copyleft_filter.bbclass | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)
meta/classes/copyleft_filter.bbclass +16 -16
@@ -47,27 +47,27 @@ def copyleft_should_include(d): import oe.license from fnmatch import fnmatchcase as fnmatch - included, motive = False, 'recipe did not match anything' - recipe_type = d.getVar('COPYLEFT_RECIPE_TYPE') if recipe_type not in oe.data.typed_value('COPYLEFT_RECIPE_TYPES', d): - include, motive = False, 'recipe type "%s" is excluded' % recipe_type + included, motive = False, 'recipe type "%s" is excluded' % recipe_type + else: + included, motive = False, 'recipe did not match anything' - include = oe.data.typed_value('COPYLEFT_LICENSE_INCLUDE', d) - exclude = oe.data.typed_value('COPYLEFT_LICENSE_EXCLUDE', d) + include = oe.data.typed_value('COPYLEFT_LICENSE_INCLUDE', d) + exclude = oe.data.typed_value('COPYLEFT_LICENSE_EXCLUDE', d) - try: - is_included, reason = oe.license.is_included(d.getVar('LICENSE'), include, exclude) - except oe.license.LicenseError as exc: - bb.fatal('%s: %s' % (d.getVar('PF'), exc)) - else: - if is_included: - if reason: - included, motive = True, 'recipe has included licenses: %s' % ', '.join(reason) - else: - included, motive = False, 'recipe does not include a copyleft license' + try: + is_included, reason = oe.license.is_included(d.getVar('LICENSE'), include, exclude) + except oe.license.LicenseError as exc: + bb.fatal('%s: %s' % (d.getVar('PF'), exc)) else: - included, motive = False, 'recipe has excluded licenses: %s' % ', '.join(reason) + if is_included: + if reason: + included, motive = True, 'recipe has included licenses: %s' % ', '.join(reason) + else: + included, motive = False, 'recipe does not include a copyleft license' + else: + included, motive = False, 'recipe has excluded licenses: %s' % ', '.join(reason) if any(fnmatch(d.getVar('PN'), name) \ for name in oe.data.typed_value('COPYLEFT_PN_INCLUDE', d)):
Signature · 1 line
2.14.2
PATCH 8/17 debianutils: Add a native version (for run-parts)
In reply to André DraszikFrom: Richard Purdie <[email protected]>
--- meta/recipes-support/debianutils/debianutils_4.8.1.bb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
meta/recipes-support/debianutils/debianutils_4.8.1.bb +3 -1
@@ -34,7 +34,7 @@ PACKAGES =+ "${PN}-run-parts" FILES_${PN}-run-parts = "${base_bindir}/run-parts.debianutils" RDEPENDS_${PN} += "${PN}-run-parts" - +RDEPENDS_${PN}_class-native = "" ALTERNATIVE_PRIORITY="30" ALTERNATIVE_${PN} = "add-shell installkernel remove-shell savelog tempfile which"
@@ -50,3 +50,5 @@ ALTERNATIVE_LINK_NAME[run-parts]="${base_bindir}/run-parts" ALTERNATIVE_LINK_NAME[savelog]="${bindir}/savelog" ALTERNATIVE_LINK_NAME[tempfile]="${base_bindir}/tempfile" ALTERNATIVE_LINK_NAME[which]="${bindir}/which" + +BBCLASSEXTEND = "native"
Signature · 1 line
2.14.2
PATCH 9/17 ca-certificates: Fix postinst dependency issues
In reply to André DraszikFrom: Richard Purdie <[email protected]>
We were relying on running ca-certificates from the -native version. This meant the host and target path layouts had to match which might not be true, it certainly isn't true for the sdk builds.
There was a dependency on run-parts which wasn't represented (we can get it from busybox or debianutils).
Since this is an allarch script, call the script directly, making sure debianutils and openssl are available as postinst rootfs time to resolve the issues.
--- .../ca-certificates/ca-certificates_20161130.bb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
meta/recipes-support/ca-certificates/ca-certificates_20161130.bb +6 -5
@@ -8,10 +8,11 @@ LICENSE = "GPL-2.0+ & MPL-2.0" LIC_FILES_CHKSUM = "file://debian/copyright;md5=e7358b9541ccf3029e9705ed8de57968" # This is needed to ensure we can run the postinst at image creation time -DEPENDS = "ca-certificates-native" +DEPENDS = "" DEPENDS_class-native = "openssl-native" -DEPENDS_class-nativesdk = "ca-certificates-native openssl-native" -PACKAGE_WRITE_DEPS += "ca-certificates-native" +DEPENDS_class-nativesdk = "openssl-native" +# Need c_rehash from openssl and run-parts from debianutils +PACKAGE_WRITE_DEPS += "openssl-native debianutils-native" SRCREV = "61b70a1007dc269d56881a0d480fc841daacc77c"
@@ -63,7 +64,7 @@ do_install_append_class-target () { } pkg_postinst_${PN} () { - SYSROOT="$D" update-ca-certificates + SYSROOT="$D" $D${sbindir}/update-ca-certificates } CONFFILES_${PN} += "${sysconfdir}/ca-certificates.conf"
@@ -71,7 +72,7 @@ CONFFILES_${PN} += "${sysconfdir}/ca-certificates.conf" # Postinsts don't seem to be run for nativesdk packages when populating SDKs. CONFFILES_${PN}_append_class-nativesdk = " ${sysconfdir}/ssl/certs/ca-certificates.crt" do_install_append_class-nativesdk () { - SYSROOT="${D}${SDKPATHNATIVE}" update-ca-certificates + SYSROOT="${D}${SDKPATHNATIVE}" ${D}${sbindir}/update-ca-certificates } do_install_append_class-native () {
Signature · 1 line
2.14.2
PATCH 10/17 kernel-uimage.bbclass: Fix up generation of uImage from vmlinux
In reply to André DraszikFrom: Nathan Rossi <[email protected]>
Fix up the generation of uImage from vmlinux when KEEPUIMAGE != 'yes'. This fixes up the working directory that do_uboot_mkimage is run from, such that it is run from the ${B} directory to access built artefacts.
Simplify the logic in the task so that the parse step either adds the task or not if the conditions are met. This reduces the need for the task to run in cases when it is not used. The task is also changed to depend on the kernel_link_images task as arch/<arch>/boot/* is not available until after kernel_link_images in certain cases (e.g. vmlinux/uImage only KERNEL_IMAGETYPES).
Fix up the use of ${S}/vmlinux when pulling the entry symbols address so that it accesses the vmlinux in ${B}.
--- meta/classes/kernel-uimage.bbclass | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-)
meta/classes/kernel-uimage.bbclass +12 -14
@@ -15,23 +15,21 @@ python __anonymous () { typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE") or "" if "uImage" in typeformake.split(): d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('uImage', 'vmlinux')) + + # Enable building of uImage with mkimage + bb.build.addtask('do_uboot_mkimage', 'do_install', 'do_kernel_link_images', d) } +do_uboot_mkimage[dirs] += "${B}" do_uboot_mkimage() { - if echo "${KERNEL_IMAGETYPES}" | grep -wq "uImage"; then - if test "x${KEEPUIMAGE}" != "xyes" ; then - uboot_prep_kimage - - ENTRYPOINT=${UBOOT_ENTRYPOINT} - if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then - ENTRYPOINT=`${HOST_PREFIX}nm ${S}/vmlinux | \ - awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'` - fi + uboot_prep_kimage - uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage - rm -f linux.bin - fi + ENTRYPOINT=${UBOOT_ENTRYPOINT} + if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then + ENTRYPOINT=`${HOST_PREFIX}nm ${B}/vmlinux | \ + awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'` fi -} -addtask uboot_mkimage before do_install after do_compile + uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage + rm -f linux.bin +}
Signature · 1 line
2.14.2
PATCH 11/17 kernel-fitimage: sanitize dtb section name (unbreak MIPS)
In reply to André DraszikFrom: André Draszik <[email protected]>
We can't build fitImages for MIPS any more:
| Error: fit-image.its:21.27-28 syntax error | FATAL ERROR: Unable to parse input tree | uboot-mkimage: Can't read arch/mips/boot/fitImage.tmp: Invalid argument
Since commit cd2ed7f80b555add07795cc0cbaee866e6c193a3 ("kernel-fitimage: dtb sections named by their filenames and one config section for each dtb"), commit 1ec405ef5df82884c8997878bbe6c66d924b5127 in yocto, dtb sections are named by the DTB filename, but the filename can legally be in a subdirectory below arch/$arch/boot/dts/, and on MIPS all DTBs are actually in a subdirectory.
If so, mkimage fails with the above error message.
Unbreak this by replacing the offending character
(directory separator /)
--- meta/classes/kernel-fitimage.bbclass | 1 + 1 file changed, 1 insertion(+)
meta/classes/kernel-fitimage.bbclass +1 -0
@@ -351,6 +351,7 @@ fitimage_assemble() { DTB_PATH="arch/${ARCH}/boot/${DTB}" fi + DTB=$(echo "${DTB}" | tr '/' '_') DTBS="${DTBS} ${DTB}" fitimage_emit_section_dtb ${1} ${DTB} ${DTB_PATH} done
Signature · 1 line
2.14.2
PATCH 12/17 kernel-fitimage: unbreak UBOOT_ENTRYSYMBOL support
In reply to André DraszikFrom: André Draszik <[email protected]>
- vmlinux is located in ${B}, not ${S}.
- parsing of nm output got broken completely in commit b406a89935f148779569fa3770776e009dd51f13 ("kernel-fitimage: add initramfs support"), commit ec755d2524fcbd9dfded23a576f25c990d405a6c in yocto
While at it, make awk exit on match to save a few CPU cycles.
--- meta/classes/kernel-fitimage.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
meta/classes/kernel-fitimage.bbclass +2 -2
@@ -97,8 +97,8 @@ fitimage_emit_section_kernel() { ENTRYPOINT=${UBOOT_ENTRYPOINT} if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then - ENTRYPOINT=`${HOST_PREFIX}nm ${S}/vmlinux | \ - awk '$4=="${UBOOT_ENTRYSYMBOL}" {print $2}'` + ENTRYPOINT=`${HOST_PREFIX}nm vmlinux | \ + awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'` fi cat << EOF >> ${1}
Signature · 1 line
2.14.2
PATCH 13/17 kernel-uimage: optimise UBOOT_ENTRYSYMBOL support
In reply to André DraszikFrom: André Draszik <[email protected]>
This is the remaining local change to a fix similar to commit e0b4f018d1c2 ("kernel-uimage.bbclass: Fix up generation of uImage from vmlinux"):
Make awk exit on match to save a few CPU cycles so as to make this similar to kernel-fitimage.bbclass
--- meta/classes/kernel-uimage.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta/classes/kernel-uimage.bbclass +1 -1
@@ -27,7 +27,7 @@ do_uboot_mkimage() { ENTRYPOINT=${UBOOT_ENTRYPOINT} if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then ENTRYPOINT=`${HOST_PREFIX}nm ${B}/vmlinux | \ - awk '$3=="${UBOOT_ENTRYSYMBOL}" {print $1}'` + awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'` fi uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C "${linux_comp}" -a ${UBOOT_LOADADDRESS} -e $ENTRYPOINT -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin ${B}/arch/${ARCH}/boot/uImage
Signature · 1 line
2.14.2
PATCH 14/17 kernel-uboot: support compressed kernel on MIPS
In reply to André DraszikFrom: André Draszik <[email protected]>
MIPS generates vmlinuz.bin when compression in the kernel build is enabled, including any necessary objcopy so we can leverage that and skip our manual invocation of objcopy here. We just have to put the file into the right place for the rest of the build to find it.
--- meta/classes/kernel-uboot.bbclass | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
meta/classes/kernel-uboot.bbclass +7 -1
@@ -3,13 +3,19 @@ uboot_prep_kimage() { vmlinux_path="arch/${ARCH}/boot/compressed/vmlinux" linux_suffix="" linux_comp="none" + elif [ -e arch/${ARCH}/boot/vmlinuz.bin ]; then + rm -f linux.bin + cp -l arch/${ARCH}/boot/vmlinuz.bin linux.bin + vmlinux_path="" + linux_suffix="" + linux_comp="none" else vmlinux_path="vmlinux" linux_suffix=".gz" linux_comp="gzip" fi - ${OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin + [ -n "${vmlinux_path}" ] && ${OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin if [ "${linux_comp}" != "none" ] ; then gzip -9 linux.bin
Signature · 1 line
2.14.2
PATCH 15/17 kernel-fitimage: support MIPS (compressed)
In reply to André DraszikFrom: André Draszik <[email protected]>
On MIPS, the compressed kernel image target is vmlinuz.bin
--- meta/classes/kernel-fitimage.bbclass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
meta/classes/kernel-fitimage.bbclass +3 -1
@@ -7,7 +7,9 @@ python __anonymous () { depends = "%s u-boot-mkimage-native dtc-native" % depends d.setVar("DEPENDS", depends) - if d.getVar("UBOOT_ARCH") == "x86": + if d.getVar("UBOOT_ARCH") == "mips": + replacementtype = "vmlinuz.bin" + elif d.getVar("UBOOT_ARCH") == "x86": replacementtype = "bzImage" else: replacementtype = "zImage"
Signature · 1 line
2.14.2
PATCH 16/17 curl: enable threaded resolver
In reply to André DraszikFrom: André Draszik <[email protected]>
Multi-threaded applications using libcurl crash on DNS timeouts when built using OE.
The reason is as follows:
By default, libcurl implements DNS timeouts using a timer (alarm()) and a pair of setjmp()/longjmp(). This approach is unsafe in multi-threaded applications for various reasons, as e.g. explained in the relevant man-pages.
To avoid this, libcurl can be compiled with a built-in threaded resolver, or against the c-ares asynchronous resolver library.
To keep extra dependencies to a minimum, and to mimic other distributions (debian at least), and because c-ares is not available in OE-core, add a PACKAGECONFIG to be able to enable use of of the built-in threaded resolver and enable it by default.
--- meta/recipes-support/curl/curl_7.53.1.bb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
meta/recipes-support/curl/curl_7.53.1.bb +4 -3
@@ -20,9 +20,9 @@ SRC_URI[sha256sum] = "1c7207c06d75e9136a944a2e0528337ce76f15b9ec9ae4bb30d703b59b CVE_PRODUCT = "libcurl" inherit autotools pkgconfig binconfig multilib_header -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} gnutls proxy zlib" -PACKAGECONFIG_class-native = "ipv6 proxy ssl zlib" -PACKAGECONFIG_class-nativesdk = "ipv6 proxy ssl zlib" +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} gnutls proxy threaded-resolver zlib" +PACKAGECONFIG_class-native = "ipv6 proxy ssl threaded-resolver zlib" +PACKAGECONFIG_class-nativesdk = "ipv6 proxy ssl threaded-resolver zlib" PACKAGECONFIG[dict] = "--enable-dict,--disable-dict," PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
@@ -42,6 +42,7 @@ PACKAGECONFIG[smtp] = "--enable-smtp,--disable-smtp," PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openssl" PACKAGECONFIG[telnet] = "--enable-telnet,--disable-telnet," PACKAGECONFIG[tftp] = "--enable-tftp,--disable-tftp," +PACKAGECONFIG[threaded-resolver] = "--enable-threaded-resolver,--disable-threaded-resolver" PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib" PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5"
Signature · 1 line
2.14.2
PATCH 17/17 useradd-staticids: don't create username-group if gid is specified
In reply to André DraszikFrom: André Draszik <[email protected]>
Adding distcc to an image, and having staticids enabled,
doesn't work as it causes a a superfluous 'distcc' group
being added using a conflicting GID, thus failing the
build:
| ERROR: distcc-3.2-r0 do_prepare_recipe_sysroot: distcc: groupadd command did not succeed.
Compared to other recipes, the distcc recipe only specifies --gid for the primary group, and doesn't specify --no-user-group, but when --gid is given, it doesn't make sense to create a matching username-group in addition, even if --no-user-group was not specified, and 'useradd' actually complains if --gid and --user-group are given both.
If only --gid is given, the current code in here effectively behaves as if --user-group was specified, taking the group-id of the username-group from the --gid parameter. This causes the error above, as we try to add a new group (distcc) with an existing group-id (nogroup).
This is contrary to the comment in this file just above, contrary to what useradd can do, contrary to behaviour without the useradd-staticids bbclass, and non-intuitive.
Change the code such that a username-group is only created
- if a primary group using --gid was not specified, or
- if --no-user-group was not specified
To be in line with useradd, if gid is not given, and --no-user-group is given, we add the user to the group 'users', which mimics useradd's behaviour.
--- meta/classes/useradd-staticids.bbclass | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
meta/classes/useradd-staticids.bbclass +7 -3
@@ -141,9 +141,13 @@ def update_useradd_static_config(d): # So if the implicit username-group creation is on, then the implicit groupname (LOGIN) # is used, and we disable the user_group option. # - user_group = uaargs.user_group is None or uaargs.user_group is True - uaargs.groupname = uaargs.LOGIN if user_group else uaargs.gid - uaargs.groupid = field[3] or uaargs.gid or uaargs.groupname + if uaargs.gid: + uaargs.groupname = uaargs.gid + elif uaargs.user_group is not False: + uaargs.groupname = uaargs.LOGIN + else: + uaargs.groupname = 'users' + uaargs.groupid = field[3] or uaargs.groupname if uaargs.groupid and uaargs.gid != uaargs.groupid: newgroup = None
Signature · 1 line
2.14.2
Andre
Quoted 3 lines · André Draszik
Hi,
Can these fixes/patches from master please be applied to pyro.
I have integrated this series into my stagging. I ran into a build issue. I need to sort out if this came in with this set of other backports I have pending.
regards,
Armin
Quoted 5 lines
Cheers,
Andre'
Hi Armin,
Quoted 11 lines · On Tue, 2017-10-10 at 07:58 -0700, akuster808 wrote:
Andre
Quoted 3 lines · André Draszik
Hi,
Can these fixes/patches from master please be applied to pyro.
I have integrated this series into my stagging. I ran into a build issue. I need to sort out if this came in with this set of other backports I have pending.
Thanks. Do you need any help?
Cheers,
Andre'