diff --git a/xbps-src b/xbps-src index 712a578c6f9..fcc7bb988e1 100755 --- a/xbps-src +++ b/xbps-src @@ -14,14 +14,17 @@ $PROGNAME: [options] [arguments] Targets: (only one may be specified) -binary-bootstrap [arch] +binary-bootstrap Install bootstrap packages from host repositories into . - If the optional 'arch' argument is set, it will install bootstrap packages - from this architecture, and its required xbps utilities. The - will be initialized for chroot operations. + If the optional '-A ' flag is set, it will install bootstrap packages + from this architecture, and its required xbps utilities. The will + be initialized for chroot operations. bootstrap Build and install from source the bootstrap packages into . + If the optional '-A ' flag is set, it will build and install bootstrap + packages from this architecture, and its required xbps utilities. The + will be initialized for chroot operations. bootstrap-update Updates bootstrap packages with latest versions available from registered @@ -151,6 +154,13 @@ Options: -1 If dependencies of target package are missing, fail instead of building them. +-A + Use this host machine. Automatically creates masterdir- if it doesn't + already exist. Some host machines may require qemu-user-static and + binfmt-support if not natively supported by the processor. Supported hosts: + +$(print_cross_targets) + -a Cross compile packages for this target machine. Supported targets: @@ -194,7 +204,7 @@ $(print_cross_targets) -m Absolute path to a directory to be used as masterdir. The masterdir is the main directory to build/store/compile packages. - If unset defaults to void-packages/masterdir. + If unset defaults to void-packages/masterdir-. -N Disable use of remote repositories to resolve dependencies. @@ -290,19 +300,8 @@ check_native_arch() { else export XBPS_ARCH=$(xbps-uhelper arch) fi - elif [ "$XBPS_TARGET" = 'binary-bootstrap' ] && [ "$XBPS_TARGET_PKG" ]; then - # ^ special case for binary-bootstrap for e.g: - # x86_64 -> x86_64-musl - # x86_64 -> i686 - export XBPS_ARCH=$XBPS_TARGET_PKG else - LDD=$(ldd --version 2>&1|head -1) - if [[ $LDD == *musl* ]]; then - export XBPS_ARCH=${XBPS_MACHINE%-musl}-musl - else - # XBPS_ARCH == $(uname -m) - export XBPS_ARCH=$(uname -m) - fi + export XBPS_ARCH="$XBPS_MACHINE" fi } @@ -372,7 +371,7 @@ readonly XBPS_SRC_VERSION="113" export XBPS_MACHINE=$(xbps-uhelper -C /dev/null arch) XBPS_OPTIONS= -XBPS_OPTSTRING="1a:bc:CEfgGhH:iIj:Lm:No:p:qsQKr:tV" +XBPS_OPTSTRING="1A:a:bc:CEfgGhH:iIj:Lm:No:p:qsQKr:tV" # Preprocess arguments in order to allow options before and after XBPS_TARGET. eval set -- $(getopt "$XBPS_OPTSTRING" "$@"); @@ -383,6 +382,7 @@ eval set -- $(getopt "$XBPS_OPTSTRING" "$@"); while getopts "$XBPS_OPTSTRING" opt; do case $opt in 1) XBPS_ARG_BUILD_ONLY_ONE_PKG=yes; XBPS_OPTIONS+=" -1";; + A) XBPS_ARG_MACHINE="$OPTARG"; XBPS_OPTIONS+=" -A $OPTARG";; a) XBPS_ARG_CROSS_BUILD="$OPTARG"; XBPS_OPTIONS+=" -a $OPTARG";; b) XBPS_ARG_IGNORE_BROKENNESS=yes; XBPS_OPTIONS+=" -b";; c) XBPS_ARG_CONFIG="$OPTARG"; XBPS_OPTIONS+=" -c $OPTARG";; @@ -493,6 +493,7 @@ fi [ -n "$XBPS_ARG_PRINT_VARIABLES" ] && XBPS_PRINT_VARIABLES="$XBPS_ARG_PRINT_VARIABLES" [ -n "$XBPS_ARG_ALT_REPOSITORY" ] && XBPS_ALT_REPOSITORY="$XBPS_ARG_ALT_REPOSITORY" [ -n "$XBPS_ARG_STRICT" ] && XBPS_STRICT="$XBPS_ARG_STRICT" +[ -n "$XBPS_ARG_MACHINE" ] && XBPS_MACHINE="$XBPS_ARG_MACHINE" [ -n "$XBPS_ARG_CROSS_BUILD" ] && XBPS_CROSS_BUILD="$XBPS_ARG_CROSS_BUILD" [ -n "$XBPS_ARG_CHECK_PKGS" ] && XBPS_CHECK_PKGS="$XBPS_ARG_CHECK_PKGS" [ -n "$XBPS_ARG_MAKEJOBS" ] && XBPS_MAKEJOBS="$XBPS_ARG_MAKEJOBS" @@ -527,9 +528,18 @@ if [ -z "$IN_CHROOT" -a "$UID" -eq 0 -a -z "$XBPS_ALLOW_CHROOT_BREAKOUT" ]; then exit 1 fi -# if XBPS_MASTERDIR unset, defaults to $XBPS_DISTDIR/masterdir. -: ${XBPS_MASTERDIR:=$XBPS_DISTDIR/masterdir} -[ ! -d $XBPS_MASTERDIR ] && mkdir -p $XBPS_MASTERDIR +# if XBPS_MASTERDIR unset, defaults to $XBPS_DISTDIR/masterdir- +# unless in a container for simplicity of container/CI usage +if [ "$XBPS_CHROOT_CMD" = ethereal ]; then + : "${XBPS_MASTERDIR:=$XBPS_DISTDIR/masterdir}" +else + : "${XBPS_MASTERDIR:=$XBPS_DISTDIR/masterdir-$XBPS_MACHINE}" + # but use $XBPS_DISTDIR/masterdir if it exists and the new style doesn't + if [ ! -d "${XBPS_MASTERDIR}" ] && [ -d "${XBPS_DISTDIR}/masterdir" ]; then + XBPS_MASTERDIR="${XBPS_DISTDIR}/masterdir" + fi +fi +[ ! -d "$XBPS_MASTERDIR" ] && mkdir -p "$XBPS_MASTERDIR" # if XBPS_HOSTDIR unset, defaults to $XBPS_DISTDIR/hostdir. : ${XBPS_HOSTDIR:=$XBPS_DISTDIR/hostdir} @@ -617,10 +627,10 @@ if [ -z "$XBPS_REINIT" -a -s $XBPS_MASTERDIR/.xbps_chroot_init ]; then linux32 xbps-reconfigure -r ${XBPS_MASTERDIR} -a &>/dev/null # reexec itself via linux32 export XBPS_REINIT=1 - exec linux32 $0 ${XBPS_OPTIONS} $@ + exec linux32 $0 ${XBPS_OPTIONS} "$@" fi fi -if [ "$XBPS_ARCH" ]; then +if [ -n "$XBPS_ARCH" ]; then export XBPS_MACHINE=$XBPS_ARCH fi # At this point if XBPS_TARGET_MACHINE isn't defined we assume @@ -743,13 +753,21 @@ reconfigure_base_chroot # case "$XBPS_TARGET" in binary-bootstrap) - install_base_chroot ${XBPS_TARGET_PKG:=$XBPS_MACHINE} + if [ -n "$XBPS_TARGET_PKG" ]; then + msg_error "xbps-src: binary-bootstrap is no longer supported, use '-A ' instead\n" + exit 1 + fi + install_base_chroot "$XBPS_MACHINE" ;; bootstrap) if [ -n "$XBPS_CHECK_PKGS" ]; then msg_error "xbps-src: disable tests for bootstrap\n" exit 1 fi + if [ -n "$XBPS_TARGET_PKG" ]; then + msg_error "xbps-src: bootstrap is no longer supported, use '-A ' instead\n" + exit 1 + fi # base-chroot building on host # check for required host utils check_reqhost_utils bootstrap @@ -761,7 +779,7 @@ case "$XBPS_TARGET" in base-chroot base-chroot $XBPS_TARGET || exit 1 ) || exit 1 [ -d $XBPS_MASTERDIR ] && rm -rf $XBPS_MASTERDIR - install_base_chroot ${XBPS_TARGET_PKG:=$XBPS_MACHINE} + install_base_chroot "$XBPS_MACHINE" ;; bootstrap-update) if [ -n "$CHROOT_READY" -a -z "$IN_CHROOT" ]; then