summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps')
-rw-r--r--sys-apps/baselayout/ChangeLog8
-rw-r--r--sys-apps/baselayout/baselayout-2.0.0.ebuild84
2 files changed, 83 insertions, 9 deletions
diff --git a/sys-apps/baselayout/ChangeLog b/sys-apps/baselayout/ChangeLog
index 18de376ecdd3..53985ce49e58 100644
--- a/sys-apps/baselayout/ChangeLog
+++ b/sys-apps/baselayout/ChangeLog
@@ -1,10 +1,16 @@
# ChangeLog for sys-apps/baselayout
# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/ChangeLog,v 1.468 2008/05/10 10:03:38 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/ChangeLog,v 1.469 2008/08/19 06:12:52 zmedico Exp $
# See the rc-scripts ChangeLog in subversion for release info:
# http://sources.gentoo.org/viewcvs.py/*checkout*/baselayout/trunk/ChangeLog
+ 19 Aug 2008; Zac Medico <zmedico@gentoo.org> baselayout-2.0.0.ebuild:
+ Make the SYMLINK_LIB code in pkg_preinst merge files from lib directories
+ to lib64 directories when necessary, instead of blindly wiping out the
+ content of the lib dir. Thanks to Daniel Robbins for finding the cause of
+ this issue, which he discovered when building stage1 with catalyst.
+
10 May 2008; Mike Frysinger <vapier@gentoo.org> baselayout-2.0.0.ebuild:
Install the Makefile into $D so that we can use it in pkg_preinst steps (for
binpkgs) #218877 by Kevin Cody Jr.
diff --git a/sys-apps/baselayout/baselayout-2.0.0.ebuild b/sys-apps/baselayout/baselayout-2.0.0.ebuild
index 36ce441b3904..c2c1991d229e 100644
--- a/sys-apps/baselayout/baselayout-2.0.0.ebuild
+++ b/sys-apps/baselayout/baselayout-2.0.0.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/baselayout-2.0.0.ebuild,v 1.5 2008/05/10 10:03:38 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/baselayout/baselayout-2.0.0.ebuild,v 1.6 2008/08/19 06:12:52 zmedico Exp $
inherit multilib
@@ -40,13 +40,81 @@ pkg_preinst() {
touch "${ROOT}usr/local/${dir}"/.keep
done
- # Ugly compatibility with stupid ebuilds and old profiles symlinks
- if [ "${SYMLINK_LIB}" = "yes" ] ; then
- rm -r "${ROOT}"/{lib,usr/lib,usr/local/lib} 2>/dev/null
- local lib=$(get_abi_LIBDIR ${DEFAULT_ABI})
- ln -s "${lib}" "${ROOT}lib"
- ln -s "${lib}" "${ROOT}usr/lib"
- ln -s "${lib}" "${ROOT}usr/local/lib"
+ # Create symlinks for /lib, /usr/lib, and /usr/local/lib and
+ # merge contents of duplicate directories if necessary.
+ # Only do this when $ROOT != / since it should only be necessary
+ # when merging to an empty $ROOT, and it's not very safe to perform
+ # this operation when $ROOT = /.
+ if [ "${SYMLINK_LIB}" = yes ] && [ "$ROOT" != / ] ; then
+ local prefix libabi=$(get_abi_LIBDIR $DEFAULT_ABI)
+ for prefix in "$ROOT"{,usr/,usr/local/} ; do
+
+ [ ! -d "${prefix}lib" ] && rm -f "${prefix}lib" && \
+ mkdir -p "${prefix}lib"
+
+ [ ! -d "$prefix$libabi" ] && ln -sf "${prefix}lib"
+
+ [ -h "$prefix$libabi" ] && [ -d "${prefix}lib" ] && \
+ [ "$prefix$libabi" -ef "${prefix}lib" ] && continue
+
+ local destdir=$prefix$libabi/ srcdir=${prefix}lib/
+
+ [ -d "$destdir" ] || die "unable to create '$destdir'"
+ [ -d "$srcdir" ] || die "unable to create $srcdir"
+
+ mv -f "$srcdir".keep "$destdir".keep 2>/dev/null
+ if ! rmdir "$srcdir" 2>/dev/null ; then
+ ewarn "merging contents of '$srcdir' into '$destdir':"
+
+ # Move directories if the dest doesn't exist.
+ find "$srcdir" -type d -print0 | \
+ while read -d $'\0' src ; do
+ dest=$destdir${src#${srcdir}}
+ if [ ! -d "$dest" ] ; then
+ if [ -e "$dest" ] ; then
+ ewarn " not overwriting file '$dest'" \
+ "with directory '$src'"
+ continue
+ fi
+ mv -f "$src" "$dest" && \
+ ewarn " /${src#${ROOT}} merged" || \
+ ewarn " /${src#${ROOT}} not merged"
+ fi
+ done
+
+ # Move non-directories.
+ find "$srcdir" ! -type d -print0 | \
+ while read -d $'\0' src ; do
+ dest=$destdir${src#${srcdir}}
+ if [ -e "$dest" ] ; then
+ if [ -d "$dest" ] ; then
+ ewarn " not overwriting directory '$dest'" \
+ "with file '$src'"
+ else
+ if [ -f "$src" -a ! -s "$src" ] && \
+ [ -f "$dest" -a ! -s "$dest" ] ; then
+ # Ignore empty files such as '.keep'.
+ true
+ else
+ ewarn " not overwriting file '$dest'" \
+ "with file '$src'"
+ fi
+ fi
+ continue
+ fi
+
+ mv -f "$src" "$dest" && \
+ ewarn " /${src#${ROOT}} merged" || \
+ ewarn " /${src#${ROOT}} not merged"
+ done
+ fi
+
+ rm -rf "${prefix}lib" || \
+ die "unable to remove '${prefix}lib'"
+
+ ln -s "$libabi" "${prefix}lib" || \
+ die "unable to create '${prefix}lib' symlink"
+ done
fi
emake -C "${D}/usr/share/${PN}" DESTDIR="${ROOT}" layout || die "failed to layout filesystem"