You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

488 lines
16 KiB

diff -uNr abuild-3.4.0/abuild.in abuild-3.4.0.mod/abuild.in
--- abuild-3.4.0/abuild.in 2019-06-14 15:13:23.000000000 +0300
+++ abuild-3.4.0.mod/abuild.in 2019-07-21 16:56:56.898285307 +0300
@@ -1,4 +1,4 @@
-#!/bin/ash -e
+#!/bin/bash -e
# abuild - build apk packages (light version of makepkg)
# Copyright (c) 2008-2015 Natanael Copa <ncopa@alpinelinux.org>
@@ -21,11 +21,7 @@
. "$datadir/functions.sh"
# defaults
-: ${FAKEROOT:="fakeroot"}
-: ${SUDO_APK:="abuild-apk"}
: ${APK:="apk"}
-: ${ADDUSER:="abuild-adduser"}
-: ${ADDGROUP:="abuild-addgroup"}
apk_opt_wait="--wait 30"
@@ -438,7 +434,7 @@
initdcheck || return 1
mkdir -p "$srcdir"
local gunzip=$(command -v pigz || echo gunzip)
- [ $gunzip = "/usr/bin/pigz" ] && gunzip="$gunzip -d"
+ [ $gunzip = "@TERMUX_PREFIX@/bin/pigz" ] && gunzip="$gunzip -d"
for u in $source; do
local s
if is_remote "$u"; then
@@ -466,7 +462,7 @@
*.tar.xz)
msg "Unpacking $s..."
local threads_opt
- if [ $(readlink -f $(command -v unxz)) != "/bin/busybox" ]; then
+ if [ $(realpath $(command -v unxz)) != "@TERMUX_PREFIX@/bin/busybox" ]; then
threads_opt="--threads=0"
fi
unxz $threads_opt -c "$s" | tar -C "$srcdir" -x || return 1;;
@@ -554,26 +550,6 @@
return 0
}
-mkusers() {
- local i
- for i in $pkggroups; do
- if ! getent group $i >/dev/null; then
- msg "Creating group $i"
- $ADDGROUP -S $i || return 1
- fi
- done
- for i in $pkgusers; do
- if ! getent passwd $i >/dev/null; then
- local gopt=
- msg "Creating user $i"
- if getent group $i >/dev/null; then
- gopt="-G $i"
- fi
- $ADDUSER -S -D -H $gopt $i || return 1
- fi
- done
-}
-
# helper to update config.sub to a recent version
update_config_sub() {
find . -name config.sub | (local changed=false; while read f; do
@@ -687,10 +663,10 @@
find "$dir" -name '*.la' -type f -delete
fi
- # look for /usr/lib/charset.alias
- if [ -e "$dir"/usr/lib/charset.alias ] \
+ # look for @TERMUX_PREFIX@/lib/charset.alias
+ if [ -e "$dir"/@TERMUX_PREFIX@/lib/charset.alias ] \
&& ! options_has "charset.alias"; then
- error "Found /usr/lib/charset.alias"
+ error "Found @TERMUX_PREFIX@/lib/charset.alias"
return 1
fi
# look for /etc/init.d and /etc/conf.d
@@ -704,22 +680,15 @@
warning "Found static archive on ${i##*$dir/} but name doesn't end with -static"
done
fi
- # look for /usr/share/doc
- if [ -e "$dir"/usr/share/doc ] \
+ # look for @TERMUX_PREFIX@/share/doc
+ if [ -e "$dir"/@TERMUX_PREFIX@/share/doc ] \
&& ! is_doc_pkg "$name"; then
- warning "Found /usr/share/doc but package name doesn't end with -doc"
+ warning "Found @TERMUX_PREFIX@/share/doc but package name doesn't end with -doc"
fi
- # look for /usr/share/man
- if [ -e "$dir"/usr/share/man ]; then
+ # look for @TERMUX_PREFIX@/share/man
+ if [ -e "$dir"/@TERMUX_PREFIX@/share/man ]; then
if ! is_doc_pkg "$name"; then
- warning "Found /usr/share/man but package name doesn't end with -doc"
- fi
- # check for uncompressed man pages
- i=$(find "$dir"/usr/share/man -name '*.[0-8]' -type f | sed "s|^$dir|\t|")
- if [ -n "$i" ]; then
- error "Found uncompressed man pages:"
- echo "$i"
- return 1
+ warning "Found @TERMUX_PREFIX@/share/man but package name doesn't end with -doc"
fi
fi
# check directory permissions
@@ -780,9 +749,9 @@
&& postcheck "$pkgbasedir/$subpkgname" "$subpkgname" ) || return 1
done
postcheck "$pkgdir" "$pkgname" || return 1
- # post check for /usr/share/locale
- if [ -d "$pkgdir"/usr/share/locale ]; then
- warning "Found /usr/share/locale"
+ # post check for @TERMUX_PREFIX@/share/locale
+ if [ -d "$pkgdir"/@TERMUX_PREFIX@/share/locale ]; then
+ warning "Found @TERMUX_PREFIX@/share/locale"
warning2 "Maybe add \$pkgname-lang to subpackages?"
fi
}
@@ -792,7 +761,7 @@
install_if="$pkgname=$pkgver-r$pkgrel lang"
local dir
- for dir in ${langdir:-/usr/share/locale}; do
+ for dir in ${langdir:-@TERMUX_PREFIX@/share/locale}; do
mkdir -p "$subpkgdir"/${dir%/*}
mv "$pkgdir"/"$dir" "$subpkgdir"/"$dir" || return 1
done
@@ -811,7 +780,7 @@
install_if="$pkgname=$pkgver-r$pkgrel lang-$lang"
local dir
- for dir in ${langdir:-/usr/share/locale}; do
+ for dir in ${langdir:-@TERMUX_PREFIX@/share/locale}; do
mkdir -p "$subpkgdir"/$dir
mv "$pkgdir"/$dir/$lang* \
"$subpkgdir"/$dir/ \
@@ -866,7 +835,7 @@
check_license() {
local ret=0
- local license_list=/usr/share/spdx/license.lst
+ local license_list=@TERMUX_PREFIX@/share/spdx/license.lst
local exclude="AND OR WITH"
if options_has "!spdx" || ! [ -f "$license_list" ]; then
return 0
@@ -939,10 +908,7 @@
local builddate=$(date -u "+%s")
# Fix package size on several filesystems
- case "$(df -PT . | awk 'END {print $2}')" in
- btrfs|ecryptfs|zfs)
- sync;;
- esac
+ sync
local size=$(du -sk | awk '{print $1 * 1024}')
@@ -955,7 +921,7 @@
echo "# Generated by $(basename "$abuild_path") $program_version" >"$pkginfo"
if [ -n "$FAKEROOTKEY" ]; then
- echo "# using $($FAKEROOT -v)" >> "$pkginfo"
+ echo "# using $(fakeroot -v)" >> "$pkginfo"
fi
echo "# $(date -u)" >> "$pkginfo"
cat >> "$pkginfo" <<-EOF
@@ -975,9 +941,9 @@
for i in $install $triggers; do
local s=${i%=*}
[ "$name" != "${s%.*}" ] && continue
- if head -n 1 "$startdir/$s" | grep '^#!/bin/sh' >/dev/null ; then
- msg "Script found. /bin/sh added as a dependency for $pkg"
- deps="$deps /bin/sh"
+ if head -n 1 "$startdir/$s" | grep '^#!@TERMUX_PREFIX@/bin/sh' >/dev/null ; then
+ msg "Script found. @TERMUX_PREFIX@/bin/sh added as a dependency for $pkg"
+ deps="$deps @TERMUX_PREFIX@/bin/sh"
break
fi
done
@@ -1049,8 +1015,8 @@
scanelf --quiet --recursive --rpath "$dir" \
| sed -e 's/[[:space:]].*//' -e 's/:/\n/' | sort -u \
>"$controldir"/.rpaths
- if grep -q -x '/usr/lib' "$controldir"/.rpaths; then
- warning "Redundant /usr/lib in rpath found"
+ if grep -q -x '@TERMUX_PREFIX@/lib' "$controldir"/.rpaths; then
+ warning "Redundant @TERMUX_PREFIX@/lib in rpath found"
fi
if grep '^/home/' "$controldir"/.rpaths; then
error "Has /home/... in rpath"
@@ -1076,12 +1042,12 @@
local dir="${subpkgdir:-$pkgdir}"
options_has "!tracedeps" && return 0
cd "$dir" || return 1
- for i in usr/lib/pkgconfig/*.pc; do
+ for i in ./@TERMUX_PREFIX@/lib/pkgconfig/*.pc; do
if ! [ -e "$i" ]; then
continue
fi
local f=${i##*/}
- local v=$(PKG_CONFIG_PATH="$dir"/usr/lib/pkgconfig PKG_CONFIG_MAXIMUM_TRAVERSE_DEPTH=1 pkg-config \
+ local v=$(PKG_CONFIG_PATH="$dir"/@TERMUX_PREFIX@/lib/pkgconfig PKG_CONFIG_MAXIMUM_TRAVERSE_DEPTH=1 pkg-config \
--modversion ${f%.pc})
echo "$pcprefix${f%.pc}=${v:-0}" >> "$controldir"/.provides-pc
done
@@ -1176,12 +1142,19 @@
return 1
}
-# search rpaths and /usr/lib /lib for given so files
+# search rpaths and @TERMUX_PREFIX@/lib for given so files
find_so_files() {
+ local android_libs
local rpaths=$(cat "$1")
shift
+
+ case ${CTARGET_ARCH} in
+ aarch64|x86_64) android_libs="/system/lib64" ;;
+ *) android_libs="/system/lib" ;;
+ esac
+
while [ $# -gt 0 ]; do
- real_so_path "$1" /usr/lib /lib $rpaths || return 1
+ real_so_path "$1" @TERMUX_PREFIX@/lib $rpaths $android_libs || return 1
shift
done
return 0
@@ -1219,20 +1192,12 @@
esac
msg "Tracing dependencies..."
- # add pkgconfig if usr/lib/pkgconfig is found
- if [ -d "$pkgbasedir"/$name/usr/lib/pkgconfig ] \
+ # add pkgconfig if @TERMUX_PREFIX@/lib/pkgconfig is found
+ if [ -d "$pkgbasedir"/$name/@TERMUX_PREFIX@/lib/pkgconfig ] \
&& ! grep -q '^depend = pkgconfig' "$dir"/.PKGINFO; then
autodeps="$autodeps pkgconfig"
fi
- # special case for libpthread: we need depend on libgcc
- if [ "$CLIBC" = "uclibc" ] && [ -f "$dir"/.needs-so ] \
- && grep -q -w '^libpthread.so.*' "$dir"/.needs-so \
- && ! grep -q -w "^depend = libgcc" "$dir"/.PKGINFO; then
- autodeps="$autodeps libgcc"
- msg " added libgcc (due to libpthread)"
- fi
-
[ -f "$dir"/.needs-so ] && for i in $(cat "$dir"/.needs-so); do
# first check if its provided by same apkbuild
grep -q -w "^$sonameprefix$i" "$dir"/.provides-so 2>/dev/null && continue
@@ -1249,7 +1214,7 @@
# find all packages that holds the so files
if [ -f "$dir"/.rpaths ]; then
- local so_files=$(find_so_files "$dir"/.rpaths $missing) \
+ local so_files=$(find_so_files "$dir"/.rpaths $missing | grep -v /system/lib) \
|| return 1
deppkgs=$($APK $apkroot info --quiet --who-owns $so_files) || return 1
fi
@@ -1283,7 +1248,7 @@
autodeps="$autodeps pc:$i"
else
warning "Could not find any provider for pc:$i"
- local pcfile=/usr/lib/pkgconfig/"${i%%[<>=]*}".pc
+ local pcfile=@TERMUX_PREFIX@/lib/pkgconfig/"${i%%[<>=]*}".pc
if [ -e "$pcfile" ]; then
local owner=$($APK $apkroot info --quiet --who-owns $pcfile)
warning "${owner:-package providing $pcfile} needs to be rebuilt"
@@ -1315,7 +1280,7 @@
find_scanelf_paths() {
local datadir="$1"
- local paths="$datadir/lib:$datadir/usr/lib" i= rpaths=
+ local paths="$datadir/lib" i= rpaths=
if [ -n "$ldpath" ]; then
paths="$paths:$(echo "${datadir}${ldpath}" | sed "s|:|:$datadir|g")"
fi
@@ -1461,7 +1426,7 @@
name="$(pkginfo_val pkgname "$controldir"/.PKGINFO)"
datadir="$pkgbasedir"/$name
for i in $(sort -u "$provides_pc"); do
- PKG_CONFIG_PATH="$datadir"/usr/lib/pkgconfig pkg-config \
+ PKG_CONFIG_PATH="$datadir"/@TERMUX_PREFIX@/lib/pkgconfig pkg-config \
--print-requires \
--print-requires-private ${i%=*} \
| sed -E 's/\s*([<>=]+)\s*/\1/' \
@@ -1555,7 +1520,7 @@
logcmd "building $repo/$pkgname-$pkgver-r$pkgrel"
local _starttime=$(date --utc +%s)
msg "Building $repo/$pkgname $pkgver-r$pkgrel (using $program $program_version) started $(date -R)"
- for part in sanitycheck builddeps clean fetch unpack prepare mkusers build \
+ for part in sanitycheck builddeps clean fetch unpack prepare build \
$_check rootpkg; do
runpart $part
done
@@ -1625,14 +1590,14 @@
local i
for i in doc man info html sgml licenses gtk-doc ri help; do
- if [ -d "$pkgdir/usr/share/$i" ]; then
- mkdir -p "$subpkgdir/usr/share"
- mv "$pkgdir/usr/share/$i" "$subpkgdir/usr/share/"
+ if [ -d "$pkgdir/@TERMUX_PREFIX@/share/$i" ]; then
+ mkdir -p "$subpkgdir/@TERMUX_PREFIX@/share"
+ mv "$pkgdir/@TERMUX_PREFIX@/share/$i" "$subpkgdir/@TERMUX_PREFIX@/share/"
fi
done
# compress man pages
- local mandir="$subpkgdir"/usr/share/man
+ local mandir="$subpkgdir"/@TERMUX_PREFIX@/share/man
[ -d "$mandir" ] && find "$mandir" -type l \
-a \( -name \*.[0-8n] -o -name \*.[0-8][a-z]* \) \
-a \! \( -name '*.gz' -o -name '*.bz2' -o -name '*.xz' \) \
@@ -1664,10 +1629,10 @@
[ $islink -eq 0 ] && $gzip -9 "$name"
done
- rm -f "$subpkgdir/usr/share/info/dir"
+ rm -f "$subpkgdir/@TERMUX_PREFIX@/share/info/dir"
# remove if empty, ignore error (not empty)
- rmdir "$pkgdir/usr/share" "$pkgdir/usr" 2>/dev/null || :
+ rmdir "$pkgdir/@TERMUX_PREFIX@/share" "$pkgdir" 2>/dev/null || :
}
doc() {
@@ -1682,19 +1647,15 @@
scanelf -R "$pkgdir" | grep ET_DYN | sed "s:$pkgdir\/::g" | sed "s:ET_DYN ::g" | while read f; do
local ddbg_srcdir=$(dirname "$pkgdir/$f")
local ddbg_srcfile=$(basename "$pkgdir/$f")
- local ddbg_dstdir=$(dirname "$subpkgdir/usr/lib/debug/$f.debug")
- local ddbg_dstfile=$(basename "$subpkgdir/usr/lib/debug/$f.debug")
+ local ddbg_dstdir=$(dirname "$subpkgdir/@TERMUX_PREFIX@/lib/debug/$f.debug")
+ local ddbg_dstfile=$(basename "$subpkgdir/@TERMUX_PREFIX@/lib/debug/$f.debug")
mkdir -p "$ddbg_dstdir"
cd "$ddbg_srcdir"
- local xattr=$(getfattr --match="" --dump "${ddbg_srcfile}")
${CROSS_COMPILE}objcopy --only-keep-debug "$ddbg_srcfile" "$ddbg_dstfile"
${CROSS_COMPILE}objcopy --add-gnu-debuglink="$ddbg_dstfile" "$ddbg_srcdir/$ddbg_srcfile"
mv "$ddbg_dstfile" "$ddbg_dstdir"
${CROSS_COMPILE}strip "$ddbg_srcfile"
- if [ -n "$xattr" ]; then
- echo "$xattr" | setfattr --restore=-
- fi
done
return 0
}
@@ -1710,14 +1671,14 @@
pkgdesc="$pkgdesc (development files)"
cd "$pkgdir" || return 0
- local libdirs=usr/
+ local libdirs=./@TERMUX_PREFIX@/lib
[ -d lib/ ] && libdirs="lib/ $libdirs"
- for i in usr/include usr/lib/pkgconfig usr/share/aclocal\
- usr/share/gettext usr/bin/*-config \
- usr/share/vala/vapi usr/share/gir-[0-9]*\
- usr/share/qt*/mkspecs \
- usr/lib/qt*/mkspecs \
- usr/lib/cmake \
+ for i in ./@TERMUX_PREFIX@/lib/pkgconfig ./@TERMUX_PREFIX@/share/aclocal \
+ ./@TERMUX_PREFIX@/share/gettext ./@TERMUX_PREFIX@/bin/*-config \
+ ./@TERMUX_PREFIX@/share/vala/vapi ./@TERMUX_PREFIX@/share/gir-[0-9]* \
+ ./@TERMUX_PREFIX@/share/qt*/mkspecs \
+ ./@TERMUX_PREFIX@/lib/qt*/mkspecs \
+ ./@TERMUX_PREFIX@/lib/cmake \
$(find . -name include -type d) \
$([ -z "${subpackages##*$pkgname-static*}" ] && find $libdirs \
-name '*.a' 2>/dev/null) \
@@ -1808,27 +1769,11 @@
type "$1" 2>&1 | head -n 1 | egrep -q "is a (shell )?function"
}
-do_fakeroot() {
- if [ -n "$FAKEROOT" ]; then
- $FAKEROOT -- "$@"
- else
- "$@"
- fi
-}
-
-# wrap check() with fakeroot
-check_fakeroot() {
- cd "$startdir"
- [ -n "$FAKEROOT" ] && msg "Entering fakeroot..."
- do_fakeroot "$abuild_path" $forceroot $color_opt $keep_build check
-}
-
# build and package in fakeroot
rootpkg() {
cd "$startdir"
rm -rf "$pkgdir"
- [ -n "$FAKEROOT" ] && msg "Entering fakeroot..."
- do_fakeroot "$abuild_path" $forceroot $color_opt $keep_build \
+ "$abuild_path" $forceroot $color_opt $keep_build \
package \
prepare_subpackages \
prepare_language_packs \
@@ -2151,7 +2096,7 @@
$install_deps $recursive $upgrade $color_opt \
abuildindex || return 1
done
- $SUDO_APK add --upgrade --repository "$REPODEST/$repo" \
+ $APK add --upgrade --repository "$REPODEST/$repo" \
$apk_opt_wait \
--virtual .makedepends-$pkgname $builddeps \
|| return 1
@@ -2218,8 +2163,6 @@
msg "Preparing build chroot..."
- mkusers
-
BUILD_ROOT=$(mktemp -d /var/tmp/abuild.XXXXXXXXXX)
local aportsgit=${APORTSDIR:-${startdir}}
@@ -2260,7 +2203,7 @@
) < "$repo_template" > "$BUILD_ROOT/etc/apk/repositories"
calcdeps
- $SUDO_APK add --initdb --root "$BUILD_ROOT" --update \
+ $APK add --initdb --root "$BUILD_ROOT" --update \
abuild alpine-base build-base git $hostdeps $builddeps
local bwrap_opts=""
@@ -2307,11 +2250,7 @@
[ -e "$filename" ] || continue
[ "$osabi" != "STANDALONE" ] || continue
- local XATTR=$(getfattr --match="" --dump "${filename}")
"${stripcmd}" "${filename}"
- if [ -n "$XATTR" ]; then
- echo "$XATTR" | setfattr --restore=-
- fi
done
}
@@ -2401,22 +2340,22 @@
local _quiet="$1"
[ -z "$_quiet" ] && msg "Installing for build:$builddeps"
- $SUDO_APK add $_quiet $apk_opt_wait --repository "$REPODEST/$repo" \
+ $APK add $_quiet $apk_opt_wait --repository "$REPODEST/$repo" \
--virtual .makedepends-$pkgname \
$builddeps \
|| return 1
if [ -n "$CBUILDROOT" ]; then
[ -z "$_quiet" ] && msg "Installing for host:$hostdeps"
- $SUDO_APK add $_quiet --root "$CBUILDROOT" --arch "$CTARGET_ARCH" --repository "$REPODEST/$repo" $apk_opt_wait \
+ $APK add $_quiet --root "$CBUILDROOT" --arch "$CTARGET_ARCH" --repository "$REPODEST/$repo" $apk_opt_wait \
--no-scripts --virtual .makedepends-$pkgname $hostdeps || return 1
fi
}
undeps() {
local _quiet="$@"
- $SUDO_APK del $_quiet $apk_opt_wait .makedepends-$pkgname || :
+ $APK del $_quiet $apk_opt_wait .makedepends-$pkgname || :
if [ -n "$CBUILDROOT" ]; then
- $SUDO_APK del $_quiet --root "$CBUILDROOT" --arch "$CTARGET_ARCH" $apk_opt_wait \
+ $APK del $_quiet --root "$CBUILDROOT" --arch "$CTARGET_ARCH" $apk_opt_wait \
--no-scripts .makedepends-$pkgname || :
fi
}
@@ -2536,7 +2475,7 @@
package Install project into $pkgdir
prepare Apply patches
rootbld Build package in clean chroot
- rootpkg Run 'package', the split functions and create apks as fakeroot
+ rootpkg Run 'package', the split functions and create apks
sanitycheck Basic sanity check of APKBUILD
snapshot Create a \$giturl or \$svnurl snapshot and upload to \$disturl
sourcecheck Check if remote source package exists upstream
@@ -2618,7 +2557,7 @@
if [ -z "$REPODEST" ]; then
warning "REPODEST is not set and is now required. Defaulting to ~/packages"
[ -n "$PKGDEST" ] && die "PKGDEST is no longer supported."
- REPODEST="~/packages"
+ REPODEST="$HOME/packages"
fi
# for recursive action