W dniu pon, 26.02.2018 o godzinie 16∶59 +0100, użytkownik Michał Górny
napisał:
> This cleans up the kinda-ugly logic necessary to preserve dolib.a/so
> while removing dolib in EAPI 7, and removes the undesirable symlink
> handling in dolib.a.
> ---
>  bin/ebuild-helpers/dolib    |  2 +-
>  bin/ebuild-helpers/dolib.a  | 42 +++++++++++++++++++++++++++++++++++++++++-
>  bin/ebuild-helpers/dolib.so | 44 +++++++++++++++++++++++++++++++++++++++++++-
>  3 files changed, 85 insertions(+), 3 deletions(-)
> 
> diff --git a/bin/ebuild-helpers/dolib b/bin/ebuild-helpers/dolib
> index 62e04b385..4be4aa4ea 100755
> --- a/bin/ebuild-helpers/dolib
> +++ b/bin/ebuild-helpers/dolib
> @@ -4,7 +4,7 @@
>  
>  source "${PORTAGE_BIN_PATH}"/isolated-functions.sh || exit 1
>  
> -if [[ -z ${PORTAGE_INTERNAL_DOLIB} ]] && ! ___eapi_has_dolib_libopts; then
> +if ! ___eapi_has_dolib_libopts; then
>       die "'${0##*/}' has been banned for EAPI '$EAPI'"
>       exit 1
>  fi
> diff --git a/bin/ebuild-helpers/dolib.a b/bin/ebuild-helpers/dolib.a
> index 5ea126b5d..9c1cbeca1 100755
> --- a/bin/ebuild-helpers/dolib.a
> +++ b/bin/ebuild-helpers/dolib.a
> @@ -2,4 +2,44 @@
>  # Copyright 1999-2018 Gentoo Foundation
>  # Distributed under the terms of the GNU General Public License v2
>  
> -LIBOPTIONS='-m0644' PORTAGE_INTERNAL_DOLIB=1 exec dolib "$@"
> +source "${PORTAGE_BIN_PATH}"/isolated-functions.sh || exit 1
> +
> +if ! ___eapi_has_prefix_variables; then
> +     ED=${D}
> +fi
> +
> +# Setup ABI cruft
> +LIBDIR_VAR="LIBDIR_${ABI}"
> +if [[ -n ${ABI} && -n ${!LIBDIR_VAR} ]] ; then
> +     CONF_LIBDIR=${!LIBDIR_VAR}
> +fi
> +unset LIBDIR_VAR
> +# we need this to default to lib so that things dont break
> +CONF_LIBDIR=${CONF_LIBDIR:-lib}
> +libdir="${ED}${DESTTREE}/${CONF_LIBDIR}"
> +
> +
> +if [[ $# -lt 1 ]] ; then
> +     __helpers_die "${0##*/}: at least one argument needed"
> +     exit 1
> +fi
> +if [[ ! -d ${libdir} ]] ; then
> +     install -d "${libdir}" || { __helpers_die "${0##*/}: failed to install 
> ${libdir}"; exit 1; }
> +fi
> +
> +ret=0
> +
> +for x in "$@" ; do
> +     if [[ -e ${x} ]] ; then
> +             install -m0644 "${x}" "${libdir}"
> +     else
> +             echo "!!! ${0##*/}: ${x} does not exist" 1>&2
> +             false
> +     fi
> +     ((ret|=$?))
> +done
> +
> +[[ $ret -ne 0 ]] && __helpers_die "${0##*/} failed"
> +exit ${ret}
> +
> +# vim:ft=sh
> diff --git a/bin/ebuild-helpers/dolib.so b/bin/ebuild-helpers/dolib.so
> index a3b579e5e..e99962ae4 100755
> --- a/bin/ebuild-helpers/dolib.so
> +++ b/bin/ebuild-helpers/dolib.so
> @@ -2,4 +2,46 @@
>  # Copyright 1999-2018 Gentoo Foundation
>  # Distributed under the terms of the GNU General Public License v2
>  
> -LIBOPTIONS='-m0755' PORTAGE_INTERNAL_DOLIB=1 exec dolib "$@"
> +source "${PORTAGE_BIN_PATH}"/isolated-functions.sh || exit 1
> +
> +if ! ___eapi_has_prefix_variables; then
> +     ED=${D}
> +fi
> +
> +# Setup ABI cruft
> +LIBDIR_VAR="LIBDIR_${ABI}"
> +if [[ -n ${ABI} && -n ${!LIBDIR_VAR} ]] ; then
> +     CONF_LIBDIR=${!LIBDIR_VAR}
> +fi
> +unset LIBDIR_VAR
> +# we need this to default to lib so that things dont break
> +CONF_LIBDIR=${CONF_LIBDIR:-lib}
> +libdir="${ED}${DESTTREE}/${CONF_LIBDIR}"
> +
> +
> +if [[ $# -lt 1 ]] ; then
> +     __helpers_die "${0##*/}: at least one argument needed"
> +     exit 1
> +fi
> +if [[ ! -d ${libdir} ]] ; then
> +     install -d "${libdir}" || { __helpers_die "${0##*/}: failed to install 
> ${libdir}"; exit 1; }
> +fi
> +
> +ret=0
> +
> +for x in "$@" ; do
> +     if [[ -e ${x} ]] ; then
> +             if [[ ! -L ${x} ]] ; then
> +                     install -m0755 "${x}" "${libdir}"
> +             else
> +                     ln -s "$(readlink "${x}")" "${libdir}/${x##*/}"
> +             fi
> +     else
> +             echo "!!! ${0##*/}: ${x} does not exist" 1>&2
> +             false
> +     fi
> +     ((ret|=$?))
> +done
> +
> +[[ $ret -ne 0 ]] && __helpers_die "${0##*/} failed"
> +exit ${ret}

I withdraw this patch, we can't remove symlink logic from dolib.a
without breaking existing ebuilds.

-- 
Best regards,
Michał Górny


Reply via email to