1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
diff --git a/abuild.in b/abuild.in
index 0dd8f9a..8d06261 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
}
@@ -1190,11 +1191,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 +1223,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 +1724,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
@@ -1962,9 +1963,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/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
|