summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2019-09-03 20:20:04 +0200
committerMichał Górny <mgorny@gentoo.org>2019-09-11 19:57:14 +0200
commit2f6f27593eb7d580b2383ef25cef7d1cfea10085 (patch)
treee7706eae165cfad5428219e1a402ee4243cb708a /eclass/sgml-catalog-r1.eclass
parentmedia-plugins/kodi-audiodecoder-stsound: 2.0.1 version bump (diff)
downloadgentoo-2f6f27593eb7d580b2383ef25cef7d1cfea10085.tar.gz
gentoo-2f6f27593eb7d580b2383ef25cef7d1cfea10085.tar.bz2
gentoo-2f6f27593eb7d580b2383ef25cef7d1cfea10085.zip
sgml-catalog-r1.eclass: New eclass to handle SGML catalogs
Create a new, simpler eclass to handle SGML catalog installation. Rather than relying on external tool to add/remove catalogs in postinst/postrm, let ebuilds install interim catalogs and just register all installed catalogs. Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'eclass/sgml-catalog-r1.eclass')
-rw-r--r--eclass/sgml-catalog-r1.eclass73
1 files changed, 73 insertions, 0 deletions
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