Don't prepend sysroot_dir if pkg-config file lies outside of sysroot_dir (#1974883)

This commit is contained in:
Sandro Mani 2021-06-23 14:05:47 +02:00
parent e0de8e8cba
commit 928e1c3a2c
2 changed files with 114 additions and 1 deletions

View File

@ -24,7 +24,7 @@
Name: pkgconf
Version: 1.7.4
Release: 1%{?dist}
Release: 2%{?dist}
Summary: Package compiler and linker metadata toolkit
License: ISC
@ -36,6 +36,11 @@ Source0: https://distfiles.dereferenced.org/%{name}/%{name}-%{version}.ta
Source1: platform-pkg-config.in
Source2: pkg-config.in
# Don't prepend sysroot_dir if pkg-config file lies outside of sysroot_dir
# See https://github.com/pkgconf/pkgconf/issues/213
# See https://bugzilla.redhat.com/show_bug.cgi?id=1974883
Patch0: pkgconf_sysrootdir.patch
BuildRequires: gcc
BuildRequires: make
@ -211,6 +216,9 @@ rm -rf %{buildroot}%{_datadir}/aclocal
%endif
%changelog
* Wed Jun 23 2021 Sandro Mani <manisandro@gmail.com> - 1.7.4-2
- Don't prepend sysroot_dir if pkg-config file lies outside of sysroot_dir (#1974883)
* Wed Apr 28 2021 Neal Gompa <ngompa13@gmail.com> - 1.7.4-1
- Update to 1.7.4
- Don't add /usr/local to syspaths (#1953348)

105
pkgconf_sysrootdir.patch Normal file
View File

@ -0,0 +1,105 @@
diff -rupN pkgconf-1.7.4/libpkgconf/pkg.c pkgconf-1.7.4-new/libpkgconf/pkg.c
--- pkgconf-1.7.4/libpkgconf/pkg.c 2021-03-18 12:39:45.000000000 +0100
+++ pkgconf-1.7.4-new/libpkgconf/pkg.c 2021-06-23 13:44:22.165843998 +0200
@@ -378,6 +378,16 @@ pkgconf_pkg_new_from_file(pkgconf_client
pkg->pc_filedir = pkg_get_parent_dir(pkg);
pkgconf_tuple_add(client, &pkg->vars, "pcfiledir", pkg->pc_filedir, true);
+ /* If pc_filedir is outside of sysroot_dir, clear pc_filedir
+ /* See https://github.com/pkgconf/pkgconf/issues/213
+ */
+ if (client->sysroot_dir && strncmp(pkg->pc_filedir, client->sysroot_dir, strlen(client->sysroot_dir)))
+ {
+ free(client->sysroot_dir);
+ client->sysroot_dir = NULL;
+ pkgconf_client_set_sysroot_dir(client, NULL);
+ }
+
/* make module id */
if ((idptr = strrchr(pkg->filename, PKG_DIR_SEP_S)) != NULL)
idptr++;
diff -rupN pkgconf-1.7.4/tests/regress.sh pkgconf-1.7.4-new/tests/regress.sh
--- pkgconf-1.7.4/tests/regress.sh 2019-07-12 13:10:54.000000000 +0200
+++ pkgconf-1.7.4-new/tests/regress.sh 2021-06-23 14:03:28.363283396 +0200
@@ -112,7 +112,7 @@ libs_never_mergeback_body()
export PKG_CONFIG_PATH="${selfdir}/lib1"
atf_check \
-o inline:"-L/test/bar/lib -lfoo1 \n" \
- pkgconf --libs prefix-foo1
+ pkgconf --libs prefix-foo1
atf_check \
-o inline:"-L/test/bar/lib -lfoo1 -lfoo2 \n" \
pkgconf --libs prefix-foo1 prefix-foo2
@@ -160,9 +160,9 @@ isystem_munge_order_body()
isystem_munge_sysroot_body()
{
- export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR='/test'
+ export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR="${selfdir}"
atf_check \
- -o match:"-isystem /test/opt/bad/include" \
+ -o match:"-isystem ${selfdir}/opt/bad/include" \
pkgconf --cflags isystem
}
@@ -176,9 +176,9 @@ idirafter_munge_order_body()
idirafter_munge_sysroot_body()
{
- export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR='/test'
+ export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR="${selfdir}"
atf_check \
- -o match:"-idirafter /test/opt/bad/include" \
+ -o match:"-idirafter ${selfdir}/opt/bad/include" \
pkgconf --cflags idirafter
}
@@ -195,20 +195,16 @@ pcpath_body()
export PKG_CONFIG_PATH="${selfdir}/lib2"
atf_check \
-o inline:"-fPIC -I/test/include/foo \n" \
- pkgconf --cflags ${selfdir}/lib3/bar.pc
+ pkgconf --cflags ${selfdir}/lib3/bar.pc
}
sysroot_munge_body()
{
- export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR="/sysroot"
+ sed "s|/sysroot/|${selfdir}/|g" ${selfdir}/lib1/sysroot-dir.pc > ${selfdir}/lib1/sysroot-dir-selfdir.pc
+ export PKG_CONFIG_PATH="${selfdir}/lib1" PKG_CONFIG_SYSROOT_DIR="${selfdir}"
atf_check \
- -o inline:"-L/sysroot/lib -lfoo \n" \
- pkgconf --libs sysroot-dir
-
- export PKG_CONFIG_SYSROOT_DIR="/sysroot2"
- atf_check \
- -o inline:"-L/sysroot2/sysroot/lib -lfoo \n" \
- pkgconf --libs sysroot-dir
+ -o inline:"-L${selfdir}/lib -lfoo \n" \
+ pkgconf --libs sysroot-dir-selfdir
}
virtual_variable_body()
@@ -244,8 +240,8 @@ malformed_quoting_body()
explicit_sysroot_body()
{
- export PKG_CONFIG_SYSROOT_DIR=/sysroot
- atf_check -o inline:"/sysroot/usr/share/test\n" \
+ export PKG_CONFIG_SYSROOT_DIR=${selfdir}
+ atf_check -o inline:"${selfdir}/usr/share/test\n" \
pkgconf --with-path="${selfdir}/lib1" --variable=pkgdatadir explicit-sysroot
}
diff -rupN pkgconf-1.7.4/tests/test_env.sh.in pkgconf-1.7.4-new/tests/test_env.sh.in
--- pkgconf-1.7.4/tests/test_env.sh.in 2019-07-12 15:23:36.000000000 +0200
+++ pkgconf-1.7.4-new/tests/test_env.sh.in 2021-06-23 13:05:03.614916117 +0200
@@ -24,7 +24,7 @@ done
selfdir="@abs_top_srcdir@/tests"
LIBRARY_PATH_ENV="LIBRARY_PATH"
PATH_SEP=":"
-SYSROOT_DIR="${selfdir}/test"
+SYSROOT_DIR="${selfdir}"
case "$(uname -s)" in
Msys|CYGWIN*) PATH_SEP=";";;
Haiku) LIBRARY_PATH_ENV="BELIBRARIES";;