From d77505a6a3304227d1f4e61feb1a9ae5eace2133 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Fri, 11 Jul 2014 16:44:16 -0700 Subject: [PATCH] systemd: stabilize 215, include bug fixes from upstream. --- ...-ignore-errors-due-to-missing-MAC-ad.patch | 42 ++ ...7F-a-control-chracter-which-it-is-DE.patch | 54 ++ .../sys-apps/systemd/systemd-215-r1.ebuild | 523 ++++++++++++++++++ .../sys-apps/systemd/systemd-215.ebuild | 1 - 4 files changed, 619 insertions(+), 1 deletion(-) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0001-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0002-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215-r1.ebuild delete mode 120000 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0001-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0001-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch new file mode 100644 index 0000000000..57fcc5e17a --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0001-udev-link_config-ignore-errors-due-to-missing-MAC-ad.patch @@ -0,0 +1,42 @@ +From e61b751158571ced56447b02f1855d6c5c79e213 Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Mon, 7 Jul 2014 14:50:16 +0200 +Subject: [PATCH 1/2] udev: link_config - ignore errors due to missing MAC + address + +Otherwis, we get misleading error messages on links with MACs. + +Reported by Leonid Isaev. +--- + src/udev/net/link-config.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c +index b8650a6..5a45c53 100644 +--- a/src/udev/net/link-config.c ++++ b/src/udev/net/link-config.c +@@ -383,7 +383,9 @@ int link_config_apply(link_config_ctx *ctx, link_config *config, struct udev_dev + case MACPOLICY_PERSISTENT: + if (mac_is_random(device)) { + r = get_mac(device, false, &generated_mac); +- if (r < 0) ++ if (r == -ENOENT) ++ break; ++ else if (r < 0) + return r; + mac = &generated_mac; + } +@@ -391,7 +393,9 @@ int link_config_apply(link_config_ctx *ctx, link_config *config, struct udev_dev + case MACPOLICY_RANDOM: + if (!mac_is_random(device)) { + r = get_mac(device, true, &generated_mac); +- if (r < 0) ++ if (r == -ENOENT) ++ break; ++ else if (r < 0) + return r; + mac = &generated_mac; + } +-- +1.8.5.5 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0002-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0002-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch new file mode 100644 index 0000000000..7e6280c464 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/215-0002-util-consider-0x7F-a-control-chracter-which-it-is-DE.patch @@ -0,0 +1,54 @@ +From 90b2bbeb2aa576fff12539f18bc53986fb182832 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 7 Jul 2014 11:47:10 +0200 +Subject: [PATCH 2/2] util: consider 0x7F a control chracter (which it is: DEL) + +Let's better be safe than sorry. +--- + src/shared/util.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/shared/util.c b/src/shared/util.c +index 3d875c7..d25ee66 100644 +--- a/src/shared/util.c ++++ b/src/shared/util.c +@@ -1608,8 +1608,9 @@ int read_one_char(FILE *f, char *ret, usec_t t, bool *need_nl) { + return -ETIMEDOUT; + } + ++ errno = 0; + if (!fgets(line, sizeof(line), f)) +- return -EIO; ++ return errno ? -errno : -EIO; + + truncate_nl(line); + +@@ -5355,6 +5356,9 @@ bool string_is_safe(const char *p) { + if (*t > 0 && *t < ' ') + return false; + ++ if (*t == 127) ++ return false; ++ + if (strchr("\\\"\'", *t)) + return false; + } +@@ -5371,10 +5375,14 @@ bool string_has_cc(const char *p) { + + assert(p); + +- for (t = p; *t; t++) ++ for (t = p; *t; t++) { + if (*t > 0 && *t < ' ' && *t != '\t') + return true; + ++ if (*t == 127) ++ return true; ++ } ++ + return false; + } + +-- +1.8.5.5 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215-r1.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215-r1.ebuild new file mode 100644 index 0000000000..3472d67633 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215-r1.ebuild @@ -0,0 +1,523 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/systemd/systemd-9999.ebuild,v 1.115 2014/06/14 16:33:20 floppym Exp $ + +EAPI=5 + +if [[ ${PV} == 9999 ]]; then +AUTOTOOLS_AUTORECONF=yes +EGIT_REPO_URI="git://anongit.freedesktop.org/${PN}/${PN} + http://cgit.freedesktop.org/${PN}/${PN}/" + +inherit git-r3 + +elif [[ ${PV} == *9999 ]]; then +AUTOTOOLS_AUTORECONF=yes +EGIT_REPO_URI="git://anongit.freedesktop.org/${PN}/${PN}-stable + http://cgit.freedesktop.org/${PN}/${PN}-stable/" +EGIT_BRANCH=v${PV%%.*}-stable + +inherit git-r3 +fi + +AUTOTOOLS_PRUNE_LIBTOOL_FILES=all +PYTHON_COMPAT=( python{2_7,3_2,3_3} ) +inherit autotools-utils bash-completion-r1 fcaps linux-info multilib \ + multilib-minimal pam python-single-r1 systemd toolchain-funcs udev \ + user + +DESCRIPTION="System and service manager for Linux" +HOMEPAGE="http://www.freedesktop.org/wiki/Software/systemd" +SRC_URI="http://www.freedesktop.org/software/systemd/${P}.tar.xz" + +LICENSE="GPL-2 LGPL-2.1 MIT public-domain" +SLOT="0/2" +KEYWORDS="~alpha amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="acl audit cryptsetup doc +firmware-loader gcrypt gudev http introspection + kdbus +kmod lzma pam policykit python qrcode +seccomp selinux ssl + test" + +MINKV="3.10" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20:0= + sys-libs/libcap:0= + acl? ( sys-apps/acl:0= ) + audit? ( >=sys-process/audit-2:0= ) + cryptsetup? ( >=sys-fs/cryptsetup-1.6:0= ) + gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0= ) + gudev? ( dev-libs/glib:2=[${MULTILIB_USEDEP}] ) + http? ( + >=net-libs/libmicrohttpd-0.9.33:0= + ssl? ( >=net-libs/gnutls-3.1.4:0= ) + ) + introspection? ( >=dev-libs/gobject-introspection-1.31.1:0= ) + kmod? ( >=sys-apps/kmod-15:0= ) + lzma? ( app-arch/xz-utils:0=[${MULTILIB_USEDEP}] ) + pam? ( virtual/pam:= ) + python? ( ${PYTHON_DEPS} ) + qrcode? ( media-gfx/qrencode:0= ) + seccomp? ( >=sys-libs/libseccomp-2.1:0= ) + selinux? ( sys-libs/libselinux:0= ) + abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r9 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )" + +# baselayout-2.2 has /run +RDEPEND="${COMMON_DEPEND} + >=sys-apps/baselayout-2.2 + || ( + >=sys-apps/util-linux-2.22 + "${locale_conf}" <<-EOF + # This file has been created by the sys-apps/systemd ebuild. + # See locale.conf(5) and localectl(1). + + # LANG=${LANG} + EOF + eend ${?} || FAIL=1 + fi + fi + + if [[ ! -L ${envd_locale} ]]; then + # now, if env.d/??locale is not a symlink (to locale.conf)... + if [[ -e ${envd_locale} ]]; then + # ...warn the user that he has duplicate locale settings + ewarn + ewarn "To ensure consistent behavior, you should replace ${envd_locale}" + ewarn "with a symlink to ${locale_conf}. Please migrate your settings" + ewarn "and create the symlink with the following command:" + ewarn "ln -s -n -f ../locale.conf ${envd_locale}" + ewarn + else + # ...or just create the symlink if there's nothing here + ebegin "Creating ${envd_locale_def} -> ../locale.conf symlink" + ln -n -s ../locale.conf "${envd_locale_def}" + eend ${?} || FAIL=1 + fi + fi +} + +migrate_net_name_slot() { + # If user has disabled 80-net-name-slot.rules using a empty file or a symlink to /dev/null, + # do the same for 80-net-setup-link.rules to keep the old behavior + local net_move=no + local net_name_slot_sym=no + local net_rules_path="${EROOT%/}"/etc/udev/rules.d + local net_name_slot="${net_rules_path}"/80-net-name-slot.rules + local net_setup_link="${net_rules_path}"/80-net-setup-link.rules + if [[ -e ${net_setup_link} ]]; then + net_move=no + elif [[ -f ${net_name_slot} && $(sed -e "/^#/d" -e "/^\W*$/d" ${net_name_slot} | wc -l) == 0 ]]; then + net_move=yes + elif [[ -L ${net_name_slot} && $(readlink ${net_name_slot}) == /dev/null ]]; then + net_move=yes + net_name_slot_sym=yes + fi + if [[ ${net_move} == yes ]]; then + ebegin "Copying ${net_name_slot} to ${net_setup_link}" + + if [[ ${net_name_slot_sym} == yes ]]; then + ln -nfs /dev/null "${net_setup_link}" + else + cp "${net_name_slot}" "${net_setup_link}" + fi + eend $? || FAIL=1 + fi +} + +pkg_postinst() { + newusergroup() { + enewgroup "$1" + enewuser "$1" -1 -1 -1 "$1" + } + + enewgroup systemd-journal + newusergroup systemd-bus-proxy + newusergroup systemd-network + newusergroup systemd-resolve + newusergroup systemd-timesync + use http && newusergroup systemd-journal-gateway + + systemd_update_catalog + + # Keep this here in case the database format changes so it gets updated + # when required. Despite that this file is owned by sys-apps/hwids. + if has_version "sys-apps/hwids[udev]"; then + udevadm hwdb --update --root="${ROOT%/}" + fi + + udev_reload || FAIL=1 + + # Bug 468876 + fcaps cap_dac_override,cap_sys_ptrace=ep usr/bin/systemd-detect-virt + + # Bug 465468, make sure locales are respect, and ensure consistency + # between OpenRC & systemd + migrate_locale + + # Migrate 80-net-name-slot.rules -> 80-net-setup-link.rules + migrate_net_name_slot + + if [[ ${FAIL} ]]; then + eerror "One of the postinst commands failed. Please check the postinst output" + eerror "for errors. You may need to clean up your system and/or try installing" + eerror "systemd again." + eerror + fi + + if [[ ! -L "${ROOT}"/etc/mtab ]]; then + ewarn "Upstream mandates the /etc/mtab file should be a symlink to /proc/mounts." + ewarn "Not having it is not supported by upstream and will cause tools like 'df'" + ewarn "and 'mount' to not work properly. Please run:" + ewarn " # ln -sf '${ROOT}proc/self/mounts' '${ROOT}etc/mtab'" + ewarn + fi + + if ! has_version sys-apps/systemd-ui; then + elog "To get additional features, a number of optional runtime dependencies may" + elog "be installed:" + elog "- sys-apps/systemd-ui: for GTK+ systemadm UI and gnome-ask-password-agent" + fi +} + +pkg_prerm() { + # If removing systemd completely, remove the catalog database. + if [[ ! ${REPLACED_BY_VERSION} ]]; then + rm -f -v "${EROOT}"/var/lib/systemd/catalog/database + fi +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215.ebuild deleted file mode 120000 index 8da16946bc..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-215.ebuild +++ /dev/null @@ -1 +0,0 @@ -systemd-9999.ebuild \ No newline at end of file