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