diff options
author | Stefaan De Roeck <stefaan@gentoo.org> | 2005-09-02 00:48:27 +0000 |
---|---|---|
committer | Stefaan De Roeck <stefaan@gentoo.org> | 2005-09-02 00:48:27 +0000 |
commit | 375166c3f6c3c8e5657a65e1bd7665d740528855 (patch) | |
tree | 2e803b18688dc4daf2c1e4d159c6216bfdb6942f /net-fs | |
parent | Clean up the way we disable wm97xx/sis315 and enable i830. (diff) | |
download | historical-375166c3f6c3c8e5657a65e1bd7665d740528855.tar.gz historical-375166c3f6c3c8e5657a65e1bd7665d740528855.tar.bz2 historical-375166c3f6c3c8e5657a65e1bd7665d740528855.zip |
more modular init scripts, so that client and server are separate; version bump to 1.4.0 rc2 in the 1.4 family; and a bunch of other tweaks such as: starting after a local dns server when available, arrange a sensible default configuration, do parsing of cacheinfo during startup, etc. closing bugs #97478, #97480, #100837, #101128
Package-Manager: portage-2.0.51.22-r2
Diffstat (limited to 'net-fs')
-rw-r--r-- | net-fs/openafs/ChangeLog | 13 | ||||
-rw-r--r-- | net-fs/openafs/Manifest | 22 | ||||
-rw-r--r-- | net-fs/openafs/files/digest-openafs-1.2.13-r1 | 2 | ||||
-rw-r--r-- | net-fs/openafs/files/digest-openafs-1.4.0_rc2 | 2 | ||||
-rw-r--r-- | net-fs/openafs/openafs-1.2.13-r1.ebuild | 308 | ||||
-rw-r--r-- | net-fs/openafs/openafs-1.4.0_rc2.ebuild | 318 |
6 files changed, 655 insertions, 10 deletions
diff --git a/net-fs/openafs/ChangeLog b/net-fs/openafs/ChangeLog index b9bf3a2fd48f..d8d9957ce781 100644 --- a/net-fs/openafs/ChangeLog +++ b/net-fs/openafs/ChangeLog @@ -1,6 +1,17 @@ # ChangeLog for net-fs/openafs # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-fs/openafs/ChangeLog,v 1.49 2005/07/29 18:04:50 seemant Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-fs/openafs/ChangeLog,v 1.50 2005/09/02 00:48:27 stefaan Exp $ + +*openafs-1.4.0_rc2 (02 Sep 2005) +*openafs-1.2.13-r1 (02 Sep 2005) + + 02 Sep 2005; Stefaan De Roeck <stefaan.deroeck@gentoo.org> + +openafs-1.2.13-r1.ebuild, +openafs-1.4.0_rc2.ebuild: + more modular init scripts, so that client and server are separate; version + bump to 1.4.0 rc2 in the 1.4 family; and a bunch of other tweaks such as: + starting after a local dns server when available, arrange a sensible default + configuration, do parsing of cacheinfo during startup, etc. closing bugs + #97478, #97480, #100837, #101128 29 Jul 2005; David Holm <dholm@gentoo.org> openafs-1.3.85.ebuild: Added to ~ppc. diff --git a/net-fs/openafs/Manifest b/net-fs/openafs/Manifest index 1589d40f96eb..bf374518eb85 100644 --- a/net-fs/openafs/Manifest +++ b/net-fs/openafs/Manifest @@ -1,17 +1,21 @@ -MD5 9106d1f894ff97e7f12f6bca2efec680 openafs-1.2.10-r1.ebuild 2426 +MD5 db44f8dcfcbfae7e1b519b0be66812ea ChangeLog 8170 MD5 59bbb0e897a1a23a82305e12742e9ac6 metadata.xml 398 -MD5 161bd598fc762eca1bab7390fc9e531f openafs-1.3.85.ebuild 8711 +MD5 9106d1f894ff97e7f12f6bca2efec680 openafs-1.2.10-r1.ebuild 2426 MD5 3880fe8a3b787d05f3cce22e553aa715 openafs-1.2.13.ebuild 8637 -MD5 a9babd1fbd1876e3ac1085108a6c6704 ChangeLog 7643 +MD5 161bd598fc762eca1bab7390fc9e531f openafs-1.3.85.ebuild 8711 +MD5 96f0bb59f18c1adac4338d8fabcdea90 openafs-1.4.0_rc2.ebuild 10205 +MD5 92fd49421614bc6c108b0e77b7c349d9 openafs-1.2.13-r1.ebuild 9869 +MD5 4584cc6910401787e1ebd81cfa06f060 files/CellServDB 41 +MD5 c620f50b47424c46f59dc847eb8c0dd3 files/README 8735 MD5 1903c6a5e0aeedf794939945536341cd files/ThisCell 7 MD5 4f3ec773401fff6eeeacd14345ba89c1 files/afs.rc.rc6 5429 +MD5 e8488032f070544719cba9c7dbaf8108 files/digest-openafs-1.2.10-r1 73 +MD5 87bbfd1999ad85475d820a6c42e49e84 files/digest-openafs-1.2.13 143 +MD5 783c2d18fada2fa1d874b8aabf98e84d files/digest-openafs-1.3.85 143 MD5 19d17f83fbb3cc6c491476dba77eaad7 files/openafs-1.2.6.patch 822 MD5 36dc33d8c6e647e8aacf8e69849a28a3 files/openafs-pinstall-execve-1.2.10.patch 1242 +MD5 36dc33d8c6e647e8aacf8e69849a28a3 files/openafs-pinstall-execve-env.patch 1242 MD5 9554c33f806d3f69d9497d6c56d55b4e files/openafs-pinstall-execve.patch 1766 MD5 28ae5081e8e323cd402a659ac5e0730c files/openafs-typechange.patch 1371 -MD5 4584cc6910401787e1ebd81cfa06f060 files/CellServDB 41 -MD5 c620f50b47424c46f59dc847eb8c0dd3 files/README 8735 -MD5 36dc33d8c6e647e8aacf8e69849a28a3 files/openafs-pinstall-execve-env.patch 1242 -MD5 e8488032f070544719cba9c7dbaf8108 files/digest-openafs-1.2.10-r1 73 -MD5 87bbfd1999ad85475d820a6c42e49e84 files/digest-openafs-1.2.13 143 -MD5 783c2d18fada2fa1d874b8aabf98e84d files/digest-openafs-1.3.85 143 +MD5 4e24ea4a9fc322e49aec4643b8a47756 files/digest-openafs-1.4.0_rc2 147 +MD5 154b7f0bf57bb9377c49d03565366b15 files/digest-openafs-1.2.13-r1 144 diff --git a/net-fs/openafs/files/digest-openafs-1.2.13-r1 b/net-fs/openafs/files/digest-openafs-1.2.13-r1 new file mode 100644 index 000000000000..cce296d1754b --- /dev/null +++ b/net-fs/openafs/files/digest-openafs-1.2.13-r1 @@ -0,0 +1,2 @@ +MD5 6a1e6b5ad2da4532d6e1086024150ecd openafs-1.2.13-src.tar.bz2 10354615 +MD5 dfca6186129259559b8c491b1d6072c6 openafs-gentoo-0.2a.tar.bz2 17761 diff --git a/net-fs/openafs/files/digest-openafs-1.4.0_rc2 b/net-fs/openafs/files/digest-openafs-1.4.0_rc2 new file mode 100644 index 000000000000..6865f4b5dc67 --- /dev/null +++ b/net-fs/openafs/files/digest-openafs-1.4.0_rc2 @@ -0,0 +1,2 @@ +MD5 9dbef5c07eddd7a90e680079b9035e17 openafs-1.4.0-rc2-src.tar.bz2 10989632 +MD5 dfca6186129259559b8c491b1d6072c6 openafs-gentoo-0.2a.tar.bz2 17761 diff --git a/net-fs/openafs/openafs-1.2.13-r1.ebuild b/net-fs/openafs/openafs-1.2.13-r1.ebuild new file mode 100644 index 000000000000..a234864beb81 --- /dev/null +++ b/net-fs/openafs/openafs-1.2.13-r1.ebuild @@ -0,0 +1,308 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-fs/openafs/openafs-1.2.13-r1.ebuild,v 1.1 2005/09/02 00:48:27 stefaan Exp $ + +inherit fixheadtails flag-o-matic eutils toolchain-funcs versionator + +PATCHVER=0.2a +DESCRIPTION="The OpenAFS distributed file system" +HOMEPAGE="http://www.openafs.org/" +SRC_URI="http://openafs.org/dl/${PN}/${PV}/${P}-src.tar.bz2 + mirror://gentoo/${PN}-gentoo-${PATCHVER}.tar.bz2 + http://dev.gentoo.org/~stefaan/distfiles/${PN}-gentoo-${PATCHVER}.tar.bz2" + +LICENSE="IPL-1" +SLOT="0" +KEYWORDS="~x86 ~alpha ~ia64" +IUSE="pam" + +RDEPEND="=net-fs/openafs-kernel-${PV}*" + +PATCHDIR=${WORKDIR}/gentoo/patches/$(get_version_component_range 1-2) +CONFDIR=${WORKDIR}/gentoo/configs +SCRIPTDIR=${WORKDIR}/gentoo/scripts + +src_unpack() { + unpack ${A}; cd ${S} + + ht_fix_file "acinclude.m4" + ht_fix_file "config.guess" + ht_fix_file "src/afsd/afs.rc.linux" + ht_fix_file "aclocal.m4" + ht_fix_file "configure" + ht_fix_file "configure-libafs" + + EPATCH_SUFFIX="patch" epatch ${PATCHDIR} +} + +src_compile() { + econf \ + --enable-full-vos-listvol-switch \ + || die econf + + emake -j1 CC="$(tc-getCC) -fPIC" MT_CC="$(tc-getCC)" all_nolibafs || die "Build failed" +} + +src_install() { + make DESTDIR=${D} install_nolibafs || die "Installing failed" + + # pam_afs and pam_afs.krb have been installed in irregular locations, fix + if use pam; then + dodir /$(get_libdir)/security + mv ${D}/usr/$(get_libdir)/pam_afs* ${D}/$(get_libdir)/security + fi + + # compile_et collides with com_err. Remove it from this package. + rm ${D}/usr/bin/compile_et + + # avoid collision with mit_krb5's version of kpasswd + mv ${D}/usr/bin/kpasswd ${D}/usr/bin/kpasswd_afs + + # install manuals + doman src/man/*.? + doman src/aklog/aklog.1 + use pam && doman src/pam/pam_afs.5 + + # documentation + dodoc ${CONFDIR}/README ${CONFDIR}/CellServDB ${CONFDIR}/ChangeLog* + + # Gentoo related scripts + newconfd ${CONFDIR}/afs-client + newconfd ${CONFDIR}/afs-server + newinitd ${SCRIPTDIR}/afs-client + newinitd ${SCRIPTDIR}/afs-server + + # used directories: client + keepdir /etc/openafs + keepdir /var/cache/openafs + + # used directories: server + keepdir /etc/openafs/server + diropts -m0700 + keepdir /var/lib/openafs + keepdir /var/lib/openafs/db + keepdir /var/lib/openafs/logs +} + +migrate_to_fhs() { + # conventions: + # only automatically migrate if the destination directories are + # as of yet non-existant + + # path translations + local oldafsconfdir=${ROOT}usr/afs/etc + local newafsconfdir=${ROOT}etc/openafs/server + local oldviceetcdir=${ROOT}usr/vice/etc + local newviceetcdir=${ROOT}etc/openafs + local oldafslocaldir=${ROOT}usr/afs/local + local newafslocaldir=${ROOT}var/lib/openafs + local oldafsdbdir=${ROOT}usr/afs/db + local newafsdbdir=${ROOT}var/lib/openafs/db + + # detect Transarc afsconfdir + local afsconfdir=0 + [ ! -L ${oldafsconfdir} -a -d ${oldafsconfdir} -a ! -e ${newafsconfdir} ] && afsconfdir=1 + + # detect Transarc viceetcdir + local viceetcdir=0 + local viceetcsoftlink=0 + if [ -d ${oldviceetcdir} -a ! -e ${newviceetcdir} ]; then + if [ ! -L ${oldviceetcdir} ]; then + viceetcdir=1 + else + if [ $(readlink ${oldviceetcdir}) = /etc/afs ]; then + viceetcdir=1 + viceetcsoftlink=1 + fi + fi + fi + + # detect Transarc afslocaldir + local afslocaldir=0 + [ ! -L ${oldafslocaldir} -a -d ${oldafslocaldir} -a ! -e ${newafslocaldir} ] && afslocaldir=1 + + # detect Transarc afsdbdir + local afsdbdir=0 + [ ! -L ${oldafsdbdir} -a -d ${oldafsdbdir} -a ! -e ${newafsdbdir} ] && afsdbdir=1 + + # detect Transarc afsbosconfigdir + local afsbosconfigdir=0 + [ ${afslocaldir} = 1 -a -f ${oldafslocaldir}/BosConfig ] && afsbosconfigdir=1 + + # any of these? + local any=$((${afsconfdir}+${viceetcdir}+${afsdbdir}+${afslocaldir})) + + # No migration needed? Then bail out + if [ ${any} = 0 ]; then + return 0 + fi + + # Root not / ? Then do not attempt automatic migration + if [ "$ROOT" != "/" ]; then + ewarn Old-style configuration files found, but not migrating + ewarn because installation rootdir is not / + ebeep 5 + return 0 + fi + + # detect whether an installation with old config files is running + local pid + if pid=$(pgrep -n -U 0 bosserver) &>/dev/null; then + # find location of executable + if ! executable=$(readlink /proc/${pid}/exe); then + die "Couldn't execute readlink on bosserver process" + fi + # if executable is not located in /usr/sbin, assume Transarc locations + if [[ $executable != ${ROOT}usr/sbin/* ]]; then + ewarn "Found a running process with the name \"bosserver\" and pid ${pid}" + ewarn "that is not located in /usr/sbin. This suggests a running" + ewarn "OpenAFS-server with traditional TransARC path conventions." + ewarn "This installation procedure aims to migrate old" + ewarn "configuration files to new FHS-conform locations." + ewarn "Please stop the running server and reattempt the upgrade" + die "Installation aborted because of running OpenAFS server" + fi + fi + + # warn about migration + ewarn + ewarn "OpenAFS configuration/data-files have been found in old" + ewarn "TransARC-style locations, for which the standard FHS equivalents" + ewarn "do not exist yet. " + ewarn "Following procedure will copy those files to the new locations such" + ewarn "that, given a previously working configuration, both server" + ewarn "and client should restart without problems. Files will be copied" + ewarn "only, and not removed from the old locations. For assistance" + ewarn "in removing the old files, consult the documentation in" + ewarn "/usr/share/openafs/gentoo" + ewarn "Will continue in 30 seconds, press Ctrl-C to abort" + ewarn + ebeep 10 + epause 20 + + # fortunately, there's no overlap between the old locations and the new ones + + # afsconfdir: migrate /usr/afs/etc to /etc/openafs/server + if [ ${afsconfdir} = 1 ]; then + mkdir -m 755 -p ${newafsconfdir} + cp ${oldafsconfdir}/* ${newafsconfdir} + fi + + # viceetcdir: migrate /usr/vice/etc (likely a link to /etc/afs) to /etc/openafs + if [ ${viceetcdir} = 1 ]; then + mkdir -m 755 -p ${newviceetcdir} + cp ${oldviceetcdir}/* ${newviceetcdir} + fi + + # afslocaldir: migrate /usr/afs/local to /var/lib/openafs + if [ ${afslocaldir} = 1 ]; then + mkdir -m 700 -p ${newafslocaldir} + cp ${oldafslocaldir}/* ${newafslocaldir} + + # afsbosconfigdir: migrate /usr/afs/local/BosConfig to /etc/openafs/BosConfig + if [ ${afsbosconfigdir} = 1 ]; then + sed -i \ + -e 's:/usr/afs/bin/:/usr/libexec/openafs/:g' \ + -e 's:/usr/afs/etc:/etc/openafs/server:g' \ + -e 's:/usr/afs/bin:/usr/bin:g' \ + ${newafslocaldir}/BosConfig + if [ -d ${newviceetcdir} ]; then + mv ${newafslocaldir}/BosConfig ${newviceetcdir} + else + ewarn + ewarn "No ${newviceetcdir} found, couldn't move BosConfig there," + ewarn "it will remain in ${newafslocaldir}. Please investigate" + ewarn "before attempting to start the server" + ewarn + ebeep 3 + fi + fi + fi + + # afsdbdir: migrate /usr/afs/db to /var/lib/openafs/db + if [ ${afsdbdir} = 1 ]; then + mkdir -m 700 -p ${newafsdbdir} + cp ${oldafsdbdir}/* ${newafsdbdir} + fi + + ewarn "Migration finished" + ewarn "Please remember to manually migrate disk-cache (if present)" + ewarn "Alter /etc/openafs/cacheinfo to do so" + ebeep 5 +} + +migrate_configfile() { + local oldconfigfile=${ROOT}etc/conf.d/afs + local newconfigfile=${ROOT}etc/conf.d/afs-client + + if [ -f ${oldconfigfile} -a ! -e ${newconfigfile} ]; then + cp ${oldconfigfile} ${newconfigfile} + fi +} + +pkg_preinst() { + migrate_to_fhs + migrate_configfile + + ## Somewhat intelligently install default configuration files + ## (when they are not present) + # CellServDB + if [ ! -e ${ROOT}etc/openafs/CellServDB ] \ + || grep "GCO Public CellServDB" ${ROOT}etc/openafs/CellServDB &> /dev/null + then + cp ${CONFDIR}/CellServDB ${IMAGE}etc/openafs + fi + # cacheinfo: use a default location cache, 50 megabyte in size + # (should be safe for about any root partition, the user can increase + # the size as required) + if [ ! -e ${ROOT}etc/openafs/cacheinfo ]; then + echo "/afs:/var/cache/openafs:50000" > ${IMAGE}etc/openafs/cacheinfo + fi + # ThisCell: default to "openafs.org" + if [ ! -e ${ROOT}etc/openafs/ThisCell ]; then + echo "openafs.org" > ${IMAGE}etc/openafs/ThisCell + fi +} + +pkg_postinst() { + # See bug 9849 + # Create afs mountpoint + mkdir /afs 2>/dev/null + + einfo + einfo "For browsing global Cells, please get CellServDB from" + einfo "/usr/share/doc/${PF} and put in /etc/openafs. Then start" + einfo "using /etc/init.d/afs right away." + einfo "For more functionality, look at the limited README in the" + einfo "same directory, or turn to the more elaborate procedures" + einfo "described on http://www.openafs.org (quick beginnings)" + einfo "After initial server setup, you can edit /etc/conf.d/afs" + einfo "to enable the BOS Server." + einfo "" + einfo "To use AFS fully, you need either to start:" + einfo "1. kaserver, which is included with openafs but as it is" + einfo "based on kerberos4, it is not recommended." + einfo "2. app-crypt/kth-krb, but as it is also based on kerberos4 protocol," + einfo " you can keep passwords replicated in contrast to kaserver, but still" + einfo " don't waste your time here." + einfo "3. app-crypt/heimdal, which is kerberos5 distribution written in Europe," + einfo " so no US export restrictions apply (*recommended*, compatible with" + einfo " MIT krb5, see below)." + einfo " BTW: if you need kerberos4 backwards compatibility," + einfo " heimdal can be compiled with --with-krb4 switch to provide it, but" + einfo " app-crypt/kth-krb must be installed so that heimdal's configure" + einfo " can find it. Beware that krb4 approach is not considered" + einfo " safe anymore, so do not install kth-krb unless you really need it." + einfo "4. app-crypt/mit-krb5, if export restrictions allow you to do so." + einfo + + epause 20 + ebeep 5 +} + +pkg_prerm() { + # See bug 9849 + # Remove afs mountpoint + rmdir /afs 2>/dev/null +} + diff --git a/net-fs/openafs/openafs-1.4.0_rc2.ebuild b/net-fs/openafs/openafs-1.4.0_rc2.ebuild new file mode 100644 index 000000000000..7b00d55bc9db --- /dev/null +++ b/net-fs/openafs/openafs-1.4.0_rc2.ebuild @@ -0,0 +1,318 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-fs/openafs/openafs-1.4.0_rc2.ebuild,v 1.1 2005/09/02 00:48:27 stefaan Exp $ + +inherit flag-o-matic eutils toolchain-funcs versionator + +PATCHVER=0.2a +MY_PV=${PV/_/-} +MY_P=${PN}-${MY_PV} +S=${WORKDIR}/${MY_P} +DESCRIPTION="The OpenAFS distributed file system" +HOMEPAGE="http://www.openafs.org/" +SRC_URI="http://openafs.org/dl/${PN}/candidate/${MY_PV}/${MY_P}-src.tar.bz2 + mirror://gentoo/${PN}-gentoo-${PATCHVER}.tar.bz2 + http://dev.gentoo.org/~stefaan/distfiles/${PN}-gentoo-${PATCHVER}.tar.bz2" + +LICENSE="IPL-1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~x86" +IUSE="debug kerberos pam" + +RDEPEND="=net-fs/openafs-kernel-${PV}* + pam? ( sys-libs/pam ) + kerberos? ( virtual/krb5 )" + +PATCHDIR=${WORKDIR}/gentoo/patches/$(get_version_component_range 1-2) +CONFDIR=${WORKDIR}/gentoo/configs +SCRIPTDIR=${WORKDIR}/gentoo/scripts + +src_unpack() { + unpack ${A}; cd ${S} + + # Apply patches to apply chosen compiler settings, fix the hardcoded paths + # to be more FHS friendly, and the fix the incorrect typecasts for va_arg + EPATCH_SUFFIX="patch" epatch ${PATCHDIR} +} + +src_compile() { + # cannot use "use_with" macro, as --without-krb5-config crashes the econf + local myconf="" + if use kerberos; then + myconf="--with-krb5-conf=$(type -p krb5-config)" + fi + + econf \ + $(use_enable pam) \ + $(use_enable debug) \ + --enable-largefile \ + ${myconf} || die econf + + emake -j1 all_nolibafs || die "Build failed" +} + +src_install() { + make DESTDIR=${D} install_nolibafs || die "Installing failed" + + # pam_afs and pam_afs.krb have been installed in irregular locations, fix + if use pam; then + dodir /$(get_libdir)/security + mv ${D}/usr/$(get_libdir)/pam_afs* ${D}/$(get_libdir)/security + fi + + # compile_et collides with com_err. Remove it from this package. + rm ${D}/usr/bin/compile_et + + # avoid collision with mit_krb5's version of kpasswd + mv ${D}/usr/bin/kpasswd ${D}/usr/bin/kpasswd_afs + mv src/man/kpasswd.1 src/man/kpasswd_afs.1 + + # install manuals + doman src/man/*.? + + use kerberos && doman src/aklog/aklog.1 + use pam && doman src/pam/pam_afs.5 + + # documentation + dodoc ${CONFDIR}/README ${CONFDIR}/CellServDB ${CONFDIR}/ChangeLog* + + # Gentoo related scripts + newconfd ${CONFDIR}/afs-client + newconfd ${CONFDIR}/afs-server + newinitd ${SCRIPTDIR}/afs-client + newinitd ${SCRIPTDIR}/afs-server + + # used directories: client + keepdir /etc/openafs + keepdir /var/cache/openafs + + # used directories: server + keepdir /etc/openafs/server + diropts -m0700 + keepdir /var/lib/openafs + keepdir /var/lib/openafs/db + keepdir /var/lib/openafs/logs +} + +migrate_to_fhs() { + # conventions: + # only automatically migrate if the destination directories are + # as of yet non-existant + + # path translations + local oldafsconfdir=${ROOT}usr/afs/etc + local newafsconfdir=${ROOT}etc/openafs/server + local oldviceetcdir=${ROOT}usr/vice/etc + local newviceetcdir=${ROOT}etc/openafs + local oldafslocaldir=${ROOT}usr/afs/local + local newafslocaldir=${ROOT}var/lib/openafs + local oldafsdbdir=${ROOT}usr/afs/db + local newafsdbdir=${ROOT}var/lib/openafs/db + + # detect Transarc afsconfdir + local afsconfdir=0 + [ ! -L ${oldafsconfdir} -a -d ${oldafsconfdir} -a ! -e ${newafsconfdir} ] && afsconfdir=1 + + # detect Transarc viceetcdir + local viceetcdir=0 + local viceetcsoftlink=0 + if [ -d ${oldviceetcdir} -a ! -e ${newviceetcdir} ]; then + if [ ! -L ${oldviceetcdir} ]; then + viceetcdir=1 + else + if [ $(readlink ${oldviceetcdir}) = /etc/afs ]; then + viceetcdir=1 + viceetcsoftlink=1 + fi + fi + fi + + # detect Transarc afslocaldir + local afslocaldir=0 + [ ! -L ${oldafslocaldir} -a -d ${oldafslocaldir} -a ! -e ${newafslocaldir} ] && afslocaldir=1 + + # detect Transarc afsdbdir + local afsdbdir=0 + [ ! -L ${oldafsdbdir} -a -d ${oldafsdbdir} -a ! -e ${newafsdbdir} ] && afsdbdir=1 + + # detect Transarc afsbosconfigdir + local afsbosconfigdir=0 + [ ${afslocaldir} = 1 -a -f ${oldafslocaldir}/BosConfig ] && afsbosconfigdir=1 + + # any of these? + local any=$((${afsconfdir}+${viceetcdir}+${afsdbdir}+${afslocaldir})) + + # No migration needed? Then bail out + if [ ${any} = 0 ]; then + return 0 + fi + + # Root not / ? Then do not attempt automatic migration + if [ "$ROOT" != "/" ]; then + ewarn Old-style configuration files found, but not migrating + ewarn because installation rootdir is not / + ebeep 5 + return 0 + fi + + # detect whether an installation with old config files is running + local pid + if pid=$(pgrep -n -U 0 bosserver) &>/dev/null; then + # find location of executable + if ! executable=$(readlink /proc/${pid}/exe); then + die "Couldn't execute readlink on bosserver process" + fi + # if executable is not located in /usr/sbin, assume Transarc locations + if [[ $executable != ${ROOT}usr/sbin/* ]]; then + ewarn "Found a running process with the name \"bosserver\" and pid ${pid}" + ewarn "that is not located in /usr/sbin. This suggests a running" + ewarn "OpenAFS-server with traditional TransARC path conventions." + ewarn "This installation procedure aims to migrate old" + ewarn "configuration files to new FHS-conform locations." + ewarn "Please stop the running server and reattempt the upgrade" + die "Installation aborted because of running OpenAFS server" + fi + fi + + # warn about migration + ewarn + ewarn "OpenAFS configuration/data-files have been found in old" + ewarn "TransARC-style locations, for which the standard FHS equivalents" + ewarn "do not exist yet. " + ewarn "Following procedure will copy those files to the new locations such" + ewarn "that, given a previously working configuration, both server" + ewarn "and client should restart without problems. Files will be copied" + ewarn "only, and not removed from the old locations. For assistance" + ewarn "in removing the old files, consult the documentation in" + ewarn "/usr/share/openafs/gentoo" + ewarn "Will continue in 30 seconds, press Ctrl-C to abort" + ewarn + ebeep 10 + epause 20 + + # fortunately, there's no overlap between the old locations and the new ones + + # afsconfdir: migrate /usr/afs/etc to /etc/openafs/server + if [ ${afsconfdir} = 1 ]; then + mkdir -m 755 -p ${newafsconfdir} + cp ${oldafsconfdir}/* ${newafsconfdir} + fi + + # viceetcdir: migrate /usr/vice/etc (likely a link to /etc/afs) to /etc/openafs + if [ ${viceetcdir} = 1 ]; then + mkdir -m 755 -p ${newviceetcdir} + cp ${oldviceetcdir}/* ${newviceetcdir} + fi + + # afslocaldir: migrate /usr/afs/local to /var/lib/openafs + if [ ${afslocaldir} = 1 ]; then + mkdir -m 700 -p ${newafslocaldir} + cp ${oldafslocaldir}/* ${newafslocaldir} + + # afsbosconfigdir: migrate /usr/afs/local/BosConfig to /etc/openafs/BosConfig + if [ ${afsbosconfigdir} = 1 ]; then + sed -i \ + -e 's:/usr/afs/bin/:/usr/libexec/openafs/:g' \ + -e 's:/usr/afs/etc:/etc/openafs/server:g' \ + -e 's:/usr/afs/bin:/usr/bin:g' \ + ${newafslocaldir}/BosConfig + if [ -d ${newviceetcdir} ]; then + mv ${newafslocaldir}/BosConfig ${newviceetcdir} + else + ewarn + ewarn "No ${newviceetcdir} found, couldn't move BosConfig there," + ewarn "it will remain in ${newafslocaldir}. Please investigate" + ewarn "before attempting to start the server" + ewarn + ebeep 3 + fi + fi + fi + + # afsdbdir: migrate /usr/afs/db to /var/lib/openafs/db + if [ ${afsdbdir} = 1 ]; then + mkdir -m 700 -p ${newafsdbdir} + cp ${oldafsdbdir}/* ${newafsdbdir} + fi + + ewarn "Migration finished" + ewarn "Please remember to manually migrate disk-cache (if present)" + ewarn "Alter /etc/openafs/cacheinfo to do so" + ebeep 5 +} + +migrate_configfile() { + local oldconfigfile=${ROOT}etc/conf.d/afs + local newconfigfile=${ROOT}etc/conf.d/afs-client + + if [ -f ${oldconfigfile} -a ! -e ${newconfigfile} ]; then + cp ${oldconfigfile} ${newconfigfile} + fi +} + +pkg_preinst() { + migrate_to_fhs + migrate_configfile + + ## Somewhat intelligently install default configuration files + ## (when they are not present) + # CellServDB + if [ ! -e ${ROOT}etc/openafs/CellServDB ] \ + || grep "GCO Public CellServDB" ${ROOT}etc/openafs/CellServDB &> /dev/null + then + cp ${CONFDIR}/CellServDB ${IMAGE}etc/openafs + fi + # cacheinfo: use a default location cache, 50 megabyte in size + # (should be safe for about any root partition, the user can increase + # the size as required) + if [ ! -e ${ROOT}etc/openafs/cacheinfo ]; then + echo "/afs:/var/cache/openafs:50000" > ${IMAGE}etc/openafs/cacheinfo + fi + # ThisCell: default to "openafs.org" + if [ ! -e ${ROOT}etc/openafs/ThisCell ]; then + echo "openafs.org" > ${IMAGE}etc/openafs/ThisCell + fi +} + +pkg_postinst() { + # See bug 9849 + # Create afs mountpoint + mkdir /afs 2>/dev/null + + einfo + einfo "For browsing global Cells, please get CellServDB from" + einfo "/usr/share/doc/${PF} and put in /etc/openafs. Then start" + einfo "using /etc/init.d/afs right away." + einfo "For more functionality, look at the limited README in the" + einfo "same directory, or turn to the more elaborate procedures" + einfo "described on http://www.openafs.org (quick beginnings)" + einfo "After initial server setup, you can edit /etc/conf.d/afs" + einfo "to enable the BOS Server." + einfo "" + einfo "To use AFS fully, you need either to start:" + einfo "1. kaserver, which is included with openafs but as it is" + einfo "based on kerberos4, it is not recommended." + einfo "2. app-crypt/kth-krb, but as it is also based on kerberos4 protocol," + einfo " you can keep passwords replicated in contrast to kaserver, but still" + einfo " don't waste your time here." + einfo "3. app-crypt/heimdal, which is kerberos5 distribution written in Europe," + einfo " so no US export restrictions apply (*recommended*, compatible with" + einfo " MIT krb5, see below)." + einfo " BTW: if you need kerberos4 backwards compatibility," + einfo " heimdal can be compiled with --with-krb4 switch to provide it, but" + einfo " app-crypt/kth-krb must be installed so that heimdal's configure" + einfo " can find it. Beware that krb4 approach is not considered" + einfo " safe anymore, so do not install kth-krb unless you really need it." + einfo "4. app-crypt/mit-krb5, if export restrictions allow you to do so." + einfo + + epause 20 + ebeep 5 +} + +pkg_prerm() { + # See bug 9849 + # Remove afs mountpoint + rmdir /afs 2>/dev/null +} + |