summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
Diffstat (limited to 'eclass')
-rw-r--r--eclass/Manifest.gzbin37157 -> 37479 bytes
-rw-r--r--eclass/acct-user.eclass3
-rw-r--r--eclass/ada.eclass435
-rw-r--r--eclass/bzr.eclass22
-rw-r--r--eclass/elisp.eclass25
-rw-r--r--eclass/mozcoreconf-v6.eclass36
-rw-r--r--eclass/perl-app.eclass3
-rw-r--r--eclass/prefix.eclass2
-rw-r--r--eclass/s6.eclass6
-rw-r--r--eclass/sgml-catalog-r1.eclass73
-rw-r--r--eclass/tmpfiles.eclass6
-rw-r--r--eclass/udev.eclass4
12 files changed, 570 insertions, 45 deletions
diff --git a/eclass/Manifest.gz b/eclass/Manifest.gz
index 2535aa437de7..dee498cf1821 100644
--- a/eclass/Manifest.gz
+++ b/eclass/Manifest.gz
Binary files differ
diff --git a/eclass/acct-user.eclass b/eclass/acct-user.eclass
index 0ce7545cd1c5..c2e643332ccc 100644
--- a/eclass/acct-user.eclass
+++ b/eclass/acct-user.eclass
@@ -108,7 +108,8 @@ readonly ACCT_USER_NAME
# @REQUIRED
# @DESCRIPTION:
# List of groups the user should belong to. This must be a bash
-# array.
+# array. The first group specified is the user's primary group, while
+# the remaining groups (if any) become supplementary groups.
# << Boilerplate ebuild variables >>
diff --git a/eclass/ada.eclass b/eclass/ada.eclass
new file mode 100644
index 000000000000..338b73bab86b
--- /dev/null
+++ b/eclass/ada.eclass
@@ -0,0 +1,435 @@
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: ada.eclass
+# @MAINTAINER:
+# Ada team <ada@gentoo.org>
+# @AUTHOR:
+# Tupone Alfredo <tupone@gentoo.org>
+# @BLURB: An eclass for Ada packages
+# @DESCRIPTION:
+# This eclass set the IUSE and REQUIRED_USE to request the ADA_TARGET
+# when the inheriting ebuild can be supported by more than one Ada
+# implementation. It also set ADA_USEDEP and ADA_DEPS with a suitable form.
+# A common eclass providing helper functions to build and install
+# packages supporting Ada implementations.
+#
+# This eclass sets correct IUSE. Modification of REQUIRED_USE has to
+# be done by the author of the ebuild (but ADA_REQUIRED_USE is
+# provided for convenience, see below). ada exports ADA_DEPS
+# and ADA_USEDEP so you can create correct dependencies for your
+# package easily.
+#
+# Mostly copied from python-single-r1.eclass
+
+case "${EAPI:-0}" in
+ 0|1|2|3|4)
+ die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}"
+ ;;
+ 5|6|7)
+ # EAPI=5 is required for sane USE_EXPAND dependencies
+ ;;
+ *)
+ die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}"
+ ;;
+esac
+
+EXPORT_FUNCTIONS pkg_setup
+
+# @ECLASS-VARIABLE: ADA_DEPS
+# @DESCRIPTION:
+# This is an eclass-generated Ada dependency string for all
+# implementations listed in ADA_COMPAT.
+#
+# The dependency string is conditional on ADA_TARGET.
+#
+# Example use:
+# @CODE
+# RDEPEND="${ADA_DEPS}
+# dev-foo/mydep"
+# DEPEND="${RDEPEND}"
+# @CODE
+#
+
+# @ECLASS-VARIABLE: _ADA_ALL_IMPLS
+# @INTERNAL
+# @DESCRIPTION:
+# All supported Ada implementations, most preferred last.
+_ADA_ALL_IMPLS=(
+ gnat_2016 gnat_2017 gnat_2018 gnat_2019
+)
+readonly _ADA_ALL_IMPLS
+
+
+# @FUNCTION: _ada_impl_supported
+# @USAGE: <impl>
+# @INTERNAL
+# @DESCRIPTION:
+# Check whether the implementation <impl> (ADA_COMPAT-form)
+# is still supported.
+#
+# Returns 0 if the implementation is valid and supported. If it is
+# unsupported, returns 1 -- and the caller should ignore the entry.
+# If it is invalid, dies with an appopriate error messages.
+_ada_impl_supported() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${#} -eq 1 ]] || die "${FUNCNAME}: takes exactly 1 argument (impl)."
+
+ local impl=${1}
+
+ # keep in sync with _ADA_ALL_IMPLS!
+ # (not using that list because inline patterns shall be faster)
+ case "${impl}" in
+ gnat_201[6789])
+ return 0
+ ;;
+ *)
+ [[ ${ADA_COMPAT_NO_STRICT} ]] && return 1
+ die "Invalid implementation in ADA_COMPAT: ${impl}"
+ esac
+}
+
+# @FUNCTION: _ada_set_impls
+# @INTERNAL
+# @DESCRIPTION:
+# Check ADA_COMPAT for well-formedness and validity, then set
+# two global variables:
+#
+# - _ADA_SUPPORTED_IMPLS containing valid implementations supported
+# by the ebuild (ADA_COMPAT - dead implementations),
+#
+# - and _ADA_UNSUPPORTED_IMPLS containing valid implementations that
+# are not supported by the ebuild.
+#
+# Implementations in both variables are ordered using the pre-defined
+# eclass implementation ordering.
+#
+# This function must be called once in global scope by an eclass
+# utilizing ADA_COMPAT.
+_ada_set_impls() {
+ local i
+
+ if ! declare -p ADA_COMPAT &>/dev/null; then
+ die 'ADA_COMPAT not declared.'
+ fi
+ if [[ $(declare -p ADA_COMPAT) != "declare -a"* ]]; then
+ die 'ADA_COMPAT must be an array.'
+ fi
+ for i in "${ADA_COMPAT[@]}"; do
+ # trigger validity checks
+ _ada_impl_supported "${i}"
+ done
+
+ local supp=() unsupp=()
+
+ for i in "${_ADA_ALL_IMPLS[@]}"; do
+ if has "${i}" "${ADA_COMPAT[@]}"; then
+ supp+=( "${i}" )
+ else
+ unsupp+=( "${i}" )
+ fi
+ done
+ if [[ ! ${supp[@]} ]]; then
+ die "No supported implementation in ADA_COMPAT."
+ fi
+
+ if [[ ${_ADA_SUPPORTED_IMPLS[@]} ]]; then
+ # set once already, verify integrity
+ if [[ ${_ADA_SUPPORTED_IMPLS[@]} != ${supp[@]} ]]; then
+ eerror "Supported impls (ADA_COMPAT) changed between inherits!"
+ eerror "Before: ${_ADA_SUPPORTED_IMPLS[*]}"
+ eerror "Now : ${supp[*]}"
+ die "_ADA_SUPPORTED_IMPLS integrity check failed"
+ fi
+ if [[ ${_ADA_UNSUPPORTED_IMPLS[@]} != ${unsupp[@]} ]]; then
+ eerror "Unsupported impls changed between inherits!"
+ eerror "Before: ${_ADA_UNSUPPORTED_IMPLS[*]}"
+ eerror "Now : ${unsupp[*]}"
+ die "_ADA_UNSUPPORTED_IMPLS integrity check failed"
+ fi
+ else
+ _ADA_SUPPORTED_IMPLS=( "${supp[@]}" )
+ _ADA_UNSUPPORTED_IMPLS=( "${unsupp[@]}" )
+ readonly _ADA_SUPPORTED_IMPLS _ADA_UNSUPPORTED_IMPLS
+ fi
+}
+
+# @FUNCTION: ada_export
+# @USAGE: [<impl>] <variables>...
+# @DESCRIPTION:
+# Set and export the Ada implementation-relevant variables passed
+# as parameters.
+#
+# The optional first parameter may specify the requested Ada
+# implementation (either as ADA_TARGETS value, e.g. ada2_7,
+# or an EADA one, e.g. ada2.7). If no implementation passed,
+# the current one will be obtained from ${EADA}.
+#
+# The variables which can be exported are: GCC, EADA, GNATMAKE.
+# They are described more completely in the eclass
+# variable documentation.
+ada_export() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local impl var
+
+ case "${1}" in
+ gnat_201[6789])
+ impl=${1}
+ shift
+ ;;
+ *)
+ impl=${EADA}
+ if [[ -z ${impl} ]]; then
+ die "ada_export called without a ada implementation and EADA is unset"
+ fi
+ ;;
+ esac
+ debug-print "${FUNCNAME}: implementation: ${impl}"
+
+ local gcc_pv
+ case "${impl}" in
+ gnat_2016)
+ gcc_pv=4.9.4
+ ;;
+ gnat_2017)
+ gcc_pv=6.3.0
+ ;;
+ gnat_2018)
+ gcc_pv=7.3.1
+ ;;
+ gnat_2019)
+ gcc_pv=8.3.1
+ ;;
+ *)
+ gcc_pv="9.9.9"
+ ;;
+ esac
+
+ for var; do
+ case "${var}" in
+ EADA)
+ export EADA=${impl}
+ debug-print "${FUNCNAME}: EADA = ${EADA}"
+ ;;
+ GCC)
+ export GCC=${EPREFIX}/usr/bin/gcc-${gcc_pv}
+ debug-print "${FUNCNAME}: GCC = ${GCC}"
+ ;;
+ GCC_PV)
+ export GCC_PV=${gcc_pv}
+ debug-print "${FUNCNAME}: GCC_PV = ${GCC_PV}"
+ ;;
+ GNATBIND)
+ export GNATBIND=${EPREFIX}/usr/bin/gnatbind-${gcc_pv}
+ debug-print "${FUNCNAME}: GNATBIND = ${GNATBIND}"
+ ;;
+ GNATMAKE)
+ export GNATMAKE=${EPREFIX}/usr/bin/gnatmake-${gcc_pv}
+ debug-print "${FUNCNAME}: GNATMAKE = ${GNATMAKE}"
+ ;;
+ GNATLS)
+ export GNATLS=${EPREFIX}/usr/bin/gnatls-${gcc_pv}
+ debug-print "${FUNCNAME}: GNATLS = ${GNATLS}"
+ ;;
+ ADA_PKG_DEP)
+ ADA_PKG_DEP="dev-lang/gnat-gpl:${gcc_pv}"
+
+ # use-dep
+ if [[ ${ADA_REQ_USE} ]]; then
+ ADA_PKG_DEP+=[${ADA_REQ_USE}]
+ fi
+
+ export ADA_PKG_DEP
+ debug-print "${FUNCNAME}: ADA_PKG_DEP = ${ADA_PKG_DEP}"
+ ;;
+ *)
+ die "ada_export: unknown variable ${var}"
+ esac
+ done
+}
+
+_ada_single_set_globals() {
+ _ada_set_impls
+ local i ADA_PKG_DEP
+
+ local flags=( "${_ADA_SUPPORTED_IMPLS[@]/#/ada_target_}" )
+ local unflags=( "${_ADA_UNSUPPORTED_IMPLS[@]/#/-ada_target_}" )
+ local allflags=( ${flags[@]} ${unflags[@]} )
+
+ local optflags=${flags[@]/%/(-)?}
+
+ IUSE="${allflags[*]}"
+
+ if [[ ${#_ADA_UNSUPPORTED_IMPLS[@]} -gt 0 ]]; then
+ optflags+=,${unflags[@]/%/(-)}
+ fi
+
+ local deps requse usedep
+ if [[ ${#_ADA_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
+ # There is only one supported implementation; set IUSE and other
+ # variables without ADA_SINGLE_TARGET.
+ requse=${flags[*]}
+ ada_export "${_ADA_SUPPORTED_IMPLS[0]}" ADA_PKG_DEP
+ deps="${flags[*]}? ( ${ADA_PKG_DEP} ) "
+ else
+ # Multiple supported implementations; honor ADA_TARGET.
+ requse="^^ ( ${flags[*]} )"
+
+ for i in "${_ADA_SUPPORTED_IMPLS[@]}"; do
+ ada_export "${i}" ADA_PKG_DEP
+ deps+="ada_target_${i}? ( ${ADA_PKG_DEP} ) "
+ done
+ fi
+ usedep=${optflags// /,}
+ if [[ ${ADA_DEPS+1} ]]; then
+ if [[ ${ADA_DEPS} != "${deps}" ]]; then
+ eerror "ADA_DEPS have changed between inherits (ADA_REQ_USE?)!"
+ eerror "Before: ${ADA_DEPS}"
+ eerror "Now : ${deps}"
+ die "ADA_DEPS integrity check failed"
+ fi
+
+ # these two are formality -- they depend on ADA_COMPAT only
+ if [[ ${ADA_REQUIRED_USE} != ${requse} ]]; then
+ eerror "ADA_REQUIRED_USE have changed between inherits!"
+ eerror "Before: ${ADA_REQUIRED_USE}"
+ eerror "Now : ${requse}"
+ die "ADA_REQUIRED_USE integrity check failed"
+ fi
+
+ if [[ ${ADA_USEDEP} != "${usedep}" ]]; then
+ eerror "ADA_USEDEP have changed between inherits!"
+ eerror "Before: ${ADA_USEDEP}"
+ eerror "Now : ${usedep}"
+ die "ADA_USEDEP integrity check failed"
+ fi
+ else
+ ADA_DEPS=${deps}
+ ADA_REQUIRED_USE=${requse}
+ ADA_USEDEP=${usedep}
+ readonly ADA_DEPS ADA_REQUIRED_USE ADA_USEDEP
+ fi
+}
+_ada_single_set_globals
+unset -f _ada_single_set_globals
+
+# @FUNCTION: ada_wrapper_setup
+# @USAGE: [<path> [<impl>]]
+# @DESCRIPTION:
+# Create proper 'ada' executable wrappers
+# in the directory named by <path>. Set up PATH
+# appropriately. <path> defaults to ${T}/${EADA}.
+#
+# The wrappers will be created for implementation named by <impl>,
+# or for one named by ${EADA} if no <impl> passed.
+#
+# If the named directory contains a ada symlink already, it will
+# be assumed to contain proper wrappers already and only environment
+# setup will be done. If wrapper update is requested, the directory
+# shall be removed first.
+ada_wrapper_setup() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local workdir=${1:-${T}/${EADA}}
+ local impl=${2:-${EADA}}
+
+ [[ ${workdir} ]] || die "${FUNCNAME}: no workdir specified."
+ [[ ${impl} ]] || die "${FUNCNAME}: no impl nor EADA specified."
+
+ if [[ ! -x ${workdir}/bin/gnatmake ]]; then
+ mkdir -p "${workdir}"/bin || die
+
+ local GCC GNATMAKE GNATLS GNATBIND
+ ada_export "${impl}" GCC GNATMAKE GNATLS GNATBIND
+
+ # Ada compiler
+ cat > "${workdir}/bin/gcc" <<-_EOF_ || die
+ #!/bin/sh
+ exec "${GCC}" "\${@}"
+ _EOF_
+ chmod a+x "${workdir}/bin/gcc"
+ cat > "${workdir}/bin/gnatmake" <<-_EOF_ || die
+ #!/bin/sh
+ exec "${GNATMAKE}" "\${@}"
+ _EOF_
+ chmod a+x "${workdir}/bin/gnatmake"
+ cat > "${workdir}/bin/gnatls" <<-_EOF_ || die
+ #!/bin/sh
+ exec "${GNATLS}" "\${@}"
+ _EOF_
+ chmod a+x "${workdir}/bin/gnatls"
+ cat > "${workdir}/bin/gnatbind" <<-_EOF_ || die
+ #!/bin/sh
+ exec "${GNATBIND}" "\${@}"
+ _EOF_
+ chmod a+x "${workdir}/bin/gnatbind"
+ fi
+
+ # Now, set the environment.
+ # But note that ${workdir} may be shared with something else,
+ # and thus already on top of PATH.
+ if [[ ${PATH##:*} != ${workdir}/bin ]]; then
+ PATH=${workdir}/bin${PATH:+:${PATH}}
+ fi
+ export PATH
+}
+
+# @FUNCTION: ada_setup
+# @DESCRIPTION:
+# Determine what the selected Ada implementation is and set
+# the Ada build environment up for it.
+ada_setup() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ unset EADA
+
+ if [[ ${#_ADA_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
+ if use "ada_targets_${_ADA_SUPPORTED_IMPLS[0]}"; then
+ # Only one supported implementation, enable it explicitly
+ ada_export "${_ADA_SUPPORTED_IMPLS[0]}" EADA GCC GCC_PV GNATMAKE
+ ada_wrapper_setup
+ fi
+ else
+ local impl
+ for impl in "${_ADA_SUPPORTED_IMPLS[@]}"; do
+ if use "ada_target_${impl}"; then
+ if [[ ${EADA} ]]; then
+ eerror "Your ADA_TARGET setting lists more than a single Ada"
+ eerror "implementation. Please set it to just one value. If you need"
+ eerror "to override the value for a single package, please use package.env"
+ eerror "or an equivalent solution (man 5 portage)."
+ echo
+ die "More than one implementation in ADA_TARGET."
+ fi
+
+ ada_export "${impl}" EADA GCC GCC_PV GNATMAKE
+ ada_wrapper_setup
+ fi
+ done
+ fi
+
+ if [[ ! ${EADA} ]]; then
+ eerror "No Ada implementation selected for the build. Please set"
+ if [[ ${#_ADA_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
+ eerror "the ADA_TARGETS variable in your make.conf to include one"
+ else
+ eerror "the ADA_SINGLE_TARGET variable in your make.conf to one"
+ fi
+ eerror "of the following values:"
+ eerror
+ eerror "${_ADA_SUPPORTED_IMPLS[@]}"
+ echo
+ die "No supported Ada implementation in ADA_SINGLE_TARGET/ADA_TARGETS."
+ fi
+}
+
+# @FUNCTION: ada_pkg_setup
+# @DESCRIPTION:
+# Runs ada_setup.
+ada_pkg_setup() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ [[ ${MERGE_TYPE} != binary ]] && ada_setup
+}
diff --git a/eclass/bzr.eclass b/eclass/bzr.eclass
index 10bd6bc7e5ad..598a0f87fe6d 100644
--- a/eclass/bzr.eclass
+++ b/eclass/bzr.eclass
@@ -140,6 +140,17 @@ EXPORT_FUNCTIONS src_unpack
# by users.
: ${EBZR_OFFLINE=${EVCS_OFFLINE}}
+# @ECLASS-VARIABLE: EVCS_UMASK
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set this variable to a custom umask. This is intended to be set by
+# users. By setting this to something like 002, it can make life easier
+# for people who do development as non-root (but are in the portage
+# group), and then switch over to building with FEATURES=userpriv.
+# Or vice-versa. Shouldn't be a security issue here as anyone who has
+# portage group write access already can screw the system over in more
+# creative ways.
+
# @ECLASS-VARIABLE: EBZR_WORKDIR_CHECKOUT
# @DEFAULT_UNSET
# @DESCRIPTION:
@@ -197,7 +208,7 @@ bzr_update() {
# working copy.
bzr_fetch() {
local repo_dir branch_dir
- local save_sandbox_write=${SANDBOX_WRITE}
+ local save_sandbox_write=${SANDBOX_WRITE} save_umask
[[ -n ${EBZR_REPO_URI} ]] || die "${EBZR}: EBZR_REPO_URI is empty"
@@ -214,6 +225,10 @@ bzr_fetch() {
repo_dir=${EBZR_STORE_DIR}/${EBZR_PROJECT}
branch_dir=${repo_dir}${EBZR_BRANCH:+/${EBZR_BRANCH}}
+ if [[ -n ${EVCS_UMASK} ]]; then
+ save_umask=$(umask)
+ umask "${EVCS_UMASK}" || die
+ fi
addwrite "${EBZR_STORE_DIR}"
if [[ ! -d ${branch_dir}/.bzr ]]; then
@@ -240,8 +255,11 @@ bzr_fetch() {
bzr_update "${EBZR_REPO_URI}" "${branch_dir}"
fi
- # Restore sandbox environment
+ # Restore sandbox environment and umask
SANDBOX_WRITE=${save_sandbox_write}
+ if [[ -n ${save_umask} ]]; then
+ umask "${save_umask}" || die
+ fi
cd "${branch_dir}" || die "${EBZR}: can't chdir to ${branch_dir}"
diff --git a/eclass/elisp.eclass b/eclass/elisp.eclass
index c885345a7a83..bcd80a9ee9ca 100644
--- a/eclass/elisp.eclass
+++ b/eclass/elisp.eclass
@@ -38,7 +38,8 @@
# @DESCRIPTION:
# Space separated list of patches to apply after unpacking the sources.
# Patch files are searched for in the current working dir, WORKDIR, and
-# FILESDIR.
+# FILESDIR. This variable is semi-deprecated, preferably use the
+# PATCHES array instead if the EAPI supports it.
# @ECLASS-VARIABLE: ELISP_REMOVE
# @DEFAULT_UNSET
@@ -59,12 +60,6 @@
# Space separated list of Texinfo sources. Respective GNU Info files
# will be generated in src_compile() and installed in src_install().
-# @ECLASS-VARIABLE: DOCS
-# @DEFAULT_UNSET
-# @DESCRIPTION:
-# DOCS="blah.txt ChangeLog" is automatically used to install the given
-# files by dodoc in src_install().
-
inherit elisp-common
case ${EAPI:-0} in
4|5) inherit epatch ;;
@@ -101,7 +96,7 @@ elisp_pkg_setup() {
# WORKDIR for packages distributed that way.
elisp_src_unpack() {
- [[ -n ${A} ]] && unpack ${A}
+ default
if [[ -f ${P}.el ]]; then
# the "simple elisp" case with a single *.el file in WORKDIR
mv ${P}.el ${PN}.el || die
@@ -132,10 +127,10 @@ elisp_src_prepare() {
esac
done
- # apply any user patches
+ # apply PATCHES (if supported in EAPI), and any user patches
case ${EAPI} in
4|5) epatch_user ;;
- *) eapply_user ;;
+ *) default ;;
esac
if [[ -n ${ELISP_REMOVE} ]]; then
@@ -177,11 +172,13 @@ elisp_src_install() {
if [[ -n ${ELISP_TEXINFO} ]]; then
set -- ${ELISP_TEXINFO}
set -- ${@##*/}
- doinfo ${@/%.*/.info*} || die
- fi
- if [[ -n ${DOCS} ]]; then
- dodoc ${DOCS} || die
+ doinfo ${@/%.*/.info*}
fi
+ # install documentation only when explicitly requested
+ case ${EAPI} in
+ 4|5) [[ -n ${DOCS} ]] && dodoc ${DOCS} ;;
+ *) declare -p DOCS &>/dev/null && einstalldocs ;;
+ esac
if declare -f readme.gentoo_create_doc >/dev/null; then
readme.gentoo_create_doc
fi
diff --git a/eclass/mozcoreconf-v6.eclass b/eclass/mozcoreconf-v6.eclass
index 2789e6046b9f..78104b55fb6e 100644
--- a/eclass/mozcoreconf-v6.eclass
+++ b/eclass/mozcoreconf-v6.eclass
@@ -208,14 +208,16 @@ mozconfig_init() {
# Additional ARCH support
case "${ARCH}" in
arm)
- # Reduce the memory requirements for linking
- if use clang ; then
- # Nothing to do
- :;
- elif tc-ld-is-gold || use lto; then
- append-ldflags -Wl,--no-keep-memory
- else
- append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+ if [[ ${PN} != seamonkey ]] ; then
+ # Reduce the memory requirements for linking
+ if use clang ; then
+ # Nothing to do
+ :;
+ elif tc-ld-is-gold || use lto; then
+ append-ldflags -Wl,--no-keep-memory
+ else
+ append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+ fi
fi
;;
alpha)
@@ -230,14 +232,16 @@ mozconfig_init() {
;;
ppc64)
append-flags -fPIC
- # Reduce the memory requirements for linking
- if use clang ; then
- # Nothing to do
- :;
- elif tc-ld-is-gold || use lto; then
- append-ldflags -Wl,--no-keep-memory
- else
- append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+ if [[ ${PN} != seamonkey ]] ; then
+ # Reduce the memory requirements for linking
+ if use clang ; then
+ # Nothing to do
+ :;
+ elif tc-ld-is-gold || use lto; then
+ append-ldflags -Wl,--no-keep-memory
+ else
+ append-ldflags -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
+ fi
fi
;;
esac
diff --git a/eclass/perl-app.eclass b/eclass/perl-app.eclass
index 6b762dd83b3d..074902294e59 100644
--- a/eclass/perl-app.eclass
+++ b/eclass/perl-app.eclass
@@ -21,7 +21,6 @@ case "${EAPI:-0}" in
esac
# @FUNCTION: perl-app_src_prep
-# @USAGE: perl-app_src_prep
# @DESCRIPTION:
# This is a wrapper function to perl-app_src_configure().
perl-app_src_prep() {
@@ -29,7 +28,6 @@ perl-app_src_prep() {
}
# @FUNCTION: perl-app_src_configure
-# @USAGE: perl-app_src_configure
# @DESCRIPTION:
# This is a wrapper function to perl-module_src_configure().
perl-app_src_configure() {
@@ -37,7 +35,6 @@ perl-app_src_configure() {
}
# @FUNCTION: perl-app_src_compile
-# @USAGE: perl-app_src_compile
# @DESCRIPTION:
# This is a wrapper function to perl-module_src_compile().
perl-app_src_compile() {
diff --git a/eclass/prefix.eclass b/eclass/prefix.eclass
index 8ae3e3a531d5..435e99fdf922 100644
--- a/eclass/prefix.eclass
+++ b/eclass/prefix.eclass
@@ -111,7 +111,7 @@ hprefixify() {
}
# @FUNCTION: prefixify_ro
-# @USAGE: prefixify_ro <file>.
+# @USAGE: <file>
# @DESCRIPTION:
# prefixify a read-only file.
# copies the files to ${T}, prefixies it, echos the new file.
diff --git a/eclass/s6.eclass b/eclass/s6.eclass
index 32521515497d..245df1e11187 100644
--- a/eclass/s6.eclass
+++ b/eclass/s6.eclass
@@ -48,7 +48,7 @@ s6_get_servicedir() {
}
# @FUNCTION: s6_install_service
-# @USAGE: servicename run finish
+# @USAGE: <servicename> <run> [finish]
# @DESCRIPTION:
# Install an s6 service.
# servicename is the name of the service.
@@ -75,7 +75,7 @@ s6_install_service() {
}
# @FUNCTION: s6_service_down
-# @USAGE: servicename
+# @USAGE: <servicename>
# @DESCRIPTION:
# Install the "down" flag so this service will not be started by
# default.
@@ -97,7 +97,7 @@ s6_service_down() {
}
# @FUNCTION: s6_service_nosetsid
-# @USAGE: servicename
+# @USAGE: <servicename>
# @DESCRIPTION:
# Install the "nosetsid" flag so this service will not be made a session
# leader.
diff --git a/eclass/sgml-catalog-r1.eclass b/eclass/sgml-catalog-r1.eclass
new file mode 100644
index 000000000000..6dc870af629a
--- /dev/null
+++ b/eclass/sgml-catalog-r1.eclass
@@ -0,0 +1,73 @@
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: sgml-catalog-r1.eclass
+# @MAINTAINER:
+# Michał Górny <mgorny@gentoo.org>
+# @AUTHOR:
+# Michał Górny <mgorny@gentoo.org>
+# @BLURB: Functions for installing SGML catalogs
+# @DESCRIPTION:
+# This eclass regenerates /etc/sgml/catalog, /etc/sgml.{,c}env
+# and /etc/env.d/93sgmltools-lite as necessary for the DocBook tooling.
+# This is done via exported pkg_postinst and pkg_postrm phases.
+
+case ${EAPI:-0} in
+ 7) ;;
+ *) die "Unsupported EAPI=${EAPI} for ${ECLASS}";;
+esac
+
+EXPORT_FUNCTIONS pkg_postinst pkg_postrm
+
+if [[ ! ${_SGML_CATALOG_R1} ]]; then
+
+RDEPEND=">=app-text/sgml-common-0.6.3-r7"
+
+# @FUNCTION: sgml-catalog-r1_update_catalog
+# @DESCRIPTION:
+# Regenerate /etc/sgml/catalog to include all installed catalogs.
+sgml-catalog-r1_update_catalog() {
+ local shopt_save=$(shopt -p nullglob)
+ shopt -s nullglob
+ local cats=( "${EROOT}"/etc/sgml/*.cat )
+ ${shopt_save}
+
+ if [[ ${#cats[@]} -gt 0 ]]; then
+ ebegin "Updating ${EROOT}/etc/sgml/catalog"
+ printf 'CATALOG "%s"\n' "${cats[@]}" > "${T}"/catalog &&
+ mv "${T}"/catalog "${EROOT}"/etc/sgml/catalog
+ eend "${?}"
+ else
+ ebegin "Removing ${EROOT}/etc/sgml/catalog"
+ rm "${EROOT}"/etc/sgml/catalog &&
+ { rmdir "${EROOT}"/etc/sgml &>/dev/null || :; }
+ eend "${?}"
+ fi
+}
+
+# @FUNCTION: sgml-catalog-r1_update_env
+# @DESCRIPTION:
+# Regenerate environment variables and copy them to env.d.
+sgml-catalog-r1_update_env() {
+ # gensgmlenv doesn't support overriding root
+ if [[ -z ${ROOT} && -x "${EPREFIX}/usr/bin/gensgmlenv" ]]; then
+ ebegin "Regenerating SGML environment variables"
+ gensgmlenv &&
+ grep -v export "${EPREFIX}/etc/sgml/sgml.env" > "${T}"/93sgmltools-lite &&
+ mv "${T}"/93sgmltools-lite "${EPREFIX}/etc/env.d/93sgmltools-lite"
+ eend "${?}"
+ fi
+}
+
+sgml-catalog-r1_pkg_postinst() {
+ sgml-catalog-r1_update_catalog
+ sgml-catalog-r1_update_env
+}
+
+sgml-catalog-r1_pkg_postrm() {
+ sgml-catalog-r1_update_catalog
+ sgml-catalog-r1_update_env
+}
+
+_SGML_CATALOG_R1=1
+fi
diff --git a/eclass/tmpfiles.eclass b/eclass/tmpfiles.eclass
index 68478ffbcd69..360c5e3b816f 100644
--- a/eclass/tmpfiles.eclass
+++ b/eclass/tmpfiles.eclass
@@ -63,7 +63,7 @@ esac
RDEPEND="virtual/tmpfiles"
# @FUNCTION: dotmpfiles
-# @USAGE: dotmpfiles <tmpfiles.d_file> ...
+# @USAGE: <tmpfiles.d_file> ...
# @DESCRIPTION:
# Install one or more tmpfiles.d files into /usr/lib/tmpfiles.d.
dotmpfiles() {
@@ -84,7 +84,7 @@ dotmpfiles() {
}
# @FUNCTION: newtmpfiles
-# @USAGE: newtmpfiles <old-name> <new-name>.conf
+# @USAGE: <old-name> <new-name>.conf
# @DESCRIPTION:
# Install a tmpfiles.d file in /usr/lib/tmpfiles.d under a new name.
newtmpfiles() {
@@ -102,7 +102,7 @@ newtmpfiles() {
}
# @FUNCTION: tmpfiles_process
-# @USAGE: tmpfiles_process <filename> <filename> ...
+# @USAGE: <filename> <filename> ...
# @DESCRIPTION:
# Call a tmpfiles.d implementation to create new volatile and temporary
# files and directories.
diff --git a/eclass/udev.eclass b/eclass/udev.eclass
index baf60584938f..2873ae9a92c3 100644
--- a/eclass/udev.eclass
+++ b/eclass/udev.eclass
@@ -80,7 +80,7 @@ get_udevdir() {
}
# @FUNCTION: udev_dorules
-# @USAGE: rules [...]
+# @USAGE: <rule> [...]
# @DESCRIPTION:
# Install udev rule(s). Uses doins, thus it is fatal in EAPI 4
# and non-fatal in earlier EAPIs.
@@ -95,7 +95,7 @@ udev_dorules() {
}
# @FUNCTION: udev_newrules
-# @USAGE: oldname newname
+# @USAGE: <oldname> <newname>
# @DESCRIPTION:
# Install udev rule with a new name. Uses newins, thus it is fatal
# in EAPI 4 and non-fatal in earlier EAPIs.