Commit 715b4a33 authored by Natanael Copa's avatar Natanael Copa

main/abuild: backport support for pcprefix

ref #9959
parent 066c79a8
From 376ccc5bd695e792768a679409fbb428defe0770 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Fri, 22 Feb 2019 13:57:08 +0000
Subject: [PATCH] abuild: add support for pkg-config prefix pcprefix
Fix issue when two -dev packages provides same pkg-config wil but with
different versions. For example libressl-dev and openssl-dev both ships
libssl.pc and libcrypto.pc, which resulted in automatic provides of
pc:libssl and pc:libcrypto.
apk would end up picking libressl-dev over openssl-dev for packages that
had automatic pc:libssl depends (for example libssl2-dev), when
openssl-dev was the one that was used during build.
To fix this we add support for a pcprefix so we can set
pcprefix="libressl:" in libressl APKBUILD which makes libressl-dev
provide pc:libressl:libssl. This is similar to what we do with
sonameprefix.
We do not yet automatically detect when the prefixed variant should be
used so for now we will have to explicitly add libressl-dev.
ref #9959
---
abuild.in | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/abuild.in b/abuild.in
index cd3383b..d03e35f 100644
--- a/abuild.in
+++ b/abuild.in
@@ -1067,7 +1067,7 @@ prepare_pkgconfig_provides() {
local f=${i##*/}
local v=$(PKG_CONFIG_PATH="$dir"/usr/lib/pkgconfig PKG_CONFIG_MAXIMUM_TRAVERSE_DEPTH=1 pkg-config \
--modversion ${f%.pc})
- echo "${f%.pc}=${v:-0}" >> "$controldir"/.provides-pc
+ echo "$pcprefix${f%.pc}=${v:-0}" >> "$controldir"/.provides-pc
done
}
@@ -1175,6 +1175,11 @@ subpkg_provides_so() {
grep -q -w "^$1" "$pkgbasedir"/.control.*/.provides-so 2>/dev/null
}
+subpkg_provides_prefixed_pc() {
+ [ -n "$pcprefix" ] && grep -q -w "^$pcprefix$1" \
+ "$pkgbasedir"/.control.*/.provides-pc 2>/dev/null
+}
+
subpkg_provides_pc() {
grep -q -w "^${1%%[<>=]*}" "$pkgbasedir"/.control.*/.provides-pc \
2>/dev/null
@@ -1243,7 +1248,12 @@ trace_apk_deps() {
# pkg-config depends
for i in $(sort -u "$dir"/.needs-pc 2>/dev/null); do
- if subpkg_provides_pc "$i" \
+ # first check if its provided by same apkbuild
+ grep -q -w "^$pcprefix$i" "$dir"/.provides-pc 2>/dev/null && continue
+
+ if subpkg_provides_prefixed_pc "$i"; then
+ autodeps="$autodeps pc:$pcprefix$i"
+ elif subpkg_provides_pc "$i" \
|| $APK $apkroot info --quiet --installed "pc:$i"; then
local provider=$(apk $apkroot search --quiet "pc:$i")
if list_has "$provider" $depends_dev; then
--
2.20.1
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
pkgname=abuild pkgname=abuild
pkgver=3.3.0 pkgver=3.3.0
_ver=${pkgver%_git*} _ver=${pkgver%_git*}
pkgrel=0 pkgrel=1
pkgdesc="Script to build Alpine Packages" pkgdesc="Script to build Alpine Packages"
url="https://git.alpinelinux.org/cgit/abuild/" url="https://git.alpinelinux.org/cgit/abuild/"
arch="all" arch="all"
...@@ -21,6 +21,7 @@ subpackages="apkbuild-cpan:cpan:noarch apkbuild-gem-resolver:gems:noarch ...@@ -21,6 +21,7 @@ subpackages="apkbuild-cpan:cpan:noarch apkbuild-gem-resolver:gems:noarch
options="suid !check" options="suid !check"
pkggroups="abuild" pkggroups="abuild"
source="https://dev.alpinelinux.org/archive/abuild/abuild-$_ver.tar.xz source="https://dev.alpinelinux.org/archive/abuild/abuild-$_ver.tar.xz
0001-abuild-add-support-for-pkg-config-prefix-pcprefix.patch
" "
builddir="$srcdir/$pkgname-$_ver" builddir="$srcdir/$pkgname-$_ver"
...@@ -68,4 +69,5 @@ _rootbld() { ...@@ -68,4 +69,5 @@ _rootbld() {
mkdir -p "$subpkgdir" mkdir -p "$subpkgdir"
} }
sha512sums="c109a63107a0816117d781c1d3e664dd8d36648b0dc46a9e61d720c9813d50134cd8db4b282a8d27e546b5bd544296088c6d1b6996b230304d5db009f4ba4d52 abuild-3.3.0.tar.xz" sha512sums="c109a63107a0816117d781c1d3e664dd8d36648b0dc46a9e61d720c9813d50134cd8db4b282a8d27e546b5bd544296088c6d1b6996b230304d5db009f4ba4d52 abuild-3.3.0.tar.xz
fc33c946b969b6f862c85582f7ec63cea2fa47d1d13dd10374c7376f297926bea2e0864509235b1c7118d6dc759ca5cfc6487612877f97568f9294e6c67fb86c 0001-abuild-add-support-for-pkg-config-prefix-pcprefix.patch"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment