systemd.eclass: Introduce a common getter for systemd directories
authorMichał Górny <mgorny@gentoo.org>
Fri, 27 Nov 2015 14:25:08 +0000 (15:25 +0100)
committerMichał Górny <mgorny@gentoo.org>
Tue, 1 Dec 2015 22:07:17 +0000 (23:07 +0100)
Add a _systemd_get_dir function that serves as a common getter for
all directories returned by the eclass. Add proper error handling for
the variable getter.

eclass/systemd.eclass

index 278d319c7c25ab5f020d9ed721ce51a12b0fa9c5..245e8034db81a707c323e3bb9f1d7e304a4307a1 100644 (file)
@@ -34,16 +34,32 @@ esac
 
 DEPEND="virtual/pkgconfig"
 
-# @FUNCTION: _systemd_get_unitdir
+# @FUNCTION: _systemd_get_dir
+# @USAGE: <variable-name> <fallback-directory>
 # @INTERNAL
 # @DESCRIPTION:
-# Get unprefixed unitdir.
-_systemd_get_unitdir() {
+# Try to obtain the <variable-name> variable from systemd.pc.
+# If pkg-config or systemd is not installed, return <fallback-directory>
+# instead.
+_systemd_get_dir() {
+       [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <variable-name> <fallback-directory>"
+       local variable=${1} fallback=${2} d
+
        if $(tc-getPKG_CONFIG) --exists systemd; then
-               echo "$($(tc-getPKG_CONFIG) --variable=systemdsystemunitdir systemd)"
+               d=$($(tc-getPKG_CONFIG) --variable="${variable}" systemd) || die
        else
-               echo /usr/lib/systemd/system
+               d=${fallback}
        fi
+
+       echo "${d}"
+}
+
+# @FUNCTION: _systemd_get_unitdir
+# @INTERNAL
+# @DESCRIPTION:
+# Get unprefixed unitdir.
+_systemd_get_unitdir() {
+       _systemd_get_dir systemdsystemunitdir /usr/lib/systemd/system
 }
 
 # @FUNCTION: systemd_get_unitdir
@@ -62,11 +78,7 @@ systemd_get_unitdir() {
 # @DESCRIPTION:
 # Get unprefixed userunitdir.
 _systemd_get_userunitdir() {
-       if $(tc-getPKG_CONFIG) --exists systemd; then
-               echo "$($(tc-getPKG_CONFIG) --variable=systemduserunitdir systemd)"
-       else
-               echo /usr/lib/systemd/user
-       fi
+       _systemd_get_dir systemduserunitdir /usr/lib/systemd/user
 }
 
 # @FUNCTION: systemd_get_userunitdir
@@ -86,11 +98,7 @@ systemd_get_userunitdir() {
 # @DESCRIPTION:
 # Get unprefixed utildir.
 _systemd_get_utildir() {
-       if $(tc-getPKG_CONFIG) --exists systemd; then
-               echo "$($(tc-getPKG_CONFIG) --variable=systemdutildir systemd)"
-       else
-               echo /usr/lib/systemd
-       fi
+       _systemd_get_dir systemdutildir /usr/lib/systemd
 }
 
 # @FUNCTION: systemd_get_utildir