Merge pull request #453 from marineam/revert

Revert switch to systemd-tmpfiles
This commit is contained in:
Michael Marineau 2014-03-18 20:51:20 -07:00
commit 91e6941762
4 changed files with 107 additions and 10 deletions

View File

@ -3,7 +3,7 @@
EAPI=5
PYTHON_COMPAT=( python2_7 )
inherit python-any-r1 systemd
inherit cros-tmpfiles python-any-r1 systemd
RTM_NAME="NSS_${PV//./_}_RTM"
MY_PN="nss"
@ -21,8 +21,7 @@ KEYWORDS="amd64"
IUSE=""
RDEPEND="dev-libs/openssl
sys-apps/findutils
sys-apps/systemd"
sys-apps/findutils"
DEPEND="${RDEPEND}
${PYTHON_DEPS}"
@ -54,6 +53,6 @@ src_install() {
# Setup initial links in /etc
dodir /etc/ssl/certs
systemd-tmpfiles --root="${D}" --create
tmpfiles_create
bash "${FILESDIR}/update-ca-certificates" "${D}/etc/ssl/certs" || die
}

View File

@ -0,0 +1,93 @@
# Copyright 2014 The CoreOS Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: cros-tmpfiles
# @AUTHOR: marineam
# @BLURB: A basic systemd-tmpfiles --create implementation for ebuilds.
# @DESCRIPTION:
# Any location that is outside of /usr must be initialized during the build
# and (re)created during boot if it is missing. To avoid duplicating
# definitions of these directories/symlinks in ebuilds and tmpfiles configs
# packages can instead only install a tmpfiles config and use this eclass to
# create teh paths in an ebuild friendly way.
#
# Note: in the future if we add a --root option to systemd-tmpfiles we can
# switch to calling that instead of using this simplified implementation.
# Enforce use of recent EAPIs for the sake of consistancy/sanity
case "${EAPI:-0}" in
0|1|2|3)
die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
;;
4|5)
;;
*)
die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
;;
esac
# Since bash doesn't have a slick syntax for subsituting default values
# for anything other than blank vs. non-blank variables this helps.
# Usage: _tmpfiles_set_defaults mode uid gid age arg
_tmpfiles_do_file() {
[[ ${tmode} == - ]] && tmode=0644
if [[ "${ttype}" == F ]]; then
rm -rf "${ED}/${tpath}"
elif [[ -e "${ED}/${tpath}" ]]; then
return 0
fi
if [[ "${targ}" != - ]]; then
echo "${targ}" > "${ED}/${tpath}" || return 1
else
echo -n > "${ED}/${tpath}" || return 1
fi
chmod "${tmode}" "${ED}/${tpath}" || return 1
chown "${tuid}:${tgid}" "${ED}/${tpath}" || return 1
}
_tmpfiles_do_dir() {
[[ ${tmode} == - ]] && tmode=0755
if [[ "${ttype}" == d && -e "${ED}/${tpath}" ]]; then
return 0
else
rm -rf "${ED}/${tpath}"
fi
mkdir -m "${tmode}" "${ED}/${tpath}" || return 1
chown "${tuid}:${tgid}" "${ED}/${tpath}" || return 1
}
_tmpfiles_do_link() {
if [[ -e "${ED}/${tpath}" || -h "${ED}/${tpath}" ]]; then
return 0
fi
ln -s "${targ}" "${ED}/${tpath}" || return 1
}
_tmpfiles_do_create() {
local ttype tpath tmode tuid tgid tage targ trule
while read ttype tpath tmode tuid tgid tage targ; do
trule="$ttype $tpath $tmode $tuid $tgid $tage $targ"
[[ "${tuid}" == - ]] && tuid=root
[[ "${tgid}" == - ]] && tgid=root
case "${ttype}" in
f|F) _tmpfiles_do_file;;
d|D) _tmpfiles_do_dir;;
L) _tmpfiles_do_link;;
*) ewarn "Skipping tmpfiles rule: ${trule}";;
esac
if [[ $? -ne 0 ]]; then
eerror "Bad tmpfiles rule: ${trule}"
return 1
fi
done
}
tmpfiles_create() {
if [[ $# -eq 0 ]]; then
set -- "${ED}"/usr/lib*/tmpfiles.d/*.conf
fi
local conf
for conf in "$@"; do
_tmpfiles_do_create < "${conf}" || die "Bad tmpfiles config: ${conf}"
done
}

View File

@ -0,0 +1 @@
baselayout-9999.ebuild

View File

@ -13,7 +13,7 @@ else
KEYWORDS="amd64 arm x86"
fi
inherit cros-workon eutils multilib systemd
inherit cros-workon cros-tmpfiles eutils multilib systemd
DESCRIPTION="Filesystem baselayout for CoreOS"
HOMEPAGE="http://www.coreos.com/"
@ -24,8 +24,7 @@ SLOT="0"
IUSE="cros_host symlink-usr"
# This version of baselayout replaces coreos-base
DEPEND="sys-apps/systemd
!coreos-base/coreos-base
DEPEND="!coreos-base/coreos-base
!<sys-libs/glibc-2.17-r1
!<=sys-libs/nss-usrfiles-2.18.1_pre"
@ -107,19 +106,24 @@ src_install() {
dosym "${LIB_SYMS[$sym]}" "${sym}"
done
if use symlink-usr; then
systemd_dotmpfilesd "${T}/baselayout-usr.conf"
systemd-tmpfiles --root="${D}" --create
for sym in "${!USR_SYMS[@]}" ; do
dosym "${USR_SYMS[$sym]}" "${sym}"
done
fi
emake DESTDIR="${D}" install
if use symlink-usr; then
systemd_dotmpfilesd "${T}/baselayout-usr.conf"
fi
if use cros_host; then
# do not install networkd's resolv.conf symlink in SDK
rm "${D}"/usr/lib/tmpfiles.d/baselayout-resolv.conf || die
fi
# Fill in all other paths defined in tmpfiles configs
systemd-tmpfiles --root="${D}" --create
tmpfiles_create
# handle multilib paths. do it here because we want this behavior
# regardless of the C library that you're using. we do explicitly