diff options
-rw-r--r-- | Makefile | 1 | ||||
-rwxr-xr-x | configure | 12 | ||||
-rw-r--r-- | src/cpt-lib.in | 15 |
3 files changed, 22 insertions, 6 deletions
@@ -13,6 +13,7 @@ src/cpt-lib: src/cpt-lib.in sed -n '/^Copyright/{s,^, ",;s,$$," \\,;p}' LICENSE | \ sed -e '/@LICENSE@/r /dev/stdin' \ -e '/@LICENSE@/d' \ + -e 's|@SYSCONFDIR@|${SYSCONFDIR}|g' \ -e "s|@VERSION@|${VERSION}|g" \ -e "s|@DOCSTRING@|Call functions from the library|g" src/cpt-lib.in > $@ chmod 755 $@ @@ -28,6 +28,7 @@ usage() { "Options:" \ " --prefix=dir Set prefix directory" \ " --bindir=dir User executables [PREFIX/bin]" \ + " --sysconfdir=dir System configuration directory [PREFIX/etc]" " --datarootdir=dir Data root directory [PREFIX/share]" \ " --mandir=dir Manual pages [DATAROOTDIR/man]" \ " --infodir=dir info documentation [DATAROOTDIR/info]" \ @@ -43,6 +44,7 @@ prefix=/usr/local # We don't want expansion # shellcheck disable=2016 { +sysconfdir='$(PREFIX)/etc' bindir='$(PREFIX)/bin' datarootdir='$(PREFIX)/share' mandir='$(DATAROOTDIR)/man' @@ -54,8 +56,9 @@ docs=auto for arg; do case $arg in -h|--help) usage ;; - --prefix=*) prefix=${arg#*=} ;; - --bindir=*) bindir=${arg#*=} ;; + --prefix=*) prefix=${arg#*=} ;; + --bindir=*) bindir=${arg#*=} ;; + --sysconfdir=*) sysconfdir=${arg#*=} ;; --mandir=*) mandir=${arg#*=} ;; --infodir=*) infodir=${arg#*=} ;; --docdir=*) docdir=${arg#*=} ;; @@ -68,6 +71,10 @@ for arg; do esac done +# If the prefix is /usr and sysconfdir is not modified, make it /etc +# shellcheck disable=2016 +[ "$prefix" = /usr ] && [ "$sysconfdir" = '$(PREFIX)/etc' ] && sysconfdir=/etc + trap 'rm -f config.mk' EXIT trap 'rm -f config.mk; exit 1' INT @@ -78,6 +85,7 @@ out "starting configuration..." cat <<EOF > config.mk PREFIX = $prefix BINDIR = $bindir +SYSCONFDIR = $sysconfdir DATAROOTDIR = $datarootdir MANDIR = $mandir INFODIR = $infodir diff --git a/src/cpt-lib.in b/src/cpt-lib.in index 581d281..8a7983a 100644 --- a/src/cpt-lib.in +++ b/src/cpt-lib.in @@ -2013,12 +2013,12 @@ pkg_updates(){ } pkg_get_base() ( - # Print the packages defined in the /etc/cpt-base file. + # Print the packages defined in the CPT base file. # If an argument is given, it prints a space seperated list instead # of a list seperated by newlines. - # cpt-base is an optional file, return with success if it doesn't exist. - [ -f "$CPT_ROOT/etc/cpt-base" ] || return 0 + # CPT base is an optional file, return with success if it doesn't exist. + [ -f "$cpt_base" ] || return 0 # If there is an argument, change the format to use spaces instead of # newlines. @@ -2042,7 +2042,7 @@ pkg_get_base() ( for dep in $deps; do contains "$*" "$dep" || set -- "$@" "$dep" done - done < "$CPT_ROOT/etc/cpt-base" + done < "$cpt_base" # Format variable is intentional. # shellcheck disable=2059 @@ -2266,6 +2266,13 @@ create_cache() { # the get go. It will be created as needed by package installation. sys_db=$CPT_ROOT/$pkg_db + # CPT system configuration directory + cpt_confdir=${CPT_ROOT}@SYSCONFDIR@/cpt + + # Backwards compatibility for the old cpt-base location + cpt_base=$CPT_ROOT/etc/cpt-base + [ -f "$cpt_confdir/base" ] && cpt_base=$cpt_confdir/base + # Regular expression used in pkg_checksums() and pkg_sources() in order to # identify VCS and comments re_vcs_or_com='^(#|(fossil|git|hg)\+)' |