xbps-src: add support for specifying custom configurations

This is useful for example with multiple hostdirs/masterdirs when
you want to have configuration files for each, specifying different
flags without passing it on command line every time.

[ci skip]
This commit is contained in:
q66 2020-02-12 03:10:39 +01:00 committed by Daniel Kolesa
parent bf038d9c70
commit e689e701c4

View file

@ -148,6 +148,10 @@ Options:
$(print_cross_targets) $(print_cross_targets)
-c <configuration>
If specified, etc/conf.<configuration> will be used as the primary config
file name; etc/conf will only be attempted if that does not exist.
-C Do not remove build directory, automatic dependencies and -C Do not remove build directory, automatic dependencies and
package destdir after successful install. package destdir after successful install.
@ -334,7 +338,7 @@ readonly XBPS_SRC_VERSION="113"
export XBPS_MACHINE=$(xbps-uhelper -C /dev/null arch) export XBPS_MACHINE=$(xbps-uhelper -C /dev/null arch)
XBPS_OPTIONS= XBPS_OPTIONS=
XBPS_OPTSTRING="1a:CEfgGhH:iIj:Lm:No:qQr:tV" XBPS_OPTSTRING="1a:c:CEfgGhH:iIj:Lm:No:qQr:tV"
# Preprocess arguments in order to allow options before and after XBPS_TARGET. # Preprocess arguments in order to allow options before and after XBPS_TARGET.
eval set -- $(getopt "$XBPS_OPTSTRING" "$@"); eval set -- $(getopt "$XBPS_OPTSTRING" "$@");
@ -346,6 +350,7 @@ while getopts "$XBPS_OPTSTRING" opt; do
case $opt in case $opt in
1) XBPS_ARG_BUILD_ONLY_ONE_PKG=yes; XBPS_OPTIONS+=" -1";; 1) XBPS_ARG_BUILD_ONLY_ONE_PKG=yes; XBPS_OPTIONS+=" -1";;
a) XBPS_ARG_CROSS_BUILD="$OPTARG"; XBPS_OPTIONS+=" -a $OPTARG";; a) XBPS_ARG_CROSS_BUILD="$OPTARG"; XBPS_OPTIONS+=" -a $OPTARG";;
c) XBPS_ARG_CONFIG="$OPTARG"; XBPS_OPTIONS+=" -c $OPTARG";;
C) XBPS_ARG_KEEP_ALL=1; XBPS_OPTIONS+=" -C";; C) XBPS_ARG_KEEP_ALL=1; XBPS_OPTIONS+=" -C";;
E) XBPS_ARG_BINPKG_EXISTS=1; XBPS_OPTIONS+=" -E";; E) XBPS_ARG_BINPKG_EXISTS=1; XBPS_OPTIONS+=" -E";;
f) XBPS_ARG_BUILD_FORCEMODE=1; XBPS_OPTIONS+=" -f";; f) XBPS_ARG_BUILD_FORCEMODE=1; XBPS_OPTIONS+=" -f";;
@ -415,8 +420,11 @@ else
if [ -f $XBPS_DISTDIR/etc/defaults.conf ]; then if [ -f $XBPS_DISTDIR/etc/defaults.conf ]; then
. $XBPS_DISTDIR/etc/defaults.conf . $XBPS_DISTDIR/etc/defaults.conf
fi fi
if [ -s $XBPS_DISTDIR/etc/conf ]; then if [ -n "$XBPS_ARG_CONFIG" -a -s $XBPS_DISTDIR/etc/conf.$XBPS_ARG_CONFIG ]; then
# Read user configuration first... # If specified, read custom user configuration...
readonly XBPS_CONFIG_FILE=$XBPS_DISTDIR/etc/conf.$XBPS_ARG_CONFIG
elif [ -s $XBPS_DISTDIR/etc/conf ]; then
# ... otherwise read generic user configuration...
readonly XBPS_CONFIG_FILE=$XBPS_DISTDIR/etc/conf readonly XBPS_CONFIG_FILE=$XBPS_DISTDIR/etc/conf
elif [ -s $HOME/.xbps-src.conf ]; then elif [ -s $HOME/.xbps-src.conf ]; then
# ... fallback to ~/.xbps-src.conf otherwise. # ... fallback to ~/.xbps-src.conf otherwise.