libpkgconf


Log

Author Commit Date CI Message
Ariadne Conill 38053395 2025-03-05T17:03:55 pkgconf 2.4.0. 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 680a7c53 2025-03-05T15:47:29 libpkgconf: add placeholder flags fields to all public objects that lacked them Since we are breaking ABI anyway, we may as well try to make the ABI break more futureproof. Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 1dc078f0 2025-03-05T15:39:26 libpkgconf: fragment: add padding bytes to length estimation for child fragments Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 4f78e449 2025-03-05T15:36:56 libpkgconf: fragment: track terminating fragments like -Wl,--end-group Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 6ec7df4d 2025-03-05T15:03:52 libpkgconf: fragment: plug memory leak when child fragments are present Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 543ab926 2025-03-05T15:00:54 libpkgconf: fragment: track text fragments as a tree instead of a flat list This allows us to have more insight into the relationships between text fragments, for example linker groups. Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 5fbabf14 2025-03-04T14:25:43 libpkgconf: fragment: add -nodefaultlibs to special flags list Related: https://github.com/pkgconf/pkgconf/issues/371 Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 792e2c62 2025-02-04T17:00:30 libpkgconf: path: get rid of unused win32-specific variable Windows builder was warning about this. Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill e8dc0e20 2025-02-04T16:57:14 libpkgconf: parser: finalize the parsing buffer when done with it Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 5fe482b2 2025-02-04T16:49:18 libpkgconf: buffer: pkgconf_buffer_lastc should always be 0 on an empty buffer Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 88258bd9 2025-02-04T16:31:01 libpkgconf: buffer: round up buffer allocations to 4KB granules Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill a4de2930 2025-02-03T05:31:40 libpkgconf: fileio: use bool for fgetline return type instead of a pointer (we internally look at the raw buffer anyway) Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 6f1055d0 2025-02-02T03:06:12 libpkgconf: queue: stop considering the lack of a pre-loaded match in a dependency node as a fatal error This is a performance optimization, not an absolute source of truth. We will evaluate the dependency node lazily in these cases anyway... 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>
Ariadne Conill d0f8f3f2 2025-02-02T01:33:06 libpkgconf: fileio: rework to use pkgconf_buffer, allowing larger than 64KB lines Fixes: 130907d ("fileio: add routine for portably yanking lines out of a FILE stream") Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill 83a2ae04 2025-02-02T01:30:54 libpkgconf: buffer: fix memory allocation logic, add push/trim byte functions Fixes: 1001750 ("libpkgconf: add buffer management functions") Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
Ariadne Conill bd043cae 2025-02-02T00:31:54 libpkgconf: buffer: add PKGCONF_BUFFER_INITIALIZER
Ariadne Conill 10017500 2024-12-09T19:49:50 libpkgconf: add buffer management functions 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>.
Ariadne Conill 444846dd 2024-10-07T17:44:22 personality: drop want_default_pure on windows We still retain want_default_static to satisfy the requirements of the PE/COFF linking model. Fixes: 008d7069 ("libpkgconf: personality: default: set want_default_static and want_default_pure to true on windows") Signed-off-by: Ariadne Conill <ariadne@dereferenced.org> Closes: #364
Ariadne Conill a88c0d96 2024-08-07T00:10:13 pkgconf 2.3.0.
Ariadne Conill 0dde98fa 2024-08-06T23:44:43 meson: define __EXTENSIONS__ for Solaris
Ariadne Conill 174db1a1 2024-08-05T14:27:13 fragment: add pkgconf_fragment_insert()
Ariadne Conill a6179c77 2024-08-05T13:42:49 queue: add PKGCONF_PKG_DEPF_QUERY to color solution nodes part of the original query
Kai Pastor 8b7e2c4e 2024-07-03T04:58:06 Process character after operator
Ariadne Conill 06120a87 2024-03-27T11:34:36 pkgconf 2.2.0
Ariadne Conill 7a8532f8 2024-03-27T18:39:00 queue: remove no longer used root package reference when walking dependency graphs
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>'
Kai Pastor 4e01010d 2024-03-16T15:19:57 Mark user input in error message
Kai Pastor b6e04e2d 2023-12-11T06:58:17 pkgconf 2.1.1
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>
Stefan Weil a4ecd42b 2023-11-24T19:44:04 Fix it's -> its Signed-off-by: Stefan Weil <sw@weilnetz.de>
Ariadne Conill 5fb09af8 2023-11-22T18:43:04 queue: ensure the initial solution is cleaned up when it is no longer needed
Ariadne Conill f3540de3 2023-10-09T07:27:00 queue: clarify the relationship between a flattened dep and its parent Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Kai Pastor be1ea788 2023-10-15T08:32:48 Separate input world from output world
Kai Pastor 45073b74 2023-10-15T12:40:41 Circular deps: track ancestors, not serial
Victor Westerhuis 948297b5 2023-10-31T14:09:55 Search XDG Base Directories for personality files Try $XDG_DATA_HOME/pkgconfig/personality.d and $XDG_DATA_DIRS/pkgconfig/personality.d.
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>
Ariadne Conill 752a9825 2023-10-09T07:22:59 queue: demote requires to requires.private when processing requires.private parents Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Colin Gillespie 5aeb469b 2023-09-03T16:19:14 libpkgconf: fix memory leak Signed-off-by: Colin Gillespie <colin@cgillespie.xyz>
Ariadne Conill 652aff97 2023-10-08T22:27:56 path: add pkgconf_path_prepend API for --with-path Otherwise, PKG_CONFIG_PATH and PKG_CONFIG_LIBDIR elements would be processed backwards. Fixes: 384ade5 (path: prepend paths rather than append paths when processing --with-path arguments) Closes: #250 Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Ariadne Conill a6fb59a0 2023-09-02T21:15:46 pkgconf 2.0.3. Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
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 eaa4bb44 2023-08-17T11:56:08 pkgconf 2.0.2.
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 6a84d704 2023-08-11T14:23:08 pkgconf 2.0.1. Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Ariadne Conill 4fb0988a 2023-08-11T14:16:41 libpkgconf: queue: make the pkgconf_queue_t type public Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Ariadne Conill de51b03c 2023-08-04T08:45:16 pkgconf 2.0.0.
Ariadne Conill 384ade5f 2023-08-04T08:24:32 path: prepend paths rather than append paths when processing --with-path arguments
Ariadne Conill a4eb097b 2023-08-04T08:23:00 queue: process packages in the resolution queue in the correct order
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.
Ariadne Conill 35b1a623 2023-05-02T12:09:55 update libpkgconf version to 10905 Signed-off-by: Ariadne Conill <ariadne@dereferenced.org>
Harmen Stoppels f7bebba6 2023-04-24T15:50:00 fix meson.build Co-authored-by: Ariadne Conill <ariadne@dereferenced.org>
Harmen Stoppels 40638f24 2023-04-24T15:18:59 use AC_CHECK_DECLS to avoid implicit function definition AC_CHECK_FUNCS is not safe, since implicit function definitions is just a warning. On 64-bit glibc systems where reallocarray is not defined or hidden behind macros that are not set, it gets implicitly defined to return an integer, which is a big problem given that it should return a pointer, and leads to immediate segfaults.
huyubiao 6d1f160e 2023-03-06T20:05:22 argvsplit: fix some quoting rules
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.
Andrej Shadura 9ab5ea2e 2023-01-22T11:49:54 doc: personality: Add a documentation header Signed-off-by: Andrej Shadura <andrew.shadura@collabora.co.uk>
Ariadne Conill f7305434 2023-01-22T04:56:06 libpkgconf: bump API version to 10904
Ariadne Conill d9e507cc 2023-01-21T21:31:38 pkg: do not do serial checks for flattened solutions, as they are already flattened
Ariadne Conill 99bc93fb 2023-01-21T20:45:29 use SIZE_FMT_SPECIFIER everywhere
Ariadne Conill e2a12fd4 2023-01-21T20:39:53 main: reset solver when solving for library groups
Ariadne Conill 648a2249 2023-01-21T20:17:33 fragment: render: only include trailing space if there is another fragment
Timo Röhling 506ebab7 2022-09-30T15:33:47 Ignore whitespace indentation Fixes #265
Ariadne Conill be0d8119 2023-01-21T19:51:24 argvsplit: fix some quoting rules to match POSIX
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.
Ziemowit Łąski 1c3f2461 2022-11-22T12:29:09 pkgconf: Handle spaces correctly when expanding variables Given the following .pc fragment: includedir=/mingw64/include Cflags: -I${includedir} -I${includedir}/taglib Should includedir be assigned the value 'C:/Program\ Files/Git/mingw64/include', the expansion of ${includedir} will be chopped off after the first space: Cflags: -IC:/Program\ With this patch, the expansion is corrected: Cflags: -IC:/Program\ Files/Git/mingw64/include -IC:/Program\ Files/Git/mingw64/include/taglib Create spaces-in-paths.pc
Ariadne Conill 628b2b2b 2023-01-20T22:07:03 tuple: test for, and stop string processing, on truncation otherwise a buffer overflow occurs. this has been a bug in pkgconf since the beginning, it seems. instead of disclosing the bug correctly, a "hotshot" developer decided to blog about it instead. sigh. https://nullprogram.com/blog/2023/01/18/
Ariadne Conill 6a66b312 2022-08-16T19:49:42 libpkgconf: increase API level to 10903
Ariadne Conill 80bc5ac3 2022-08-16T19:38:40 tuple: if a global tuple is explicitly defined with --define-variable, prefer it fixes github #259
Ariadne Conill 5044491f 2022-08-16T19:27:35 queue: add function to free a compiled solution
Ariadne Conill ced9bee6 2022-08-16T18:51:11 pkg: remove dead store in pkgconf_compare_version
Ariadne Conill 5500a151 2022-08-16T18:46:43 fragment: avoid trying to merge fragments where data == NULL
Ariadne Conill 74faf8d0 2022-08-16T18:38:46 queue: do not enqueue unsolved nodes as part of a solution
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 69a3d458 2022-08-08T09:59:50 libpkgconf: revise API revision to 10902
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 5b10a85a 2022-08-08T09:08:27 queue: add pkgconf_queue_solve API
Ariadne Conill 79d25f97 2022-08-08T00:58:39 queue: ensure private deps get flattened when --static is requested
Dylan Baker 7976daab 2022-08-06T22:30:25 bsdstubs: include errno.h Needed for ENOMEM, and fixes the build on MacOS.
Ariadne Conill d8d669f6 2022-08-07T04:47:04 pkgconf 1.9.0.
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 301d8fa0 2022-08-04T12:22:49 queue: free unused dependencies when flattening
Dylan Baker 34b11020 2022-08-04T11:53:02 dependency: zero list after freeing
Dylan Baker e71a5a33 2022-08-04T11:52:26 dependency: add debug information for dependency refcounting
Dylan Baker 49342057 2022-08-04T11:50:50 pkg: add name of pkg being refed/unrefed to debug outpu
Dylan Baker a46ce367 2022-08-03T16:40:04 queue: when collecting dependents don't iterate private twice Currently, the private field is iterated collecting private deps and normal deps. It should only be iterated when collecting private deps.
Dylan Baker a391f9b6 2022-08-03T16:32:35 pkg: use goto cleanup idiom