[OE-core] [PATCH V5 1/1] systemd: upgrade to 215

Koen Kooi koen at dominion.thruhere.net
Wed Aug 13 07:27:23 UTC 2014


Op 13 aug. 2014, om 09:10 heeft ChenQi <Qi.Chen at windriver.com> het volgende geschreven:

> On 08/01/2014 05:43 PM, Koen Kooi wrote:
>> Op 31 jul. 2014, om 10:08 heeft Chen Qi <Qi.Chen at windriver.com> het volgende geschreven:
>> 
>>> Upgrade systemd from 213 to 215.
>>> 
>>> systemd-older-kernel.patch is removed as it's fixed in 215.
>>> 
>>> Backport two patches to fix compilation problem for qemuppc.
>>> 
>>>    0001-always-check-for-__BYTE_ORDER-__BIG_ENDIAN-when-chec.patch
>>>    0002-endian-explicitly-include-endian.h-wherever-we-want-.patch
>>> 
>>> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>>> ---
>>> ...k-for-__BYTE_ORDER-__BIG_ENDIAN-when-chec.patch |  116 ++++++++++++++++++++
>>> ...icitly-include-endian.h-wherever-we-want-.patch |   52 +++++++++
>>> .../systemd/systemd/systemd-older-kernel.patch     |   56 ----------
>>> .../systemd/{systemd_213.bb => systemd_215.bb}     |   10 +-
>>> 4 files changed, 174 insertions(+), 60 deletions(-)
>>> create mode 100644 meta/recipes-core/systemd/systemd/0001-always-check-for-__BYTE_ORDER-__BIG_ENDIAN-when-chec.patch
>>> create mode 100644 meta/recipes-core/systemd/systemd/0002-endian-explicitly-include-endian.h-wherever-we-want-.patch
>>> delete mode 100644 meta/recipes-core/systemd/systemd/systemd-older-kernel.patch
>>> rename meta/recipes-core/systemd/{systemd_213.bb => systemd_215.bb} (97%)
>>> 
>>> diff --git a/meta/recipes-core/systemd/systemd/0001-always-check-for-__BYTE_ORDER-__BIG_ENDIAN-when-chec.patch b/meta/recipes-core/systemd/systemd/0001-always-check-for-__BYTE_ORDER-__BIG_ENDIAN-when-chec.patch
>>> new file mode 100644
>>> index 0000000..228d835
>>> --- /dev/null
>>> +++ b/meta/recipes-core/systemd/systemd/0001-always-check-for-__BYTE_ORDER-__BIG_ENDIAN-when-chec.patch
>>> @@ -0,0 +1,116 @@
>>> +Upstream-Status: Backport
>>> +
>>> +Subject: always check for __BYTE_ORDER == __BIG_ENDIAN when checking for endianess
>>> +
>>> +Let's always stick to glibc's way to determine byte order, and not mix
>>> +autoconf-specific checks with gcc checks.
>>> +
>>> +Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>>> +---
>>> + src/shared/architecture.h |   12 ++++++------
>>> + src/shared/gpt.h          |    4 ++--
>>> + src/shared/time-dst.c     |    6 +++---
>>> + 3 files changed, 11 insertions(+), 11 deletions(-)
>>> +
>>> +diff --git a/src/shared/architecture.h b/src/shared/architecture.h
>>> +index 4821d5d..58e97e5 100644
>>> +--- a/src/shared/architecture.h
>>> ++++ b/src/shared/architecture.h
>>> +@@ -80,7 +80,7 @@ Architecture uname_architecture(void);
>>> + #  define native_architecture() ARCHITECTURE_X86
>>> + #  define LIB_ARCH_TUPLE "i386-linux-gnu"
>>> + #elif defined(__powerpc64__)
>>> +-#  if defined(WORDS_BIGENDIAN)
>>> ++#  if __BYTE_ORDER == __BIG_ENDIAN
>>> + #    define native_architecture() ARCHITECTURE_PPC64
>>> + #    define LIB_ARCH_TUPLE "ppc64-linux-gnu"
>>> + #  else
>>> +@@ -88,7 +88,7 @@ Architecture uname_architecture(void);
>>> + #    error "Missing LIB_ARCH_TUPLE for PPC64LE"
>>> + #  endif
>>> + #elif defined(__powerpc__)
>>> +-#  if defined(WORDS_BIGENDIAN)
>>> ++#  if __BYTE_ORDER == __BIG_ENDIAN
>>> + #    define native_architecture() ARCHITECTURE_PPC
>>> + #    define LIB_ARCH_TUPLE "powerpc-linux-gnu"
>>> + #  else
>>> +@@ -117,7 +117,7 @@ Architecture uname_architecture(void);
>>> + #  define native_architecture() ARCHITECTURE_SPARC
>>> + #  define LIB_ARCH_TUPLE "sparc-linux-gnu"
>>> + #elif defined(__mips64__)
>>> +-#  if defined(WORDS_BIGENDIAN)
>>> ++#  if __BYTE_ORDER == __BIG_ENDIAN
>>> + #    define native_architecture() ARCHITECTURE_MIPS64
>>> + #    error "Missing LIB_ARCH_TUPLE for MIPS64"
>>> + #  else
>>> +@@ -125,7 +125,7 @@ Architecture uname_architecture(void);
>>> + #    error "Missing LIB_ARCH_TUPLE for MIPS64_LE"
>>> + #  endif
>>> + #elif defined(__mips__)
>>> +-#  if defined(WORDS_BIGENDIAN)
>>> ++#  if __BYTE_ORDER == __BIG_ENDIAN
>>> + #    define native_architecture() ARCHITECTURE_MIPS
>>> + #    define LIB_ARCH_TUPLE "mips-linux-gnu"
>>> + #  else
>>> +@@ -136,7 +136,7 @@ Architecture uname_architecture(void);
>>> + #  define native_architecture() ARCHITECTURE_ALPHA
>>> + #  define LIB_ARCH_TUPLE "alpha-linux-gnu"
>>> + #elif defined(__aarch64__)
>>> +-#  if defined(WORDS_BIGENDIAN)
>>> ++#  if __BYTE_ORDER == __BIG_ENDIAN
>>> + #    define native_architecture() ARCHITECTURE_ARM64_BE
>>> + #    define LIB_ARCH_TUPLE "aarch64_be-linux-gnu"
>>> + #  else
>>> +@@ -144,7 +144,7 @@ Architecture uname_architecture(void);
>>> + #    define LIB_ARCH_TUPLE "aarch64-linux-gnu"
>>> + #  endif
>>> + #elif defined(__arm__)
>>> +-#  if defined(WORDS_BIGENDIAN)
>>> ++#  if __BYTE_ORDER == __BIG_ENDIAN
>>> + #    define native_architecture() ARCHITECTURE_ARM_BE
>>> + #    if defined(__ARM_EABI__)
>>> + #      if defined(__ARM_PCS_VFP)
>>> +diff --git a/src/shared/gpt.h b/src/shared/gpt.h
>>> +index 64090e0..278940b 100644
>>> +--- a/src/shared/gpt.h
>>> ++++ b/src/shared/gpt.h
>>> +@@ -42,10 +42,10 @@
>>> + #  define GPT_ROOT_NATIVE GPT_ROOT_X86
>>> + #endif
>>> +
>>> +-#if defined(__aarch64__) && !defined(WORDS_BIGENDIAN)
>>> ++#if defined(__aarch64__) && (__BYTE_ORDER != __BIG_ENDIAN)
>>> + #  define GPT_ROOT_NATIVE GPT_ROOT_ARM_64
>>> + #  define GPT_ROOT_SECONDARY GPT_ROOT_ARM
>>> +-#elif defined(__arm__) && !defined(WORDS_BIGENDIAN)
>>> ++#elif defined(__arm__) && (__BYTE_ORDER != __BIG_ENDIAN)
>>> + #  define GPT_ROOT_NATIVE GPT_ROOT_ARM
>>> + #endif
>>> +
>>> +diff --git a/src/shared/time-dst.c b/src/shared/time-dst.c
>>> +index ceca2fa..6195b11 100644
>>> +--- a/src/shared/time-dst.c
>>> ++++ b/src/shared/time-dst.c
>>> +@@ -207,8 +207,8 @@ read_again:
>>> +                 if (type_idxs[i] >= num_types)
>>> +                         return -EINVAL;
>>> +
>>> +-        if (BYTE_ORDER == BIG_ENDIAN ? sizeof(time_t) == 8 && trans_width == 4
>>> +-                                     : sizeof(time_t) == 4 || trans_width == 4) {
>>> ++        if (__BYTE_ORDER == __BIG_ENDIAN ? sizeof(time_t) == 8 && trans_width == 4
>>> ++                                         : sizeof(time_t) == 4 || trans_width == 4) {
>>> +                 /* Decode the transition times, stored as 4-byte integers in
>>> +                    network (big-endian) byte order.  We work from the end of
>>> +                    the array so as not to clobber the next element to be
>>> +@@ -216,7 +216,7 @@ read_again:
>>> +                 i = num_transitions;
>>> +                 while (i-- > 0)
>>> +                         transitions[i] = decode((char *)transitions + i * 4);
>>> +-        } else if (BYTE_ORDER != BIG_ENDIAN && sizeof(time_t) == 8) {
>>> ++        } else if (__BYTE_ORDER != __BIG_ENDIAN && sizeof(time_t) == 8) {
>>> +                 /* Decode the transition times, stored as 8-byte integers in
>>> +                    network (big-endian) byte order.  */
>>> +                 for (i = 0; i < num_transitions; ++i)
>>> +--
>>> +1.7.9.5
>>> +
>>> diff --git a/meta/recipes-core/systemd/systemd/0002-endian-explicitly-include-endian.h-wherever-we-want-.patch b/meta/recipes-core/systemd/systemd/0002-endian-explicitly-include-endian.h-wherever-we-want-.patch
>>> new file mode 100644
>>> index 0000000..5494192
>>> --- /dev/null
>>> +++ b/meta/recipes-core/systemd/systemd/0002-endian-explicitly-include-endian.h-wherever-we-want-.patch
>>> @@ -0,0 +1,52 @@
>>> +Upstream-Status: Backport
>>> +
>>> +Subject: endian: explicitly include endian.h wherever we want to use __BYTE_ORDER
>>> +
>>> +Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>>> +---
>>> + src/libsystemd/sd-bus/bus-protocol.h |    1 +
>>> + src/shared/architecture.h            |    2 ++
>>> + src/shared/gpt.h                     |    2 ++
>>> + 3 files changed, 5 insertions(+)
>>> +
>>> +diff --git a/src/libsystemd/sd-bus/bus-protocol.h b/src/libsystemd/sd-bus/bus-protocol.h
>>> +index 5046d17..4f46468 100644
>>> +--- a/src/libsystemd/sd-bus/bus-protocol.h
>>> ++++ b/src/libsystemd/sd-bus/bus-protocol.h
>>> +@@ -21,6 +21,7 @@
>>> +   along with systemd; If not, see <http://www.gnu.org/licenses/>.
>>> + ***/
>>> +
>>> ++#include <endian.h>
>>> +
>>> + /* Endianness */
>>> +
>>> +diff --git a/src/shared/architecture.h b/src/shared/architecture.h
>>> +index 58e97e5..38780d1 100644
>>> +--- a/src/shared/architecture.h
>>> ++++ b/src/shared/architecture.h
>>> +@@ -21,6 +21,8 @@
>>> +   along with systemd; If not, see <http://www.gnu.org/licenses/>.
>>> + ***/
>>> +
>>> ++#include <endian.h>
>>> ++
>>> + #include "util.h"
>>> +
>>> + /* A cleaned up architecture definition. We don't want to get lost in
>>> +diff --git a/src/shared/gpt.h b/src/shared/gpt.h
>>> +index 278940b..ef3444f 100644
>>> +--- a/src/shared/gpt.h
>>> ++++ b/src/shared/gpt.h
>>> +@@ -19,6 +19,8 @@
>>> +   along with systemd; If not, see <http://www.gnu.org/licenses/>.
>>> + ***/
>>> +
>>> ++#include <endian.h>
>>> ++
>>> + #include "sd-id128.h"
>>> +
>>> + /* We only support root disk discovery for x86, x86-64 and ARM for
>>> +--
>>> +1.7.9.5
>>> +
>>> diff --git a/meta/recipes-core/systemd/systemd/systemd-older-kernel.patch b/meta/recipes-core/systemd/systemd/systemd-older-kernel.patch
>>> deleted file mode 100644
>>> index 18b50e7..0000000
>>> --- a/meta/recipes-core/systemd/systemd/systemd-older-kernel.patch
>>> +++ /dev/null
>>> @@ -1,56 +0,0 @@
>>> -From 6109f02dcc4f2d7a461c5772bab494f5753a2203 Mon Sep 17 00:00:00 2001
>>> -From: Robert Yang <liezhi.yang at windriver.com>
>>> -Date: Thu, 29 May 2014 08:09:07 +0000
>>> -Subject: [PATCH] rtnl-types.c: check IFLA_VLAN_PROTOCOL
>>> -
>>> -The older kernel's linux/if_link.h doesn't have IFLA_VLAN_PROTOCOL, we need
>>> -check whether it has been defined or not.
>>> -
>>> -The maintainer said that he would fix it:
>>> -
>>> -http://thread.gmane.org/gmane.comp.sysutils.systemd.devel/18200
>>> -
>>> -Also we need redefine IFLA_MAX from 34 to 35 when define IFLA_CARRIER,
>>> -otherwise there would be error:
>>> -
>>> -| src/libsystemd/sd-rtnl/rtnl-types.c:233:9: error: array index in initializer exceeds array bounds
>>> -|          [IFLA_CARRIER]          = { .type = NLA_U8 },
>>> -
>>> -Upstream-Status: Pending
>>> -
>>> -Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
>>> ----
>>> - src/libsystemd/sd-rtnl/rtnl-types.c | 2 ++
>>> - src/shared/missing.h                | 2 ++
>>> - 2 files changed, 4 insertions(+)
>>> -
>>> -diff --git a/src/libsystemd/sd-rtnl/rtnl-types.c b/src/libsystemd/sd-rtnl/rtnl-types.c
>>> -index 44ac5ec..ab6161f 100644
>>> ---- a/src/libsystemd/sd-rtnl/rtnl-types.c
>>> -+++ b/src/libsystemd/sd-rtnl/rtnl-types.c
>>> -@@ -67,7 +67,9 @@ static const NLType rtnl_link_info_data_vlan_types[IFLA_VLAN_MAX + 1] = {
>>> -         [IFLA_VLAN_EGRESS_QOS]  = { .type = NLA_NESTED },
>>> -         [IFLA_VLAN_INGRESS_QOS] = { .type = NLA_NESTED },
>>> - */
>>> -+#ifdef IFLA_VLAN_PROTOCOL
>>> -         [IFLA_VLAN_PROTOCOL]    = { .type = NLA_U16 },
>>> -+#endif
>>> - };
>>> -
>>> - static const NLType rtnl_link_info_data_bond_types[IFLA_BOND_MAX + 1] = {
>>> -diff --git a/src/shared/missing.h b/src/shared/missing.h
>>> -index d5ec2f8..732853f 100644
>>> ---- a/src/shared/missing.h
>>> -+++ b/src/shared/missing.h
>>> -@@ -94,6 +94,8 @@
>>> -
>>> - #ifndef IFLA_CARRIER
>>> -   #define IFLA_CARRIER 33
>>> -+  #undef IFLA_MAX
>>> -+  #define IFLA_MAX 35
>>> -   #ifndef IFLA_NUM_RX_QUEUES
>>> -     #define IFLA_NUM_RX_QUEUES 32
>>> -     #ifndef IFLA_NUM_TX_QUEUES
>>> ---
>>> -1.8.3.4
>>> -
>>> diff --git a/meta/recipes-core/systemd/systemd_213.bb b/meta/recipes-core/systemd/systemd_215.bb
>>> similarity index 97%
>>> rename from meta/recipes-core/systemd/systemd_213.bb
>>> rename to meta/recipes-core/systemd/systemd_215.bb
>>> index 5de7cdc..9eafa38 100644
>>> --- a/meta/recipes-core/systemd/systemd_213.bb
>>> +++ b/meta/recipes-core/systemd/systemd_215.bb
>>> @@ -17,9 +17,9 @@ SECTION = "base/shell"
>>> 
>>> inherit gtk-doc useradd pkgconfig autotools perlnative update-rc.d update-alternatives qemu systemd ptest
>>> 
>>> -SRCREV = "c9679c652b3c31f2510e8805d81630680ebc7e95"
>>> +SRCREV = "252ff40a3827b4e8e62e03a5e2f80da3fe02bee6"
>>> 
>>> -PV = "213+git${SRCPV}"
>>> +PV = "215+git${SRCPV}"
>>> 
>>> SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=git \
>>>            file://binfmt-install.patch \
>>> @@ -31,12 +31,13 @@ SRC_URI = "git://anongit.freedesktop.org/systemd/systemd;branch=master;protocol=
>>>            file://0001-uClibc-doesn-t-implement-pwritev-preadv.patch \
>>>            file://uclibc-sysinfo_h.patch \
>>>            file://uclibc-get-physmem.patch \
>>> +           file://0001-always-check-for-__BYTE_ORDER-__BIG_ENDIAN-when-chec.patch \
>>> +           file://0002-endian-explicitly-include-endian.h-wherever-we-want-.patch \
>>>            file://touchscreen.rules \
>>>            file://00-create-volatile.conf \
>>>            file://init \
>>>            file://run-ptest \
>>> -           file://systemd-older-kernel.patch \
>>> -          "
>>> +         "
>>> 
>>> S = "${WORKDIR}/git"
>>> 
>>> @@ -231,6 +232,7 @@ FILES_${PN} = " ${base_bindir}/* \
>>>                 ${exec_prefix}/lib/systemd \
>>>                 ${exec_prefix}/lib/modules-load.d \
>>>                 ${exec_prefix}/lib/sysctl.d \
>>> +                ${exec_prefix}/lib/sysusers.d \
>>>                 ${localstatedir} \
>>>                 /lib/udev/rules.d/70-uaccess.rules \
>>>                 /lib/udev/rules.d/71-seat.rules \
>> 
>> Like I keep saying, the sysusers files need to be in CONFFILES
>> 
> 
> Hi Koen,
> 
> Sorry for the late reply.
> 
> I checked the initial commit of sysusers.d/ in the systemd git repo.
> 
> "
> This also adds a minimal user definition file, that should be
>    sufficient for most basic systems. Distributions are expected to patch
>    these files and augment the contents, for example with fixed UIDs for
>    the users where that's necessary.
> "
> 
> From the above commit message, we can tell that these files are expected to be modified by distros instead of users including admins.

Nowhere does it say "instead of users", it only says "by distros". The question to ask is: do you want changes to this to get blown away by package upgrades?

> If a file is not expected to be modified by users, how can it be a configuration file?
> 
> Below is the complete commit message in the git repo.
> 
> """"
> 
> sysusers: add minimal tool to reconstruct /etc/passwd and /etc/group from static files
> 
>    systemd-sysusers is a tool to reconstruct /etc/passwd and /etc/group
>    from static definition files that take a lot of inspiration from
>    tmpfiles snippets. These snippets should carry information about system
>    users only. To make sure it is not misused for normal users these
>    snippets only allow configuring UID and gecos field for each user, but
>    do not allow configuration of the home directory or shell, which is
>    necessary for real login users.
> 
>    The purpose of this tool is to enable state-less systems that can
>    populate /etc with the minimal files necessary, solely from static data
>    in /usr. systemd-sysuser is additive only, and will never override
>    existing users.
> 
>    This tool will create these files directly, and not via some user
>    database abtsraction layer. This is appropriate as this tool is supposed
>    to run really early at boot, and is only useful for creating system
>    users, and system users cannot be stored in remote databases anyway.
> 
>    The tool is also useful to be invoked from RPM scriptlets, instead of
>    useradd. This allows moving from imperative user descriptions in RPM to
>    declarative descriptions.
> 
>    The UID/GID for a user/group to be created can either be chosen dynamic,
>    or fixed, or be read from the owner of a file in the file system, in
>    order to support reconstructing the correct IDs for files that shall be
>    owned by them.
> 
>    This also adds a minimal user definition file, that should be
>    sufficient for most basic systems. Distributions are expected to patch
>    these files and augment the contents, for example with fixed UIDs for
>    the users where that's necessary.
> 
> 
> """"
> 
> Best Regards,
> Chen Qi
> 




More information about the Openembedded-core mailing list