|
|
diff --git a/.gitignore b/.gitignore
index 9018782..ac669f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
*.tar.bz2
*.o
abuild
+abuild-fetch
abuild-keygen
abuild-sign
abuild-sudo
diff --git a/abuild.in b/abuild.in
index 0dd8f9a..1f330b1 100644
--- a/abuild.in
+++ b/abuild.in
@@ -886,13 +886,14 @@ prepare_trace_rpaths() {
# search for broken symlinks so we later can pull in proper depends
prepare_symlinks() {
+ local target
local dir="${subpkgdir:-$pkgdir}"
options_has "!tracedeps" && return 0
cd "$dir" || return 1
find -type l | while read symlink; do
- if ! [ -e "$symlink" ]; then
- echo "$symlink $(readlink $symlink)" \
- >> "$controldir"/.symlinks
+ target=$(readlink "$symlink")
+ if ! [ -e "$dir$(normalize_target_path "$target" "$symlink")" ]; then
+ echo "$symlink $target" >> "$controldir"/.symlinks
fi
done
}
@@ -1076,7 +1077,8 @@ trace_apk_deps() {
echo "# automatically detected:" >> "$dir"/.PKGINFO
if [ -f "$dir"/.provides-so ]; then
- sed 's/^\(.*\) \([0-9].*\)/provides = so:\1=\2/' "$dir"/.provides-so \
+ sed 's/^\(.*\) \([0-9].*\)/provides = so:\1=\2/' \
+ "$dir"/.provides-so | sort -u \
>> "$dir"/.PKGINFO
fi
if [ -f "$dir"/.provides-pc ]; then
@@ -1190,11 +1192,16 @@ scan_shared_objects() {
done > "$controldir"/.needs-so
}
-# normalize a path string
-normalize_path() {
+# normalize a symlink target path (1st arg)
+# Converts a relative path to absolute with respect to the symlink
+# path (2nd arg).
+normalize_target_path() {
+ local path=$1
+ [ "${path:0:1}" = / ] || path=$(dirname "$2")/$path
+
local oifs="$IFS" pathstr= i=
IFS='/'
- set -- $1
+ set -- $path
for i; do
case "$i" in
"."|"") continue;;
@@ -1217,10 +1224,7 @@ scan_symlink_targets() {
fi
while read symlink target; do
- if [ "${target#/}" = "$target" ]; then
- target="${symlink%/*}/$target"
- fi
- targetpath="$datadir"/$(normalize_path "$target")
+ targetpath=$datadir$(normalize_target_path "$target" "$symlink")
if [ -e "$targetpath" ] || [ -L "$targetpath" ]; then
echo "$name=$pkgver-r$pkgrel" \
>> "$d"/.symlinks-needs
@@ -1721,14 +1725,12 @@ builddeps() {
[ "$pkgname" = "${i%%[<>=]*}" ] && continue
subpackages_has ${i%%[<>=]*} || builddeps="$builddeps $i"
done
- hostdeps="$makedepends_host"
- for i in $depends; do
+ for i in $depends $makedepends_host; do
[ "$pkgname" = "${i%%[<>=]*}" ] && continue
subpackages_has ${i%%[<>=]*} || hostdeps="$hostdeps $i"
done
else
- builddeps="$makedepends"
- for i in $BUILD_BASE $depends; do
+ for i in $BUILD_BASE $depends $makedepends; do
[ "$pkgname" = "${i%%[<>=]*}" ] && continue
subpackages_has ${i%%[<>=]*} || builddeps="$builddeps $i"
done
@@ -1739,15 +1741,21 @@ builddeps() {
# find which deps are missing
for i in $builddeps; do
- if [ "${i#\!}" != "$i" ] && $APK info --quiet --installed "${i#\!}"; then
- error "Conflicting package installed: ${i#\!}"
+ if [ "${i#\!}" != "$i" ]; then
+ if $APK info --quiet --installed "${i#\!}"; then
+ error "Conflicting package installed: ${i#\!}"
+ return 1
+ fi
elif ! deplist_has $i $installed_builddeps || [ -n "$upgrade" ]; then
missing="$missing $i"
fi
done
for i in $hostdeps; do
- if [ "${i#\!}" != "$i" ] && $APK info --quiet --installed --root "$CBUILDROOT" "${i#\!}"; then
- error "Conflicting package installed: ${i#\!}"
+ if [ "${i#\!}" != "$i" ]; then
+ if $APK info --quiet --installed --root "$CBUILDROOT" "${i#\!}"; then
+ error "Conflicting package installed: ${i#\!}"
+ return 1
+ fi
elif ! deplist_has $i $installed_hostdeps || [ -n "$upgrade" ]; then
missing="$missing $i"
fi
@@ -1962,9 +1970,8 @@ post_add() {
}
deps() {
- local builddeps i
- builddeps="$makedepends"
- for i in $depends; do
+ local builddeps= i
+ for i in $depends $makedepends; do
[ "$pkgname" = "${i%%[<>=]*}" ] && continue
subpackages_has ${i%%[<>=]*} || builddeps="$builddeps $i"
done
diff --git a/functions.sh.in b/functions.sh.in
index e9b7280..c128e8d 100644
--- a/functions.sh.in
+++ b/functions.sh.in
@@ -6,7 +6,8 @@ program=${0##*/}
hostspec_to_arch() {
case "$1" in
arm*-*-*-*eabi) echo "armel" ;;
- arm*-*-*-*eabihf) echo "armhf" ;;
+ armv6*-*-*-*eabihf) echo "armhf" ;;
+ armv7*-*-*-*eabihf) echo "armv7" ;;
i[0-9]86-*-*-*) echo "x86" ;;
x86_64-*-*-*) echo "x86_64" ;;
*) echo "unknown" ;;
diff --git a/newapkbuild.in b/newapkbuild.in
index 5ba51fb..a47dcae 100644
--- a/newapkbuild.in
+++ b/newapkbuild.in
@@ -45,7 +45,6 @@ build_autotools() {
--prefix=/usr \\
--sysconfdir=/etc \\
--mandir=/usr/share/man \\
- --infodir=/usr/share/info \\
--localstatedir=/var \\
|| return 1
make || return 1
@@ -70,10 +69,8 @@ build_cmake() {
-DCMAKE_INSTALL_LIBDIR=lib \\
-DBUILD_SHARED_LIBS=True \\
-DCMAKE_BUILD_TYPE=Release \\
- -DCMAKE_CXX_COMPILER="\${CXX:-g++}" \\
- -DCMAKE_C_COMPILER="\${CC:-gcc}" \\
-DCMAKE_CXX_FLAGS="\$CXXFLAGS" \\
- -DCMAKE_CXX_FLAGS="\$CFLAGS" \\
+ -DCMAKE_C_FLAGS="\$CFLAGS" \\
${CMAKE_CROSSOPTS} \\
|| return 1
make || return 1
|