Fix by Lars Wendler for syntax error in network init.d script #310805 by Leonid Podolny.
authorMike Frysinger <vapier@gentoo.org>
Tue, 23 Mar 2010 20:04:32 +0000 (20:04 +0000)
committerMike Frysinger <vapier@gentoo.org>
Tue, 23 Mar 2010 20:04:32 +0000 (20:04 +0000)
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64

sys-apps/openrc/ChangeLog
sys-apps/openrc/Manifest
sys-apps/openrc/files/openrc-0.6.1-network-syntax.patch [new file with mode: 0644]
sys-apps/openrc/openrc-0.6.1-r1.ebuild [new file with mode: 0644]

index 53712d928f6f0c8846ad7d0024b77164cc147d70..74072c7696209defb75da7f744545807c809d355 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for sys-apps/openrc
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/ChangeLog,v 1.110 2010/03/22 20:34:59 williamh Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/ChangeLog,v 1.111 2010/03/23 20:04:30 vapier Exp $
+
+*openrc-0.6.1-r1 (23 Mar 2010)
+
+  23 Mar 2010; Mike Frysinger <vapier@gentoo.org> +openrc-0.6.1-r1.ebuild,
+  +files/openrc-0.6.1-network-syntax.patch:
+  Fix by Lars Wendler for syntax error in network init.d script #310805 by
+  Leonid Podolny.
 
 *openrc-0.6.1 (22 Mar 2010)
 
index 8f71a403627310d5802d639ec5288d0100f5f47d..7226a88f565890c3a0531c94f7a2bd737154a63f 100644 (file)
@@ -1,13 +1,24 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
 AUX openrc-0.6.0-fix-bsd-compile.patch 591 RMD160 50e3ce41fa074e9a838b6f1067eb091e9c44b6e4 SHA1 0fb4ade50ba5ec79b2af01bbff1771d47820892c SHA256 ed4b1653fa520ed1fbc761746b20b14c26fb6e344d1111c96908e909ca1c2d45
 AUX openrc-0.6.0-fix-vlan.patch 797 RMD160 cc7c5ade98053e02b1df7629dd4fa0c749f646b5 SHA1 eb697b71413ff335fbae970cd6f2295123321d56 SHA256 b32f19a3ded0fa0aac6d649ceb2529fb2b22296958c25462733ac765939d4f69
 AUX openrc-0.6.0-typos.patch 23652 RMD160 4e7082b2e87e386229c633d07637d78191897aea SHA1 935ea189125f1b1b36c283ca3ef575e949b5f9cc SHA256 1931799422824bde4b05b5b3c827d4bf2c7e03534e91ea9064d5345f8ad099c5
+AUX openrc-0.6.1-network-syntax.patch 274 RMD160 7c2340f50bf36a4571a9ba3c8225798e185bccb1 SHA1 a860c3b5c8952aaadebcbe5635c90d5a8d482762 SHA256 bfec81964c82d7fb4b4789042ef109be76fde56cf41a0466c35753bb80965021
 AUX openrc-9999-msg-style.patch 2775 RMD160 af958b2a8ed5ad29f25b53bad9a426cf7e173405 SHA1 251b8d0a52bb6e98d80a5213afc4d067583441fc SHA256 637fc2d13e0940b55b7d4613ebf8ebabdee87a802a2690191c01fd5ee7cb3581
 AUX openrc-9999-pause.patch 825 RMD160 737615919d779894e990072a0ff026aeb4fc0a95 SHA1 c9c469d0bfb685a83d8a736467434b22eaf702cd SHA256 ffa34418921d30c589ad762a5d6d7640c37e7279ca19af469912cb9f118cc75d
 AUX openrc.logrotate 71 RMD160 4e7370ca873bd917f16e2b8cfc4bc71accbf2353 SHA1 ef1f26020db432f96a1485f72a189b288ef6873b SHA256 0b44210db9770588bd491cd6c0ac9412d99124c6be4c9d3f7d31ec8746072f5c
 DIST openrc-0.6.0.tar.bz2 154403 RMD160 20710f2c772368d84c46128984bf08e065558268 SHA1 b0475b9ef4ed877a63878325f60c444b0b33454f SHA256 1b302ef12b1c144ae4260d442bd9fa5dd6176c9601d9c1f609ef49f14a1b0728
 DIST openrc-0.6.1.tar.bz2 154897 RMD160 d3ee62bdc57b38f2ecfdb2e55d75b5279a4253b7 SHA1 07c27e443b7adfcab02eb3e267f4d228bb580dfc SHA256 c7847254e41b613b76ae570cf786ce8164d637962ad4580d0825b4b62b475e07
 EBUILD openrc-0.6.0-r1.ebuild 13455 RMD160 8cc84f557154b9a36d74a2e523848075a26e9b33 SHA1 b9e1bb061c1c82dad4aa13453dd87ec47c580530 SHA256 45e399b948c167780012ebf21ea0dfbaa2d0df617e33bedce145e18471e8837e
-EBUILD openrc-0.6.1.ebuild 13322 RMD160 5a6dd8a27458057e99eb325546a688ad632c890e SHA1 278e00735044a10196d2e45aecc04bb9269a36d3 SHA256 257e3154fbb19b68c0a376c17885ef369e0d78c14359891ed328dbd0c4100580
+EBUILD openrc-0.6.1-r1.ebuild 13379 RMD160 e495cc0e20d0cf52a3fb5a9d0b4ce883d4b9c66e SHA1 e43fcc04f6a17ff351e39681923733755a0206a2 SHA256 7ce4fc49e8f8ec0fb1a98ff89fd4b47c28673a2a75e4371cdc6999dece92a49b
 EBUILD openrc-9999.ebuild 13322 RMD160 def757e4ade935eb2abaf06244d4f9a73a4e35b0 SHA1 7dbeadf2a2a00ebe0e780a3bf7879047c6bae2ac SHA256 039650e26ff1ea3700160522b064d02a0cc25e65d11da80383cfffde1aa2a667
-MISC ChangeLog 22420 RMD160 cd2b368207e1c7b5ada90d514dfa5161bb042266 SHA1 73b7d4fc3e6e4ac572276f6508e54199e996142c SHA256 5154ab1fe3d830dc44decee9e0f495f46d3950f87985cd72f8f1c86d74ddb701
+MISC ChangeLog 22663 RMD160 a795af5a64bda4f3df340d0f371367662ac81c6f SHA1 ca639b5eee96298e8a7076c1824e0841e509d194 SHA256 7eb78b6e97979f579715440fc0fe89eaeeb4a8efc97cf215525167339e8088f4
 MISC metadata.xml 314 RMD160 ff92ab9cd3f1f3caf25d0be59cf658343d44991c SHA1 d9febb1ce1499c949a2478defda945a3ce716f73 SHA256 4eb82a61b3697027b5ccb1a328a763308c7e090aa23f69fe87b7b7966165fb33
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.14 (GNU/Linux)
+
+iF4EAREIAAYFAkupHvIACgkQTwhj9JtAlp7hqwEAi0xRGFTAAivxcprnxesQVWpq
+IaBy5h83xZAfma3EAWoBAMTXT+A6/xO8vdKdYgQpccPLMP6j68r4KfYBSuzMpksK
+=OXO0
+-----END PGP SIGNATURE-----
diff --git a/sys-apps/openrc/files/openrc-0.6.1-network-syntax.patch b/sys-apps/openrc/files/openrc-0.6.1-network-syntax.patch
new file mode 100644 (file)
index 0000000..534a889
--- /dev/null
@@ -0,0 +1,14 @@
+https://bugs.gentoo.org/310805
+
+patch by Lars Wendler
+
+--- openrc-0.6.1/init.d/network.in
++++ openrc-0.6.1/init.d/network.in
+@@ -74,6 +74,7 @@
+                       esac
+               done
+               [ $? = 2 ]
++              ;;
+       *)
+               local inet= address= rest=
+               LC_ALL=C ifconfig -a | while read inet address rest; do
diff --git a/sys-apps/openrc/openrc-0.6.1-r1.ebuild b/sys-apps/openrc/openrc-0.6.1-r1.ebuild
new file mode 100644 (file)
index 0000000..a307b3e
--- /dev/null
@@ -0,0 +1,408 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.6.1-r1.ebuild,v 1.1 2010/03/23 20:04:30 vapier Exp $
+
+EAPI="1"
+
+inherit eutils flag-o-matic multilib toolchain-funcs
+
+if [[ ${PV} == "9999" ]] ; then
+       EGIT_REPO_URI="git://roy.marples.name/openrc.git"
+       inherit git
+       KEYWORDS=""
+else
+       SRC_URI="http://roy.marples.name/downloads/${PN}/${P}.tar.bz2"
+       KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+fi
+
+DESCRIPTION="OpenRC manages the services, startup and shutdown of a host"
+HOMEPAGE="http://roy.marples.name/openrc"
+
+LICENSE="BSD-2"
+SLOT="0"
+IUSE="debug elibc_glibc ncurses pam unicode kernel_linux kernel_FreeBSD"
+
+RDEPEND="virtual/init
+       kernel_FreeBSD? ( sys-process/fuser-bsd )
+       elibc_glibc? ( >=sys-libs/glibc-2.5 )
+       ncurses? ( sys-libs/ncurses )
+       pam? ( virtual/pam )
+       >=sys-apps/baselayout-2.0.0
+       kernel_linux? ( !<sys-apps/module-init-tools-3.2.2-r2 )
+       !<sys-fs/udev-133
+       !<sys-apps/sysvinit-2.86-r11"
+DEPEND="${RDEPEND}
+       virtual/os-headers"
+
+make_args() {
+       unset LIBDIR #266688
+
+       MAKE_ARGS="${MAKE_ARGS} LIBNAME=$(get_libdir) LIBEXECDIR=/$(get_libdir)/rc"
+       MAKE_ARGS="${MAKE_ARGS} MKOLDNET=yes"
+
+       local brand="Unknown"
+       if use kernel_linux ; then
+               MAKE_ARGS="${MAKE_ARGS} OS=Linux"
+               brand="Linux"
+       elif use kernel_FreeBSD ; then
+               MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD"
+               brand="FreeBSD"
+       fi
+       export BRANDING="Gentoo ${brand}"
+}
+
+pkg_setup() {
+       export DEBUG=$(usev debug)
+       export MKPAM=$(usev pam)
+       export MKTERMCAP=$(usev ncurses)
+}
+
+src_unpack() {
+       if [[ ${PV} == "9999" ]] ; then
+               git_src_unpack
+       else
+               unpack ${A}
+       fi
+       cd "${S}"
+       sed -i 's:0444:0644:' mk/sys.mk
+       sed -i "/^DIR/s:/openrc:/${PF}:" doc/Makefile #241342
+       sed -i '/^CFLAGS+=.*_CC_FLAGS_SH/d' mk/cc.mk #289264
+       epatch "${FILESDIR}"/${P}-network-syntax.patch #310805
+       epatch "${FILESDIR}"/openrc-9999-msg-style.patch
+       epatch "${FILESDIR}"/openrc-9999-pause.patch
+}
+
+src_compile() {
+       make_args
+
+       if [[ ${PV} == "9999" ]] ; then
+               local ver="git-$(echo ${EGIT_VERSION} | cut -c1-8)"
+               sed -i "/^GITVER[[:space:]]*=/s:=.*:=${ver}:" mk/git.mk
+       fi
+
+       tc-export CC AR RANLIB
+       emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed"
+}
+
+# set_config <file> <option name> <yes value> <no value> test
+# a value of "#" will just comment out the option
+set_config() {
+       local file="${D}/$1" var=$2 val com
+       eval "${@:5}" && val=$3 || val=$4
+       [[ ${val} == "#" ]] && com="#" && val='\2'
+       sed -i -r -e "/^#?${var}=/{s:=([\"'])?([^ ]*)\1?:=\1${val}\1:;s:^#?:${com}:}" "${file}"
+}
+set_config_yes_no() {
+       set_config "$1" "$2" YES NO "${@:3}"
+}
+
+src_install() {
+       make_args
+       emake ${MAKE_ARGS} DESTDIR="${D}" install || die
+
+       # install the readme for the new network scripts
+       dodoc README.net
+
+       # move the shared libs back to /usr so ldscript can install
+       # more of a minimal set of files
+       # disabled for now due to #270646
+       #mv "${D}"/$(get_libdir)/lib{einfo,rc}* "${D}"/usr/$(get_libdir)/ || die
+       #gen_usr_ldscript -a einfo rc
+       gen_usr_ldscript libeinfo.so
+       gen_usr_ldscript librc.so
+
+       keepdir /$(get_libdir)/rc/{init.d,tmp}
+
+       # Backup our default runlevels
+       dodir /usr/share/"${PN}"
+       cp -PR "${D}"/etc/runlevels "${D}"/usr/share/${PN} || die
+       rm -rf "${D}"/etc/runlevels
+
+       # Stick with "old" net as the default for now
+       doconfd conf.d/net || die
+       pushd "${D}"/usr/share/${PN}/runlevels/boot > /dev/null
+       rm -f network staticroute
+       ln -s /etc/init.d/net.lo net.lo
+       popd > /dev/null
+
+       # Setup unicode defaults for silly unicode users
+       set_config_yes_no /etc/rc.conf unicode use unicode
+
+       # Cater to the norm
+       set_config_yes_no /etc/conf.d/keymaps windowkeys '(' use x86 '||' use amd64 ')'
+
+       # Support for logfile rotation
+       insinto /etc/logrotate.d
+       newins "${FILESDIR}"/openrc.logrotate openrc
+}
+
+add_boot_init() {
+       local initd=$1
+       local runlevel=${2:-boot}
+       # if the initscript is not going to be installed and is not
+       # currently installed, return
+       [[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \
+               || return
+       [[ -e ${ROOT}/etc/runlevels/${runlevel}/${initd} ]] && return
+
+       # if runlevels dont exist just yet, then create it but still flag
+       # to pkg_postinst that it needs real setup #277323
+       if [[ ! -d ${ROOT}/etc/runlevels/${runlevel} ]] ; then
+               mkdir -p "${ROOT}"/etc/runlevels/${runlevel}
+               touch "${ROOT}"/etc/runlevels/.add_boot_init.created
+       fi
+
+       elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
+       ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/${runlevel}/${initd}
+}
+add_boot_init_mit_config() {
+       local config=$1 initd=$2
+       if [[ -e ${ROOT}${config} ]] ; then
+               if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then
+                       add_boot_init ${initd}
+               fi
+       fi
+}
+
+pkg_preinst() {
+       local f LIBDIR=$(get_libdir)
+
+       # default net script is just comments, so no point in biting people
+       # in the ass by accident.  we save in preinst so that the package
+       # manager doesnt go throwing etc-update crap at us -- postinst is
+       # too late to prevent that.  this behavior also lets us keep the
+       # file in the CONTENTS for binary packages.
+       [[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${D}"/etc/conf.d/
+
+       # avoid default thrashing in conf.d files when possible #295406
+       if [[ -e ${ROOT}/etc/conf.d/hostname ]] ; then
+               (
+               unset hostname HOSTNAME
+               source "${ROOT}"/etc/conf.d/hostname
+               : ${hostname:=${HOSTNAME}}
+               [[ -n ${hostname} ]] && set_config /etc/conf.d/hostname hostname "${hostname}"
+               )
+       fi
+
+       # upgrade timezone file ... do it before moving clock
+       if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then
+               (
+               unset TIMEZONE
+               source "${ROOT}"/etc/conf.d/clock
+               [[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone
+               )
+       fi
+
+       # /etc/conf.d/clock moved to /etc/conf.d/hwclock
+       local clock
+       use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock"
+       if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then
+               mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock}
+       fi
+       if [[ -e ${ROOT}/etc/init.d/clock ]] ; then
+               rm -f "${ROOT}"/etc/init.d/clock
+       fi
+       if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then
+               rm -f "${ROOT}"/etc/runlevels/boot/clock
+               ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock}
+       fi
+       if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then
+               rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock
+               ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock}
+       fi
+
+       # /etc/conf.d/rc is no longer used for configuration
+       if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then
+               elog "/etc/conf.d/rc is no longer used for configuration."
+               elog "Please migrate your settings to /etc/rc.conf as applicable"
+               elog "and delete /etc/conf.d/rc"
+       fi
+
+       # force net init.d scripts into symlinks
+       for f in "${ROOT}"/etc/init.d/net.* ; do
+               [[ -e ${f} ]] || continue # catch net.* not matching anything
+               [[ ${f} == */net.lo ]] && continue # real file now
+               [[ ${f} == *.openrc.bak ]] && continue
+               if [[ ! -L ${f} ]] ; then
+                       elog "Moved net service '${f##*/}' to '${f##*/}.openrc.bak' to force a symlink."
+                       elog "You should delete '${f##*/}.openrc.bak' if you don't need it."
+                       mv "${f}" "${f}.openrc.bak"
+                       ln -snf net.lo "${f}"
+               fi
+       done
+
+       # termencoding was added in 0.2.1 and needed in boot
+       has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding
+
+       # set default interactive shell to sulogin if it exists
+       set_config /etc/rc.conf rc_shell /sbin/sulogin "#" test -e /sbin/sulogin
+
+       has_version sys-apps/openrc || migrate_from_baselayout_1
+       has_version ">=sys-apps/openrc-0.4.0" || migrate_udev_init_script
+}
+
+# >=openrc-0.4.0 no longer loads the udev addon
+migrate_udev_init_script() {
+       # make sure udev is in sysinit if it was enabled before
+       local enable_udev=false
+       local rc_devices=$(
+               [[ -f /etc/rc.conf ]] && source /etc/rc.conf
+               [[ -f /etc/conf.d/rc ]] && source /etc/conf.d/rc
+               echo "${rc_devices:-${RC_DEVICES:-auto}}"
+       )
+       case ${rc_devices} in
+               udev|auto)
+                       enable_udev=true
+                       ;;
+       esac
+
+       if $enable_udev; then
+               add_boot_init udev sysinit
+               add_boot_init udev-postmount default
+       fi
+}
+
+migrate_from_baselayout_1() {
+       # baselayout boot init scripts have been split out
+       for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do
+               # baselayout-1 is always "old" net, so ignore "new" net
+               [[ ${f} == "network" ]] && continue
+
+               add_boot_init ${f}
+       done
+
+       # Try to auto-add some addons when possible
+       add_boot_init_mit_config /etc/conf.d/cryptfs dmcrypt
+       add_boot_init_mit_config /etc/conf.d/dmcrypt dmcrypt
+       add_boot_init_mit_config /etc/mdadm.conf mdraid
+       add_boot_init_mit_config /etc/evms.conf evms
+       [[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init device-mapper
+       [[ -e ${ROOT}/sbin/vgscan ]] && add_boot_init lvm
+       elog "Add on services (such as RAID/dmcrypt/LVM/etc...) are now stand alone"
+       elog "init.d scripts.  If you use such a thing, make sure you have the"
+       elog "required init.d scripts added to your boot runlevel."
+
+       # Upgrade out state for baselayout-1 users
+       if [[ ! -e ${ROOT}${LIBDIR}/rc/init.d/started ]] ; then
+               (
+               [[ -e ${ROOT}/etc/conf.d/rc ]] && source "${ROOT}"/etc/conf.d/rc
+               svcdir=${svcdir:-/var/lib/init.d}
+               if [[ ! -d ${ROOT}${svcdir}/started ]] ; then
+                       ewarn "No state found, and no state exists"
+                       elog "You should reboot this host"
+               else
+                       mkdir -p "${ROOT}${LIBDIR}/rc/init.d"
+                       einfo "Moving state from ${ROOT}${svcdir} to ${ROOT}${LIBDIR}/rc/init.d"
+                       mv "${ROOT}${svcdir}"/* "${ROOT}${LIBDIR}"/rc/init.d
+                       rm -rf "${ROOT}${LIBDIR}"/rc/init.d/daemons \
+                               "${ROOT}${LIBDIR}"/rc/init.d/console
+                       umount "${ROOT}${svcdir}" 2>/dev/null
+                       rm -rf "${ROOT}${svcdir}"
+               fi
+               )
+       fi
+
+       # Handle the /etc/modules.autoload.d -> /etc/conf.d/modules transition
+       if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then
+               elog "Converting your /etc/modules.autoload.d/ files to /etc/conf.d/modules"
+               rm -f "${ROOT}"/etc/modules.autoload.d/.keep*
+               rmdir "${ROOT}"/etc/modules.autoload.d 2>/dev/null
+               if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then
+                       local f v
+                       for f in "${ROOT}"/etc/modules.autoload.d/* ; do
+                               v=${f##*/}
+                               v=${v#kernel-}
+                               v=${v//[^[:alnum:]]/_}
+                               gawk -v v="${v}" -v f="${f##*/}" '
+                               BEGIN { print "\n### START: Auto-converted from " f "\n" }
+                               {
+                                       if ($0 ~ /^[^#]/) {
+                                               print "modules_" v "=\"${modules_" v "} " $1 "\""
+                                               gsub(/[^[:alnum:]]/, "_", $1)
+                                               printf "module_" $1 "_args_" v "=\""
+                                               for (i = 2; i <= NF; ++i) {
+                                                       if (i > 2)
+                                                               printf " "
+                                                       printf $i
+                                               }
+                                               print "\"\n"
+                                       } else
+                                               print
+                               }
+                               END { print "\n### END: Auto-converted from " f "\n" }
+                               ' "${f}" >> "${D}"/etc/conf.d/modules
+                       done
+                               rm -f "${f}"
+                       rmdir "${ROOT}"/etc/modules.autoload.d 2>/dev/null
+               fi
+       fi
+}
+
+pkg_postinst() {
+       local LIBDIR=$(get_libdir)
+
+       # Remove old baselayout links
+       rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin}
+
+       # Make our runlevels if they don't exist
+       if [[ ! -e ${ROOT}/etc/runlevels ]] || [[ -e ${ROOT}/etc/runlevels/.add_boot_init.created ]] ; then
+               einfo "Copying across default runlevels"
+               cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc
+               rm -f "${ROOT}"/etc/runlevels/.add_boot_init.created
+       else
+               if [[ ! -e ${ROOT}/etc/runlevels/sysinit/devfs ]] ; then
+                       mkdir -p "${ROOT}"/etc/runlevels/sysinit
+                       cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/sysinit/* \
+                               "${ROOT}"/etc/runlevels/sysinit
+               fi
+               if [[ ! -e ${ROOT}/etc/runlevels/shutdown/mount-ro ]] ; then
+                       mkdir -p "${ROOT}"/etc/runlevels/shutdown
+                       cp -RPp "${ROOT}"/usr/share/${PN}/runlevels/shutdown/* \
+                               "${ROOT}"/etc/runlevels/shutdown
+               fi
+       fi
+
+       # /etc/conf.d/net.example is no longer valid
+       local NET_EXAMPLE="${ROOT}/etc/conf.d/net.example"
+       local NET_MD5='8ebebfa07441d39eb54feae0ee4c8210'
+       if [[ -e "${NET_EXAMPLE}" ]] ; then
+               if [[ $(md5sum "${NET_EXAMPLE}") == ${NET_MD5}* ]]; then
+                       rm -f "${NET_EXAMPLE}"
+                       elog "${NET_EXAMPLE} has been removed."
+               else
+                       sed -i '1i# This file is obsolete.\n' "${NET_EXAMPLE}"
+                       elog "${NET_EXAMPLE} should be removed."
+               fi
+               elog "The new file is ${ROOT}/usr/share/doc/${PF}/net.example"
+       fi
+
+       # /etc/conf.d/wireless.example is no longer valid
+       local WIRELESS_EXAMPLE="${ROOT}/etc/conf.d/wireless.example"
+       local WIRELESS_MD5='d1fad7da940bf263c76af4d2082124a3'
+       if [[ -e "${WIRELESS_EXAMPLE}" ]] ; then
+               if [[ $(md5sum "${WIRELESS_EXAMPLE}") == ${WIRELESS_MD5}* ]]; then
+                       rm -f "${WIRELESS_EXAMPLE}"
+                       elog "${WIRELESS_EXAMPLE} is deprecated and has been removed."
+               else
+                       sed -i '1i# This file is obsolete.\n' "${WIRELESS_EXAMPLE}"
+                       elog "${WIRELESS_EXAMPLE} is deprecated and should be removed."
+               fi
+               elog "If you are using the old style network scripts,"
+               elog "Configure wireless settings in ${ROOT}/etc/conf.d/net"
+               elog "after reviewing ${ROOT}/usr/share/doc/${PF}/net.example"
+       fi
+
+       if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then
+               ewarn "/etc/modules.autoload.d is no longer used.  Please convert"
+               ewarn "your files to /etc/conf.d/modules and delete the directory."
+       fi
+
+       # update the dependency tree after touching all files #224171
+       [[ "${ROOT}" = "/" ]] && "${ROOT}/${LIBDIR}"/rc/bin/rc-depend -u
+
+       elog "You should now update all files in /etc, using etc-update"
+       elog "or equivalent before restarting any services or this host."
+       elog
+       elog "Please read the migration guide available at:"
+       elog "http://www.gentoo.org/doc/en/openrc-migration.xml"
+}