diff options
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/Manifest.gz | bin | 37157 -> 37479 bytes | |||
-rw-r--r-- | eclass/acct-user.eclass | 3 | ||||
-rw-r--r-- | eclass/ada.eclass | 435 | ||||
-rw-r--r-- | eclass/bzr.eclass | 22 | ||||
-rw-r--r-- | eclass/elisp.eclass | 25 | ||||
-rw-r--r-- | eclass/mozcoreconf-v6.eclass | 36 | ||||
-rw-r--r-- | eclass/perl-app.eclass | 3 | ||||
-rw-r--r-- | eclass/prefix.eclass | 2 | ||||
-rw-r--r-- | eclass/s6.eclass | 6 | ||||
-rw-r--r-- | eclass/sgml-catalog-r1.eclass | 73 | ||||
-rw-r--r-- | eclass/tmpfiles.eclass | 6 | ||||
-rw-r--r-- | eclass/udev.eclass | 4 |
12 files changed, 570 insertions, 45 deletions
diff --git a/eclass/Manifest.gz b/eclass/Manifest.gz Binary files differindex 2535aa437de7..dee498cf1821 100644 --- a/eclass/Manifest.gz +++ b/eclass/Manifest.gz 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. |