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