Re: [gentoo-dev] [PATCH] bzr.eclass: Drop bzr_bootstrap and bzr_src_prepare.

2018-02-07 Thread Michał Górny
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.

2018-02-07 Thread Ulrich Mueller
> 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.

2018-02-06 Thread Michał Górny
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.

2018-02-06 Thread Ulrich Müller
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() {