mirror of
https://gitlab.alpinelinux.org/alpine/abuild.git
synced 2025-02-13 18:07:18 +00:00
abuild: add support for sonameprefix
This is a feature to prefix all so:* provides with a tag. This was done so that the openjdk8 so depends would only be satisfied by openjdk8 provides and not openjdk7, which might provide same so:lib*.so file. To use it do: sonameprefix="openjdk8:"
This commit is contained in:
parent
a2c4d5b00d
commit
72fefe0f1d
15
abuild.in
15
abuild.in
@ -1023,6 +1023,11 @@ find_so_files() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
subpkg_provides_prefixed_so() {
|
||||||
|
[ -n "$sonameprefix" ] && grep -q -w "^$sonameprefix$1" \
|
||||||
|
"$pkgbasedir"/.control.*/.provides-so 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
subpkg_provides_so() {
|
subpkg_provides_so() {
|
||||||
grep -q -w "^$1" "$pkgbasedir"/.control.*/.provides-so 2>/dev/null
|
grep -q -w "^$1" "$pkgbasedir"/.control.*/.provides-so 2>/dev/null
|
||||||
}
|
}
|
||||||
@ -1053,9 +1058,11 @@ trace_apk_deps() {
|
|||||||
|
|
||||||
[ -f "$dir"/.needs-so ] && for i in $(cat "$dir"/.needs-so); do
|
[ -f "$dir"/.needs-so ] && for i in $(cat "$dir"/.needs-so); do
|
||||||
# first check if its provided by same apkbuild
|
# first check if its provided by same apkbuild
|
||||||
grep -q -w "^$i" "$dir"/.provides-so 2>/dev/null && continue
|
grep -q -w "^$sonameprefix$i" "$dir"/.provides-so 2>/dev/null && continue
|
||||||
|
|
||||||
if subpkg_provides_so "$i" || cross_compiling \
|
if subpkg_provides_prefixed_so "$i"; then
|
||||||
|
autodeps="$autodeps so:$sonameprefix$i"
|
||||||
|
elif subpkg_provides_so "$i" || cross_compiling \
|
||||||
|| $APK info --quiet --installed "so:$i"; then
|
|| $APK info --quiet --installed "so:$i"; then
|
||||||
autodeps="$autodeps so:$i"
|
autodeps="$autodeps so:$i"
|
||||||
else
|
else
|
||||||
@ -1194,7 +1201,7 @@ scan_shared_objects() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
list_has "$soname" $somask && continue
|
list_has "$soname" $somask && continue
|
||||||
echo "$soname $sover"
|
echo "$sonameprefix$soname $sover"
|
||||||
# use awk to filter out dupes that has sover = 0
|
# use awk to filter out dupes that has sover = 0
|
||||||
done | awk '{ if (so[$1] == 0) so[$1] = $2; }
|
done | awk '{ if (so[$1] == 0) so[$1] = $2; }
|
||||||
END { for (i in so) print(i " " so[i]); }' \
|
END { for (i in so) print(i " " so[i]); }' \
|
||||||
@ -1212,7 +1219,7 @@ scan_shared_objects() {
|
|||||||
| sed 's:,:\n:g' | sort -u \
|
| sed 's:,:\n:g' | sort -u \
|
||||||
| while read soname; do
|
| while read soname; do
|
||||||
# only add files that are not self provided
|
# only add files that are not self provided
|
||||||
grep -q -w "^$soname" "$controldir"/.provides-so \
|
grep -q -w "^$sonameprefix$soname" "$controldir"/.provides-so \
|
||||||
|| list_has "$soname" $somask \
|
|| list_has "$soname" $somask \
|
||||||
|| echo $soname
|
|| echo $soname
|
||||||
done > "$controldir"/.needs-so
|
done > "$controldir"/.needs-so
|
||||||
|
Loading…
Reference in New Issue
Block a user