Re: [gentoo-dev] [PATCH] bzr.eclass: Drop bzr_bootstrap and bzr_src_prepare.
W dniu śro, 07.02.2018 o godzinie 14∶18 +0100, użytkownik Ulrich Mueller napisał: > > > > > > On Wed, 07 Feb 2018, Michał Górny wrote: > > > -# @FUNCTION: bzr_src_prepare > > > -# @DESCRIPTION: > > > -# Default src_prepare(), calls bzr_bootstrap. > > > -bzr_src_prepare() { > > > - bzr_bootstrap > > > } > > Hmm, unless I'm mistaken, this can cause another definition > > of src_prepare to start applying to ebuilds. > > That's right, but wasn't relying on inherit order considered a QA > violation? In other words, shouldn't an ebuild define an explicit > phase function if it inherits more than one eclass exporting that > function? Not that I know of. However, I was actually more worried about ebuilds whose authors didn't even notice it. > > You can submit a PR with this change to get md5-cache with exported > > phase data suitable for comparison. > > Or... given the popularity of the eclass, you can check by hand ;-P. > > Done so for the Gentoo repo (before posting the patch). Or rather, > I have checked that WORKDIR has identical contents after the prepare > phase. Good enough for me. -- Best regards, Michał Górny
Re: [gentoo-dev] [PATCH] bzr.eclass: Drop bzr_bootstrap and bzr_src_prepare.
> On Wed, 07 Feb 2018, Michał Górny wrote: >> -# @FUNCTION: bzr_src_prepare >> -# @DESCRIPTION: >> -# Default src_prepare(), calls bzr_bootstrap. >> -bzr_src_prepare() { >> -bzr_bootstrap >> } > Hmm, unless I'm mistaken, this can cause another definition > of src_prepare to start applying to ebuilds. That's right, but wasn't relying on inherit order considered a QA violation? In other words, shouldn't an ebuild define an explicit phase function if it inherits more than one eclass exporting that function? > You can submit a PR with this change to get md5-cache with exported > phase data suitable for comparison. > Or... given the popularity of the eclass, you can check by hand ;-P. Done so for the Gentoo repo (before posting the patch). Or rather, I have checked that WORKDIR has identical contents after the prepare phase. Ulrich pgpzNjH7V3_BS.pgp Description: PGP signature
Re: [gentoo-dev] [PATCH] bzr.eclass: Drop bzr_bootstrap and bzr_src_prepare.
W dniu śro, 07.02.2018 o godzinie 00∶24 +0100, użytkownik Ulrich Müller napisał: > No ebuild in the Gentoo repository uses the bzr_bootstrap > functionality. Therefore drop the function along with bzr_src_prepare > (which would not have worked in EAPI 6 anyway, due to missing call to > eapply_user). After this change, inheriting eutils is not needed any > more. > > Drop support for EAPIs 0 and 1 for further simplification. > --- > > This is to be applied on top of the patch posted earlier today. > > We could go for bzr-r1.eclass instead. However, the functionality > associated with EBZR_PATCHES and EBZR_BOOTSTRAP is not used in the > tree, and overall the eclass is little used. Therefore I think that > applying these changes in-place is acceptable here. > > eclass/bzr.eclass | 99 > --- > 1 file changed, 13 insertions(+), 86 deletions(-) > > diff --git a/eclass/bzr.eclass b/eclass/bzr.eclass > index 9b3e0b6cf4dc..710b64db28c0 100644 > --- a/eclass/bzr.eclass > +++ b/eclass/bzr.eclass > @@ -18,21 +18,20 @@ > # Note: Just set EBZR_REPO_URI to the URI of the branch and src_unpack() > # of this eclass will export the branch to ${WORKDIR}/${P}. > > -inherit eutils > - > EBZR="bzr.eclass" > > -case "${EAPI:-0}" in > - 0|1) EXPORT_FUNCTIONS src_unpack ;; > - *) EXPORT_FUNCTIONS src_unpack src_prepare ;; > +case ${EAPI:-0} in > + 2|3|4|5|6) ;; > + *) die "${EBZR}: EAPI ${EAPI:-0} is not supported" ;; > esac > > -DEPEND=">=dev-vcs/bzr-2.6.0" > -case "${EAPI:-0}" in > - 0|1) ;; > - *) [[ ${EBZR_REPO_URI%%:*} = sftp ]] \ > - && DEPEND=">=dev-vcs/bzr-2.6.0[sftp]" ;; > -esac > +EXPORT_FUNCTIONS src_unpack > + > +if [[ ${EBZR_REPO_URI%%:*} = sftp ]]; then > + DEPEND=">=dev-vcs/bzr-2.6.0[sftp]" > +else > + DEPEND=">=dev-vcs/bzr-2.6.0" > +fi > > # @ECLASS-VARIABLE: EBZR_STORE_DIR > # @DESCRIPTION: > @@ -85,9 +84,8 @@ esac > # @DESCRIPTION: > # The repository URI for the source package. > # > -# Note: If the ebuild uses an sftp:// URI, then in EAPI 0 or 1 it must > -# make sure that dev-vcs/bzr was built with USE="sftp". In EAPI 2 or > -# later, the eclass will depend on dev-vcs/bzr[sftp]. > +# Note: If the ebuild uses an sftp:// URI, then the eclass will depend > +# on dev-vcs/bzr[sftp]. > > # @ECLASS-VARIABLE: EBZR_INITIAL_URI > # @DEFAULT_UNSET > @@ -100,21 +98,6 @@ esac > # > # Normally, this variable needs not be set. > > -# @ECLASS-VARIABLE: EBZR_BOOTSTRAP > -# @DEFAULT_UNSET > -# @DESCRIPTION: > -# Bootstrap script or command like autogen.sh or etc. > - > -# @ECLASS-VARIABLE: EBZR_PATCHES > -# @DEFAULT_UNSET > -# @DESCRIPTION: > -# bzr.eclass can apply patches in bzr_bootstrap(). You can use regular > -# expressions in this variable like *.diff or *.patch and the like. > -# Note: These patches will be applied before EBZR_BOOTSTRAP is processed. > -# > -# Patches are searched both in ${PWD} and ${FILESDIR}. If not found in > -# either location, the installation dies. > - > # @ECLASS-VARIABLE: EBZR_PROJECT > # @DESCRIPTION: > # The project name of your ebuild. Normally, the branch will be stored > @@ -276,65 +259,9 @@ bzr_fetch() { > popd > /dev/null > } > > -# @FUNCTION: bzr_bootstrap > -# @DESCRIPTION: > -# Apply patches in ${EBZR_PATCHES} and run ${EBZR_BOOTSTRAP} if specified. > -bzr_bootstrap() { > - local patch lpatch > - > - pushd "${S}" > /dev/null || die "${EBZR}: can't chdir to ${S}" > - > - if [[ -n ${EBZR_PATCHES} ]] ; then > - einfo "apply patches -->" > - > - for patch in ${EBZR_PATCHES} ; do > - if [[ -f ${patch} ]] ; then > - epatch "${patch}" > - else > - # This loop takes care of wildcarded patches > given via > - # EBZR_PATCHES in an ebuild > - for lpatch in "${FILESDIR}"/${patch} ; do > - if [[ -f ${lpatch} ]] ; then > - epatch "${lpatch}" > - else > - die "${EBZR}: ${patch} is not > found" > - fi > - done > - fi > - done > - fi > - > - if [[ -n ${EBZR_BOOTSTRAP} ]] ; then > - einfo "begin bootstrap -->" > - > - if [[ -f ${EBZR_BOOTSTRAP} ]] && [[ -x ${EBZR_BOOTSTRAP} ]] ; > then > - einfo " bootstrap with a file: ${EBZR_BOOTSTRAP}" > - "./${EBZR_BOOTSTRAP}" \ > - || die "${EBZR}: can't execute EBZR_BOOTSTRAP" > - else > - einfo " bootstrap with commands: ${EBZR_BOOTSTRAP}" > - "${EBZR_BOOTSTRAP}" \ > - || die "${EBZR}: can't eval EBZR_
[gentoo-dev] [PATCH] bzr.eclass: Drop bzr_bootstrap and bzr_src_prepare.
No ebuild in the Gentoo repository uses the bzr_bootstrap functionality. Therefore drop the function along with bzr_src_prepare (which would not have worked in EAPI 6 anyway, due to missing call to eapply_user). After this change, inheriting eutils is not needed any more. Drop support for EAPIs 0 and 1 for further simplification. --- This is to be applied on top of the patch posted earlier today. We could go for bzr-r1.eclass instead. However, the functionality associated with EBZR_PATCHES and EBZR_BOOTSTRAP is not used in the tree, and overall the eclass is little used. Therefore I think that applying these changes in-place is acceptable here. eclass/bzr.eclass | 99 --- 1 file changed, 13 insertions(+), 86 deletions(-) diff --git a/eclass/bzr.eclass b/eclass/bzr.eclass index 9b3e0b6cf4dc..710b64db28c0 100644 --- a/eclass/bzr.eclass +++ b/eclass/bzr.eclass @@ -18,21 +18,20 @@ # Note: Just set EBZR_REPO_URI to the URI of the branch and src_unpack() # of this eclass will export the branch to ${WORKDIR}/${P}. -inherit eutils - EBZR="bzr.eclass" -case "${EAPI:-0}" in - 0|1) EXPORT_FUNCTIONS src_unpack ;; - *) EXPORT_FUNCTIONS src_unpack src_prepare ;; +case ${EAPI:-0} in + 2|3|4|5|6) ;; + *) die "${EBZR}: EAPI ${EAPI:-0} is not supported" ;; esac -DEPEND=">=dev-vcs/bzr-2.6.0" -case "${EAPI:-0}" in - 0|1) ;; - *) [[ ${EBZR_REPO_URI%%:*} = sftp ]] \ - && DEPEND=">=dev-vcs/bzr-2.6.0[sftp]" ;; -esac +EXPORT_FUNCTIONS src_unpack + +if [[ ${EBZR_REPO_URI%%:*} = sftp ]]; then + DEPEND=">=dev-vcs/bzr-2.6.0[sftp]" +else + DEPEND=">=dev-vcs/bzr-2.6.0" +fi # @ECLASS-VARIABLE: EBZR_STORE_DIR # @DESCRIPTION: @@ -85,9 +84,8 @@ esac # @DESCRIPTION: # The repository URI for the source package. # -# Note: If the ebuild uses an sftp:// URI, then in EAPI 0 or 1 it must -# make sure that dev-vcs/bzr was built with USE="sftp". In EAPI 2 or -# later, the eclass will depend on dev-vcs/bzr[sftp]. +# Note: If the ebuild uses an sftp:// URI, then the eclass will depend +# on dev-vcs/bzr[sftp]. # @ECLASS-VARIABLE: EBZR_INITIAL_URI # @DEFAULT_UNSET @@ -100,21 +98,6 @@ esac # # Normally, this variable needs not be set. -# @ECLASS-VARIABLE: EBZR_BOOTSTRAP -# @DEFAULT_UNSET -# @DESCRIPTION: -# Bootstrap script or command like autogen.sh or etc. - -# @ECLASS-VARIABLE: EBZR_PATCHES -# @DEFAULT_UNSET -# @DESCRIPTION: -# bzr.eclass can apply patches in bzr_bootstrap(). You can use regular -# expressions in this variable like *.diff or *.patch and the like. -# Note: These patches will be applied before EBZR_BOOTSTRAP is processed. -# -# Patches are searched both in ${PWD} and ${FILESDIR}. If not found in -# either location, the installation dies. - # @ECLASS-VARIABLE: EBZR_PROJECT # @DESCRIPTION: # The project name of your ebuild. Normally, the branch will be stored @@ -276,65 +259,9 @@ bzr_fetch() { popd > /dev/null } -# @FUNCTION: bzr_bootstrap -# @DESCRIPTION: -# Apply patches in ${EBZR_PATCHES} and run ${EBZR_BOOTSTRAP} if specified. -bzr_bootstrap() { - local patch lpatch - - pushd "${S}" > /dev/null || die "${EBZR}: can't chdir to ${S}" - - if [[ -n ${EBZR_PATCHES} ]] ; then - einfo "apply patches -->" - - for patch in ${EBZR_PATCHES} ; do - if [[ -f ${patch} ]] ; then - epatch "${patch}" - else - # This loop takes care of wildcarded patches given via - # EBZR_PATCHES in an ebuild - for lpatch in "${FILESDIR}"/${patch} ; do - if [[ -f ${lpatch} ]] ; then - epatch "${lpatch}" - else - die "${EBZR}: ${patch} is not found" - fi - done - fi - done - fi - - if [[ -n ${EBZR_BOOTSTRAP} ]] ; then - einfo "begin bootstrap -->" - - if [[ -f ${EBZR_BOOTSTRAP} ]] && [[ -x ${EBZR_BOOTSTRAP} ]] ; then - einfo " bootstrap with a file: ${EBZR_BOOTSTRAP}" - "./${EBZR_BOOTSTRAP}" \ - || die "${EBZR}: can't execute EBZR_BOOTSTRAP" - else - einfo " bootstrap with commands: ${EBZR_BOOTSTRAP}" - "${EBZR_BOOTSTRAP}" \ - || die "${EBZR}: can't eval EBZR_BOOTSTRAP" - fi - fi - - popd > /dev/null -} - # @FUNCTION: bzr_src_unpack # @DESCRIPTION: -# Default src_unpack(), calls bzr_fetch. For EAPIs 0 and 1, also calls -# bzr_src_prepare. +# Default src_unpack(), calls bzr_fetch. bzr_src_unpack() {