From 630489db115d06de12dfcfb0d9f81a11dfbc6b08 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 17 Oct 2009 21:20:34 +0000 Subject: Bug #273636 - Add doins and newins support for symlink preservation in EAPI 3. Thanks to Jonathan Callen for the initial patch (I added EAPI conditionals in order to share code between all EAPIs). svn path=/main/trunk/; revision=14625 --- bin/ebuild-helpers/doins | 26 +++++++++++++++++++++----- bin/ebuild-helpers/newins | 11 +++++++++-- 2 files changed, 30 insertions(+), 7 deletions(-) (limited to 'bin') diff --git a/bin/ebuild-helpers/doins b/bin/ebuild-helpers/doins index 82f0bf3b6..b5f00e8d8 100755 --- a/bin/ebuild-helpers/doins +++ b/bin/ebuild-helpers/doins @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2007 Gentoo Foundation +# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ @@ -25,6 +25,15 @@ if [[ ${INSDESTTREE#${D}} != "${INSDESTTREE}" ]]; then exit 1 fi +case "$EAPI" in + 0|1|2) + PRESERVE_SYMLINKS=n + ;; + *) + PRESERVE_SYMLINKS=y + ;; +esac + export TMP=$T/.doins_tmp # Use separate directories to avoid potential name collisions. mkdir -p "$TMP"/{1,2} @@ -35,9 +44,15 @@ _doins() { local mysrc="$1" mydir="$2" cleanup="" rval if [ -L "$mysrc" ] ; then - cp "$mysrc" "$TMP/2" - mysrc="$TMP/2/${mysrc##*/}" - cleanup=${mysrc} + if [ $PRESERVE_SYMLINKS = y ] ; then + rm -rf "$D$INSDESTTREE/$mydir/${mysrc##*/}" || return $? + cp -P "$mysrc" "$D$INSDESTTREE/$mydir/${mysrc##*/}" + return $? + else + cp "$mysrc" "$TMP/2/${mysrc##*/}" || return $? + mysrc="$TMP/2/${mysrc##*/}" + cleanup=$mysrc + fi fi install ${INSOPTIONS} "${mysrc}" "${D}${INSDESTTREE}/${mydir}" @@ -56,7 +71,8 @@ _xdoins() { success=0 for x in "$@" ; do - if [ -d "$x" ] ; then + if [[ $PRESERVE_SYMLINKS = n && -d $x ]] || \ + [[ $PRESERVE_SYMLINKS = y && -d $x && ! -L $x ]] ; then if [ "${DOINSRECUR}" == "n" ] ; then continue fi diff --git a/bin/ebuild-helpers/newins b/bin/ebuild-helpers/newins index f235835a2..d15006d02 100755 --- a/bin/ebuild-helpers/newins +++ b/bin/ebuild-helpers/newins @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2006 Gentoo Foundation +# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ @@ -14,7 +14,14 @@ if [ ! -e "$1" ] ; then fi rm -rf "${T}/${2}" || exit $? -cp -f "${1}" "${T}/${2}" || exit $? +case "$EAPI" in + 0|1|2) + cp "$1" "$T/$2" || exit $? + ;; + *) + cp -P "$1" "$T/$2" || exit $? + ;; +esac doins "${T}/${2}" ret=$? rm -rf "${T}/${2}" -- cgit v1.2.3-1-g7c22