Re: [gentoo-dev] [PATCH] eclass/sword-module.eclass: update SRC_URI, expand a bit, clean up

2020-07-29 Thread Marek Szuba
On 2020-07-29 12:10, Michał Górny wrote:

> LGTM.  Thanks!

Okay then, merged!

-- 
MS



signature.asc
Description: OpenPGP digital signature


Re: [gentoo-dev] [PATCH] eclass/sword-module.eclass: update SRC_URI, expand a bit, clean up

2020-07-29 Thread Michał Górny
On Mon, 2020-07-27 at 17:44 +0200, Marek Szuba wrote:
> 1. The old version expected versioned source archives to have been
>manually uploaded to the Gentoo mirror network by package
>maintainers. This is no longer allowed, or indeed possible for most
>Gentoo developers. Instead, use the SRC_URI arrow mechanism to
>version archives fetched directly from upstream. SWORD Project
>updates their modules quite infrequently so it isn't really necessary
>to worry the file having changed between looking the version number
>up on the module page and fetching the archive for digest generation,
>and while users who do not use Gentoo mirrors will see digest
>conflicts when an update does occur, this would effectively encourage
>them to notify maintainers whenever a new version is released;
> 2. If SWORD_MODULE is not set, attempt to generate it from PN by
>stripping the prefix 'sword-'. This will allow explicit declarations
>of SWORD_MODULE from all app-dicts/sword-* ebuilds currently in the
>tree;
> 3. Add the optional variable SWORD_MINIMUM_VERSION to specify the lowest
>version of app-text/sword supported by the module at hand;
> 4. Remove redundant declarations of HOMEPAGE and IUSE;
> 5. app-arch/unzip is now in BDEPEND rather than DEPEND;
> 6. As a consequence of the above, enforce the use of EAPI-7 in ebuilds
>inheriting this eclass. Those in the tree have all already been
>updated to that EAPI version;
> 7. Remove redundant references to ${S} from doins() calls;
> 8. Add eclassdoc blocks.
> 
> No revision change in the end because all the changes should be
> backwards-compatible.
> 
> Closes: https://bugs.gentoo.org/637882
> Signed-off-by: Marek Szuba 
> ---
>  eclass/sword-module.eclass | 92 +++---
>  1 file changed, 77 insertions(+), 15 deletions(-)
> 
> diff --git a/eclass/sword-module.eclass b/eclass/sword-module.eclass
> index c66c9987e9f..2ae58d1e51b 100644
> --- a/eclass/sword-module.eclass
> +++ b/eclass/sword-module.eclass
> @@ -1,33 +1,95 @@
>  # Copyright 1999-2020 Gentoo Authors
>  # Distributed under the terms of the GNU General Public License v2
>  
> +# @ECLASS: sword-module.eclass
> +# @MAINTAINER:
> +# Marek Szuba 
> +# @SUPPORTED_EAPIS: 7
> +# @BLURB: Simplify installation of SWORD modules
> +# @DESCRIPTION:
> +# This eclass provides dependencies, ebuild environment and the src_install
> +# function common to all app-text/sword modules published by the SWORD 
> Project.
>  #
> -# eclass to simplify installation of Sword modules
> -# Bugs to mare...@gentoo.org
> +# Note that as of 2020-07-26 module archives published by SWORD are still
> +# not versioned and it is necessary to look at respective module pages in
> +# order to see what versions the currently available files are. Once
> +# a module file has been replicated to the Gentoo mirror network it will be
> +# versioned and remain available even after upstream has changed their
> +# version, however users not using mirrors will encounter hash conflicts
> +# on updated modules. Should that happen, please notify the relevant
> +# package maintainers that a new version is available.
>  #
> +# @EXAMPLE:
> +# sword-Personal-1.0.ebuild, a typical ebuild using sword-module.eclass:
> +#
> +# @CODE
> +# EAPI=7
> +#
> +# SWORD_MINIMUM_VERSION="1.5.1a"
> +#
> +# inherit sword-module
> +#
> +# DESCRIPTION="SWORD module for storing one's own commentary"
> +# HOMEPAGE="https://crosswire.org/sword/modules/ModInfo.jsp?modName=Personal;
> +# LICENSE="public-domain"
> +# KEYWORDS="~amd64 ~ppc ~x86"
> +#
> +# @CODE
>  
> -HOMEPAGE="http://www.crosswire.org/sword/modules/;
> +case ${EAPI:-0} in
> + 0|1|2|3|4|5|6)
> + die "Unsupported EAPI=${EAPI} (too old) for ${ECLASS}"
> + ;;
> + 7)
> + ;;
> + *)
> + die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
> + ;;
> +esac
>  
> -# Sword packages are generally released as FooBar.zip in their 'rawzip' form
> -# The files are also unversioned, so the packager will need to rename the
> -# original file to something else and host it somewhere to avoid breaking
> -# the digest when new versions are released.
> +# @ECLASS-VARIABLE: SWORD_MINIMUM_VERSION
> +# @DEFAULT_UNSET
> +# @PRE_INHERIT
> +# @DESCRIPTION:
> +# If set to a non-null value, specifies the minimum version of app-text/sword
> +# the module requires. This will be included in RDEPEND. If null or unset,
> +# the dependency will be unversioned.
> +# Needs to be set before the inherit line.
>  
> -SRC_URI="mirror://gentoo/${SWORD_MODULE}-${PV}.zip"
> +# @ECLASS-VARIABLE: SWORD_MODULE
> +# @PRE_INHERIT
> +# @DESCRIPTION:
> +# Case-sensitive name of the SWORD-Project module to install. If unset
> +# or null, use the name produced by removing the prefix 'sword-' from PN.
> +# Needs to be set before the inherit line.
> +: ${SWORD_MODULE:=${PN#sword-}}
> +
> +EXPORT_FUNCTIONS src_install
> +
> +# 

[gentoo-dev] [PATCH] eclass/sword-module.eclass: update SRC_URI, expand a bit, clean up

2020-07-27 Thread Marek Szuba
1. The old version expected versioned source archives to have been
   manually uploaded to the Gentoo mirror network by package
   maintainers. This is no longer allowed, or indeed possible for most
   Gentoo developers. Instead, use the SRC_URI arrow mechanism to
   version archives fetched directly from upstream. SWORD Project
   updates their modules quite infrequently so it isn't really necessary
   to worry the file having changed between looking the version number
   up on the module page and fetching the archive for digest generation,
   and while users who do not use Gentoo mirrors will see digest
   conflicts when an update does occur, this would effectively encourage
   them to notify maintainers whenever a new version is released;
2. If SWORD_MODULE is not set, attempt to generate it from PN by
   stripping the prefix 'sword-'. This will allow explicit declarations
   of SWORD_MODULE from all app-dicts/sword-* ebuilds currently in the
   tree;
3. Add the optional variable SWORD_MINIMUM_VERSION to specify the lowest
   version of app-text/sword supported by the module at hand;
4. Remove redundant declarations of HOMEPAGE and IUSE;
5. app-arch/unzip is now in BDEPEND rather than DEPEND;
6. As a consequence of the above, enforce the use of EAPI-7 in ebuilds
   inheriting this eclass. Those in the tree have all already been
   updated to that EAPI version;
7. Remove redundant references to ${S} from doins() calls;
8. Add eclassdoc blocks.

No revision change in the end because all the changes should be
backwards-compatible.

Closes: https://bugs.gentoo.org/637882
Signed-off-by: Marek Szuba 
---
 eclass/sword-module.eclass | 92 +++---
 1 file changed, 77 insertions(+), 15 deletions(-)

diff --git a/eclass/sword-module.eclass b/eclass/sword-module.eclass
index c66c9987e9f..2ae58d1e51b 100644
--- a/eclass/sword-module.eclass
+++ b/eclass/sword-module.eclass
@@ -1,33 +1,95 @@
 # Copyright 1999-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
+# @ECLASS: sword-module.eclass
+# @MAINTAINER:
+# Marek Szuba 
+# @SUPPORTED_EAPIS: 7
+# @BLURB: Simplify installation of SWORD modules
+# @DESCRIPTION:
+# This eclass provides dependencies, ebuild environment and the src_install
+# function common to all app-text/sword modules published by the SWORD Project.
 #
-# eclass to simplify installation of Sword modules
-# Bugs to mare...@gentoo.org
+# Note that as of 2020-07-26 module archives published by SWORD are still
+# not versioned and it is necessary to look at respective module pages in
+# order to see what versions the currently available files are. Once
+# a module file has been replicated to the Gentoo mirror network it will be
+# versioned and remain available even after upstream has changed their
+# version, however users not using mirrors will encounter hash conflicts
+# on updated modules. Should that happen, please notify the relevant
+# package maintainers that a new version is available.
 #
+# @EXAMPLE:
+# sword-Personal-1.0.ebuild, a typical ebuild using sword-module.eclass:
+#
+# @CODE
+# EAPI=7
+#
+# SWORD_MINIMUM_VERSION="1.5.1a"
+#
+# inherit sword-module
+#
+# DESCRIPTION="SWORD module for storing one's own commentary"
+# HOMEPAGE="https://crosswire.org/sword/modules/ModInfo.jsp?modName=Personal;
+# LICENSE="public-domain"
+# KEYWORDS="~amd64 ~ppc ~x86"
+#
+# @CODE
 
-HOMEPAGE="http://www.crosswire.org/sword/modules/;
+case ${EAPI:-0} in
+   0|1|2|3|4|5|6)
+   die "Unsupported EAPI=${EAPI} (too old) for ${ECLASS}"
+   ;;
+   7)
+   ;;
+   *)
+   die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
+   ;;
+esac
 
-# Sword packages are generally released as FooBar.zip in their 'rawzip' form
-# The files are also unversioned, so the packager will need to rename the
-# original file to something else and host it somewhere to avoid breaking
-# the digest when new versions are released.
+# @ECLASS-VARIABLE: SWORD_MINIMUM_VERSION
+# @DEFAULT_UNSET
+# @PRE_INHERIT
+# @DESCRIPTION:
+# If set to a non-null value, specifies the minimum version of app-text/sword
+# the module requires. This will be included in RDEPEND. If null or unset,
+# the dependency will be unversioned.
+# Needs to be set before the inherit line.
 
-SRC_URI="mirror://gentoo/${SWORD_MODULE}-${PV}.zip"
+# @ECLASS-VARIABLE: SWORD_MODULE
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Case-sensitive name of the SWORD-Project module to install. If unset
+# or null, use the name produced by removing the prefix 'sword-' from PN.
+# Needs to be set before the inherit line.
+: ${SWORD_MODULE:=${PN#sword-}}
+
+EXPORT_FUNCTIONS src_install
+
+# Unless overridden at ebuild level, append version to the name of the file
+# fetched from upstream and let the Gentoo mirror network take care of
+# persisting the versioned archive.
+SRC_URI="https://crosswire.org/ftpmirror/pub/sword/packages/rawzip/${SWORD_MODULE}.zip
 ->