summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO4
-rw-r--r--libpkgconf/README-DEV9
-rw-r--r--libpkgconf/dont-drop-fragments.patch28
-rw-r--r--libpkgconf/libpkgconf/fragment.c17
-rw-r--r--libpkgconf/manifest6
-rw-r--r--libpkgconf/tests/api/driver.c10
-rw-r--r--libpkgconf/tests/api/testscript28
7 files changed, 81 insertions, 21 deletions
diff --git a/TODO b/TODO
index 1c33134..da80960 100644
--- a/TODO
+++ b/TODO
@@ -1,9 +1,5 @@
On the revision:
-- Disable the success build emails.
-
-- Remove the redundant empty comment line in tests/basic/driver.c.
-
On the release:
- Use legal{} target type for legal documentation (LICENSE, AUTHORS, etc).
diff --git a/libpkgconf/README-DEV b/libpkgconf/README-DEV
index 06cd737..1a1dd23 100644
--- a/libpkgconf/README-DEV
+++ b/libpkgconf/README-DEV
@@ -40,10 +40,7 @@ $ mv fragment.c fragment.c.orig
$ cp fragment.c.orig fragment.c
$ git apply dont-merge-fragments.patch
-
-Note that the patch is produces by the following command:
-
-$ git diff >dont-merge-fragments.patch
+$ git apply dont-drop-fragments.patch
Also fix the MinGW GCC 10 -Wformat warning:
@@ -51,3 +48,7 @@ $ mv stdinc.h stdinc.h.orig
$ cp stdinc.h.orig stdinc.h
$ git apply fix-mingw-wformat-warning.patch
+
+Note that the patches are produces by commands similar to the following:
+
+$ git diff >dont-merge-fragments.patch
diff --git a/libpkgconf/dont-drop-fragments.patch b/libpkgconf/dont-drop-fragments.patch
new file mode 100644
index 0000000..82b3935
--- /dev/null
+++ b/libpkgconf/dont-drop-fragments.patch
@@ -0,0 +1,28 @@
+diff --git a/libpkgconf/libpkgconf/fragment.c b/libpkgconf/libpkgconf/fragment.c
+index 37830c8..42d5f95 100644
+--- a/libpkgconf/libpkgconf/fragment.c
++++ b/libpkgconf/libpkgconf/fragment.c
+@@ -341,13 +341,16 @@ pkgconf_fragment_copy(const pkgconf_client_t *client, pkgconf_list_t *list, cons
+ {
+ pkgconf_fragment_t *frag;
+
+- if ((frag = pkgconf_fragment_exists(list, base, client->flags, is_private)) != NULL)
+- {
+- if (pkgconf_fragment_should_merge(frag))
+- pkgconf_fragment_delete(list, frag);
+- }
+- else if (!is_private && !pkgconf_fragment_can_merge_back(base, client->flags, is_private) && (pkgconf_fragment_lookup(list, base) != NULL))
+- return;
++ if (!(client->flags & PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS))
++ {
++ if ((frag = pkgconf_fragment_exists(list, base, client->flags, is_private)) != NULL)
++ {
++ if (pkgconf_fragment_should_merge(frag))
++ pkgconf_fragment_delete(list, frag);
++ }
++ else if (!is_private && !pkgconf_fragment_can_merge_back(base, client->flags, is_private) && (pkgconf_fragment_lookup(list, base) != NULL))
++ return;
++ }
+
+ frag = calloc(sizeof(pkgconf_fragment_t), 1);
+
diff --git a/libpkgconf/libpkgconf/fragment.c b/libpkgconf/libpkgconf/fragment.c
index 37830c8..42d5f95 100644
--- a/libpkgconf/libpkgconf/fragment.c
+++ b/libpkgconf/libpkgconf/fragment.c
@@ -341,13 +341,16 @@ pkgconf_fragment_copy(const pkgconf_client_t *client, pkgconf_list_t *list, cons
{
pkgconf_fragment_t *frag;
- if ((frag = pkgconf_fragment_exists(list, base, client->flags, is_private)) != NULL)
- {
- if (pkgconf_fragment_should_merge(frag))
- pkgconf_fragment_delete(list, frag);
- }
- else if (!is_private && !pkgconf_fragment_can_merge_back(base, client->flags, is_private) && (pkgconf_fragment_lookup(list, base) != NULL))
- return;
+ if (!(client->flags & PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS))
+ {
+ if ((frag = pkgconf_fragment_exists(list, base, client->flags, is_private)) != NULL)
+ {
+ if (pkgconf_fragment_should_merge(frag))
+ pkgconf_fragment_delete(list, frag);
+ }
+ else if (!is_private && !pkgconf_fragment_can_merge_back(base, client->flags, is_private) && (pkgconf_fragment_lookup(list, base) != NULL))
+ return;
+ }
frag = calloc(sizeof(pkgconf_fragment_t), 1);
diff --git a/libpkgconf/manifest b/libpkgconf/manifest
index 6d3c37a..1fc3170 100644
--- a/libpkgconf/manifest
+++ b/libpkgconf/manifest
@@ -1,6 +1,6 @@
: 1
name: libpkgconf
-version: 1.6.3+4
+version: 1.6.3+5
project: pkgconf
summary: C library for retriving pkg-config compiler and linker flags
license: ISC AND MIT ; ISC for the most of original files.
@@ -12,7 +12,7 @@ src-url: https://git.build2.org/cgit/packaging/pkgconf/pkgconf/tree/libpkgconf/
package-url: https://git.build2.org/cgit/packaging/pkgconf/
email: packaging@build2.org ; Report issues at https://todo.sr.ht/~kaniini/pkgconf.
package-email: packaging@build2.org ; Mailing list.
-build-email: builds@build2.org
-builds: all
+build-warning-email: builds@build2.org
+builds: host
depends: * build2 >= 0.11.0
depends: * bpkg >= 0.11.0
diff --git a/libpkgconf/tests/api/driver.c b/libpkgconf/tests/api/driver.c
index 15b0685..447a223 100644
--- a/libpkgconf/tests/api/driver.c
+++ b/libpkgconf/tests/api/driver.c
@@ -24,7 +24,6 @@ error_handler (const char* msg, const pkgconf_client_t* c, const void* d)
/* Seems it always have a trailing newline char. Probably it still a good
* idea to check if it is. Let's see if it ever be missed.
- *
*/
fprintf (stderr, "%s", msg);
return true;
@@ -127,7 +126,9 @@ main (int argc, const char* argv[])
int r = 1;
int max_depth = 2000;
- pkgconf_client_set_flags (c, PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS);
+ const int pkgconf_flags = PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS;
+
+ pkgconf_client_set_flags (c, pkgconf_flags);
pkgconf_pkg_t* p = pkgconf_pkg_find (c, path);
if (p != NULL)
@@ -138,7 +139,9 @@ main (int argc, const char* argv[])
{
case dump_cflags:
{
- pkgconf_client_set_flags (c, PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
+ pkgconf_client_set_flags (c,
+ pkgconf_flags |
+ PKGCONF_PKG_PKGF_SEARCH_PRIVATE);
pkgconf_list_t list = PKGCONF_LIST_INITIALIZER;
e = pkgconf_pkg_cflags (c, p, &list, max_depth);
@@ -152,6 +155,7 @@ main (int argc, const char* argv[])
case dump_libs:
{
pkgconf_client_set_flags (c,
+ pkgconf_flags |
PKGCONF_PKG_PKGF_SEARCH_PRIVATE |
PKGCONF_PKG_PKGF_MERGE_PRIVATE_FRAGMENTS);
diff --git a/libpkgconf/tests/api/testscript b/libpkgconf/tests/api/testscript
index 0382f87..39341ba 100644
--- a/libpkgconf/tests/api/testscript
+++ b/libpkgconf/tests/api/testscript
@@ -143,3 +143,31 @@
Security
EOO
}
+
+: no-drop
+:
+: Test that the -framework options are not dropped.
+:
+{
+ +cat <<EOI >=libfoo.pc
+ Name: libfoo
+ Description: Foo library
+ Version: 1.0
+ Libs: -L/Users/build/install/lib -lcurl -framework Cocoa -framework IOKit -framework CoreFoundation
+ EOI
+
+ f = $~/libfoo.pc
+
+ : libs
+ :
+ $* --libs $f >>EOO
+ L /Users/build/install/lib
+ l curl
+ -framework
+ Cocoa
+ -framework
+ IOKit
+ -framework
+ CoreFoundation
+ EOO
+}