From 61f61d6479dcd2b13e63f0da3b97e424d4a9e8bb Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Sat, 14 Jun 2014 15:35:51 -0700 Subject: [PATCH] bump(sys-apps/systemd): Add version 214 for testing Features the same issues that currently block using 213 but here for testing purposes. --- ...ching-for-configs-in-alternate-roots.patch | 169 ++++++ .../sys-apps/systemd/systemd-214.ebuild | 512 ++++++++++++++++++ 2 files changed, 681 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/214-0001-shared-fix-searching-for-configs-in-alternate-roots.patch create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-214.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/214-0001-shared-fix-searching-for-configs-in-alternate-roots.patch b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/214-0001-shared-fix-searching-for-configs-in-alternate-roots.patch new file mode 100644 index 0000000000..710e991688 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/files/214-0001-shared-fix-searching-for-configs-in-alternate-roots.patch @@ -0,0 +1,169 @@ +From 7171a436771c02a75b6dd74b4ff9473d4d831e70 Mon Sep 17 00:00:00 2001 +From: Michael Marineau +Date: Thu, 29 May 2014 10:59:42 -0700 +Subject: [PATCH] shared: fix searching for configs in alternate roots + +Commit 12ed81d9 changed path_strv_canonicalize_absolute's behavior to +return a directory list without the root prefix if one was given but did +not update other users of the function to the new behavior. This broke +the --root option in systemd-tmpfiles, a regression in v213. + +To better reflect that path_strv_canonicalize_absolute does not return +fully resolved paths any more as canonicalize may imply it is now simply +called path_strv_cleanup. +--- + src/shared/conf-files.c | 18 +++++++++++++----- + src/shared/path-lookup.c | 6 +++--- + src/shared/path-util.c | 6 +++--- + src/shared/path-util.h | 4 ++-- + src/shared/util.c | 7 +++++-- + 5 files changed, 26 insertions(+), 15 deletions(-) + +diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c +index 5201782..6f1dc7f 100644 +--- a/src/shared/conf-files.c ++++ b/src/shared/conf-files.c +@@ -37,10 +37,18 @@ + #include "hashmap.h" + #include "conf-files.h" + +-static int files_add(Hashmap *h, const char *dirpath, const char *suffix) { ++static int files_add(Hashmap *h, const char *dirpath, const char *suffix, const char *root) { + _cleanup_closedir_ DIR *dir = NULL; ++ _cleanup_free_ char *fullpath = NULL; + +- dir = opendir(dirpath); ++ if (root) ++ fullpath = strappend(root, dirpath); ++ else ++ fullpath = strdup(dirpath); ++ if (!fullpath) ++ return -ENOMEM; ++ ++ dir = opendir(fullpath); + if (!dir) { + if (errno == ENOENT) + return 0; +@@ -63,7 +71,7 @@ static int files_add(Hashmap *h, const char *dirpath, const char *suffix) { + if (!dirent_is_file_with_suffix(de, suffix)) + continue; + +- p = strjoin(dirpath, "/", de->d_name, NULL); ++ p = strjoin(fullpath, "/", de->d_name, NULL); + if (!p) + return -ENOMEM; + +@@ -100,7 +108,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const + assert(suffix); + + /* This alters the dirs string array */ +- if (!path_strv_canonicalize_absolute_uniq(dirs, root)) ++ if (!path_strv_cleanup_uniq(dirs, root)) + return -ENOMEM; + + fh = hashmap_new(string_hash_func, string_compare_func); +@@ -108,7 +116,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const + return -ENOMEM; + + STRV_FOREACH(p, dirs) { +- r = files_add(fh, *p, suffix); ++ r = files_add(fh, *p, suffix, root); + if (r == -ENOMEM) { + hashmap_free_free(fh); + return r; +diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c +index e072fd6..1a497f9 100644 +--- a/src/shared/path-lookup.c ++++ b/src/shared/path-lookup.c +@@ -284,7 +284,7 @@ int lookup_paths_init( + } + } + +- if (!path_strv_canonicalize_absolute_uniq(p->unit_path, root_dir)) ++ if (!path_strv_cleanup_uniq(p->unit_path, root_dir)) + return -ENOMEM; + + if (!strv_isempty(p->unit_path)) { +@@ -338,10 +338,10 @@ int lookup_paths_init( + return -ENOMEM; + } + +- if (!path_strv_canonicalize_absolute_uniq(p->sysvinit_path, root_dir)) ++ if (!path_strv_cleanup_uniq(p->sysvinit_path, root_dir)) + return -ENOMEM; + +- if (!path_strv_canonicalize_absolute_uniq(p->sysvrcnd_path, root_dir)) ++ if (!path_strv_cleanup_uniq(p->sysvrcnd_path, root_dir)) + return -ENOMEM; + + if (!strv_isempty(p->sysvinit_path)) { +diff --git a/src/shared/path-util.c b/src/shared/path-util.c +index 5863429..37490be 100644 +--- a/src/shared/path-util.c ++++ b/src/shared/path-util.c +@@ -238,7 +238,7 @@ char **path_strv_make_absolute_cwd(char **l) { + return l; + } + +-char **path_strv_canonicalize_absolute(char **l, const char *prefix) { ++char **path_strv_cleanup(char **l, const char *prefix) { + char **s; + unsigned k = 0; + bool enomem = false; +@@ -323,12 +323,12 @@ char **path_strv_canonicalize_absolute(char **l, const char *prefix) { + return l; + } + +-char **path_strv_canonicalize_absolute_uniq(char **l, const char *prefix) { ++char **path_strv_cleanup_uniq(char **l, const char *prefix) { + + if (strv_isempty(l)) + return l; + +- if (!path_strv_canonicalize_absolute(l, prefix)) ++ if (!path_strv_cleanup(l, prefix)) + return NULL; + + return strv_uniq(l); +diff --git a/src/shared/path-util.h b/src/shared/path-util.h +index 6882d78..b523bcc 100644 +--- a/src/shared/path-util.h ++++ b/src/shared/path-util.h +@@ -47,8 +47,8 @@ char* path_startswith(const char *path, const char *prefix) _pure_; + bool path_equal(const char *a, const char *b) _pure_; + + char** path_strv_make_absolute_cwd(char **l); +-char** path_strv_canonicalize_absolute(char **l, const char *prefix); +-char** path_strv_canonicalize_absolute_uniq(char **l, const char *prefix); ++char** path_strv_cleanup(char **l, const char *prefix); ++char** path_strv_cleanup_uniq(char **l, const char *prefix); + + int path_is_mount_point(const char *path, bool allow_symlink); + int path_is_read_only_fs(const char *path); +diff --git a/src/shared/util.c b/src/shared/util.c +index 91cbf20..429a775 100644 +--- a/src/shared/util.c ++++ b/src/shared/util.c +@@ -5691,14 +5691,17 @@ static int search_and_fopen_internal(const char *path, const char *mode, const c + assert(mode); + assert(_f); + +- if (!path_strv_canonicalize_absolute_uniq(search, root)) ++ if (!path_strv_cleanup_uniq(search, root)) + return -ENOMEM; + + STRV_FOREACH(i, search) { + _cleanup_free_ char *p = NULL; + FILE *f; + +- p = strjoin(*i, "/", path, NULL); ++ if (root) ++ p = strjoin(root, *i, "/", path, NULL); ++ else ++ p = strjoin(*i, "/", path, NULL); + if (!p) + return -ENOMEM; + +-- +1.8.5.5 + diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-214.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-214.ebuild new file mode 100644 index 0000000000..7155f5c9a8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/systemd/systemd-214.ebuild @@ -0,0 +1,512 @@ +# 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 +}