libpkgconf/pkg.c


Log

Author Commit Date CI Message
Ariadne Conill a3af684d 2025-06-04T11:18:41 libpkgconf: pkg: ensure pkgconf_pkg_new_from_path only loads .pc files Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 0a932483 2025-06-04T10:58:27 libpkgconf: pkg: add functionality for searching and scanning the preloaded package list Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill d4770169 2025-06-04T10:42:11 libpkgconf: pkg: remove freed packages from the preload list Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill aa5813ac 2025-05-31T00:06:57 libpkgconf: path: refactor windows registry PKG_CONFIG_PATH support Now we add to the search list rather than falling back to the registry after the search list fails to find a package. Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 61610c65 2025-05-29T10:08:00 libpkgconf: pkg: refactor pkgconf_pkg_new_from_file into pkgconf_pkg_new_from_path Previously, files would be closed by side effect, which is a somewhat bad API design that trips up various static analysis tools. Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 7fbb8bf2 2025-05-28T22:59:43 libpkgconf: pkg: refactor pkgconf_pkg_free into micro-operations Then use pkg_free_lists and pkg_free_object to clean up package objects which have not been fully initialized. Found-by: GCC -fanalyzer Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill e4e3b45b 2025-05-28T22:32:06 libpkgconf: pkg: gracefully handle NULL parameter to pkgconf_pkg_unref() This could happen when pkgconf_pkg_new_from_file() fails due to error. Found-by: GCC -fanalyzer Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 859402ef 2025-05-28T22:30:34 libpkgconf: pkg: allow pkgconf_pkg_new_from_file to return NULL on malloc error Other errors can already cause pkgconf_pkg_new_from_file() to return NULL, so this doesn't break API. Found-by: GCC -fanalyzer Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 5a188784 2025-05-17T23:49:54 libpkgconf: add support for late-breaking unveil(2) notifications Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 3611b056 2025-03-05T16:54:52 libpkgconf: pkg: consistently use pc_sysrootdir for path munging In some cases, client.sysroot_dir would be used instead of the package-specific override. Fixes: https://github.com/pkgconf/pkgconf/pull/280 Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill a79952a0 2025-02-02T02:30:38 libpkgconf: queue: always walk requires.private lists internally This ensures the internal dependency graph solution is always consistent. We filter out the nodes we don't care about in cases where we need to filter as of commit 86602bc, so now we can just simplify the solving a little bit. Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 86602bc1 2025-02-02T02:10:00 libpkgconf: pkg: skip over private dependency nodes when --static is not explicitly requested Fixes: 197fcad ("queue: add flattening code") Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
David Seifert e6c1d4b8 2024-10-09T19:06:05 ${pcfiledir} should point to parent dir of actual file, not symlink * In situations where we have a real <path1>/foo.pc that uses ${pcfiledir} and a symlink <path2>/foo.pc that points to <path1>/foo.pc, then ${pcfiledir} should resolve to <path1> and not <path2>.
Kai Pastor 883b57df 2024-02-23T15:18:08 Cache packages from explicit file requests
Kai Pastor 78d53ea0 2024-02-23T15:18:08 Revise serials, traversal, flattening Remove the 'traverse_serial' fields which were added in 2.1.1. Use the 'serial' field to track the current traversal. Stop using 'identifier' to sort packages in the flattened solution. Directly construct the flattened solution by a specific walk which also preserves the relative order in Requires and Requires.private. The topological sort is a single list, so don't fill requires_private. Purely private dependencies are marked in dependency flags. The ancestor flag is a pkg property, not a client property.
Kai Pastor 4090ba3e 2024-02-23T15:18:08 Clarify tracing messages
Kai Pastor e7c9bdb3 2024-03-22T07:18:41 Don't print 'required by <VIRTUAL-PACKAGE>'
Ariadne Conill 80b5011e 2024-02-04T03:04:52 Use traverse_serial to short circuit graph evaluation for already visited nodes. In our previous attempt to optimize this problem, we did not track the type of the visit to the node, e.g. whether it came from evaluating Requires or Requires.private, which resulted in some solutions being correctly incalculated due to greedy optimization of the dependency graph. We reintroduce this optimization by adding a second traversal serial as well as re-introducing the PROPF_VISITED node property as well as a new PROPF_VISITED_PRIVATE node property flag. This allows a node to be revisted at maximum two times per traversal level. Co-authored-by: Yi Chou <yich@google.com>
Kai Pastor 45073b74 2023-10-15T12:40:41 Circular deps: track ancestors, not serial
Sam James d454f62c 2023-11-05T22:17:02 libpkgconf: fix -Walloc-size GCC 14 introduces a new -Walloc-size included in -Wextra which gives: ``` libpkgconf/personality.c:260:11: warning: allocation of insufficient size '1' for type 'pkgconf_cross_personality_t' {aka 'struct pkgconf_cross_personality_'} with size '48' [-Walloc-size] libpkgconf/queue.c:46:33: warning: allocation of insufficient size '1' for type 'pkgconf_queue_t' {aka'struct pkgconf_queue_'} with size '16' [-Walloc-size] libpkgconf/client.c:164:33: warning: allocation of insufficient size '1' for type 'pkgconf_client_t' {aka 'struct pkgconf_client_'} with size '120' [-Walloc-size] libpkgconf/path.c:105:14: warning: allocation of insufficient size '1' for type 'pkgconf_path_t' {aka 'struct pkgconf_path_'} with size '24' [-Walloc-size] libpkgconf/path.c:237:22: warning: allocation of insufficient size '1' for type 'pkgconf_path_t' {aka 'struct pkgconf_path_'} with size '24' [-Walloc-size] libpkgconf/tuple.c:239:34: warning: allocation of insufficient size '1' for type 'pkgconf_tuple_t' {aka 'struct pkgconf_tuple_'} with size '24' [-Walloc-size] libpkgconf/dependency.c:133:13: warning: allocation of insufficient size '1' for type 'pkgconf_dependency_t' {aka 'struct pkgconf_dependency_'} with size '44' [-Walloc-size] libpkgconf/dependency.c:472:17: warning: allocation of insufficient size '1' for type 'pkgconf_dependency_t' {aka 'struct pkgconf_dependency_'} with size '44' [-Walloc-size] libpkgconf/fragment.c:146:22: warning: allocation of insufficient size '1' for type 'pkgconf_fragment_t' {aka 'struct pkgconf_fragment_'} with size '24' [-Walloc-size] libpkgconf/fragment.c:195:22: warning: allocation of insufficient size '1' for type 'pkgconf_fragment_t' {aka 'struct pkgconf_fragment_'} with size '24' [-Walloc-size] libpkgconf/fragment.c:356:14: warning: allocation of insufficient size '1' for type 'pkgconf_fragment_t' {aka 'struct pkgconf_fragment_'} with size '24' [-Walloc-size] libpkgconf/pkg.c:422:13: warning: allocation of insufficient size '1' for type 'pkgconf_pkg_t' {aka 'struct pkgconf_pkg_'} with size '188' [-Walloc-size] libpkgconf/client.c:164:33: warning: allocation of insufficient size '1' for type 'pkgconf_client_t' {aka 'struct pkgconf_client_'} with size '224' [-Walloc-size] libpkgconf/personality.c:260:11: warning: allocation of insufficient size '1' for type 'pkgconf_cross_personality_t' {aka 'struct pkgconf_cross_personality_'} with size '96' [-Walloc-size] libpkgconf/dependency.c:133:13: warning: allocation of insufficient size '1' for type 'pkgconf_dependency_t' {aka 'struct pkgconf_dependency_'} with size '80' [-Walloc-size] libpkgconf/dependency.c:472:17: warning: allocation of insufficient size '1' for type 'pkgconf_dependency_t' {aka 'struct pkgconf_dependency_'} with size '80' [-Walloc-size] libpkgconf/path.c:105:14: warning: allocation of insufficient size '1' for type 'pkgconf_path_t' {aka 'struct pkgconf_path_'} with size '48' [-Walloc-size] libpkgconf/path.c:237:22: warning: allocation of insufficient size '1' for type 'pkgconf_path_t' {aka 'struct pkgconf_path_'} with size '48' [-Walloc-size] libpkgconf/queue.c:46:33: warning: allocation of insufficient size '1' for type 'pkgconf_queue_t' {aka 'struct pkgconf_queue_'} with size '32' [-Walloc-size] libpkgconf/tuple.c:239:34: warning: allocation of insufficient size '1' for type 'pkgconf_tuple_t' {aka 'struct pkgconf_tuple_'} with size '48' [-Walloc-size] libpkgconf/fragment.c:146:22: warning: allocation of insufficient size '1' for type 'pkgconf_fragment_t' {aka 'struct pkgconf_fragment_'} with size '48' [-Walloc-size] libpkgconf/fragment.c:195:22: warning: allocation of insufficient size '1' for type 'pkgconf_fragment_t' {aka 'struct pkgconf_fragment_'} with size '48' [-Walloc-size] libpkgconf/fragment.c:356:14: warning: allocation of insufficient size '1' for type 'pkgconf_fragment_t' {aka 'struct pkgconf_fragment_'} with size '48' [-Walloc-size] libpkgconf/pkg.c:422:13: warning: allocation of insufficient size '1' for type 'pkgconf_pkg_t' {aka 'struct pkgconf_pkg_'} with size '360' [-Walloc-size] ``` The calloc prototype is: ``` void *calloc(size_t nmemb, size_t size); ``` So, just swap the number of members and size arguments to match the prototype, as we're initialising 1 struct of size `sizeof(struct ...)`. GCC then sees we're not doing anything wrong. The only exception there is for argv which I fixed while at it. Signed-off-by: Sam James <sam@gentoo.org>
Colin Gillespie 5aeb469b 2023-09-03T16:19:14 libpkgconf: fix memory leak Signed-off-by: Colin Gillespie <colin@cgillespie.xyz>
Ariadne Conill ee702658 2023-09-02T21:05:03 use PRIu64 format specifiers for some uint64 identifiers in trace logging Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Colin Gillespie 66994f15 2023-08-19T07:57:48 cli: fix --modversion not showing version in various cases There are numerous edge cases where version is wrong or missing when matching the dependency queue to resolved packages. This adds the dependency name as it appears in the dependency queue to each package as it is resolved, allowing for a simple and correct comparison when printing. Signed-off-by: Colin Gillespie <colin@cgillespie.xyz>
Ariadne Conill a265f8a4 2023-08-17T11:53:07 libpkgconf: pkg: fix long-standing bug where -uninstalled pkg-config files would have the wrong identifier
Ariadne Conill 5d0e2f50 2023-08-04T08:19:42 Track packages using a lifetime unique identifier Use that identifier to cancel graph edges rather than the number of hits, which biases the earliest edge rather than the latest.
Taylor R Campbell 212c8586 2023-03-17T19:32:58 Avoid undefined behaviour with the ctype(3) functions. fix https://github.com/pkgconf/pkgconf/issues/291 As defined in the C standard: In all cases the argument is an int, the value of which shall be representable as an unsigned char or shall equal the value of the macro EOF. If the argument has any other value, the behavior is undefined. This is because they're designed to work with the int values returned by getc or fgetc; they need extra work to handle a char value. If EOF is -1 (as it almost always is), with 8-bit bytes, the allowed inputs to the ctype(3) functions are: {-1, 0, 1, 2, 3, ..., 255}. However, on platforms where char is signed, such as x86 with the usual ABI, code like char *ptr = ...; ... isspace(*ptr) ... may pass in values in the range: {-128, -127, -126, ..., -2, -1, 0, 1, ..., 127}. This has two problems: 1. Inputs in the set {-128, -127, -126, ..., -2} are forbidden. 2. The non-EOF byte 0xff is conflated with the value EOF = -1, so even though the input is not forbidden, it may give the wrong answer. Casting char to unsigned int first before passing the result to ctype(3) doesn't help: inputs like -128 are unchanged by this cast, because (on a two's-complement machine with 32-bit int and unsigned int), converting the signed char with integer value -128 to unsigned int gives integer value 2^32 - 128 = 0xffffff80, which is out of range, and which is converted in int back to -128, which is also out of range. It is necessary to cast char inputs to unsigned char first; you can then cast to unsigned int if you like but there's no need because the functions will always convert the argument to int by definition. So the above fragment needs to be: char *ptr = ...; ... isspace((unsigned char)*ptr) ... This patch changes unsigned int casts to unsigned char casts, and adds unsigned char casts where they are missing.
Ariadne Conill d9e507cc 2023-01-21T21:31:38 pkg: do not do serial checks for flattened solutions, as they are already flattened
Ariadne Conill e2a12fd4 2023-01-21T20:39:53 main: reset solver when solving for library groups
Doug Freed 08db74c4 2022-10-12T21:43:52 pkg: make pkgconf_compare_version consistent The code taken from rpmvercmp in pkg-config returns -1 if a is less than b, 0 if a is equal to b, and 1 if a is greater than b. This matches the expectations of the comparison operators that use this function. However, the tilde handling, the NULL handling, and the docstring all do the opposite. This fixes the tilde handling, the NULL handling, and the docstring to match the behavior of the rpmvercmp code and the expectations of the comparison operators.
Ariadne Conill ced9bee6 2022-08-16T18:51:11 pkg: remove dead store in pkgconf_compare_version
Ariadne Conill 696124b6 2022-08-12T12:36:21 pkg: add support for parsing the URL from pc files
Ariadne Conill aa99ddf7 2022-08-11T15:52:33 pkg: add Copyright and Maintainer fields These are helpful pieces of information for BOM documents generated by pkgconf.
Ariadne Conill 28b5d57b 2022-08-08T10:25:24 pkg: free SPDX license tags when a package is destroyed
Ariadne Conill 7e9aa7e1 2022-08-08T09:56:28 pkg: do not break cycles across dependency lists
Ariadne Conill 69f630aa 2022-08-08T09:34:45 pkg: only advance serial if we are actually traversing from a root
Ariadne Conill 0e05308f 2022-08-07T04:35:29 pkg: add SPDX license assertion to pkgconf builtin
Ariadne Conill 1389aa05 2022-08-07T04:21:22 pkg: add pkgconf_pkg_t.license field The pkgconf_pkg_t.license field maps to the new License keyword, and should be an SPDX license expression.
Ariadne Conill 7edfdbff 2022-08-07T01:29:21 pkg: upgrade circular reference trace to a warning
Ariadne Conill 662668d0 2022-08-07T01:09:07 pkg: add trace log when breaking a circular reference
Dylan Baker 1cfa2d1e 2022-08-04T15:16:44 pkg: prevent circular ownership Otherwise in a case where A references B, and B references A, A and B will have mutual ownership of each other and prevent each other from being free'd.
Dylan Baker 49342057 2022-08-04T11:50:50 pkg: add name of pkg being refed/unrefed to debug outpu
Dylan Baker a391f9b6 2022-08-03T16:32:35 pkg: use goto cleanup idiom
Dylan Baker 4a1119aa 2022-08-03T15:43:04 dependency: Fix reference counting of dependency_addraw We only want a reference to be added for the value inserted into the list, not the one returned. The returned one is unowned until it reaches the public dependency_add function, which returns an owned pointer instead. This makes things semantically more correct. Unfortunately, this means in a few cases we have to write some ugly code like: ```c pkgconf_dependency_t *dep = pkgcond_dependency_add("args"); pkgconf_dependency_unref(dep->owner, dep); ```
Ariadne Conill f8aefea7 2022-07-26T17:13:15 pkg: add flags argument to pkgconf_pkg_new_from_file
Ariadne Conill 297e18f2 2022-07-26T17:08:48 tuple: add flags parameter to pkgconf_tuple_parse
Ariadne Conill b0802cb3 2022-06-26T19:41:31 Revert "pkgconf_pkg_parser_value_set(): fix code-path ordering bug." This reverts commit 13fe4c8c589be99b12db62b053c38124afecf2d7.
Ariadne Conill a61193c7 2022-06-26T19:16:00 pkg: fix sysroot_dir logic for github 213
Ariadne Conill 5817e884 2022-06-26T07:22:56 pkg: track the number of hits a package has gotten while solving for dependencies
Ariadne Conill 6ae17bd0 2022-06-26T06:05:40 pkg: split pkgconf_pkg_traverse into a serial-modifying version
Ariadne Conill 2b82a4f6 2021-10-07T00:23:35 use a serial instead of PKGCONF_PKG_PROPF_SEEN
Ariadne Conill c547edd0 2021-10-06T11:52:18 deconst the client on pkgconf_dependency_add()
Ariadne Conill ceece2c1 2021-07-24T19:47:33 pkg: fix up comment about issue #213 workaround
Sandro Mani ed86f2dd 2021-06-23T14:09:05 Don't prepend sysroot_dir if pkg-config file lies outside of sysroot_dir
midipix 13fe4c8c 2021-06-13T18:38:18 pkgconf_pkg_parser_value_set(): fix code-path ordering bug. Prior to this commit, the code path responsible for prefix redefinition (motivated by --define-prefix or otherwise) was visited more than once, specifically since the check ignored pkg->owner->prefix_varname.
Christoph Reiter 4f73f6a1 2021-03-20T11:01:14 Rework path handling on native Windows The current approach was to parse the .pc and, detect the prefix, throw everything together and at the end replace all \ with / to not produce invalid escape sequences. This has the problem that escaping in .pc files is ignored and no longer possible. Also in case the prefix path has a space in it the result would be invalid because of missing escaping. This changes the following things: * We no longer normalize values at the end. Instead we assume .pc files use "/" as a directory separator or "\\", same format as under Unix. "\" alone no longer works. This shouldn't be a problem since most build tools produce .pc files with "/" like meson, cmake, autotools. * When injecting the prefix at runtime we convert the prefix to use "/" and escape spaces so that in combination with the .pc content the result is a valid escaped path value again. This patch has been used in MSYS2 for some months now. See #212
Ryan Scott ab404bc2 2021-02-03T06:54:52 Fix #209 This commit fixes #209 by applying the suggestion from https://github.com/pkgconf/pkgconf/issues/209#issuecomment-771609136.
Christoph Reiter 869f2a84 2020-11-28T16:01:16 pkgconf_pkg_parser_version_func: fix whitespace detection In case the version string has no whitespace then strcspn() returns strlen() of the input, so whitespace is only found if len != strlen. This fixes invalid warnings when parsing version fields.
Tobias Stoeckmann f818a69b 2020-06-03T21:42:25 libpkgconf: pkg: fix out ouf boundary access If a file with a matching "uninstalled" name exists but cannot be parsed, an invalid memory area is accessed. How to reproduce: $ touch poc-uninstalled.pc $ PKG_CONFIG_PATH=. pkgconf poc
Ariadne Conill c613eb5c 2020-05-26T13:41:39 libpkgconf: pkg: use a second pointer for demunging windows paths
Ariadne Conill e70b536e 2020-05-26T11:01:46 libpkgconf: pkg: when generating a search path, use the correct path separator Before, this could result in generated paths like C:\foo\pkgconfig/bar.pc on Windows.
Ariadne Conill 0253fddc 2020-05-26T07:41:16 libpkgconf: pkg: fix computation of pkgconf_pkg_t.id on Windows. Windows allows both \ and / as valid path characters. A computed path such as C:\development\libfoo\pkgconfig/foo.pc will result in a computed pkgconf_pkg_t.id of "pkgconfig/foo". Accordingly, correct the path normalization for checking for / after the \ path has been dealt with in all cases.
Ben 011db1bb 2020-04-26T17:28:03 Do not complain about malformed whitespace from \n on Version line Every version line has a newline at the end; the malformed whitespace checker should just check for trailing spaces and tabs. Resolves https://todo.sr.ht/~kaniini/pkgconf/15
Ariadne Conill 382a89c1 2020-05-24T14:18:16 pkg: pkgconf_compare_version(): do not return levenshtein distance in strcmp() case
Ariadne Conill c10f6999 2019-07-12T06:35:48 libpkgconf: pkg: generate diagnostic for and trim malformed versions
Alexander Tsoy db9c1e96 2019-06-07T19:19:28 fix the order of header includes config.h should be included before stdinc.h, otherwise large file support is not enabled. Downstream bug: https://bugs.gentoo.org/687548
William Pitcock 6854265f 2019-01-14T13:48:23 libpkgconf: pkg: use pkgconf_fragment_copy_list() to clean up cflags gathering logic (closes #20)
William Pitcock 0ae52182 2019-01-14T13:11:59 libpkgconf: pkg: clean up pkgconf_parser interactions (closes #13)
Ignacio Casal Quinteiro 2c059710 2018-09-17T15:20:28 Canonicalize paths before using them This fixes a problem where on Windows the prefix would not match if the prefix is generated with backslashes and the rest of the variables use normal slashes
Ignacio Casal Quinteiro 9f17da92 2018-09-17T15:20:00 On Windows the path prefix should be checked caseless
William Pitcock 6f05fec4 2018-06-16T16:35:44 pkg: give a correctly sized vtable to the parser
William Pitcock 1244f8f8 2018-05-09T21:21:39 libpkgconf: refactor out the rfc822 message parser so that the cross-personality code can share it
William Pitcock f702967d 2018-05-09T19:56:30 libpkgconf: pkg: refactor pkgconf_pkg_new_from_file to prepare to factor out the rfc822 parser
William Pitcock 0f17a4f3 2018-05-09T19:33:12 libpkgconf: pkg: mark owning client earlier, to allow for refactoring out the rfc822 parser
William Pitcock 6b0e346c 2018-05-09T17:07:26 libpkgconf: refactor building the dir lists into separate concerns
Leorize f36ccc1d 2018-04-03T12:46:35 libpkgconf: add support for Haiku client: use BELIBRARIES On Haiku, BELIBRARIES is the equivalent to LIBRARY_PATH on many other systems, while LIBRARY_PATH is instead the LD_LIBRARY_PATH of Haiku. pkg: bootstrap package search paths with Haiku's find_paths This commit adds build_default_pkgconfig_path. The function appends to the list given the default pkgconfig paths, and will supersede get_default_pkgconfig_path
William Pitcock 7e9ed692 2018-03-18T18:04:02 libpkgconf: pkg: skip over -I cflags from Requires.internal nodes when building a cflags list
William Pitcock f03ec3ff 2018-03-18T15:46:53 libpkgconf: add support for proposed Requires.internal extension
TingPing a50bf726 2018-03-08T05:16:18 Fix incorrect comment (#178)
TingPing 60c05f56 2018-03-08T05:00:22 Improve prefix rewriting on Windows (#177) * cli: Default to rewriting prefix on Windows This matches `pkg-config` behavior * libpkgconf: Rewrite the prefix of all variables
William Pitcock 0d523391 2018-02-08T14:25:47 libpkgconf: pkg: ensure the dependency node has a solution associated with it Sometimes this did not happen, e.g. when using providers as the solution (ref #172).
William Pitcock 4a09efe0 2018-01-05T11:38:21 libpkgconf: pkg: fix harmless gcc7 compiler warning
William Pitcock a42f265c 2017-12-21T02:18:50 libpkgconf: pkg: include system libdir and includedir search paths as variables in builtin packages (closes #165)
William Pitcock e0bf4009 2017-12-12T00:21:21 libpkgconf: pkg: rename pkgconf_pkg_t.requires to pkgconf_pkg_t.required (closes #154) C++20 makes requires a keyword, so we need to not use it in headers.
William Pitcock f7406afc 2017-12-05T18:04:42 libpkgconf: pkg: do not mention PKG_CONFIG_SKIP_CONFLICTS env var when simplified errors are requested (closes #134)
William Pitcock 74d58d1b 2017-12-05T17:34:01 libpkgconf: pkg: cache solutions for already solved dependency graph nodes in almost all cases, we partially solve the dependency graph multiple times, which just wastes resources. if we record the solution to a given dependency node, further iterations can make use of the previous solution without having to solve it again. this is safe because all provides entries (including virtuals) are knowable prior to solving the dependency graph the first time. a nice side effect of this is that all packages are preloaded when querying information about them (--cflags and related commands).
William Pitcock 44b4b126 2017-12-05T17:32:00 libpkgconf: pkg: record which pkgconf_client_t owns each pkgconf_pkg_t object
William Pitcock 4c0cc292 2017-12-05T17:24:57 libpkgconf: pkg: add refcount debugging
William Pitcock 4589274c 2017-10-16T12:56:19 libpkgconf: start to remove PKGCONF_BUFSIZE allocations from the stack. (closes #149) Patch by Karen Arutyunov.
William Pitcock 420c62e1 2017-09-19T21:58:54 libpkgconf: pkg: refactor parser harness to allow providing warnings, provide warning for improper fragment list
William Pitcock e9fd43ca 2017-09-17T23:38:25 libpkgconf: clean up header includes (closes #137)
William Pitcock f808300a 2017-09-13T14:56:10 libpkgconf: pkg: some elements of virtual packages should be freed as they have heap-allocated portions (closes #132)
William Pitcock 9b55fc3c 2017-09-13T14:41:00 libpkgconf: cache: refactor the way package objects are marked as cached to avoid memory leaks (#133)
William Pitcock b7839f6b 2017-09-08T20:06:52 libpkgconf: pkg: pkgconf_pkg_scan_dir: remove unnecessary static declaration of filebuf
William Pitcock 2681c29e 2017-09-08T20:04:49 libpkgconf: pkg: determine_prefix: use caller-provided buffer for reentrancy
William Pitcock adae7044 2017-09-08T20:01:34 libpkgconf: pkg: get_default_pkgconfig_path: use caller-supplied buffer for reentrancy
William Pitcock 615bab3d 2017-09-08T19:48:31 libpkgconf: pkg: pkgconf_pkg_report_graph_error(): move already_sent_notice to pkgconf_client_t
William Pitcock b0ef708e 2017-09-08T19:23:04 libpkgconf: pkg: pkg_get_parent_dir(): use caller-supplied buffer instead of a static buffer to make reentrant
William Pitcock 47ce9765 2017-09-08T18:44:28 libpkgconf: define SIZE_FMT_SPECIFIER on POSIX and Windows platforms and use it in place of %zu The MSVCRT runtime as used on Windows does not support %zu, but instead recommends %Iu. As we want to remain portable to other runtimes, even on Windows, we do not use %Iu, but instead expand it logically to either %lu or %llu depending on if it's _WIN32 or _WIN64 headers. On POSIX, we assume C99 support is available and always use %zu, as pkgconf has never supported anything earlier than C99 officially. Closes #125.
William Pitcock 864b14e5 2017-06-16T21:06:01 Merge branch 'cmakeify' of github.com:dankegel/pkgconf
William Pitcock 03f78410 2017-06-16T15:27:23 libpkgconf: pkg: windows can use either \ or / as directory separators ref #118