From: Roy Marples Date: Tue, 9 Jan 2007 10:32:54 +0000 (+0000) Subject: Add conditionalrestart action, which is the same as restart but the service X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ac3f50174faa35e7a301cda44a3ec55813bec755;p=gentoo.git Add conditionalrestart action, which is the same as restart but the service is only restarted if it is already started. This means that anything that whats this only has to use one command instead of two, making them more efficient. Package-Manager: portage-2.1.2_rc4-r7 --- diff --git a/sys-apps/baselayout/ChangeLog b/sys-apps/baselayout/ChangeLog index 4ab9c65ad572..820e6398b17c 100644 --- a/sys-apps/baselayout/ChangeLog +++ b/sys-apps/baselayout/ChangeLog @@ -1,10 +1,20 @@ # ChangeLog for sys-apps/baselayout # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/ChangeLog,v 1.387 2007/01/08 23:43:47 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/ChangeLog,v 1.388 2007/01/09 10:32:54 uberlord Exp $ # See the rc-scripts ChangeLog in subversion for release info: # http://sources.gentoo.org/viewcvs.py/*checkout*/baselayout/trunk/ChangeLog +*baselayout-1.12.8-r3 (09 Jan 2007) + + 09 Jan 2007; Roy Marples + +files/baselayout-1.12.8-conditionalrestart.patch, + +baselayout-1.12.8-r3.ebuild: + Add conditionalrestart action, which is the same as restart but the service + is only restarted if it is already started. This means that anything that + whats this only has to use one command instead of two, making them more + efficient. + 08 Jan 2007; Mike Frysinger baselayout-1.12.8-r2.ebuild: Restore /dev population for bootstrap that was cut in various earlier commits. diff --git a/sys-apps/baselayout/Manifest b/sys-apps/baselayout/Manifest index 5cc061d986a8..86c000a5e346 100644 --- a/sys-apps/baselayout/Manifest +++ b/sys-apps/baselayout/Manifest @@ -1,6 +1,3 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - AUX baselayout-1.11.14-man.patch 768 RMD160 b1743f52d71b6ff2bd0d8cb8106112d8fad9d5b7 SHA1 f61b8f985a27dc9f2dd834001602b008030e79ce SHA256 7c12d6ee90b14b3152c2256df5983d3e6d102ca53b5da3ca6505b8925a86a80a MD5 dff93a6f0914f6969d21482d2f36e75e files/baselayout-1.11.14-man.patch 768 RMD160 b1743f52d71b6ff2bd0d8cb8106112d8fad9d5b7 files/baselayout-1.11.14-man.patch 768 @@ -53,6 +50,10 @@ AUX baselayout-1.12.8-checkfs.patch 429 RMD160 1815e3241978d80b6262db05309ddf371 MD5 5f22d7850be949e28fb26ece1a836890 files/baselayout-1.12.8-checkfs.patch 429 RMD160 1815e3241978d80b6262db05309ddf3716116aef files/baselayout-1.12.8-checkfs.patch 429 SHA256 ccc3d6c3366ff990837d74a3bad44880b25390778bbc86814c46da54d6a50152 files/baselayout-1.12.8-checkfs.patch 429 +AUX baselayout-1.12.8-conditionalrestart.patch 5330 RMD160 ec359e7e652e29dc8c540ae60d6a10d16feddd13 SHA1 102260bf033ceb57234ed74434d61df675364cd1 SHA256 91918c6217ace50317ea30b925f2a0a2d664f193cf4ff5f5aff26c4a03ca462e +MD5 77697fec71351caa25f8a857b5e3d37e files/baselayout-1.12.8-conditionalrestart.patch 5330 +RMD160 ec359e7e652e29dc8c540ae60d6a10d16feddd13 files/baselayout-1.12.8-conditionalrestart.patch 5330 +SHA256 91918c6217ace50317ea30b925f2a0a2d664f193cf4ff5f5aff26c4a03ca462e files/baselayout-1.12.8-conditionalrestart.patch 5330 AUX baselayout-1.12.8-r2440.patch 1779 RMD160 eeda0b3883163b8d8184812aadee8525d0be0b54 SHA1 0b6134cc3e5f95461078988a9bedf3ee1edd8cb1 SHA256 31f0936868430bd06a161372b0030fadc086121f71fabc40b9588575360fa202 MD5 322d665a75ef5cc1db64ab02242c634e files/baselayout-1.12.8-r2440.patch 1779 RMD160 eeda0b3883163b8d8184812aadee8525d0be0b54 files/baselayout-1.12.8-r2440.patch 1779 @@ -99,6 +100,10 @@ EBUILD baselayout-1.12.8-r2.ebuild 18717 RMD160 1f577a1c3aa5de01134c381dbc0b9226 MD5 84efc409f4b075889545c8dc2f94633a baselayout-1.12.8-r2.ebuild 18717 RMD160 1f577a1c3aa5de01134c381dbc0b9226391535ee baselayout-1.12.8-r2.ebuild 18717 SHA256 0e5cde9cf522d7d0ef68a26df32483c3fe39232a43584ed46c03225519073479 baselayout-1.12.8-r2.ebuild 18717 +EBUILD baselayout-1.12.8-r3.ebuild 18771 RMD160 4ca50c927ad431e141e304967f941d56c7e7c0ae SHA1 d4cc90f3320e6d4fbc1fdd007f8caa1d06ac969a SHA256 22dea187835233e7729ee4e77c32830edcbe261177e94a60a0c3097911276144 +MD5 9b35daab4e29d9c026fdf31fbfa4ebe7 baselayout-1.12.8-r3.ebuild 18771 +RMD160 4ca50c927ad431e141e304967f941d56c7e7c0ae baselayout-1.12.8-r3.ebuild 18771 +SHA256 22dea187835233e7729ee4e77c32830edcbe261177e94a60a0c3097911276144 baselayout-1.12.8-r3.ebuild 18771 EBUILD baselayout-1.12.8.ebuild 17035 RMD160 b7088b2a5f8aad3ce43b920b965f1280f24c3be1 SHA1 a2110deb651437e356ae4f9ce9b7d5b0d6e4f89e SHA256 2de062a8fff51618f17af46395ab9a202d229d86e8e0f8fe713da344ec3d4d9a MD5 082aa588289d254af8bbdfbf37f0a05e baselayout-1.12.8.ebuild 17035 RMD160 b7088b2a5f8aad3ce43b920b965f1280f24c3be1 baselayout-1.12.8.ebuild 17035 @@ -115,10 +120,10 @@ EBUILD baselayout-1.13.0_alpha10.ebuild 9979 RMD160 a6cd64566591832f7a27ceed9865 MD5 3142bbab3c121b88c30c92eef33acbba baselayout-1.13.0_alpha10.ebuild 9979 RMD160 a6cd64566591832f7a27ceed9865c5243c0f55d3 baselayout-1.13.0_alpha10.ebuild 9979 SHA256 426ef12358ae0ff7bd6e112fbea601bbf263f605b7c7ccd2e0858a837f6a9bd6 baselayout-1.13.0_alpha10.ebuild 9979 -MISC ChangeLog 87487 RMD160 1a8b615d08f4d31f5ff2a1d8174aac9182d9e7fb SHA1 095a1b561e163e190c83a8618207e62748d75ce2 SHA256 48c820451c13204f7aa35751b1689cc7f98eee38c1438553ee965f75d13b421d -MD5 43890fbe8d28465671b8d5baac6346df ChangeLog 87487 -RMD160 1a8b615d08f4d31f5ff2a1d8174aac9182d9e7fb ChangeLog 87487 -SHA256 48c820451c13204f7aa35751b1689cc7f98eee38c1438553ee965f75d13b421d ChangeLog 87487 +MISC ChangeLog 87902 RMD160 dab3d593c3ef42ecd94c3d88b8b88ca56ade061e SHA1 10fcb10d5c037e00221fe591489d1c2d2bf7c156 SHA256 415f319797cab03376951d423e51a72da22a32664e9579f03f75dd29be3821ac +MD5 2f9e9f50854a7b105310f1bb036d7136 ChangeLog 87902 +RMD160 dab3d593c3ef42ecd94c3d88b8b88ca56ade061e ChangeLog 87902 +SHA256 415f319797cab03376951d423e51a72da22a32664e9579f03f75dd29be3821ac ChangeLog 87902 MISC metadata.xml 164 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 SHA1 9c213f5803676c56439df3716be07d6692588856 SHA256 f5f2891f2a4791cd31350bb2bb572131ad7235cd0eeb124c9912c187ac10ce92 MD5 9a09f8d531c582e78977dbfd96edc1f2 metadata.xml 164 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 metadata.xml 164 @@ -144,6 +149,9 @@ SHA256 d5d0b95861bb7a1549bf4ac58d623bc24aa07e6887ecc31d1210c92b66901765 files/di MD5 cc3850f4547f7dda6cb6da09e200b7a5 files/digest-baselayout-1.12.8-r2 256 RMD160 ee4d86476675e157d2237a3611970af21d27450f files/digest-baselayout-1.12.8-r2 256 SHA256 d5d0b95861bb7a1549bf4ac58d623bc24aa07e6887ecc31d1210c92b66901765 files/digest-baselayout-1.12.8-r2 256 +MD5 cc3850f4547f7dda6cb6da09e200b7a5 files/digest-baselayout-1.12.8-r3 256 +RMD160 ee4d86476675e157d2237a3611970af21d27450f files/digest-baselayout-1.12.8-r3 256 +SHA256 d5d0b95861bb7a1549bf4ac58d623bc24aa07e6887ecc31d1210c92b66901765 files/digest-baselayout-1.12.8-r3 256 MD5 a906c725ad1f2a7363333865e410227c files/digest-baselayout-1.13.0_alpha10 280 RMD160 4f16b9967ebd8f5133edcbd9eee430020b4094ea files/digest-baselayout-1.13.0_alpha10 280 SHA256 2aff7adae59490722f3880d409166e61514c4dd90043c810f172776627f80505 files/digest-baselayout-1.13.0_alpha10 280 @@ -153,10 +161,3 @@ SHA256 2aff7adae59490722f3880d409166e61514c4dd90043c810f172776627f80505 files/di MD5 a906c725ad1f2a7363333865e410227c files/digest-baselayout-1.13.0_alpha10-r2 280 RMD160 4f16b9967ebd8f5133edcbd9eee430020b4094ea files/digest-baselayout-1.13.0_alpha10-r2 280 SHA256 2aff7adae59490722f3880d409166e61514c4dd90043c810f172776627f80505 files/digest-baselayout-1.13.0_alpha10-r2 280 ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2.0.1 (GNU/Linux) - -iD8DBQFFotio8bi6rjpTunYRAmi3AKCe2O1b6+xdQKarPfbYdS+Y6mjhjwCgvP1M -T8oFPCmk9rfZDtCIcrNDDkI= -=3jwM ------END PGP SIGNATURE----- diff --git a/sys-apps/baselayout/baselayout-1.12.8-r3.ebuild b/sys-apps/baselayout/baselayout-1.12.8-r3.ebuild new file mode 100644 index 000000000000..5e70f8f0cd9c --- /dev/null +++ b/sys-apps/baselayout/baselayout-1.12.8-r3.ebuild @@ -0,0 +1,590 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/baselayout-1.12.8-r3.ebuild,v 1.1 2007/01/09 10:32:54 uberlord Exp $ + +inherit flag-o-matic eutils toolchain-funcs multilib + +DESCRIPTION="Filesystem baselayout and init scripts" +HOMEPAGE="http://www.gentoo.org/" +SRC_URI="mirror://gentoo/${P}.tar.bz2 + http://dev.gentoo.org/~uberlord/baselayout/${P}.tar.bz2 + http://dev.gentoo.org/~azarah/baselayout/${P}.tar.bz2 + http://dev.gentoo.org/~vapier/dist/${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh ~sparc ~x86" +IUSE="bootstrap build static unicode" + +# This version of baselayout needs gawk in /bin, but as we do not have +# a c++ compiler during bootstrap, we cannot depend on it if "bootstrap" +# or "build" are in USE. +# We need to block old dhcpcd versions as they are no longer in system +# but may not be in users world file either. See bug #143885 +RDEPEND="virtual/init + !build? ( !bootstrap? ( + >=sys-libs/readline-5.0-r1 + >=app-shells/bash-3.1_p7 + >=sys-apps/coreutils-5.2.1 + ) ) + !> "${D}/usr/share/baselayout/mkdirs.sh" </dev/null \\ + || ewarn " can't create ${d}" + touch "\${ROOT}/${d}/.keep" 2>/dev/null \\ + || ewarn " can't create ${d}/.keep" +fi +EOF + else + args=("${args[@]}" "${d}") + fi + done +} + +# Continued from kdir above... This function removes any empty +# directories as a temporary workaround for bug 9849. The directories +# (and .keep files) are re-created in pkg_postinst, which means they +# aren't listed in CONTENTS, unfortunately. +unkdir() { + einfo "Running unkdir to workaround bug 9849" + find "${D}" -depth -type d -exec rmdir {} \; 2>/dev/null + if [[ $? == 127 ]]; then + ewarn "Problem running unkdir: find command not found" + fi +} + +# Same as kdir above, but for symlinks #103618 +ksym() { + echo "[[ ! -e ${ROOT}/$2 ]] && { ln -s '$1' '${ROOT}/$2' &> /dev/null || ewarn ' unable to symlink $2 to $1' ; }" \ + >> "${D}"/usr/share/baselayout/mklinks.sh +} + +src_install() { + local dir libdirs libdirs_env rcscripts_dir + + # This directory is to stash away things that will be used in + # pkg_postinst; it's needed first for kdir to function + dodir /usr/share/baselayout + + # Jeremy Huddleston + # For multilib, we want to make sure that all our multilibdirs exist + # and make lib even if it's not listed as one (like on amd64/ppc64 + # which sometimes has lib32/lib64 instead of lib/lib64). + # lib should NOT be a symlink to one of the other libdirs. + # Old systems with symlinks won't be affected by this change, as the + # symlinks already exist and won't get removed, but new systems will + # be setup properly. + # + # I'll be making a script to convert existing systems from symlink to + # nosymlink and putting it in /usr/portage/scripts. + libdirs=$(get_all_libdirs) + : ${libdirs:=lib} # it isn't that we don't trust multilib.eclass... + + # This should be /lib/rcscripts, but we have to support old profiles too. + if [[ ${SYMLINK_LIB} == "yes" ]]; then + rcscripts_dir="/$(get_abi_LIBDIR ${DEFAULT_ABI})/rcscripts" + else + rcscripts_dir="/lib/rcscripts" + fi + + einfo "Creating directories..." + kdir /usr + kdir /usr/local + kdir /boot + kdir /dev + kdir /dev/pts + kdir /dev/shm + kdir /etc/conf.d + kdir /etc/cron.daily + kdir /etc/cron.hourly + kdir /etc/cron.monthly + kdir /etc/cron.weekly + kdir /etc/env.d + dodir /etc/init.d # .keep file might mess up init.d stuff + kdir /etc/modules.autoload.d + kdir /etc/modules.d + kdir /etc/opt + kdir /home + kdir ${rcscripts_dir} + kdir ${rcscripts_dir}/awk + kdir ${rcscripts_dir}/sh + kdir ${rcscripts_dir}/net + # Only install /mnt stuff at bootstrap time #88835 / #90022 + if use build ; then + kdir /mnt + kdir -m 0700 /mnt/cdrom + kdir -m 0700 /mnt/floppy + fi + kdir /opt + kdir -o root -g uucp -m0775 /var/lock + kdir /proc + kdir -m 0700 /root + kdir /sbin + kdir /sys # for 2.6 kernels + kdir /usr/bin + kdir /usr/include + kdir /usr/include/asm + kdir /usr/include/linux + kdir /usr/local/bin + kdir /usr/local/games + kdir /usr/local/sbin + kdir /usr/local/share + kdir /usr/local/share/doc + kdir /usr/local/share/man + kdir /usr/local/src + kdir ${PORTDIR} + kdir /usr/sbin + kdir /usr/share/doc + kdir /usr/share/info + kdir /usr/share/man + kdir /usr/share/misc + kdir /usr/src + kdir -m 1777 /tmp + kdir /var + dodir /var/db/pkg # .keep file messes up Portage + kdir /var/lib/misc + kdir /var/lock/subsys + kdir /var/log/news + kdir /var/run + kdir /var/spool + kdir /var/state + kdir -m 1777 /var/tmp + + for dir in ${libdirs}; do + libdirs_env=${libdirs_env:+$libdirs_env:}/${dir}:/usr/${dir}:/usr/local/${dir} + [[ ${dir} == "lib" && ${SYMLINK_LIB} == "yes" ]] && continue + kdir /${dir} + kdir /usr/${dir} + kdir /usr/local/${dir} + done + + # Ugly compatibility with stupid ebuilds and old profiles symlinks + if [[ ${SYMLINK_LIB} == "yes" ]] ; then + rm -r "${D}"/{lib,usr/lib,usr/local/lib} &> /dev/null + ksym $(get_abi_LIBDIR ${DEFAULT_ABI}) /lib + ksym $(get_abi_LIBDIR ${DEFAULT_ABI}) /usr/lib + ksym $(get_abi_LIBDIR ${DEFAULT_ABI}) /usr/local/lib + fi + + # FHS compatibility symlinks stuff + ksym /var/tmp /usr/tmp + ksym share/man /usr/local/man + + # + # Setup files in /etc + # + insopts -m0644 + insinto /etc + doins -r "${S}"/etc/* + fperms 0640 /etc/sysctl.conf + + # Install some files to /usr/share/baselayout instead of /etc to keep from + # (1) overwriting the user's settings, (2) screwing things up when + # attempting to merge files, (3) accidentally packaging up personal files + # with quickpkg + fperms 0600 /etc/shadow + mv "${D}"/etc/{passwd,shadow,group,fstab,hosts,issue.devfix} "${D}"/usr/share/baselayout + + # doinitd doesnt respect symlinks + dodir /etc/init.d + cp -P "${S}"/init.d/* "${D}"/etc/init.d/ || die "doinitd" + #doinitd "${S}"/init.d/* || die "doinitd" + doconfd "${S}"/etc/conf.d/* || die "doconfd" + doenvd "${S}"/etc/env.d/* || die "doenvd" + insinto /etc/modules.autoload.d + doins "${S}"/etc/modules.autoload.d/* + insinto /etc/modules.d + doins "${S}"/etc/modules.d/* + + # Special-case uglyness... For people updating from lib32 -> lib amd64 + # profiles, keep lib32 in the search path while it's around + if has_multilib_profile && [ -d /lib32 -o -d /usr/lib32 ] && ! hasq lib32 ${libdirs}; then + libdirs_env="${libdirs_env}:/lib32:/usr/lib32:/usr/local/lib32" + fi + + # List all the multilib libdirs in /etc/env/04multilib (only if they're + # actually different from the normal + if has_multilib_profile || [[ $(get_libdir) != "lib" || -n ${CONF_MULTILIBDIR} ]]; then + echo "LDPATH=\"${libdirs_env}\"" > 04multilib + doenvd 04multilib + fi + + # As of baselayout-1.10-1-r1, sysvinit is its own package again, and + # provides the inittab itself + rm -f "${D}"/etc/inittab + + # Stash the rc-lists for use during pkg_postinst + cp -r "${S}"/rc-lists "${D}"/usr/share/baselayout + + # rc-scripts version for testing of features that *should* be present + echo "Gentoo Base System version ${PV}" > ${D}/etc/gentoo-release + + # + # Setup files related to /dev + # + into / + dosbin "${S}"/sbin/MAKEDEV + dosym ../../sbin/MAKEDEV /usr/sbin/MAKEDEV + dosym ../sbin/MAKEDEV /dev/MAKEDEV + + # + # Setup files in /bin + # + cd "${S}"/bin + dobin rc-status + + # + # Setup files in /sbin + # + cd "${S}"/sbin + into / + dosbin rc rc-update + # These moved from /etc/init.d/ to /sbin to help newb systems + # from breaking + dosbin runscript.sh functions.sh + + # Compat symlinks between /etc/init.d and /sbin + # (some stuff have hardcoded paths) + dosym ../../sbin/depscan.sh /etc/init.d/depscan.sh + dosym ../../sbin/runscript.sh /etc/init.d/runscript.sh + dosym ../../sbin/functions.sh /etc/init.d/functions.sh + + # + # Setup files in /lib/rcscripts + # These are support files for other things in baselayout that needn't be + # under CONFIG_PROTECTed /etc + # + cd "${S}"/sbin + exeinto ${rcscripts_dir}/sh + doexe rc-services.sh rc-daemon.sh rc-help.sh + + # We can only install new, fast awk versions of scripts + # if 'build' or 'bootstrap' is not in USE. This will + # change if we have sys-apps/gawk-3.1.1-r1 or later in + # the build image ... + if ! use build; then + # This is for new depscan.sh and env-update.sh + # written in awk + cd "${S}"/sbin + into / + dosbin depscan.sh + dosbin env-update.sh + insinto ${rcscripts_dir}/awk + doins "${S}"/src/awk/*.awk + fi + + # Original design had these in /etc/net.modules.d but that is too + # problematic with CONFIG_PROTECT + dodir ${rcscripts_dir} + cp -pPR "${S}"/lib/rcscripts/net ${D}${rcscripts_dir} + chown -R root:0 ${D}${rcscripts_dir} + + # + # Install baselayout documentation + # + if ! use build ; then + doman "${S}"/man/*.* + docinto / + dodoc ${FILESDIR}/copyright + dodoc "${S}"/ChangeLog + fi + + # + # Install baselayout utilities + # + local libdir="lib" + [[ ${SYMLINK_LIB} == "yes" ]] && libdir=$(get_abi_LIBDIR "${DEFAULT_ABI}") + + cd "${S}"/src + make DESTDIR="${D}" LIBDIR="${libdir}" install || die + + # Hack to fix bug 9849, continued in pkg_postinst + unkdir +} + +# Support function for remapping old wireless dns vars +remap_dns_vars() { + local f="$1" + + if [[ -f ${ROOT}/etc/conf.d/${f} ]]; then + sed -e 's/\ ${IMAGE}/etc/conf.d/${f} + fi +} + +pkg_preinst() { + # When downgrading from 1.13 we need to erase net.lo as it's a symlink + # and it's about to become a file - this is fatal in /etc + [[ -L "${ROOT}"etc/init.d/net.lo ]] && rm -f "${ROOT}"etc/init.d/net.lo + + # Reincarnate dirs from kdir/unkdir (hack for bug 9849) + # This needs to be in pkg_preinst() rather than pkg_postinst() as + # portage may create some dirs/files that'll screw us up (like /usr/lib/debug) + einfo "Creating directories and .keep files." + einfo "Some of these might fail if they're read-only mounted" + einfo "filesystems, for example /dev or /proc. That's okay!" + source "${D}"/usr/share/baselayout/mkdirs.sh + source "${D}"/usr/share/baselayout/mklinks.sh + echo + + if [[ -f ${ROOT}/etc/modules.autoload && \ + ! -d ${ROOT}/etc/modules.autoload.d ]]; then + mkdir -p ${ROOT}/etc/modules.autoload.d + mv -f ${ROOT}/etc/modules.autoload \ + ${ROOT}/etc/modules.autoload.d/kernel-2.4 + ln -snf modules.autoload.d/kernel-2.4 ${ROOT}/etc/modules.autoload + fi + + # Change some vars introduced in baselayout-1.11.0 before we go stable + # The new names make more sense and allow nis_domain + # for use in baselayout-1.12.0 + remap_dns_vars net + remap_dns_vars wireless +} + +pkg_postinst() { + local x y + + # Create /boot/boot symlink in pkg_postinst because sometimes + # /boot is a FAT filesystem. When that is the case, then the + # symlink will fail. Consequently, if we create it in + # src_install, then merge will fail. AFAIK there is no point to + # this symlink except for misconfigured grubs. See bug 50108 + # (05 May 2004 agriffis) + ln -sn . "${ROOT}"/boot/boot 2>/dev/null + + # For the bootstrap scenario with an empty /dev, let's fill the + # sucker with generic crude ... some day we should think about + # slimming this way down as we've moved on to udev/devfs + if use build ; then + if [[ ! -e ${ROOT}/dev/.devfsd && ! -e ${ROOT}/dev/.udev ]] ; then + echo + einfo "Making device node tarball (this could take a couple minutes)" + cd "${ROOT}"/dev || die + PATH=${ROOT}/sbin:${PATH} create_dev_nodes + fi + fi + + # Set up default runlevel symlinks + # This used to be done in src_install but required knowledge of ${ROOT}, + # which meant that it was effectively broken for binary installs. + if [[ -z $(/bin/ls "${ROOT}"/etc/runlevels 2>/dev/null) ]]; then + for x in boot default nonetwork single; do + einfo "Creating default runlevel symlinks for ${x}" + mkdir -p "${ROOT}"/etc/runlevels/${x} + for y in $(<"${ROOT}"/usr/share/baselayout/rc-lists/${x}); do + if [[ ! -e ${ROOT}/etc/init.d/${y} ]]; then + ewarn "init.d/${y} not found -- ignoring" + else + ln -sfn /etc/init.d/${y} \ + "${ROOT}"/etc/runlevels/${x}/${y} + fi + done + done + fi + + # Create /etc/hosts in pkg_postinst so we don't overwrite an + # existing file during bootstrap + if [[ ! -e ${ROOT}/etc/hosts ]]; then + cp ${ROOT}/usr/share/baselayout/hosts ${ROOT}/etc + fi + + # Touching /etc/passwd and /etc/shadow after install can be fatal, as many + # new users do not update them properly... see src_install() for why they + # are in /usr/share/baselayout/ + for x in passwd shadow group fstab ; do + if [[ -e ${ROOT}/etc/${x} ]] ; then + touch "${ROOT}/etc/${x}" + else + cp "${ROOT}/usr/share/baselayout/${x}" "${ROOT}/etc/${x}" + fi + done + + # Under what circumstances would mtab be a symlink? It would be + # nice if there were an explanatory comment here + if [[ -L ${ROOT}/etc/mtab ]]; then + rm -f "${ROOT}/etc/mtab" + if [[ ${ROOT} == / ]]; then + cp /proc/mounts "${ROOT}/etc/mtab" + else + touch "${ROOT}/etc/mtab" + fi + fi + + # We should only install empty files if these files don't already exist. + [[ -e ${ROOT}/var/log/lastlog ]] || \ + touch "${ROOT}/var/log/lastlog" + [[ -e ${ROOT}/var/run/utmp ]] || \ + install -m 0664 -g utmp /dev/null "${ROOT}/var/run/utmp" + [[ -e ${ROOT}/var/log/wtmp ]] || \ + install -m 0664 -g utmp /dev/null "${ROOT}/var/log/wtmp" + + # Reload init to fix unmounting problems of / on next reboot. + # This is really needed, as without the new version of init cause init + # not to quit properly on reboot, and causes a fsck of / on next reboot. + if [[ ${ROOT} == / ]] && ! use build && ! use bootstrap; then + # Regenerate init.d dependency tree + /sbin/depscan.sh --update &>/dev/null + else + rm -f ${ROOT}/etc/modules.conf + fi + + # This is also written in src_install (so it's in CONTENTS), but + # write it here so that the new version is immediately in the file + # (without waiting for the user to do etc-update) + rm -f ${ROOT}/etc/._cfg????_gentoo-release + echo "Gentoo Base System version ${PV}" > ${ROOT}/etc/gentoo-release + + echo + einfo "Please be sure to update all pending '._cfg*' files in /etc," + einfo "else things might break at your next reboot! You can use 'etc-update'" + einfo "to accomplish this:" + einfo + einfo " # etc-update" + echo + + for f in ${ROOT}etc/init.d/net.* ; do + [[ -L ${f} || ${f} == "${ROOT}etc/init.d/net.lo" ]] && continue + echo + einfo "WARNING: You have older net.* files in ${ROOT}etc/init.d/" + einfo "They need to be converted to symlinks to net.lo. If you haven't" + einfo "made personal changes to those files, you can update with the" + einfo "following command:" + einfo + einfo " /bin/ls ${ROOT}etc/init.d/net.* | grep -v '/net.lo$' | xargs -n1 ln -sfvn net.lo" + echo + break + done + + if sed -e 's/#.*//' ${ROOT}/etc/conf.d/{net,wireless} 2>/dev/null \ + | egrep -q '\<(domain|nameservers|searchdomains)_' ; then + echo + ewarn "You have depreciated variables in ${ROOT}/etc/conf.d/net" + ewarn "or ${ROOT}/etc/conf.d/wireless" + ewarn + ewarn "domain_* -> dns_domain_*" + ewarn "nameservers_* -> dns_servers_*" + ewarn "searchdomains_* -> dns_search_domains_*" + ewarn + ewarn "They have been converted for you - ensure that you" + ewarn "update them via 'etc-update'" + echo + fi + + if sed -e 's/#.*//' ${ROOT}/etc/conf.d/net 2>/dev/null \ + | egrep -q '\<(iface_|gateway=|ifconfig_|aliases_|broadcasts_|netmasks_|inet6_|ipaddr_|iproute_)'; then + echo + ewarn "You are using deprecated variables in ${ROOT}/etc/conf.d/net" + ewarn + ewarn "You are advised to review the new configuration variables as" + ewarn "found in ${ROOT}/etc/conf.d/net.example as there is no" + ewarn "guarantee that they will work in future versions." + echo + fi + + # Remove old stuff that may cause problems. + if [[ -e "${ROOT}"/etc/env.d/01hostname ]] ; then + rm -f "${ROOT}"/etc/env.d/01hostname + fi + if [[ -e "${ROOT}"/etc/init.d/domainname ]] ; then + rm -f "${ROOT}"/etc/init.d/domainname + rm -f "${ROOT}"/etc/runlevels/*/domainname + ewarn "The domainname init script has been removed in this version." + ewarn "Consult ${ROOT}/etc/conf.d/net.example for details about how" + ewarn "to apply dns/nis information to the loopback interface." + fi +} diff --git a/sys-apps/baselayout/files/baselayout-1.12.8-conditionalrestart.patch b/sys-apps/baselayout/files/baselayout-1.12.8-conditionalrestart.patch new file mode 100644 index 000000000000..7f64452e8f57 --- /dev/null +++ b/sys-apps/baselayout/files/baselayout-1.12.8-conditionalrestart.patch @@ -0,0 +1,178 @@ +Index: sbin/runscript.sh +=================================================================== +--- sbin/runscript.sh (revision 2461) ++++ sbin/runscript.sh (working copy) +@@ -71,7 +71,6 @@ + + # State variables + svcpause="no" +-svcrestart="no" + + # Functions to handle dependencies and services + [[ ${RC_GOT_SERVICES} != "yes" ]] && source "${svclib}/sh/rc-services.sh" +@@ -136,7 +135,10 @@ + } + + restart() { +- svc_restart ++ if ! service_stopped "${SVCNAME}" ; then ++ svc_stop || return "$?" ++ fi ++ svc_start + } + + status() { +@@ -470,10 +472,65 @@ + } + + svc_restart() { +- if ! service_stopped "${SVCNAME}" ; then +- svc_stop || return "$?" ++ # We don't kill child processes if we're restarting ++ # This is especically important for sshd .... ++ RC_KILL_CHILDREN="no" ++ ++ # Create a snapshot of started services ++ rm -rf "${svcdir}/snapshot/$$" ++ mkdir -p "${svcdir}/snapshot/$$" ++ cp -pP "${svcdir}"/started/* "${svcdir}"/inactive/* \ ++ "${svcdir}/snapshot/$$/" 2>/dev/null ++ rm -f "${svcdir}/snapshot/$$/${SVCNAME}" ++ ++ # Simple way to try and detect if the service use svc_{start,stop} ++ # to restart if it have a custom restart() funtion. ++ if [[ -n $(egrep '^[[:space:]]*restart[[:space:]]*()' "/etc/init.d/${SVCNAME}") ]] ; then ++ if [[ -z $(egrep 'svc_stop' "/etc/init.d/${SVCNAME}") || \ ++ -z $(egrep 'svc_start' "/etc/init.d/${SVCNAME}") ]] ; then ++ echo ++ ewarn "Please use 'svc_stop; svc_start' and not 'stop; start' to" ++ ewarn "restart the service in its custom 'restart()' function." ++ ewarn "Run ${SVCNAME} without arguments for more info." ++ echo ++ if ! service_stopped "${SVCNAME}" ; then ++ svc_stop || return "$?" ++ fi ++ svc_start ++ else ++ restart ++ fi ++ else ++ restart + fi +- svc_start ++ retval="$?" ++ ++ [[ -e "${svcdir}/scheduled/${SVCNAME}" ]] \ ++ && rm -Rf "${svcdir}/scheduled/${SVCNAME}" ++ ++ # Restart dependencies as well ++ for x in $(dolisting "${svcdir}/snapshot/$$/") ; do ++ if [[ -x ${x} ]] && service_stopped "${x##*/}" ; then ++ if service_inactive "${SVCNAME}" \ ++ || service_wasinactive "${SVCNAME}" ; then ++ svc_schedule_start "${SVCNAME}" "${x##*/}" ++ ewarn "WARNING: ${x##*/} is scheduled to start when ${SVCNAME} has started." ++ elif service_started "${SVCNAME}" ; then ++ start_service "${x##*/}" ++ fi ++ fi ++ done ++ rm -rf "${svcdir}/snapshot/$$" ++ ++ service_started "${SVCNAME}" && svc_start_scheduled ++ ++ # Wait for services to come up ++ if [[ ${IN_BACKGROUND} != "true" \ ++ && ${IN_BACKGROUND} != "1" ]] ; then ++ [[ ${RC_PARALLEL_STARTUP} == "yes" ]] && wait ++ fi ++ ++ return ${retval} + } + + svc_status() { +@@ -629,64 +686,14 @@ + mark_service_stopped "${SVCNAME}" + ;; + restart) +- svcrestart="yes" +- +- # We don't kill child processes if we're restarting +- # This is especically important for sshd .... +- RC_KILL_CHILDREN="no" +- +- # Create a snapshot of started services +- rm -rf "${svcdir}/snapshot/$$" +- mkdir -p "${svcdir}/snapshot/$$" +- cp -pP "${svcdir}"/started/* "${svcdir}"/inactive/* \ +- "${svcdir}/snapshot/$$/" 2>/dev/null +- rm -f "${svcdir}/snapshot/$$/${SVCNAME}" +- +- # Simple way to try and detect if the service use svc_{start,stop} +- # to restart if it have a custom restart() funtion. +- if [[ -n $(egrep '^[[:space:]]*restart[[:space:]]*()' "/etc/init.d/${SVCNAME}") ]] ; then +- if [[ -z $(egrep 'svc_stop' "/etc/init.d/${SVCNAME}") || \ +- -z $(egrep 'svc_start' "/etc/init.d/${SVCNAME}") ]] ; then +- echo +- ewarn "Please use 'svc_stop; svc_start' and not 'stop; start' to" +- ewarn "restart the service in its custom 'restart()' function." +- ewarn "Run ${SVCNAME} without arguments for more info." +- echo +- svc_restart +- else +- restart +- fi +- else +- restart ++ svc_restart ++ retval="$?" ++ ;; ++ condrestart|conditionalrestart) ++ if service_started "${SVCNAME}" ; then ++ svc_restart + fi + retval="$?" +- +- [[ -e "${svcdir}/scheduled/${SVCNAME}" ]] \ +- && rm -Rf "${svcdir}/scheduled/${SVCNAME}" +- +- # Restart dependencies as well +- for x in $(dolisting "${svcdir}/snapshot/$$/") ; do +- if [[ -x ${x} ]] && service_stopped "${x##*/}" ; then +- if service_inactive "${SVCNAME}" \ +- || service_wasinactive "${SVCNAME}" ; then +- svc_schedule_start "${SVCNAME}" "${x##*/}" +- ewarn "WARNING: ${x##*/} is scheduled to start when ${SVCNAME} has started." +- elif service_started "${SVCNAME}" ; then +- start_service "${x##*/}" +- fi +- fi +- done +- rm -rf "${svcdir}/snapshot/$$" +- +- service_started "${SVCNAME}" && svc_start_scheduled +- +- # Wait for services to come up +- if [[ ${IN_BACKGROUND} != "true" \ +- && ${IN_BACKGROUND} != "1" ]] ; then +- [[ ${RC_PARALLEL_STARTUP} == "yes" ]] && wait +- fi +- +- svcrestart="no" + ;; + pause) + svcpause="yes" +Index: sbin/rc-help.sh +=================================================================== +--- sbin/rc-help.sh (revision 2461) ++++ sbin/rc-help.sh (working copy) +@@ -67,6 +67,9 @@ + can be handled correctly. Refer to the portmap rc-script for an + example. + ++ ${GREEN}conditionalrestart|condrestart${OFF} ++ Same as 'restart', but only if the service has already been started. ++ + ${GREEN}pause${OFF} + Same as 'stop', but the services that depends on it, will not be + stopped. This is useful for stopping a network interface without diff --git a/sys-apps/baselayout/files/digest-baselayout-1.12.8-r3 b/sys-apps/baselayout/files/digest-baselayout-1.12.8-r3 new file mode 100644 index 000000000000..b35ef146645e --- /dev/null +++ b/sys-apps/baselayout/files/digest-baselayout-1.12.8-r3 @@ -0,0 +1,3 @@ +MD5 2cdf1a2ed49f6c6ee4087964e0dd6e8e baselayout-1.12.8.tar.bz2 218298 +RMD160 2a47bf00db9c1e15ad2dd90e02dc55a896e3e01f baselayout-1.12.8.tar.bz2 218298 +SHA256 c05e126ee1b5bd63462db133c4e39ca45b0a999696f637f2a80d9c7b616eeeea baselayout-1.12.8.tar.bz2 218298