vp-build/common/xbps-src/shutils/common.sh
classabbyamp 7548d06eca shutils: introduce XBPS_ORIG_MAKEJOBS variable
Some packages couldn't work well with XBPS_MAKEJOBS,
thus we disable parallel build for those packages.

On the other hand, some packages including but not limited to openjdk
use an internal mechanism to build themselves in parallel.

Let's invent another variable for those packages.

(message by sgn)

Co-authored-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
2022-02-11 20:03:30 +01:00

670 lines
21 KiB
Bash

# vim: set ts=4 sw=4 et:
run_func() {
local func="$1" desc="$2" funcname="$3" restoretrap= logpipe= logfile= teepid=
: ${funcname:=$func}
logpipe=$(mktemp -u -p ${XBPS_STATEDIR} ${pkgname}_${XBPS_CROSS_BUILD}_XXXXXXXX.logpipe) || exit 1
logfile=${XBPS_STATEDIR}/${pkgname}_${XBPS_CROSS_BUILD}_${funcname}.log
msg_normal "${pkgver:-xbps-src}: running ${desc:-${func}} ...\n"
set -E
restoretrap=$(trap -p ERR)
trap 'error_func $funcname $LINENO' ERR
mkfifo "$logpipe"
tee "$logfile" < "$logpipe" &
teepid=$!
$func &>"$logpipe"
wait $teepid
rm "$logpipe"
eval "$restoretrap"
set +E
}
ch_wrksrc() {
cd "$wrksrc" || msg_error "$pkgver: cannot access wrksrc directory [$wrksrc]\n"
if [ -n "$build_wrksrc" ]; then
cd "$build_wrksrc" || \
msg_error "$pkgver: cannot access build_wrksrc directory [$build_wrksrc]\n"
fi
}
# runs {pre,do,post}_X tripplets
run_step() {
local step_name="$1" optional_step="$2" skip_post_hook="$3"
ch_wrksrc
run_pkg_hooks "pre-$step_name"
# Run pre_* Phase
if declare -f "pre_$step_name" >/dev/null; then
ch_wrksrc
run_func "pre_$step_name"
fi
ch_wrksrc
# Run do_* Phase
if declare -f "do_$step_name" >/dev/null; then
run_func "do_$step_name"
elif [ -n "$build_style" ]; then
if [ -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then
. $XBPS_BUILDSTYLEDIR/${build_style}.sh
if declare -f "do_$step_name" >/dev/null; then
run_func "do_$step_name"
elif [ ! "$optional_step" ]; then
msg_error "$pkgver: cannot find do_$step_name() in $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
fi
else
msg_error "$pkgver: cannot find build style $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
fi
elif [ ! "$optional_step" ]; then
msg_error "$pkgver: cannot find do_$step_name()!\n"
fi
# Run do_ phase hooks
run_pkg_hooks "do-$step_name"
# Run post_* Phase
if declare -f "post_$step_name" >/dev/null; then
ch_wrksrc
run_func "post_$step_name"
fi
if ! [ "$skip_post_hook" ]; then
ch_wrksrc
run_pkg_hooks "post-$step_name"
fi
}
error_func() {
local err=$?
local src=
local i=
[ -n "$1" -a -n "$2" ] || exit 1;
msg_red "$pkgver: $1: '${BASH_COMMAND}' exited with $err\n"
for ((i=1;i<${#FUNCNAME[@]};i++)); do
src=${BASH_SOURCE[$i]}
src=${src#$XBPS_DISTDIR/}
msg_red " in ${FUNCNAME[$i]}() at $src:${BASH_LINENO[$i-1]}\n"
[ "${FUNCNAME[$i]}" = "$1" ] && break;
done
exit 1
}
exit_and_cleanup() {
local rval=$1
if [ -n "$XBPS_TEMP_MASTERDIR" -a "$XBPS_TEMP_MASTERDIR" != "1" ]; then
rm -rf "$XBPS_TEMP_MASTERDIR"
fi
exit ${rval:=0}
}
msg_red() {
# error messages in bold/red
[ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
printf >&2 "=> ERROR: $@"
[ -n "$NOCOLORS" ] || printf >&2 "\033[m"
}
msg_red_nochroot() {
[ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
printf >&2 "$@"
[ -n "$NOCOLORS" ] || printf >&2 "\033[m"
}
msg_error() {
msg_red "$@"
[ -n "$XBPS_INFORMATIVE_RUN" ] || exit 1
}
msg_warn() {
# warn messages in bold/yellow
[ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[33m"
printf >&2 "=> WARNING: $@"
[ -n "$NOCOLORS" ] || printf >&2 "\033[m"
}
msg_warn_nochroot() {
[ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[33m"
printf >&2 "=> WARNING: $@"
[ -n "$NOCOLORS" ] || printf >&2 "\033[m"
}
msg_normal() {
if [ -z "$XBPS_QUIET" ]; then
# normal messages in bold
[ -n "$NOCOLORS" ] || printf "\033[1m"
printf "=> $@"
[ -n "$NOCOLORS" ] || printf "\033[m"
fi
}
msg_normal_append() {
[ -n "$NOCOLORS" ] || printf "\033[1m"
printf "$@"
[ -n "$NOCOLORS" ] || printf "\033[m"
}
set_build_options() {
local f j pkgopts _pkgname
local -A options
if [ -z "$build_options" ]; then
return 0
fi
for f in ${build_options}; do
# Select build options from conf
export XBPS_CURRENT_PKG=${pkgname}
pkgopts="$(
. $XBPS_CONFIG_FILE 2>/dev/null
var="XBPS_PKG_OPTIONS_${XBPS_CURRENT_PKG//[^A-Za-z0-9_]/_}"
echo ${!var:-${XBPS_PKG_OPTIONS}}
)"
unset XBPS_CURRENT_PKG
# If pkg options were set in config(s), merge them with command line
if [ -n "$XBPS_ARG_PKG_OPTIONS" ]; then
if [ -n "$pkgopts" ]; then
pkgopts+=",$XBPS_ARG_PKG_OPTIONS"
else
pkgopts="$XBPS_ARG_PKG_OPTIONS"
fi
fi
OIFS="$IFS"; IFS=','
for j in ${pkgopts}; do
case "$j" in
"$f") options[$j]=1 ;;
"~$f") options[${j#\~}]=0 ;;
esac
done
IFS="$OIFS"
done
for f in ${build_options_default}; do
[[ -z "${options[$f]}" ]] && options[$f]=1
done
# Prepare final options.
for f in ${build_options}; do
if [[ ${options[$f]} -eq 1 ]]; then
eval export build_option_${f}=1
else
eval unset build_option_${f}
fi
done
# Re-read pkg template to get conditional vars.
if [ -z "$XBPS_BUILD_OPTIONS_PARSED" ]; then
source_file $XBPS_SRCPKGDIR/$pkgname/template
XBPS_BUILD_OPTIONS_PARSED=1
unset PKG_BUILD_OPTIONS
set_build_options
unset XBPS_BUILD_OPTIONS_PARSED
return 0
fi
# Sort pkg build options alphabetically.
export PKG_BUILD_OPTIONS=$(
for f in ${build_options}; do
[[ "${options[$f]}" -eq 1 ]] || printf '~'
printf '%s\n' "$f"
done | sort | tr -s '\n' ' '
)
}
source_file() {
local f="$1"
if [ ! -f "$f" -o ! -r "$f" ]; then
return 0
fi
if ! source "$f"; then
msg_error "xbps-src: failed to read $f!\n"
fi
}
run_pkg_hooks() {
local phase="$1" hookn f
eval unset -f hook
for f in ${XBPS_COMMONDIR}/hooks/${phase}/*.sh; do
[ ! -r $f ] && continue
hookn=${f##*/}
hookn=${hookn%.sh}
. $f
run_func hook "$phase hook: $hookn" ${phase}_${hookn}
done
}
unset_package_funcs() {
local f
for f in $(typeset -F); do
case "$f" in
*_package)
unset -f "$f"
;;
esac
done
}
get_endian() {
local arch="${1%-*}"
case "$arch" in
aarch64) echo "le";;
armv5tel) echo "le";;
armv6l) echo "le";;
armv7l) echo "le";;
i686) echo "le";;
mipsel*) echo "le";;
mips*) echo "be";;
ppc*le) echo "le";;
ppc*) echo "be";;
x86_64) echo "le";;
esac
}
get_libc() {
local arch="${1%-*}"
if [ "${arch}" = "$1" ]; then
echo "glibc"
else
echo "${1#${arch}-}"
fi
}
get_wordsize() {
local arch="${1%-*}"
case "$arch" in
aarch64) echo "64";;
armv5tel) echo "32";;
armv6l) echo "32";;
armv7l) echo "32";;
i686) echo "32";;
mipsel*) echo "32";;
mips*) echo "32";;
ppc64*) echo "64";;
ppc*) echo "32";;
x86_64) echo "64";;
esac
}
get_no_atomic8() {
local arch="${1%-*}"
case "$arch" in
armv5tel) echo "yes";;
armv6l) echo "yes";;
mips*) echo "yes";;
ppcle) echo "yes";;
ppc) echo "yes";;
esac
}
get_subpkgs() {
local f
for f in $(typeset -F); do
case "$f" in
*_package)
echo "${f%_package}"
;;
esac
done
}
setup_pkg() {
local pkg="$1" cross="$2" show_problems="$3"
local basepkg val _vars f dbgflags extrarepo
[ -z "$pkg" ] && return 1
basepkg=${pkg%-32bit}
# Start with a sane environment
unset -v PKG_BUILD_OPTIONS XBPS_CROSS_CFLAGS XBPS_CROSS_CXXFLAGS XBPS_CROSS_FFLAGS XBPS_CROSS_CPPFLAGS XBPS_CROSS_LDFLAGS XBPS_TARGET_QEMU_MACHINE
unset -v subpackages run_depends build_depends host_build_depends
unset_package_funcs
if [ -n "$cross" ]; then
source_file $XBPS_CROSSPFDIR/${cross}.sh
_vars="TARGET_MACHINE CROSS_TRIPLET CROSS_CFLAGS CROSS_CXXFLAGS CROSS_FFLAGS TARGET_QEMU_MACHINE"
for f in ${_vars}; do
eval val="\$XBPS_$f"
if [ -z "$val" ]; then
echo "ERROR: XBPS_$f is not defined!"
exit 1
fi
done
export XBPS_CROSS_BASE=/usr/$XBPS_CROSS_TRIPLET
export XBPS_TARGET_QEMU_MACHINE
XBPS_INSTALL_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_INSTALL_CMD -c /host/repocache-$XBPS_TARGET_MACHINE -r $XBPS_CROSS_BASE"
XBPS_QUERY_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_QUERY_CMD -c /host/repocache-$XBPS_TARGET_MACHINE -r $XBPS_CROSS_BASE"
XBPS_RECONFIGURE_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_RECONFIGURE_CMD -r $XBPS_CROSS_BASE"
XBPS_REMOVE_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_REMOVE_CMD -r $XBPS_CROSS_BASE"
XBPS_RINDEX_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_RINDEX_CMD"
XBPS_UHELPER_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE xbps-uhelper -r $XBPS_CROSS_BASE"
XBPS_CHECKVERS_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE xbps-checkvers -r $XBPS_CROSS_BASE"
else
export XBPS_TARGET_MACHINE=${XBPS_ARCH:-$XBPS_MACHINE}
unset XBPS_CROSS_BASE XBPS_CROSS_LDFLAGS XBPS_CROSS_FFLAGS
unset XBPS_CROSS_CFLAGS XBPS_CROSS_CXXFLAGS XBPS_CROSS_CPPFLAGS
unset XBPS_CROSS_RUSTFLAGS XBPS_CROSS_RUST_TARGET
XBPS_INSTALL_XCMD="$XBPS_INSTALL_CMD"
XBPS_QUERY_XCMD="$XBPS_QUERY_CMD"
XBPS_RECONFIGURE_XCMD="$XBPS_RECONFIGURE_CMD"
XBPS_REMOVE_XCMD="$XBPS_REMOVE_CMD"
XBPS_RINDEX_XCMD="$XBPS_RINDEX_CMD"
XBPS_UHELPER_XCMD="$XBPS_UHELPER_CMD"
XBPS_CHECKVERS_XCMD="$XBPS_CHECKVERS_CMD"
fi
export XBPS_ENDIAN=$(get_endian ${XBPS_MACHINE})
export XBPS_TARGET_ENDIAN=$(get_endian ${XBPS_TARGET_MACHINE})
export XBPS_LIBC=$(get_libc ${XBPS_MACHINE})
export XBPS_TARGET_LIBC=$(get_libc ${XBPS_TARGET_MACHINE})
export XBPS_WORDSIZE=$(get_wordsize ${XBPS_MACHINE})
export XBPS_TARGET_WORDSIZE=$(get_wordsize ${XBPS_TARGET_MACHINE})
export XBPS_NO_ATOMIC8=$(get_no_atomic8 ${XBPS_MACHINE})
export XBPS_TARGET_NO_ATOMIC8=$(get_no_atomic8 ${XBPS_TARGET_MACHINE})
export XBPS_INSTALL_XCMD XBPS_QUERY_XCMD XBPS_RECONFIGURE_XCMD \
XBPS_REMOVE_XCMD XBPS_RINDEX_XCMD XBPS_UHELPER_XCMD
# Source all sourcepkg environment setup snippets.
# Source all subpkg environment setup snippets.
for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
source_file "$f"
done
for f in ${XBPS_COMMONDIR}/environment/setup/*.sh; do
source_file "$f"
done
if [ ! -f ${XBPS_SRCPKGDIR}/${basepkg}/template ]; then
msg_error "xbps-src: unexistent file: ${XBPS_SRCPKGDIR}/${basepkg}/template\n"
fi
if [ -n "$cross" ]; then
export CROSS_BUILD="$cross"
source_file ${XBPS_SRCPKGDIR}/${basepkg}/template
else
unset CROSS_BUILD
source_file ${XBPS_SRCPKGDIR}/${basepkg}/template
fi
# Check if required vars weren't set.
_vars="pkgname version short_desc revision homepage license"
for f in ${_vars}; do
eval val="\$$f"
if [ -z "$val" -o -z "$f" ]; then
msg_error "\"$f\" not set on $pkgname template.\n"
fi
done
# Check if version is valid.
case "$version" in
*-*) msg_error "version contains invalid character: -\n";;
*_*) msg_error "version contains invalid character: _\n";;
esac
case "$version" in
*[0-9]*) : good ;;
*) msg_error "version must contain at least one digit.\n";;
esac
# Check if base-chroot is already installed.
if [ -z "$bootstrap" -a -z "$CHROOT_READY" -a "z$show_problems" != "zignore-problems" ]; then
msg_red "${pkg} is not a bootstrap package and cannot be built without it.\n"
msg_error "Please install bootstrap packages and try again.\n"
fi
sourcepkg="${pkgname}"
if [ -z "$subpackages" ]; then
subpackages="$(get_subpkgs)"
fi
if [ -h $XBPS_SRCPKGDIR/$basepkg ]; then
# Source all subpkg environment setup snippets.
for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
source_file "$f"
done
pkgname=$pkg
if ! declare -f ${basepkg}_package >/dev/null; then
msg_error "$pkgname: missing ${basepkg}_package() function!\n"
fi
fi
pkgver="${pkg}-${version}_${revision}"
# If build_style() unset, a do_install() function must be defined.
if [ -z "$build_style" ]; then
# Check that at least do_install() is defined.
if ! declare -f do_install >/dev/null; then
msg_error "$pkgver: missing do_install() function!\n"
fi
fi
FILESDIR=$XBPS_SRCPKGDIR/$sourcepkg/files
PATCHESDIR=$XBPS_SRCPKGDIR/$sourcepkg/patches
DESTDIR=$XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/${sourcepkg}-${version}
PKGDESTDIR=$XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/${pkg}-${version}
: ${XBPS_MAKEJOBS:=1}
export XBPS_ORIG_MAKEJOBS=${XBPS_ORIG_MAKEJOBS:=$XBPS_MAKEJOBS}
if [ -n "$disable_parallel_build" ]; then
XBPS_MAKEJOBS=1
fi
makejobs="-j$XBPS_MAKEJOBS"
if [ -n "$XBPS_BINPKG_EXISTS" ]; then
local _binpkgver="$($XBPS_QUERY_XCMD -R -ppkgver $pkgver 2>/dev/null)"
if [ "$_binpkgver" = "$pkgver" ]; then
if [ -z "$XBPS_DEPENDENCY" ]; then
local _repo="$($XBPS_QUERY_XCMD -R -prepository $pkgver 2>/dev/null)"
msg_normal "xbps-src: $pkgver: found ($XBPS_TARGET_MACHINE) ($_repo)\n"
fi
exit_and_cleanup
fi
fi
if [ -z "$XBPS_DEBUG_PKGS" -o "$repository" = "nonfree" ]; then
nodebug=yes
fi
# -g is required to build -dbg packages.
if [ -z "$nodebug" ]; then
dbgflags="-g"
fi
# build profile is used always in order to expose the host triplet,
# but the compiler flags from it are only used when not crossing
if [ -z "$CHROOT_READY" ]; then
source_file ${XBPS_COMMONDIR}/build-profiles/bootstrap.sh
else
source_file ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh
fi
set_build_options
export CFLAGS="$XBPS_CFLAGS $XBPS_CROSS_CFLAGS $CFLAGS $dbgflags"
export CXXFLAGS="$XBPS_CXXFLAGS $XBPS_CROSS_CXXFLAGS $CXXFLAGS $dbgflags"
export FFLAGS="$XBPS_FFLAGS $XBPS_CROSS_FFLAGS $FFLAGS $dbgflags"
export CPPFLAGS="$XBPS_CPPFLAGS $XBPS_CROSS_CPPFLAGS $CPPFLAGS"
export LDFLAGS="$XBPS_LDFLAGS $XBPS_CROSS_LDFLAGS $LDFLAGS"
export BUILD_CC="cc"
export BUILD_CXX="c++"
export BUILD_CPP="cpp"
export BUILD_FC="gfortran"
export BUILD_LD="ld"
export BUILD_CFLAGS="$XBPS_CFLAGS"
export BUILD_CXXFLAGS="$XBPS_CXXFLAGS"
export BUILD_CPPFLAGS="$XBPS_CPPFLAGS"
export BUILD_LDFLAGS="$XBPS_LDFLAGS"
export BUILD_FFLAGS="$XBPS_FFLAGS"
export CC_FOR_BUILD="cc"
export CXX_FOR_BUILD="g++"
export CPP_FOR_BUILD="cpp"
export FC_FOR_BUILD="gfortran"
export LD_FOR_BUILD="ld"
export PKG_CONFIG_FOR_BUILD="/usr/bin/pkg-config"
export CFLAGS_FOR_BUILD="$XBPS_CFLAGS"
export CXXFLAGS_FOR_BUILD="$XBPS_CXXFLAGS"
export CPPFLAGS_FOR_BUILD="$XBPS_CPPFLAGS"
export LDFLAGS_FOR_BUILD="$XBPS_LDFLAGS"
export FFLAGS_FOR_BUILD="$XBPS_FFLAGS"
if [ -n "$cross" ]; then
# Regular tools names
export CC="${XBPS_CROSS_TRIPLET}-gcc"
export CXX="${XBPS_CROSS_TRIPLET}-c++"
export CPP="${XBPS_CROSS_TRIPLET}-cpp"
export FC="${XBPS_CROSS_TRIPLET}-gfortran"
export GCC="$CC"
export LD="${XBPS_CROSS_TRIPLET}-ld"
export AR="${XBPS_CROSS_TRIPLET}-ar"
export AS="${XBPS_CROSS_TRIPLET}-as"
export RANLIB="${XBPS_CROSS_TRIPLET}-ranlib"
export STRIP="${XBPS_CROSS_TRIPLET}-strip"
export OBJDUMP="${XBPS_CROSS_TRIPLET}-objdump"
export OBJCOPY="${XBPS_CROSS_TRIPLET}-objcopy"
export NM="${XBPS_CROSS_TRIPLET}-nm"
export READELF="${XBPS_CROSS_TRIPLET}-readelf"
export PKG_CONFIG="${XBPS_CROSS_TRIPLET}-pkg-config"
# Target tools
export CC_target="$CC"
export CXX_target="$CXX"
export CPP_target="$CPP"
export GCC_target="$GCC"
export FC_target="$FC"
export LD_target="$LD"
export AR_target="$AR"
export AS_target="$AS"
export RANLIB_target="$RANLIB"
export STRIP_target="$STRIP"
export OBJDUMP_target="$OBJDUMP"
export OBJCOPY_target="$OBJCOPY"
export NM_target="$NM"
export READELF_target="$READELF"
# Target flags
export CFLAGS_target="$CFLAGS"
export CXXFLAGS_target="$CXXFLAGS"
export CPPFLAGS_target="$CPPFLAGS"
export LDFLAGS_target="$LDFLAGS"
export FFLAGS_target="$FFLAGS"
# Host tools
export CC_host="cc"
export CXX_host="g++"
export CPP_host="cpp"
export GCC_host="$CC_host"
export FC_host="gfortran"
export LD_host="ld"
export AR_host="ar"
export AS_host="as"
export RANLIB_host="ranlib"
export STRIP_host="strip"
export OBJDUMP_host="objdump"
export OBJCOPY_host="objcopy"
export NM_host="nm"
export READELF_host="readelf"
# Host flags
export CFLAGS_host="$XBPS_CFLAGS"
export CXXFLAGS_host="$XBPS_CXXFLAGS"
export CPPFLAGS_host="$XBPS_CPPFLAGS"
export LDFLAGS_host="$XBPS_LDFLAGS"
export FFLAGS_host="$XBPS_FFLAGS"
# Rust flags which are passed to rustc
export RUSTFLAGS="$XBPS_CROSS_RUSTFLAGS"
# Rust target, which differs from our triplets
export RUST_TARGET="$XBPS_CROSS_RUST_TARGET"
# Rust build, which is the host system, may also differ
export RUST_BUILD="$XBPS_RUST_TARGET"
else
# Target flags from build-profile
export CFLAGS="$XBPS_TARGET_CFLAGS $CFLAGS"
export CXXFLAGS="$XBPS_TARGET_CXXFLAGS $CXXFLAGS"
export FFLAGS="$XBPS_TARGET_FFLAGS $FFLAGS"
export CPPFLAGS="$XBPS_TARGET_CPPFLAGS $CPPFLAGS"
export LDFLAGS="$XBPS_TARGET_LDFLAGS $LDFLAGS"
# Tools
export CC="cc"
export CXX="g++"
export CPP="cpp"
export GCC="$CC"
export FC="gfortran"
export LD="ld"
export AR="ar"
export AS="as"
export RANLIB="ranlib"
export STRIP="strip"
export OBJDUMP="objdump"
export OBJCOPY="objcopy"
export NM="nm"
export READELF="readelf"
export PKG_CONFIG="pkg-config"
export RUST_TARGET="$XBPS_RUST_TARGET"
export RUST_BUILD="$XBPS_RUST_TARGET"
# Unset cross evironment variables
unset CC_target CXX_target CPP_target GCC_target FC_target LD_target AR_target AS_target
unset RANLIB_target STRIP_target OBJDUMP_target OBJCOPY_target NM_target READELF_target
unset CFLAGS_target CXXFLAGS_target CPPFLAGS_target LDFLAGS_target FFLAGS_target
unset CC_host CXX_host CPP_host GCC_host FC_host LD_host AR_host AS_host
unset RANLIB_host STRIP_host OBJDUMP_host OBJCOPY_host NM_host READELF_host
unset CFLAGS_host CXXFLAGS_host CPPFLAGS_host LDFLAGS_host FFLAGS_host
unset RUSTFLAGS
fi
# Setup some specific package vars.
if [ -z "$wrksrc" ]; then
wrksrc="$XBPS_BUILDDIR/${sourcepkg}-${version}"
else
wrksrc="$XBPS_BUILDDIR/$wrksrc"
fi
if [ "$cross" -a "$nocross" -a "$show_problems" != "ignore-problems" ]; then
msg_red "$pkgver: cannot be cross compiled, exiting...\n"
msg_red "$pkgver: $nocross\n"
exit 2
elif [ "$broken" -a "$show_problems" != "ignore-problems" ]; then
msg_red "$pkgver: cannot be built, it's currently broken; see the build log:\n"
msg_red "$pkgver: $broken\n"
exit 2
fi
if [ -n "$restricted" -a -z "$XBPS_ALLOW_RESTRICTED" -a "$show_problems" != "ignore-problems" ]; then
msg_red "$pkgver: does not allow redistribution of sources/binaries (restricted license).\n"
msg_red "If you really need this software, run 'echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf'\n"
exit 2
fi
export XBPS_STATEDIR="${XBPS_BUILDDIR}/.xbps-${sourcepkg}"
export XBPS_WRAPPERDIR="${XBPS_STATEDIR}/wrappers"
mkdir -p $XBPS_STATEDIR $XBPS_WRAPPERDIR
source_file $XBPS_COMMONDIR/environment/build-style/${build_style}.sh
# Source all build-helper files that are defined
for f in $build_helper; do
if [ ! -r $XBPS_BUILDHELPERDIR/${f}.sh ]; then
msg_error "$pkgver: cannot find build helper $XBPS_BUILDHELPERDIR/${f}.sh!\n"
fi
. $XBPS_BUILDHELPERDIR/${f}.sh
done
}