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 <mare...@gentoo.org> > --- > 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 <mare...@gentoo.org> > +# @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 > -> ${SWORD_MODULE}-${PV}.zip" > > SLOT="0" > -IUSE="" > > +# Module archives contain no top-level directory. > S="${WORKDIR}" > > -RDEPEND="app-text/sword" > -DEPEND="app-arch/unzip" > +if [[ ${SWORD_MINIMUM_VERSION} ]]; then > + RDEPEND=">=app-text/sword-${SWORD_MINIMUM_VERSION}" > +else > + RDEPEND="app-text/sword" > +fi > + > +BDEPEND="app-arch/unzip" > > +# @FUNCTION: sword-module_src_install > +# @DESCRIPTION: > +# Install all the module files into directories used by app-text/sword. > sword-module_src_install() { > insinto /usr/share/sword/modules > - doins -r "${S}"/modules/* > + doins -r modules/* > insinto /usr/share/sword/mods.d > - doins "${S}"/mods.d/* > + doins mods.d/* > } > - > -EXPORT_FUNCTIONS src_install
LGTM. Thanks! -- Best regards, Michał Górny
signature.asc
Description: This is a digitally signed message part