sys-devel/autoconf: [QA] Convert from eblits into an eclass, #586424

Convert the usage of eblits in sys-devel/autoconf into an equivalent
eclass. This makes the ebuilds more readable, more predictable and fixes
compliance with stricter versions of the package manager (i.e. a future
release of Portage).
This commit is contained in:
Michał Górny
2017-03-16 09:32:14 +01:00
parent c3b845ac8e
commit a91f8fc1b6
16 changed files with 99 additions and 197 deletions

View File

@@ -0,0 +1,70 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: toolchain-autoconf.eclass
# @MAINTAINER:
# <base-system@gentoo.org>
# @BLURB: Common code for sys-devel/autoconf ebuilds
# @DESCRIPTION:
# This eclass contains the common phase functions migrated from
# sys-devel/autoconf eblits.
if [[ -z ${_TOOLCHAIN_AUTOCONF_ECLASS} ]]; then
inherit eutils
EXPORT_FUNCTIONS src_prepare src_configure src_install
toolchain-autoconf_src_prepare() {
find -name Makefile.in -exec sed -i '/^pkgdatadir/s:$:-@VERSION@:' {} + || die
[[ ${#PATCHES[@]} -gt 0 ]] && epatch "${PATCHES[@]}"
}
toolchain-autoconf_src_configure() {
# Disable Emacs in the build system since it is in a separate package.
export EMACS=no
econf --program-suffix="-${PV}" || die
# econf updates config.{sub,guess} which forces the manpages
# to be regenerated which we dont want to do #146621
touch man/*.1
}
# slot the info pages. do this w/out munging the source so we don't have
# to depend on texinfo to regen things. #464146 (among others)
slot_info_pages() {
[[ ${SLOT} == "0" ]] && return
pushd "${ED}"/usr/share/info >/dev/null || die
rm -f dir || die
# Rewrite all the references to other pages.
# before: * aclocal-invocation: (automake)aclocal Invocation. Generating aclocal.m4.
# after: * aclocal-invocation v1.13: (automake-1.13)aclocal Invocation. Generating aclocal.m4.
local p pages=( *.info ) args=()
for p in "${pages[@]/%.info}" ; do
args+=(
-e "/START-INFO-DIR-ENTRY/,/END-INFO-DIR-ENTRY/s|: (${p})| v${SLOT}&|"
-e "s:(${p}):(${p}-${SLOT}):g"
)
done
sed -i "${args[@]}" * || die
# Rewrite all the file references, and rename them in the process.
local f d
for f in * ; do
d=${f/.info/-${SLOT}.info}
mv "${f}" "${d}" || die
sed -i -e "s:${f}:${d}:g" * || die
done
popd >/dev/null || die
}
toolchain-autoconf_src_install() {
default
slot_info_pages
}
_TOOLCHAIN_AUTOCONF_ECLASS=1
fi

View File

@@ -3,7 +3,7 @@
EAPI="5"
inherit eutils
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -26,12 +26,6 @@ PATCHES=(
"${FILESDIR}"/${P}-test-fixes.patch #146592
)
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_install() { eblit-run src_install ; }
src_configure() {
touch configure # make sure configure is newer than configure.in

View File

@@ -1,9 +1,9 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit eutils
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -23,10 +23,3 @@ RDEPEND="${DEPEND}
PATCHES=(
"${FILESDIR}"/${P}-more-quotes.patch
)
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -1,9 +1,9 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit eutils
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -24,13 +24,6 @@ PATCHES=(
"${FILESDIR}"/${P}-GETMNTENT.patch
)
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }
src_compile() {
# From configure output:
# Parallel builds via `make -jN' do not work.

View File

@@ -1,9 +1,9 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit eutils
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -25,10 +25,3 @@ PATCHES=(
"${FILESDIR}"/${P}-at-keywords.patch
"${FILESDIR}"/${P}-fix-multiline-string.patch #217976
)
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -1,9 +1,9 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit eutils
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -23,10 +23,3 @@ RDEPEND="${DEPEND}
PATCHES=(
"${FILESDIR}"/${P}-sh.patch #264303
)
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -1,8 +1,10 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
@@ -17,10 +19,3 @@ DEPEND=">=sys-devel/m4-1.4.6
RDEPEND="${DEPEND}
!~sys-devel/${P}:2.5
>=sys-devel/autoconf-wrapper-13"
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -1,9 +1,9 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit eutils
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -23,10 +23,3 @@ RDEPEND="${DEPEND}
PATCHES=(
"${FILESDIR}"/${P}-AC_TYPE_INT_T.patch #324649
)
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -1,8 +1,10 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
@@ -17,10 +19,3 @@ DEPEND=">=sys-devel/m4-1.4.6
RDEPEND="${DEPEND}
!~sys-devel/${P}:2.5
>=sys-devel/autoconf-wrapper-13"
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -1,8 +1,10 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
@@ -17,10 +19,3 @@ DEPEND=">=sys-devel/m4-1.4.6
RDEPEND="${DEPEND}
!~sys-devel/${P}:2.5
>=sys-devel/autoconf-wrapper-13"
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -3,8 +3,6 @@
EAPI="5"
inherit eutils
if [[ ${PV} == "9999" ]] ; then
EGIT_REPO_URI="git://git.savannah.gnu.org/${PN}.git
http://git.savannah.gnu.org/r/${PN}.git"
@@ -17,6 +15,8 @@ else
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
fi
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -32,14 +32,9 @@ RDEPEND="${DEPEND}
[[ ${PV} == "9999" ]] && DEPEND+=" >=sys-apps/texinfo-4.3"
PDEPEND="emacs? ( app-emacs/autoconf-mode )"
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() {
# usr/bin/libtool is provided by binutils-apple, need gnu libtool
[[ ${CHOST} == *-darwin* ]] && \
PATCHES+=( "${FILESDIR}"/${PN}-2.61-darwin.patch )
eblit-run src_prepare
toolchain-autoconf_src_prepare
}
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }

View File

@@ -1,4 +1,4 @@
# Copyright 1999-2015 Gentoo Foundation
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
@@ -15,6 +15,8 @@ else
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~arm-linux ~x86-linux"
fi
inherit toolchain-autoconf
DESCRIPTION="Used to create autoconfiguration files"
HOMEPAGE="https://www.gnu.org/software/autoconf/autoconf.html"
@@ -30,18 +32,13 @@ RDEPEND="${DEPEND}
[[ ${PV} == "9999" ]] && DEPEND+=" >=sys-apps/texinfo-4.3"
PDEPEND="emacs? ( app-emacs/autoconf-mode )"
if [[ -z ${__EBLITS__} && -n ${FILESDIR} ]] ; then
source "${FILESDIR}"/eblits/main.eblit || die
fi
src_prepare() { eblit-run src_prepare ; }
src_configure() { eblit-run src_configure ; }
src_install() { eblit-run src_install ; }
eblit-src_prepare-pre() {
src_prepare() {
# Avoid the "dirty" suffix in the git version by generating it
# before we run later stages which might modify source files.
local ver=$(./build-aux/git-version-gen .tarball-version)
echo "${ver}" > .tarball-version
autoreconf -f -i || die
toolchain-autoconf_src_prepare
}

View File

@@ -1,47 +0,0 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
__EBLITS__="locked-and-loaded"
# eblit-include [--skip] <function> [version]
eblit-include() {
local skipable=false
[[ $1 == "--skip" ]] && skipable=true && shift
[[ $1 == pkg_* ]] && skipable=true
local e v func=$1 ver=$2
[[ -z ${func} ]] && die "Usage: eblit-include <function> [version]"
for v in ${ver:+-}${ver} -${PVR} -${PV} "" ; do
e="${FILESDIR}/eblits/${func}${v}.eblit"
if [[ -e ${e} ]] ; then
source "${e}"
return 0
fi
done
${skipable} && return 0
die "Could not locate requested eblit '${func}' in ${FILESDIR}/eblits/"
}
# eblit-run-maybe <function>
# run the specified function if it is defined
eblit-run-maybe() {
[[ $(type -t "$@") == "function" ]] && "$@"
}
# eblit-run <function> [version]
# aka: src_unpack() { eblit-run src_unpack ; }
eblit-run() {
eblit-include --skip common "${*:2}"
eblit-include "$@"
eblit-run-maybe eblit-$1-pre
eblit-${PN}-$1
eblit-run-maybe eblit-$1-post
}
# Copy these into the ebuilds.
#src_unpack() { eblit-run src_unpack ; }
#src_prepare() { eblit-run src_prepare ; }
#src_configure() { eblit-run src_configure ; }
#src_compile() { eblit-run src_compile ; }
#src_test() { eblit-run src_test ; }
#src_install() { eblit-run src_install ; }

View File

@@ -1,11 +0,0 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
eblit-autoconf-src_configure() {
# Disable Emacs in the build system since it is in a separate package.
export EMACS=no
econf --program-suffix="-${PV}" || die
# econf updates config.{sub,guess} which forces the manpages
# to be regenerated which we dont want to do #146621
touch man/*.1
}

View File

@@ -1,38 +0,0 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# slot the info pages. do this w/out munging the source so we don't have
# to depend on texinfo to regen things. #464146 (among others)
slot_info_pages() {
[[ ${SLOT} == "0" ]] && return
pushd "${ED}"/usr/share/info >/dev/null
rm -f dir
# Rewrite all the references to other pages.
# before: * aclocal-invocation: (automake)aclocal Invocation. Generating aclocal.m4.
# after: * aclocal-invocation v1.13: (automake-1.13)aclocal Invocation. Generating aclocal.m4.
local p pages=( *.info ) args=()
for p in "${pages[@]/%.info}" ; do
args+=(
-e "/START-INFO-DIR-ENTRY/,/END-INFO-DIR-ENTRY/s|: (${p})| v${SLOT}&|"
-e "s:(${p}):(${p}-${SLOT}):g"
)
done
sed -i "${args[@]}" * || die
# Rewrite all the file references, and rename them in the process.
local f d
for f in * ; do
d=${f/.info/-${SLOT}.info}
mv "${f}" "${d}" || die
sed -i -e "s:${f}:${d}:g" * || die
done
popd >/dev/null
}
eblit-autoconf-src_install() {
default
slot_info_pages
}

View File

@@ -1,8 +0,0 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
eblit-autoconf-src_prepare() {
find -name Makefile.in -exec sed -i '/^pkgdatadir/s:$:-@VERSION@:' {} +
[[ ${#PATCHES[@]} -gt 0 ]] && epatch "${PATCHES[@]}"
}