krita: update to 5.2.9.
[void-pkg.git] / common / xbps-src / shutils / common.sh
blob86d91fdf50796ab3d28a29a221c7c774a5f7fea7
1 # vim: set ts=4 sw=4 et:
3 # A portable abstraction for stat(1)
5 # The stat(1) command has different syntaxes between GNU flavor
6 # and BSD flavor; implementations generally follow one or the other
8 if ! stat -c "%s" / > /dev/null 2>&1; then
9 # BSD stat
11 stat_size() {
12 stat -f %z "$1"
15 stat_inode() {
16 stat -f %i "$1"
19 stat_mtime() {
20 stat -f %m "$1"
22 else
23 # GNU stat
25 stat_size() {
26 stat -c %s "$1"
29 stat_inode() {
30 stat -c %i "$1"
33 stat_mtime() {
34 stat -c %Y "$1"
39 run_func() {
40 local func="$1" desc="$2" funcname="$3" restoretrap= logpipe= logfile= teepid=
42 : ${funcname:=$func}
44 logpipe=$(mktemp -u -p ${XBPS_STATEDIR} ${pkgname}_${XBPS_CROSS_BUILD}_XXXXXXXX.logpipe) || exit 1
45 logfile=${XBPS_STATEDIR}/${pkgname}_${XBPS_CROSS_BUILD}_${funcname}.log
47 msg_normal "${pkgver:-xbps-src}: running ${desc:-${func}} ...\n"
49 set -E
50 restoretrap=$(trap -p ERR)
51 trap 'error_func $funcname $LINENO' ERR
53 mkfifo "$logpipe"
54 tee "$logfile" < "$logpipe" &
55 teepid=$!
57 $func &>"$logpipe"
59 wait $teepid
60 rm "$logpipe"
62 eval "$restoretrap"
63 set +E
66 ch_wrksrc() {
67 cd "$wrksrc" || msg_error "$pkgver: cannot access wrksrc directory [$wrksrc]\n"
68 if [ -n "$build_wrksrc" ]; then
69 cd "$build_wrksrc" || \
70 msg_error "$pkgver: cannot access build_wrksrc directory [$build_wrksrc]\n"
74 # runs {pre,do,post}_X tripplets
75 run_step() {
76 local step_name="$1" optional_step="$2" skip_post_hook="$3"
78 ch_wrksrc
79 run_pkg_hooks "pre-$step_name"
81 # Run pre_* Phase
82 if declare -f "pre_$step_name" >/dev/null; then
83 ch_wrksrc
84 run_func "pre_$step_name"
87 ch_wrksrc
88 # Run do_* Phase
89 if declare -f "do_$step_name" >/dev/null; then
90 run_func "do_$step_name"
91 elif [ -n "$build_style" ]; then
92 if [ -r $XBPS_BUILDSTYLEDIR/${build_style}.sh ]; then
93 . $XBPS_BUILDSTYLEDIR/${build_style}.sh
94 if declare -f "do_$step_name" >/dev/null; then
95 run_func "do_$step_name"
96 elif [ ! "$optional_step" ]; then
97 msg_error "$pkgver: cannot find do_$step_name() in $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
99 else
100 msg_error "$pkgver: cannot find build style $XBPS_BUILDSTYLEDIR/${build_style}.sh!\n"
102 elif [ ! "$optional_step" ]; then
103 msg_error "$pkgver: cannot find do_$step_name()!\n"
106 # Run do_ phase hooks
107 run_pkg_hooks "do-$step_name"
109 # Run post_* Phase
110 if declare -f "post_$step_name" >/dev/null; then
111 ch_wrksrc
112 run_func "post_$step_name"
115 if ! [ "$skip_post_hook" ]; then
116 ch_wrksrc
117 run_pkg_hooks "post-$step_name"
121 error_func() {
122 local err=$?
123 local src=
124 local i=
125 [ -n "$1" -a -n "$2" ] || exit 1;
127 msg_red "$pkgver: $1: '${BASH_COMMAND}' exited with $err\n"
128 for ((i=1;i<${#FUNCNAME[@]};i++)); do
129 src=${BASH_SOURCE[$i]}
130 src=${src#$XBPS_DISTDIR/}
131 msg_red " in ${FUNCNAME[$i]}() at $src:${BASH_LINENO[$i-1]}\n"
132 [ "${FUNCNAME[$i]}" = "$1" ] && break;
133 done
134 exit 1
137 exit_and_cleanup() {
138 local rval=$1
140 if [ -n "$XBPS_TEMP_MASTERDIR" -a "$XBPS_TEMP_MASTERDIR" != "1" ]; then
141 rm -rf "$XBPS_TEMP_MASTERDIR"
143 exit ${rval:=0}
146 msg_red() {
147 # error messages in bold/red
148 [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
149 printf >&2 "=> ERROR: $@"
150 [ -n "$NOCOLORS" ] || printf >&2 "\033[m"
153 msg_red_nochroot() {
154 [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[31m"
155 printf >&2 "$@"
156 [ -n "$NOCOLORS" ] || printf >&2 "\033[m"
159 msg_error() {
160 msg_red "$@"
161 [ -n "$XBPS_INFORMATIVE_RUN" ] || exit 1
164 msg_warn() {
165 # warn messages in bold/yellow
166 [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[33m"
167 printf >&2 "=> WARNING: $@"
168 [ -n "$NOCOLORS" ] || printf >&2 "\033[m"
171 msg_warn_nochroot() {
172 [ -n "$NOCOLORS" ] || printf >&2 "\033[1m\033[33m"
173 printf >&2 "=> WARNING: $@"
174 [ -n "$NOCOLORS" ] || printf >&2 "\033[m"
177 msg_normal() {
178 if [ -z "$XBPS_QUIET" ]; then
179 # normal messages in bright bold white
180 if [ "$XBPS_BUILD_ENVIRONMENT" = "void-packages-ci" ]; then
181 # Github CI considers '1m' to be just a font bold
182 [ -n "$NOCOLORS" ] || printf "\033[97m\033[1m"
183 else
184 [ -n "$NOCOLORS" ] || printf "\033[1m"
186 printf "=> $@"
187 [ -n "$NOCOLORS" ] || printf "\033[m"
191 msg_verbose() {
192 if [ -n "$XBPS_VERBOSE" ]; then
193 printf >&2 "$@"
197 report_broken() {
198 if [ "$show_problems" = "ignore-problems" ]; then
199 return
201 if [ -z "$XBPS_IGNORE_BROKENNESS" ]; then
202 for line in "$@"; do
203 msg_red "$line"
204 done
205 exit 2
206 elif [ "$XBPS_IGNORE_BROKENNESS" != reported ]; then
207 for line in "$@"; do
208 msg_warn "$line"
209 done
210 XBPS_IGNORE_BROKENNESS=reported
214 msg_normal_append() {
215 if [ "$XBPS_BUILD_ENVIRONMENT" = "void-packages-ci" ]; then
216 # Github CI considers '1m' to be just a font bold
217 [ -n "$NOCOLORS" ] || printf "\033[97m\033[1m"
218 else
219 [ -n "$NOCOLORS" ] || printf "\033[1m"
221 printf "$@"
222 [ -n "$NOCOLORS" ] || printf "\033[m"
225 set_build_options() {
226 local f j pkgopts _pkgname
227 local -A options
229 if [ -z "$build_options" ]; then
230 return 0
233 for f in ${build_options}; do
234 # Select build options from conf
235 export XBPS_CURRENT_PKG=${pkgname}
236 pkgopts="$(
237 . $XBPS_CONFIG_FILE 2>/dev/null
238 var="XBPS_PKG_OPTIONS_${XBPS_CURRENT_PKG//[^A-Za-z0-9_]/_}"
239 echo ${!var:-${XBPS_PKG_OPTIONS}}
241 unset XBPS_CURRENT_PKG
243 # If pkg options were set in config(s), merge them with command line
244 if [ -n "$XBPS_ARG_PKG_OPTIONS" ]; then
245 if [ -n "$pkgopts" ]; then
246 pkgopts+=",$XBPS_ARG_PKG_OPTIONS"
247 else
248 pkgopts="$XBPS_ARG_PKG_OPTIONS"
252 OIFS="$IFS"; IFS=','
253 for j in ${pkgopts}; do
254 case "$j" in
255 "$f") options[$j]=1 ;;
256 "~$f") options[${j#\~}]=0 ;;
257 esac
258 done
259 IFS="$OIFS"
260 done
262 for f in ${build_options_default}; do
263 [[ -z "${options[$f]}" ]] && options[$f]=1
264 done
266 # Prepare final options.
267 for f in ${build_options}; do
268 if [[ ${options[$f]} -eq 1 ]]; then
269 eval export build_option_${f}=1
270 else
271 eval unset build_option_${f}
273 done
275 # Re-read pkg template to get conditional vars.
276 if [ -z "$XBPS_BUILD_OPTIONS_PARSED" ]; then
277 source_file $XBPS_SRCPKGDIR/$pkgname/template
278 XBPS_BUILD_OPTIONS_PARSED=1
279 unset PKG_BUILD_OPTIONS
280 set_build_options
281 unset XBPS_BUILD_OPTIONS_PARSED
282 return 0
285 # Sort pkg build options alphabetically.
286 export PKG_BUILD_OPTIONS=$(
287 for f in ${build_options}; do
288 [[ "${options[$f]}" -eq 1 ]] || printf '~'
289 printf '%s\n' "$f"
290 done | sort | tr -s '\n' ' '
294 source_file() {
295 local f="$1"
297 if [ ! -f "$f" -o ! -r "$f" ]; then
298 return 0
300 if ! source "$f"; then
301 msg_error "xbps-src: failed to read $f!\n"
305 run_pkg_hooks() {
306 local phase="$1" hookn f
308 eval unset -f hook
309 for f in ${XBPS_COMMONDIR}/hooks/${phase}/*.sh; do
310 [ ! -r $f ] && continue
311 hookn=${f##*/}
312 hookn=${hookn%.sh}
313 . $f
314 run_func hook "$phase hook: $hookn" ${phase}_${hookn}
315 done
318 unset_package_funcs() {
319 local f
321 for f in $(typeset -F); do
322 case "$f" in
323 *_package)
324 unset -f "$f"
326 esac
327 done
330 get_endian() {
331 local arch="${1%-*}"
333 case "$arch" in
334 aarch64) echo "le";;
335 armv5tel) echo "le";;
336 armv6l) echo "le";;
337 armv7l) echo "le";;
338 i686) echo "le";;
339 mipsel*) echo "le";;
340 mips*) echo "be";;
341 ppc*le) echo "le";;
342 ppc*) echo "be";;
343 x86_64) echo "le";;
344 riscv64) echo "le";;
345 esac
348 get_libc() {
349 local arch="${1%-*}"
351 if [ "${arch}" = "$1" ]; then
352 echo "glibc"
353 else
354 echo "${1#${arch}-}"
358 get_wordsize() {
359 local arch="${1%-*}"
361 case "$arch" in
362 aarch64) echo "64";;
363 armv5tel) echo "32";;
364 armv6l) echo "32";;
365 armv7l) echo "32";;
366 i686) echo "32";;
367 mipsel*) echo "32";;
368 mips*) echo "32";;
369 ppc64*) echo "64";;
370 ppc*) echo "32";;
371 x86_64) echo "64";;
372 riscv64) echo "64";;
373 esac
376 get_no_atomic8() {
377 local arch="${1%-*}"
379 case "$arch" in
380 armv5tel) echo "yes";;
381 armv6l) echo "yes";;
382 mips*) echo "yes";;
383 ppcle) echo "yes";;
384 ppc) echo "yes";;
385 esac
388 get_subpkgs() {
389 local f
391 for f in $(typeset -F); do
392 case "$f" in
393 *_package)
394 echo "${f%_package}"
396 esac
397 done
400 setup_pkg() {
401 local pkg="$1" cross="$2" show_problems="$3"
402 local basepkg val _vars f dbgflags extrarepo
404 [ -z "$pkg" ] && return 1
405 basepkg=${pkg%-32bit}
407 # Start with a sane environment
408 unset -v PKG_BUILD_OPTIONS XBPS_CROSS_CFLAGS XBPS_CROSS_CXXFLAGS XBPS_CROSS_FFLAGS XBPS_CROSS_CPPFLAGS XBPS_CROSS_LDFLAGS XBPS_TARGET_QEMU_MACHINE
409 unset -v subpackages run_depends build_depends host_build_depends
411 unset_package_funcs
413 if [ -n "$cross" ]; then
414 source_file $XBPS_CROSSPFDIR/${cross}.sh
416 _vars="TARGET_MACHINE CROSS_TRIPLET CROSS_CFLAGS CROSS_CXXFLAGS CROSS_FFLAGS TARGET_QEMU_MACHINE"
417 for f in ${_vars}; do
418 eval val="\$XBPS_$f"
419 if [ -z "$val" ]; then
420 echo "ERROR: XBPS_$f is not defined!"
421 exit 1
423 done
425 export XBPS_CROSS_BASE=/usr/$XBPS_CROSS_TRIPLET
426 export XBPS_TARGET_QEMU_MACHINE
428 XBPS_INSTALL_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_INSTALL_CMD -c /host/repocache-$XBPS_TARGET_MACHINE -r $XBPS_CROSS_BASE"
429 XBPS_QUERY_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_QUERY_CMD -c /host/repocache-$XBPS_TARGET_MACHINE -r $XBPS_CROSS_BASE"
430 XBPS_RECONFIGURE_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_RECONFIGURE_CMD -r $XBPS_CROSS_BASE"
431 XBPS_REMOVE_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_REMOVE_CMD -r $XBPS_CROSS_BASE"
432 XBPS_RINDEX_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE $XBPS_RINDEX_CMD"
433 XBPS_UHELPER_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE xbps-uhelper -r $XBPS_CROSS_BASE"
434 XBPS_CHECKVERS_XCMD="env XBPS_TARGET_ARCH=$XBPS_TARGET_MACHINE xbps-checkvers -r $XBPS_CROSS_BASE"
435 else
436 export XBPS_TARGET_MACHINE=${XBPS_ARCH:-$XBPS_MACHINE}
437 unset XBPS_CROSS_BASE XBPS_CROSS_LDFLAGS XBPS_CROSS_FFLAGS
438 unset XBPS_CROSS_CFLAGS XBPS_CROSS_CXXFLAGS XBPS_CROSS_CPPFLAGS
439 unset XBPS_CROSS_RUSTFLAGS XBPS_CROSS_RUST_TARGET
441 XBPS_INSTALL_XCMD="$XBPS_INSTALL_CMD"
442 XBPS_QUERY_XCMD="$XBPS_QUERY_CMD"
443 XBPS_RECONFIGURE_XCMD="$XBPS_RECONFIGURE_CMD"
444 XBPS_REMOVE_XCMD="$XBPS_REMOVE_CMD"
445 XBPS_RINDEX_XCMD="$XBPS_RINDEX_CMD"
446 XBPS_UHELPER_XCMD="$XBPS_UHELPER_CMD"
447 XBPS_CHECKVERS_XCMD="$XBPS_CHECKVERS_CMD"
450 export XBPS_ENDIAN=$(get_endian ${XBPS_MACHINE})
451 export XBPS_TARGET_ENDIAN=$(get_endian ${XBPS_TARGET_MACHINE})
452 export XBPS_LIBC=$(get_libc ${XBPS_MACHINE})
453 export XBPS_TARGET_LIBC=$(get_libc ${XBPS_TARGET_MACHINE})
454 export XBPS_WORDSIZE=$(get_wordsize ${XBPS_MACHINE})
455 export XBPS_TARGET_WORDSIZE=$(get_wordsize ${XBPS_TARGET_MACHINE})
456 export XBPS_NO_ATOMIC8=$(get_no_atomic8 ${XBPS_MACHINE})
457 export XBPS_TARGET_NO_ATOMIC8=$(get_no_atomic8 ${XBPS_TARGET_MACHINE})
459 export XBPS_INSTALL_XCMD XBPS_QUERY_XCMD XBPS_RECONFIGURE_XCMD \
460 XBPS_REMOVE_XCMD XBPS_RINDEX_XCMD XBPS_UHELPER_XCMD
462 # Source all sourcepkg environment setup snippets.
463 # Source all subpkg environment setup snippets.
464 for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
465 source_file "$f"
466 done
467 for f in ${XBPS_COMMONDIR}/environment/setup/*.sh; do
468 source_file "$f"
469 done
471 if [ ! -f ${XBPS_SRCPKGDIR}/${basepkg}/template ]; then
472 msg_error "xbps-src: nonexistent file: ${XBPS_SRCPKGDIR}/${basepkg}/template\n"
474 if [ -n "$cross" ]; then
475 export CROSS_BUILD="$cross"
476 source_file ${XBPS_SRCPKGDIR}/${basepkg}/template
477 else
478 unset CROSS_BUILD
479 source_file ${XBPS_SRCPKGDIR}/${basepkg}/template
483 # Check if required vars weren't set.
484 _vars="pkgname version short_desc revision homepage license"
485 for f in ${_vars}; do
486 eval val="\$$f"
487 if [ -z "$val" -o -z "$f" ]; then
488 msg_error "\"$f\" not set on $pkgname template.\n"
490 done
492 # Check if version is valid.
493 case "$version" in
494 *-*) msg_error "version contains invalid character: -\n";;
495 *_*) msg_error "version contains invalid character: _\n";;
496 esac
497 case "$version" in
498 *[0-9]*) : good ;;
499 *) msg_error "version must contain at least one digit.\n";;
500 esac
502 # Check if base-chroot is already installed.
503 if [ -z "$bootstrap" -a -z "$CHROOT_READY" -a "z$show_problems" != "zignore-problems" ]; then
504 msg_red "${pkg} is not a bootstrap package and cannot be built without it.\n"
505 msg_error "Please install bootstrap packages and try again.\n"
508 sourcepkg="${pkgname}"
509 if [ -z "$subpackages" ]; then
510 subpackages="$(get_subpkgs)"
513 if [ -h $XBPS_SRCPKGDIR/$basepkg ]; then
514 # Source all subpkg environment setup snippets.
515 for f in ${XBPS_COMMONDIR}/environment/setup-subpkg/*.sh; do
516 source_file "$f"
517 done
518 pkgname=$pkg
519 if ! declare -f ${basepkg}_package >/dev/null; then
520 msg_error "$pkgname: missing ${basepkg}_package() function!\n"
524 pkgver="${pkg}-${version}_${revision}"
526 # If build_style() unset, a do_install() function must be defined.
527 if [ -z "$build_style" ]; then
528 # Check that at least do_install() is defined.
529 if ! declare -f do_install >/dev/null; then
530 msg_error "$pkgver: missing do_install() function!\n"
534 for x in ${hostmakedepends} ${makedepends} ${checkdepends}; do
535 if [[ $x = *[\<\>]* || $x =~ -[^-_]*[0-9][^-_]*_[0-9_]+$ ]]; then
536 msg_error "$pkgver: specifying version in build dependency '$x' is invalid, template version is used always\n"
538 done
540 FILESDIR=$XBPS_SRCPKGDIR/$sourcepkg/files
541 PATCHESDIR=$XBPS_SRCPKGDIR/$sourcepkg/patches
542 DESTDIR=$XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/${sourcepkg}-${version}
543 PKGDESTDIR=$XBPS_DESTDIR/$XBPS_CROSS_TRIPLET/${pkg}-${version}
545 export XBPS_ORIG_MAKEJOBS=${XBPS_ORIG_MAKEJOBS:=$XBPS_MAKEJOBS}
546 if [ -n "$disable_parallel_build" ]; then
547 XBPS_MAKEJOBS=1
549 makejobs="-j$XBPS_MAKEJOBS"
550 if [ -n "$XBPS_BINPKG_EXISTS" ]; then
551 local extraflags=""
552 if [ -n "$XBPS_SKIP_REMOTEREPOS" ]; then
553 extraflags="-i"
554 # filter out remote repositories
555 for repo in $(xbps-query -L | awk '{ print $2 }' | grep '^/host/'); do
556 extraflags+=" --repository=$repo"
557 done
559 local _binpkgver="$($XBPS_QUERY_XCMD -R -ppkgver $pkgver $extraflags 2>/dev/null)"
560 if [ "$_binpkgver" = "$pkgver" ]; then
561 if [ -z "$XBPS_DEPENDENCY" ]; then
562 local _repo="$($XBPS_QUERY_XCMD -R -prepository $pkgver 2>/dev/null)"
563 msg_normal "xbps-src: $pkgver: found ($XBPS_TARGET_MACHINE) ($_repo)\n"
565 exit_and_cleanup
569 if [ -z "$XBPS_DEBUG_PKGS" -o "$repository" = "nonfree" ]; then
570 nodebug=yes
572 # -g is required to build -dbg packages.
573 if [ -z "$nodebug" ]; then
574 dbgflags="-g"
577 # build profile is used always in order to expose the host triplet,
578 # but the compiler flags from it are only used when not crossing
579 if [ -z "$CHROOT_READY" ]; then
580 source_file ${XBPS_COMMONDIR}/build-profiles/bootstrap.sh
581 else
582 source_file ${XBPS_COMMONDIR}/build-profiles/${XBPS_MACHINE}.sh
585 set_build_options
587 export CFLAGS="$XBPS_CFLAGS $XBPS_CROSS_CFLAGS $CFLAGS $dbgflags"
588 export CXXFLAGS="$XBPS_CXXFLAGS $XBPS_CROSS_CXXFLAGS $CXXFLAGS $dbgflags"
589 export FFLAGS="$XBPS_FFLAGS $XBPS_CROSS_FFLAGS $FFLAGS $dbgflags"
590 export CPPFLAGS="$XBPS_CPPFLAGS $XBPS_CROSS_CPPFLAGS $CPPFLAGS"
591 export LDFLAGS="$XBPS_LDFLAGS $XBPS_CROSS_LDFLAGS $LDFLAGS"
593 export BUILD_CC="cc"
594 export BUILD_CXX="c++"
595 export BUILD_CPP="cpp"
596 export BUILD_FC="gfortran"
597 export BUILD_LD="ld"
598 export BUILD_CFLAGS="$XBPS_CFLAGS"
599 export BUILD_CXXFLAGS="$XBPS_CXXFLAGS"
600 export BUILD_CPPFLAGS="$XBPS_CPPFLAGS"
601 export BUILD_LDFLAGS="$XBPS_LDFLAGS"
602 export BUILD_FFLAGS="$XBPS_FFLAGS"
604 export CC_FOR_BUILD="cc"
605 export CXX_FOR_BUILD="g++"
606 export CPP_FOR_BUILD="cpp"
607 export FC_FOR_BUILD="gfortran"
608 export LD_FOR_BUILD="ld"
609 export PKG_CONFIG_FOR_BUILD="/usr/bin/pkg-config"
610 export CFLAGS_FOR_BUILD="$XBPS_CFLAGS"
611 export CXXFLAGS_FOR_BUILD="$XBPS_CXXFLAGS"
612 export CPPFLAGS_FOR_BUILD="$XBPS_CPPFLAGS"
613 export LDFLAGS_FOR_BUILD="$XBPS_LDFLAGS"
614 export FFLAGS_FOR_BUILD="$XBPS_FFLAGS"
616 if [ -n "$cross" ]; then
617 # Regular tools names
618 export CC="${XBPS_CROSS_TRIPLET}-gcc"
619 export CXX="${XBPS_CROSS_TRIPLET}-c++"
620 export CPP="${XBPS_CROSS_TRIPLET}-cpp"
621 export FC="${XBPS_CROSS_TRIPLET}-gfortran"
622 export GCC="$CC"
623 export LD="${XBPS_CROSS_TRIPLET}-ld"
624 export AR="${XBPS_CROSS_TRIPLET}-ar"
625 export AS="${XBPS_CROSS_TRIPLET}-as"
626 export RANLIB="${XBPS_CROSS_TRIPLET}-ranlib"
627 export STRIP="${XBPS_CROSS_TRIPLET}-strip"
628 export OBJDUMP="${XBPS_CROSS_TRIPLET}-objdump"
629 export OBJCOPY="${XBPS_CROSS_TRIPLET}-objcopy"
630 export NM="${XBPS_CROSS_TRIPLET}-nm"
631 export READELF="${XBPS_CROSS_TRIPLET}-readelf"
632 export PKG_CONFIG="${XBPS_CROSS_TRIPLET}-pkg-config"
633 # Target tools
634 export CC_target="$CC"
635 export CXX_target="$CXX"
636 export CPP_target="$CPP"
637 export GCC_target="$GCC"
638 export FC_target="$FC"
639 export LD_target="$LD"
640 export AR_target="$AR"
641 export AS_target="$AS"
642 export RANLIB_target="$RANLIB"
643 export STRIP_target="$STRIP"
644 export OBJDUMP_target="$OBJDUMP"
645 export OBJCOPY_target="$OBJCOPY"
646 export NM_target="$NM"
647 export READELF_target="$READELF"
648 # Target flags
649 export CFLAGS_target="$CFLAGS"
650 export CXXFLAGS_target="$CXXFLAGS"
651 export CPPFLAGS_target="$CPPFLAGS"
652 export LDFLAGS_target="$LDFLAGS"
653 export FFLAGS_target="$FFLAGS"
654 # Host tools
655 export CC_host="cc"
656 export CXX_host="g++"
657 export CPP_host="cpp"
658 export GCC_host="$CC_host"
659 export FC_host="gfortran"
660 export LD_host="ld"
661 export AR_host="ar"
662 export AS_host="as"
663 export RANLIB_host="ranlib"
664 export STRIP_host="strip"
665 export OBJDUMP_host="objdump"
666 export OBJCOPY_host="objcopy"
667 export NM_host="nm"
668 export READELF_host="readelf"
669 # Host flags
670 export CFLAGS_host="$XBPS_CFLAGS"
671 export CXXFLAGS_host="$XBPS_CXXFLAGS"
672 export CPPFLAGS_host="$XBPS_CPPFLAGS"
673 export LDFLAGS_host="$XBPS_LDFLAGS"
674 export FFLAGS_host="$XBPS_FFLAGS"
675 # Rust flags which are passed to rustc
676 export RUSTFLAGS="$XBPS_CROSS_RUSTFLAGS"
677 # Rust target, which differs from our triplets
678 export RUST_TARGET="$XBPS_CROSS_RUST_TARGET"
679 # Rust build, which is the host system, may also differ
680 export RUST_BUILD="$XBPS_RUST_TARGET"
681 else
682 # Target flags from build-profile
683 export CFLAGS="$XBPS_TARGET_CFLAGS $CFLAGS"
684 export CXXFLAGS="$XBPS_TARGET_CXXFLAGS $CXXFLAGS"
685 export FFLAGS="$XBPS_TARGET_FFLAGS $FFLAGS"
686 export CPPFLAGS="$XBPS_TARGET_CPPFLAGS $CPPFLAGS"
687 export LDFLAGS="$XBPS_TARGET_LDFLAGS $LDFLAGS"
688 # Tools
689 export CC="cc"
690 export CXX="g++"
691 export CPP="cpp"
692 export GCC="$CC"
693 export FC="gfortran"
694 export LD="ld"
695 export AR="ar"
696 export AS="as"
697 export RANLIB="ranlib"
698 export STRIP="strip"
699 export OBJDUMP="objdump"
700 export OBJCOPY="objcopy"
701 export NM="nm"
702 export READELF="readelf"
703 export PKG_CONFIG="pkg-config"
704 export RUST_TARGET="$XBPS_RUST_TARGET"
705 export RUST_BUILD="$XBPS_RUST_TARGET"
706 # Unset cross evironment variables
707 unset CC_target CXX_target CPP_target GCC_target FC_target LD_target AR_target AS_target
708 unset RANLIB_target STRIP_target OBJDUMP_target OBJCOPY_target NM_target READELF_target
709 unset CFLAGS_target CXXFLAGS_target CPPFLAGS_target LDFLAGS_target FFLAGS_target
710 unset CC_host CXX_host CPP_host GCC_host FC_host LD_host AR_host AS_host
711 unset RANLIB_host STRIP_host OBJDUMP_host OBJCOPY_host NM_host READELF_host
712 unset CFLAGS_host CXXFLAGS_host CPPFLAGS_host LDFLAGS_host FFLAGS_host
713 unset RUSTFLAGS
716 # Setup some specific package vars.
717 wrksrc="$XBPS_BUILDDIR/${sourcepkg}-${version}"
719 if [ "$cross" -a "$nocross" ]; then
720 report_broken \
721 "$pkgver: cannot be cross compiled...\n" \
722 "$pkgver: $nocross\n"
723 elif [ "$broken" ]; then
724 report_broken \
725 "$pkgver: cannot be built, it's currently broken; see the build log:\n" \
726 "$pkgver: $broken\n"
729 if [ -n "$restricted" -a -z "$XBPS_ALLOW_RESTRICTED" -a "$show_problems" != "ignore-problems" ]; then
730 msg_red "$pkgver: does not allow redistribution of sources/binaries (restricted license).\n"
731 msg_red "If you really need this software, run 'echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf'\n"
732 exit 2
735 export XBPS_STATEDIR="${XBPS_BUILDDIR}/.xbps-${sourcepkg}"
736 export XBPS_WRAPPERDIR="${XBPS_STATEDIR}/wrappers"
738 mkdir -p $XBPS_STATEDIR $XBPS_WRAPPERDIR
740 source_file $XBPS_COMMONDIR/environment/build-style/${build_style}.sh
742 # Source all build-helper files that are defined
743 for f in $build_helper; do
744 if [ ! -r $XBPS_BUILDHELPERDIR/${f}.sh ]; then
745 msg_error "$pkgver: cannot find build helper $XBPS_BUILDHELPERDIR/${f}.sh!\n"
747 . $XBPS_BUILDHELPERDIR/${f}.sh
748 done