1Changes from previous version of pkgconf 2======================================== 3 4Changes from 2.5.1 to 3.0.0: 5---------------------------- 6 7* DEPRECATION: The autotools build system will be dropped after the 3.0 release. 8 Building pkgconf with muon is recommended for early bootstrap and meson in later 9 stages of bootstrap. 10 Alternatively users can use pkgconf-lite for early bootstrap. 11 Continuous integration now exercises both the muon and pkgconf-lite builds. 12 See https://github.com/pkgconf/pkgconf/issues/481 for rationale and discussion. 13 14* DEPRECATION: Support for setting `PKG_CONFIG_PATH` from the Windows registry 15 is slated for removal in 3.1. It is recommended `PKG_CONFIG_PATH` be set from 16 the environment on Windows. 17 See https://github.com/pkgconf/pkgconf/issues/546 for rationale and discussion. 18 19* SPDX Software Bill of Materials (SBOM) generation: 20 - New spdxtool(1) utility which generates SPDX Lite 3.0.1 SBOM files. Initial 21 implementation by Tuukka Pasanen, sponsored by The FreeBSD Foundation, and 22 substantially improved since, with major contributions by Elizabeth Ashford 23 and additional patches by Joshua Watt and Pierre Pronchery. 24 - bomtool now supports a --output option, which writes the generated SBOM to 25 a file instead of standard output, and --define-variable, as the pkgconf CLI 26 does. The --define-variable support is by Tuukka Pasanen. 27 - bomtool now supports a --creation-time option, like spdxtool, which sets the 28 SBOM creation timestamp (in ISO 8601 format) instead of using the current 29 time, and no longer embeds the pkgconf version in its output. Both changes 30 allow for reproducible SBOM generation. 31 - bomtool now honors the SOURCE_DATE_EPOCH environment variable, deriving the 32 SBOM creation timestamp from it when --creation-time is not given, for 33 reproducible builds. 34 - bomtool: improved SPDX conformance. Mandatory PackageCopyrightText and 35 PackageLicenseConcluded fields are emitted as NOASSERTION when unavailable, 36 a Created timestamp is included, invalid PackageVerificationCode output was 37 removed, the package identifier charset was corrected, 38 PackageDownloadLocation is derived from the Source tag, and SPDX 2.3 package 39 names are used. Patches by Stéphane Rochoy and Tuukka Pasanen. 40 41* New test and I/O framework. 42 - kyua is no longer required to run tests. 43 - Declarative configuration for integration tests, C unit tests for functional tests. 44 - Tests now run on Windows. 45 - .pc and personality files are now opened in binary mode, and the line reader 46 was reworked to correctly handle CRLF line endings and to avoid getc/ungetc 47 for better performance. Binary-mode handling by moi15moi. 48 Major contributions by Elizabeth Ashford. 49 50* New pc(5) features: 51 - Source tag: a URI which describes where a given package may be downloaded. 52 - License.file tag: a path to a license file that is on disk. 53 - Requires.shared tag: like Requires.private, except a list of dependencies only used 54 when building in shared mode. 55 - Cflags.shared tag: like Cflags.private, except a list of CFLAGS only used when building 56 in shared mode. 57 - Libs.shared tag: like Libs.private, except a list of LIBS only used when building 58 in shared mode. 59 - Link.ABI tag: a comma-separated list of tags describing the application binary 60 interfaces a consumer must link a package against, such as c++ or fortran. 61 Tags are case-insensitive and normalized to lowercase, and may be queried 62 with --link-abi. 63 The Source and License.file tags are by Tuukka Pasanen; additional patches by 64 Elizabeth Ashford. 65 66* Windows support has been significantly improved. 67 - pkgconf can now be built and tested with Visual Studio and clang-cl. 68 - Windows on ARM builds are supported, and MSI installers are produced for 69 x86, x64 and arm64 using MSVC. 70 - The console code page is set to UTF-8 and non-ASCII entries in 71 PKG_CONFIG_PATH are now handled correctly. 72 The clang-cl support, MSI installers and UTF-8 console handling are by 73 moi15moi. 74 75* Portability: 76 - pkgconf is now built and tested in continuous integration on NetBSD, 77 FreeBSD, OpenBSD, Haiku, OmniOS, macOS and Cygwin in addition to Linux and 78 Windows. 79 - pkgconf now falls back to readlink(2) on systems which lack readlinkat(2). 80 - A fallback is provided for platforms without nl_langinfo_l, and xlocale.h is 81 included where needed to build on macOS. 82 - Fixed -Werror=format build failures on MinGW caused by the PRIu64 macro 83 expanding to an MSVCRT format specifier that the GNU format-string checker 84 rejects; serial and identifier values are now printed with %llu. 85 The expanded platform CI and the nl_langinfo_l/xlocale.h fallbacks are by 86 moi15moi. 87 88* Security hardening: 89 - Variable substitution is now guarded against denial-of-service inputs, 90 including billion-laughs style expansion and excessively complex bytecode 91 programs. 92 - LLVM libFuzzer targets were added for the pc(5) parser and the solver, and 93 the numerous out-of-memory and crash paths they surfaced were hardened. 94 - Dropped use of strlcpy, strlcat and other silently truncating string 95 functions. 96 97* CLI changes: 98 - New --newlines option, which separates emitted fragments with newlines 99 instead of spaces. 100 - New --print-digraph-query-nodes option, which annotates the --digraph 101 output with the nodes that were part of the original query. 102 - --list-all and --list-package-names now include synthesized virtual 103 packages provided via the Provides tag. 104 - Variables can now be overridden using PKG_CONFIG_MODULENAME_VARIABLENAME 105 environment variables. This was formally specified but never implemented 106 in pkgconf. 107 - PKG_CONFIG_LOG is now appended to rather than overwritten. 108 - --dump-personality output is now consistent with the 109 pkgconf-personality(5) format and additionally reports WantDefaultPure and 110 WantDefaultStatic. 111 - The vestigial --relocate=path option, which existed only for the old test 112 suite, has been removed. 113 114* pkg.m4 changes: 115 - PKG_WITH_MODULES now properly quotes its action arguments (serial 16). 116 Patch by Antonin Décimo. 117 - The macros no longer direct users to the freedesktop pkg-config project. 118 119* Correctness fixes: 120 - The built-in pkg-config and pkgconf packages are now constructed from the 121 configured personality instead of being hardcoded, so their reported data 122 reflects the active personality. They are also exposed as proper versioned 123 virtual packages. 124 - ${pc_sysrootdir} now defaults to an empty string instead of '/'. 125 - Variable substitution was reimplemented using a bytecode engine, which 126 tracks whether special variables such as ${pc_sysrootdir} have already been 127 applied so that they are not substituted more than once. 128 - The solver now re-checks the final solution for conflicts before returning 129 success, and tracks the origin of conflict rules. 130 - Requires.internal is now treated as a weaker form of Requires.private: its 131 dependency nodes need not be satisfied when link libraries are not 132 requested. 133 - pkgconf now warns about .pc files that duplicate a dependency-list field, 134 whose behavior is inconsistent across pkg-config implementations. 135 - Version comparison was reworked to use a structured algorithm modeled on 136 apk-tools. 137 - Newline folding behavior when parsing multi-line fields has been adjusted. 138 - Bare variable expansions inside fragment lists are now re-parsed so that any 139 flags they expand to are tokenized correctly. 140 - ${pc_sysrootdir} is now only injected when it matches a complete path 141 boundary, and obviously bogus sysroot_dir definitions are ignored, fixing 142 incorrect sysroot injection. 143 - Arguments are now combined when a flag is expected to carry a separate 144 value, such as -I dir or -framework name. 145 - SPDX license expressions in the License field are now properly parsed and 146 validated. Patches by Tuukka Pasanen. 147 148* The libpkgconf API and ABI were substantially reworked, breaking ABI 149 compatibility. The libpkgconf soversion is now 8. 150 - An abstract pkgconf_buffer_t type is now used throughout libpkgconf in place 151 of fixed-size stack buffers, removing a class of truncation bugs. 152 - A new pkgconf_output API abstracts all output, allowing the output stream to 153 be set per-client and redirected (pkgconf_client_set_output, 154 pkgconf_output_file_fmt and friends). 155 - The pkgconf_tuple_parse API has been removed; variables are now evaluated 156 via pkgconf_variable_eval (backed by the new bytecode engine). 157 - The fragment rendering API was reworked around pkgconf_buffer_t, and the old 158 pkgconf_fragment_render API has been removed. 159 - The package copyright field was migrated to a bufferset. 160 - Environment variable lookups can now be mocked via pkgconf_client_getenv. 161 162Changes from 2.5.0 to 2.5.1: 163---------------------------- 164 165* Fix processing of empty dependency lists. 166 167Changes from 2.4.3 to 2.5.0: 168---------------------------- 169 170* Added a manual page for bomtool. 171 172* Add support for preloaded packages. 173 These are modules which are preloaded into the package database 174 and preferred over searching the module search path when present. 175 176* Refactor Windows registry PKG_CONFIG_PATH support so that it 177 augments the main directory search list instead of being treated 178 as a special case. 179 180* Processing of `--with-path` arguments by the pkgconf CLI is 181 now deferred until libpkgconf is fully initialized, effectively 182 aligning behavior with PKG_CONFIG_PATH processing. 183 184* Fix several minor memory safety bugs which were identified by 185 the GCC 15 static analyzer. 186 187* Added support for pledge(2) and unveil(2) on systems where 188 this functionality is available. 189 190* Significant improvements to pkgconf's manual pages. 191 Patches by Ingo Schwarze and Jonathan Gray (OpenBSD). 192 193* Remove questionable default-static assumption on Windows that 194 was inherited from the original pkg-config. Most distributions 195 of pkgconf on Windows were already patching this out. 196 Patch by Kai Pastor. 197 198* Add -D_POSIX_C_SOURCE=200809L to the build definitions, which 199 is needed for readlinkat on glibc. 200 Patch by Filipe Laíns. 201 202Changes from 2.4.2 to 2.4.3: 203---------------------------- 204 205* Fix additional logic errors relating to the new fragment trees 206 functionality. 207 208Changes from 2.4.1 to 2.4.2: 209---------------------------- 210 211* Fix several logic errors in the pkg-config file parser that were 212 surfaced by recent refactoring work. 213 214* Fix BSD make compatibility so that it generates the test data 215 before running kyua on BSD make implementations. 216 217Changes from 2.4.0 to 2.4.1: 218---------------------------- 219 220* Ensure the full DAG is solved for all query types. 221 222Changes from 2.3.0 to 2.4.0: 223---------------------------- 224 225* Allow multiple package names in solution-based queries such as 226 `--print-requires`, `--print-requires-private` and `--print-provides`. 227 228* Use `_DEFAULT_SOURCE` where appropriate on Meson. 229 230* Add an abstract buffer type and use it when loading files from disk 231 instead of a 64KB buffer. This ensures large pkg-config files are 232 not truncated. 233 234* Disable graph recursion in `--variable` queries as it was generating 235 duplicate output. 236 237* Add infrastructure for tracking fragment group relations and convert 238 storage of fragments to use a tree-like structure instead of string 239 concatenation. 240 241* Add support for tracking linker groups, e.g. 242 243 -Wl,--start-group -la -lb -lc -Wl,--end-group 244 245 as fragment groups. 246 247* Properly contextualize the sysroot directory when processing package 248 information, ensuring packages where ${pc_sysrootdir} does not match 249 the default are properly processed. 250 251Changes from 2.2.0 to 2.3.0: 252---------------------------- 253 254* Fix compile with Meson on Solaris by defining __EXTENSIONS__. 255 256* Add support for the PKG_CONFIG_RELOCATE_PATHS environmental variable. 257 When set, the program will act as if --define-prefix is always enabled. 258 259* Color solution nodes that were part of the original query, and use 260 that coloring to skip over dependencies when generating DocumentNames 261 in bomtool. 262 263* Enhance --env option to support variables with both --variable=varname 264 and --print-variables. 265 266* Add --exists-cflags option which creates synthetic preprocessor 267 definition flags for every queried dependency when found. 268 269* Document that Requires.private is always used for header paths. 270 Patch by Petr Písař. 271 272* Fix minor documentation typos. 273 Patch by Pierce. 274 275* Ensure string comparisons using <ctype.h> functions are done with 276 unsigned bytes to avoid undefined behavior. 277 Patch by Taylor R Campbell. 278 279* Fix parsing edge-case bugs with dependency versions. 280 Patch by Kai Pastor. 281 282* Change PKG_PROG_PKG_CONFIG autoconf macro to add a customizable 283 failure handler if pkg-config is not found. 284 Patch by Ismael Luceno. 285 286Changes from 2.1.1 to 2.2.0: 287---------------------------- 288 289* libpkgconf SOVERSION is now 5. 290 291* Significant solver rework to flatten both requires and requires.private 292 dependencies in a single pass. Improves performance slightly and ensures 293 proper dependency order. 294 Patches by Kai Pastor. 295 296* Improve `--digraph` output to reflect more of the solver's state in the 297 rendered dependency graph. 298 Patches by Kai Pastor. 299 300* Do not reference the graph root by name when presenting error messages about 301 directly requested dependency nodes. 302 Patch by Kai Pastor. 303 304Changes from 2.1.0 to 2.1.1: 305---------------------------- 306 307* Documentation fixes from Sam James and Stefan Weil. 308 309* Fix --modversion with constraints. 310 Patch by Kai Pastor. 311 312* Reintroduce an optimization to the dependency graph walker which avoids 313 revisiting already visited nodes. 314 Patch by Yi Chou with some modifications. 315 316* Add a regression test to check that the dependency flattener is working 317 as expected. 318 Patch by Kai Pastor. 319 320Changes from 2.0.3 to 2.1.0: 321---------------------------- 322 323* Do not flatten the solver solution into the original world used as 324 input to the solver. 325 Patches by Kai Pastor. 326 327* Fix warnings with GCC 14 -Walloc-size. 328 Patch by Sam James. 329 330* Add --solution to the pkgconf CLI to dump the solver state. 331 332* Improve the --digraph output to clarify cancelled edges in a given 333 solution. 334 335* Demote requires dependencies to requires.private when a parent 336 dependency is pulled in via requires.private. 337 338* Trim trailing whitespace when processing package arguments. 339 Patch by Colin Gillespie. 340 341* Avoid strncmp() in --modversion version comparison. 342 Patch by Colin Gillespie. 343 344* Update autoconf compile flag checking macro. 345 Patch by Peter Kokot. 346 347* Add system default path configuration to Meson. 348 Patch by L. E. Segovia. 349 350* Fix order of PKG_CONFIG_LIBDIR and PKG_CONFIG_PATH element processing. 351 352Changes from 2.0.2 to 2.0.3: 353---------------------------- 354 355* Fix some edge-cases with the new `--modversion` implementation 356 and add additional regression tests. 357 Patch by Colin Gillespie. 358 359* Fix some format specifiers to use PRIu64 in debug tracing. 360 361Changes from 2.0.1 to 2.0.2: 362---------------------------- 363 364* Fix long-standing bug where package identifiers for "uninstalled" 365 packages incorrectly included the "-uninstalled" suffix. 366 367 This was exposed by the recent change to `--modversion` in 2.0.1. 368 369Changes from 2.0.0 to 2.0.1: 370---------------------------- 371 372* The behavior of --modversion was largely reverted back to the traditional 373 pkg-config behavior, but still operates on a solved dependency graph. 374 375 The order of --modversion output is based on the dependency resolution 376 queue which is passed to the solver, which itself generally maps to the 377 order of the constrants provided on the command line. 378 379* A new flag, --verbose, has been added. When used with `--modversion`, it 380 is possible to disambiguate which version belongs to which module: 381 382 % pkgconf --modversion --verbose foo bar 383 foo: 1.2.3 384 bar: 1.3 385 386Changes from 1.9.5 to 2.0.0: 387---------------------------- 388 389* When flattening the dependency graph, retain the latest seen edges 390 rather than the earliest. 391 392* Fix a long-standing bug where the dependency resolution queue was 393 evaluated in reverse. This bug masked the aforementioned dependency 394 flattening bug in many cases. 395 396* Fix handling of --with-path, which was appending paths to the search 397 list rather than prepending them as intended. 398 399* Error when --modversion is requested with more than one package, as 400 the output is ambiguous. 401 402Changes from 1.9.4 to 1.9.5: 403---------------------------- 404 405* Fix incorrect assumptions involving the use of ctype(3) functions. 406 Patch by Taylor R Campbell. 407 408* Fix detection of provided functions on autoconf. 409 Patches by Harmen Stoppels. 410 411* Fix deletion of tests/meson.build by the autoconf build system. 412 Patch by h30032433. 413 414* Fix quoting rules in argvsplit.c. 415 Patch by huyubiao. 416 417* Update libpkgconf documentation and documentation building scripts. 418 Patches by Andrew Shadura. 419 420* Enforce maximum package count correctly for --modversion. 421 422Changes from 1.9.3 to 1.9.4: 423---------------------------- 424 425* Fix a buffer overflow vulnerability involving very large variable expansions. 426 CVE-2023-24056 427 428* Fix a bunch of minor regressions with the solver. 429 430* Create separate solutions for `--cflags` and `--libs` when `--static` is not 431 used. 432 433* Remove final trailing whitespace in pkgconf_fragment_render_buf(). 434 435* Revert broken pkg.m4 change involving querying module versions in 436 PKG_CHECK_MODULES. 437 438* Fix handling of tildes in version strings. 439 440* Various C99 formatting string fixes involving SIZE_FMT_SPECIFIER. 441 442Changes from 1.9.2 to 1.9.3: 443---------------------------- 444 445* Fix a bunch of minor code issues pointed out using Clang static analyzer. 446 447* New API: pkgconf_solution_free(), which frees a compiled solution graph. 448 449* Fix behavior when overriding global variables with `--define-variable`. 450 451Changes from 1.9.1 to 1.9.2: 452---------------------------- 453 454* Do not try to break dependency cycles across dependency lists. This causes 455 the solved graph to sometimes miss required dependency nodes because the 456 solver detected an incorrect dependency cycle. 457 458* New API: pkgconf_queue_solve(), which replaces pkgconf_queue_apply(). 459 pkgconf_queue_apply is now deprecated and should not be used in new code. 460 461Changes from 1.9.0 to 1.9.1: 462---------------------------- 463 464* Skip graph flattening and traversal for query types which only make sense 465 for a single pkg-config module. 466 467 The old solver walked these graphs with --maximum-traverse-depth=1 in 468 these cases, but this is no longer helpful because the graph is flattened 469 by the new solver. 470 471Changes from 1.8.0 to 1.9.0: 472---------------------------- 473 474* pkgconf 1.9.0 is the first testing release in the pkgconf 2.0 development 475 series. While it is believed to be suitable for production, there may be 476 bugs due to the overall redesign of the solver and other initiatives. 477 Additionally, a future release of pkgconf plans will have additional ABI 478 breaks for the libpkgconf library before the pkgconf 2.0 release is cut. 479 480* There is now a new solver that is designed to provide higher performance 481 with complicated graphs, which works by flattening the dependency graph 482 into a smaller set of dependencies. This graph can then be evaluated 483 instead of the original dependency graph without having to visit every 484 edge in the graph. 485 486 NOTE: This solver, while providing significant performance improvements, 487 does so, at the cost of changed behavior for some edge cases (such as 488 circular dependencies). 489 490* Bug fixes: 491 - Resolved several memory leaks with edge cases when using libpkgconf 492 directly. 493 - pkgconf CLI now consistently frees libpkgconf resources under all 494 circumstances. 495 - SYSROOT rules are no longer applied to `-uninstalled` packages by 496 default. Use `PKG_CONFIG_PKGCONF1_SYSROOT_RULES` for legacy behavior. 497 498* A new `--license` selector has been added to the pkgconf CLI. This uses 499 SPDX expressions which can be set as the `License` field in `.pc` files. 500 See the `pc(5)` manpage for more information. 501 502* The canonical location for pkgconf maintenance going forward is 503 <https://gitea.treehouse.systems/ariadne/pkgconf>. This is presently 504 mirrored to GitHub for user convenience, but that mirroring will 505 be terminated at some point (due to GitHub Copilot). 506 507Changes from 1.7.4 to 1.8.0: 508---------------------------- 509 510* This is the last planned maintenance branch. I see pkgconf as basically 511 a finished tool at this point, and very few people were ultimately interested 512 in libpkgconf. So, from here on out, it will just be bug fixes only and 513 very minor enhancements. 514 515* Bug fixes: 516 - Improved path handling on Windows to conform to what the MSYS2 517 and Cygwin teams were already modifying pkgconf to do. 518 Patches by Christoph Reiter. 519 - Fix a minor memory leak relating to cross-personalities. 520 Patch by Stone Tickle. 521 - Fix static builds for Windows on Meson. 522 Patch by Alexander Neumann. 523 - Fix some edge cases with --redefine-prefix. 524 Patch by midipix. 525 - Do not prepend sysroot_dir if the .pc file does not exist in the 526 sysroot. 527 Patch by Sandro Mani. 528 - Do not perform path filtering on default system include and library 529 path lists. This fixes consistency with other mechanisms that modify 530 these path lists. 531 532* Enhancements: 533 - Document the --validate option in the manpage. 534 Patch by orbea. 535 536Changes from 1.7.3 to 1.7.4: 537---------------------------- 538 539* Bug fixes: 540 - Fix null-dereference crash when pulling a malformed 'uninstalled' 541 .pc file into a dependency tree. Patch by Tobias Stöckmann. 542 - Fix truncation of comment characters when quoted. 543 - Fix handling of .pc module names in --list-all on Windows. 544 Patch by Ryan Scott. 545 - Handle platforms where realpath(3) requires a pre-allocated buffer. 546 Patch by Fabian Groffen. 547 - Fix version whitespace warning. 548 Patch by Christoph Reiter. 549 550* Enhancements: 551 - Rewrite DOS paths on native Windows builds that don't use 552 Cygwin/MSYS. 553 - Add WantDefaultPure cross-compiler personality option. 554 - Prefer --static --pure linking on Windows. 555 - Add PKG_CONFIG_DONT_DEFINE_PREFIX environment variable. 556 Patch by Jeff Moguillansky. 557 - Many improvements when building pkgconf with Meson. 558 Patches by Christoph Reiter. 559 560Changes from 1.7.2 to 1.7.3: 561---------------------------- 562 563* Bug fixes: 564 - Fix a possible out of boundary write when evaluating dependencies. 565 Patch by Tobias Stöckmann. 566 - Fix escaping logic on Windows. Patch by Vincent Torri. 567 - Fix out of boundary reads and writes with a malformed fragment. 568 Patches by Tobias Stöckmann. 569 - Fix a possible out of boundary write when evaluating tuples. 570 Patch by Tobias Stöckmann. 571 572Changes from 1.7.1 to 1.7.2: 573---------------------------- 574 575* Bug fixes: 576 - Fix a windows-specific crash relating to path fixups. 577 578Changes from 1.7.0 to 1.7.1: 579---------------------------- 580 581* Bug fixes: 582 - Fix a possible out of boundary access in the parser for the 583 cross-compile database. Patch by Tobias Stöckmann. 584 - Missing files for building with Meson are now included in the 585 tarball. Patch by Neal Gompa. 586 - Fix calculation of package atoms on Windows with paths that 587 use both directory separator characters. 588 589Changes from 1.6.3 to 1.7.0: 590---------------------------- 591 592* Bug fixes: 593 - Fix a possible buffer overflow involving newline escaping. 594 Patch by Tobias Stöckmann. 595 - Fix an out of boundary access in the parser. 596 Patch by Tobias Stöckmann. 597 - Fix leakage of strcmp() result value in pkgconf_compare_version() 598 responses. 599 - Return the default personality if loading a cross-compile 600 personality file failed. 601 - Do not complain about newlines when validating package versions. 602 - Properly detect strndup() on Windows when building with Meson. 603 604* Enhancements: 605 - A new --shared option and WantDefaultStatic cross-compile 606 configuration option have been added. This allows for toolchains 607 to specify that static linking should be used by default. 608 - Support for the PKG_CONFIG_MSVC_SYNTAX environment variable has 609 been added. Patch by Dan Kegel. 610 - Support for the PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS 611 client flag which disables emulation of freedesktop.org pkg-config 612 fragment merging semantics has been added. 613 Patch by Karen Arutyunov. 614 615Changes from 1.6.2 to 1.6.3: 616---------------------------- 617 618* Bug fixes: 619 - Properly tokenize versions. Versions cannot logically contain 620 whitespace, as dependency-lists would not properly tokenize if 621 they could. A diagnostic is generated for malformed version 622 strings containing whitespace when --validate is used. 623 624* Enhancements: 625 - CMake support has been dropped. Use Meson to build on Windows. 626 627Changes from 1.6.1 to 1.6.2: 628---------------------------- 629 630* Bug fixes: 631 - Fixed a memory leak when deduplicating paths. 632 - Fixed strndup-related build regression on Windows. 633 634* Enhancements: 635 - Added pkgconf-lite variant. pkgconf-lite is a stripped down 636 variant of pkgconf that only includes pkg-config features. 637 - Added --modversion description to pkgconf(1) man page. 638 639Changes from 1.6.0 to 1.6.1: 640---------------------------- 641 642* Bug fixes: 643 - Fixed an issue where a personality may not be properly selected 644 due to argv[0] containing a full path. 645 - Fixed a regression where having an empty PKG_CONFIG_LIBDIR 646 environment variable would not eliminate the default search 647 paths. 648 - Use POSIX realpath(3) instead of readlink() for deduplicating the 649 search path. Use _fullpath() on Windows for the same purpose. 650 - The dequoting logic for tuples has been improved to ensure that 651 quotes *inside* a value remain quoted when necessary. 652 653Changes from 1.5.4 to 1.6.0: 654---------------------------- 655 656* Bug fixes: 657 - Fixed issue where packages which referenced missing packages in 658 Requires.private may have crashed due to memory corruption issues 659 in some circumstances. 660 - Fixed warnings reported by GCC 8 diagnostics. 661 662* Enhancements: 663 - Add LIBPKGCONF_VERSION and LIBPKGCONF_VERSION_STR macros for 664 determining libpkgconf version. 665 - Add pkgconf_fragment_copy_list() to copy a fragment list to 666 another fragment list. 667 668Changes from 1.5.3 to 1.5.4: 669---------------------------- 670 671* Bug fixes: 672 - fix build on Windows with Meson 673 - fix edge cases for path canonicalization (especially on Windows) 674 675Changes from 1.5.2 to 1.5.3: 676---------------------------- 677 678* Security fixes: 679 - Fix edge cases involving dequoting zero-length tuples that can lead to a 680 buffer overflow under the right circumstances. Thanks to A. Wilcox for 681 reporting and supplying a patch. (MR 3) 682 683Changes from 1.5.1 to 1.5.2: 684---------------------------- 685 686* Bug fixes: 687 - Ensure environment variables override values learned from personality files 688 or built-in defaults. 689 690* Documentation enhancements: 691 - Add pkgconf-personality(5) manpage documenting the personality file format. 692 693Changes from 1.5.0 to 1.5.1: 694---------------------------- 695 696* Bug fixes: 697 - fixed a crash with some invalid multi-line .pc files 698 699Changes from 1.4.2 to 1.5.0: 700--------------------------- 701 702* Administrative: 703 - The git repository has moved to <https://git.dereferenced.org/pkgconf/pkgconf>, 704 due to the acquisition of GitHub by Microsoft. 705 706* Overall enhancements: 707 - pkgconf now supports the proposed Requires.internal pkg-config extension, 708 by merging it with the Requires.private list (there is no functional difference 709 between the two in our resolver implementation) 710 - Support for cross-compilation personalities have been added. To make use of this 711 functionality, create a file in the new personality.d directory that sits inside 712 the pkgconfig directory. The personality file format is described in 713 pc-personality(5). (github #166) 714 - Support for Haiku has been added, including interpretation of BELIBRARIES and 715 other toolchain specifics. (github #180) 716 - Testsuite support can be disabled when building with Meson. (github #175) 717 718* Bug fixes: 719 - tuples are now appropriately dequoted when added by the parser (github #186). 720 721* Various Windows enhancements: 722 - CMake supports building with GCC on Windows. (github #179) 723 - Prefix rewriting has been improved. (github #177) 724 - PKGCONF_API support has been implemented when building with Meson, 725 allowing Meson to be used to build pkgconf on Windows. (github #174) 726 727* Documentation fixes: 728 - The manpages have been linted and fixed. (github #181, #182, #183) 729 - The description of pkgconf --exists has been corrected. (github #173) 730 731Changes from 1.4.1 to 1.4.2: 732---------------------------- 733 734* Bug fixes: 735 - ensure pkgconf_dependency_t nodes have a solution marked when satisfied 736 by an indirect provider (github #172) 737 738Changes from 1.4.0 to 1.4.1: 739---------------------------- 740 741* Bug fixes: 742 - revert some quoting changes because they don't work well with certain 743 GCC edge cases (github #168) 744 745* Enhancements: 746 - add limited support for --cflags with --msvc-syntax 747 748Changes from 1.3.7 to 1.4.0: 749---------------------------- 750 751* Notable libpkgconf API changes: 752 - pkgconf_pkg_t.requires has been renamed to pkgconf_pkg_t.required for 753 C++20 compatibility. 754 755* Enhancements: 756 - pkgconf and libpkgconf has been ported to Windows as native binaries. 757 - improved compatibility with freedesktop.org pkg-config's ${pc_sysrootdir} 758 usage pattern. 759 - do not mention PKG_CONFIG_SKIP_CONFLICTS environmental variable when 760 simplified errors are requested, as with PKG_CONFIG_PATH. 761 - the dependency solver now stores solutions to dependency graph elements 762 it visits, allowing for the dependency graph to be incrementally solved. 763 this improves dependency solving time by an order of magnitude in most 764 cases. 765 - new --env option allows for exporting cflags/libs fragments as export 766 variables 767 - new support for building pkgconf with CMake and Meson 768 - improved compiler warning flag detection on autoconf and CMake 769 - removed PKGCONF_BUFSIZE allocations from the stack where possible 770 - allow for customizing the way fragment lists are rendered using a callback API 771 - new support for --msvc-syntax output using the new fragment rendering callbacks 772 - fragments are now quoted according to POSIX literal rules 773 - new variables on the pkg-config builtin: 774 - ${pc_system_includedirs}: the system includedir search path known by pkgconf 775 - ${pc_system_libdirs}: the system libdir search path known by pkgconf 776 - new manpages: 777 - pc(5) describing pkgconf's interpretation of pkg-config .pc files 778 - pkg.m4(7) describing the autotools macros bundled with pkgconf 779 780* Bug fixes: 781 - fix pkgconf_pkg_t.id generation on native Windows where either \ or / are usable 782 as path separator. 783 - add missing --modversion to --help output 784 - do not evaluate module paths for modules that are not actually on disk 785 - ensure we work on a zeroed buffer prior to calling realpath(2) with it 786 - fix path deduplication edge case when cache-inodes feature is unavailable 787 - fix path rewriting regression with PKG_CONFIG_SYSROOT_DIR when 788 PKG_CONFIG_SYSROOT_DIR is set to / 789 - fix crash in edge case where a .pc file has misquoting in a fragment list. 790 - fix logic edge case when comparing relocated paths 791 792Changes from 1.3.6 to 1.3.7: 793---------------------------- 794 795* Enhancements: 796 - improved diagnostics for malformed packages. 797 798* Bug fixes: 799 - reject packages which contain incomplete metadata in post-parse phase. 800 801Changes from 1.3.5 to 1.3.6: 802---------------------------- 803 804* Enhancements: 805 - add many cflags to the protected set: -Wa, -Wl, -Wp, -ansi, -std=, -stdlib=, 806 -pedantic, -pthread, -trigraphs, -nostdinc, -nostdlibinc, -nobuiltininc. 807 808* Bug fixes: 809 - handle -include cflag fragments properly. 810 811Changes from 1.3.4 to 1.3.5: 812---------------------------- 813 814* Bug fixes: 815 - fix --variable output for compatibility some broken configure scripts when they 816 request the same variable from multiple packages 817 818Changes from 1.3.3 to 1.3.4: 819---------------------------- 820 821* Bug fixes: 822 - fix a quoting issue exposed by the Go testsuite 823 824Changes from 1.3.2 to 1.3.3: 825---------------------------- 826 827* Bug fixes: 828 - back out disabling the dependency resolver for single-package queries, it caused 829 too many regressions. 830 831* Enhancements: 832 - allow explicitly disabling the dependency resolver via new environment variable, 833 PKG_CONFIG_MINIMUM_TRAVERSE_DEPTH=1. while pkgconf could already do this using 834 --minimum-traverse-depth=1, other pkg-config implementations do not have this 835 option, so adding an environment variable allows to make better use of this 836 feature (other implementations won't error due to unknown option this way) 837 838Changes from 1.3.1 to 1.3.2: 839---------------------------- 840 841* Bug fixes: 842 - rewrite handling of --modversion, --print-variables and --variable to not require 843 the dependency resolver 844 - ensure we disable the dependency resolver in all cases where it is a single-package 845 query (1.3.1 did not go far enough) 846 847Changes from 1.3.0 to 1.3.1: 848---------------------------- 849 850* Features: 851 - implement --short-errors 852 853* Bug fixes: 854 - only consider a single package at a time with --print-requires, --print-requires-private, 855 --print-provides, --modversion, --print-variable and --print-variables 856 857* Enhancements: 858 - synchronized latest freedesktop.org changes to pkg.m4 859 - improve error reporting with legacy --atleast-version and similar flags. 860 861Changes from 1.2.0 to 1.3.0: 862---------------------------- 863 864* Features: 865 - pkgconf --debug now provides a facility for tracing most relevant libpkgconf operations 866 - libpkgconf: add warn and trace handlers for warnings 867 - replace realpath() with faster, lighter weight path normalization function (github #112) 868 - pkgconf CLI now emulates pkg-config quoting rules precisely, while allowing direct access 869 to the actual fragments via libpkgconf 870 871* Bug fixes: 872 - pkg: properly separate static and virtual packages so they are not inappropriately 873 optimized out of the dependency graph (github #108) 874 - argvsplit: do not consider ' and " to have similar rules to escape sequences (github #111) 875 - pkg: strip trailing whitespace when parsing .pc files 876 877* Enhancements: 878 - argvsplit basically rewritten from scratch 879 - many code fixes spotted by coverity 880 - add PKG_CONFIG_DONT_RELOCATE_PATHS and --dont-relocate-paths environment variables to 881 disable path relocation feature if needed 882 - remove extra whitespace that was present for compatibility with older pkg-config releases 883 (github #113) 884 885Changes from 1.1.0 to 1.2.0: 886---------------------------- 887 888* Features: 889 - new --path option lists the .pc files which provided the requested dependencies 890 - new path relocation API: pkgconf_path_relocate(), which wraps functions such as 891 realpath() and cygwin_conv_path(). 892 - new --with-path option adds a path to the search list 893 - new --define-prefix and --dont-define-prefix features enable automatic prefix 894 detection for relocatable SDKs. this is mostly useful on windows. 895 896* Bug fixes: 897 - fragments: fix even more edge cases involving token concatenation 898 - path lists: don't attempt to collect path inodes if the filter is disabled 899 - path lists: explicitly avoid uninitialised data for the path inode cache 900 - client: properly handle --keep-system-cflags and --keep-system-libs 901 902* Enhancements: 903 - windows: build libpkgconf as a DLL 904 - fragments: only munge fragments if sysroot_dir is actually set 905 - overall API: resolver flags have been moved to being a client-object setting 906 instead of used for every function invocation 907 908Changes from 1.0.1 to 1.1.0: 909---------------------------- 910 911* Features: 912 - new Provides system allows alternate .pc files to provide a dependency 913 - stable library API (with documentation): http://pkgconf.readthedocs.io/ 914 915* Enhancements: 916 - make it possible to programmatically declare dependencies instead of just using the parser 917 - testsuite migrated to run under kyua 918 - provide a libpkgconf.pc file for consumers to use 919 - pkgconf client: new --pure flag to enable dependency graph optimization in --static mode 920 - significant .pc parser speedups using bsearch(3). 921 - handle -idirafter in the same way as -isystem CFLAGS 922 - learn toolchain "system" paths from GCC environment variables, if present 923 - filter duplicate PKG_CONFIG_PATH (and other) entries by inode 924 925* Bug fixes: 926 - fragments: fix another edge case involving empty tokens being concatenated onto previous tokens 927 (github #99) 928 - libpkgconf: remove dependencies on config.h in public headers 929 930Changes from 1.0.0 to 1.0.1: 931---------------------------- 932 933* Enhancements: 934 - new stub implementation of --print-provides (github #95) 935 936* Bug fixes: 937 - fragments: fix an edge case involving path-only fragments and PKG_CONFIG_SYSROOT_DIR (github #94) 938 939Changes from 0.9.12 to 1.0.0: 940----------------------------- 941 942* Features: 943 - new library: libpkgconf 944 945* Enhancements: 946 - testsuite: use an explicit prefix on all tests 947 - build: switch to automake 948 949* Bug fixes: 950 - cast all usage of ctype(3) functions 951 - do not expand variables passed via --define-variable for compatibility with pkg-config 0.29 952 - let the CFLAGS being user settable 953 954Changes from 0.9.11 to 0.9.12: 955------------------------------ 956 957* Features: 958 - add --list-package-names 959 960* Enhancements: 961 - ensure -I and -L are never pushed back 962 963* Bug fixes: 964 - fix implicit conversion warnings with variables over 31bits 965 966Changes from 0.9.10 to 0.9.11: 967------------------------------ 968 969* Features: 970 - add --validate 971 972* Enhancements: 973 - add large file support checks in autoconf 974 975* Bug fixes: 976 - fix private lib deduplication 977 - handle --static correctly in some more esoteric scenarios 978 979Changes from 0.9.9 to 0.9.10: 980----------------------------- 981 982* Features: 983 984* Enhancements: 985 986* Bug fixes: 987 - Fix parser when dealing with commented lines 988 989Changes from 0.9.8 to 0.9.9: 990---------------------------- 991 992* Features: 993 - add a sub out --print-provides 994 995* Enhancements: 996 997* Bug fixes: 998 - Fix parser when dealing with comments in fields 999 1000Changes from 0.9.7 to 0.9.8: 1001---------------------------- 1002 1003* Features: 1004 1005* Enhancements: 1006 - Convert manpages to mdoc(7) 1007 1008* Bug fixes: 1009 - Fix parsing multiline fields 1010 1011Changes from 0.9.6 to 0.9.7: 1012---------------------------- 1013 1014* Features: 1015 1016* Enhancements: 1017 - Convert manpages to mdoc(7) 1018 1019* Bug fixes: 1020 - Fix parsing multiline fields 1021 1022Changes from 0.9.5 to 0.9.6: 1023---------------------------- 1024 1025* Features: 1026 - add a sub --debug 1027 1028* Enhancements: 1029 - Do not hardcode non-posix install(1) 1030 1031* Bug fixes: 1032 - fix --with-system-includedir and --with-system-libdir behaviour 1033 1034Changes from 0.9.4 to 0.9.5: 1035---------------------------- 1036 1037* Features: 1038 1039* Enhancements: 1040 - Make all variables but CFLAGS and LIBS case sensitive 1041 1042* Bug fixes: 1043 1044Changes from 0.9.3 to 0.9.4: 1045---------------------------- 1046 1047* Features: 1048 - Add a pkgconf(1) manpage 1049 1050* Enhancements: 1051 - Improve support for MacOS -framework 1052 1053* Bug fixes: 1054 1055Changes from 0.9.2 to 0.9.3: 1056---------------------------- 1057 1058* Features: 1059 - Add support for CFLAGS.private 1060 1061* Enhancements: 1062 - Support out of source build 1063 - Improved private libs deduplication 1064 1065* Bug fixes: 1066 1067Changes from 0.9.1 to 0.9.2: 1068---------------------------- 1069 1070* Features: 1071 1072* Enhancements: 1073 1074* Bug fixes: 1075 - Fix PKG_CONFIG_PATH being ignored when a .pc is directly supplied from 1076 command line 1077 1078Changes from 0.9.0 to 0.9.1: 1079---------------------------- 1080 1081* Features: 1082 1083* Enhancements: 1084 - --simulate: print depgraph operations 1085 - --simulate: print bytecode program as a human-readable AST 1086 1087* Bug fixes: 1088 - reset parser state on new package atom 1089 1090Changes from 0.8.12 to 0.9.0: 1091---------------------------- 1092 1093* Features: 1094 1095* Enhancements: 1096 - Rework the internal cache API 1097 - Rework the internal code to use the new pkg_list_t framework 1098 - Rework PKG_CONFIG_PATH handling code 1099 1100* Bug fixes: 1101 - fix multi-recursion with -framework 1102