package compiler and linker metadata toolkit https://www.pkgconf.org/

NEWS 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. Changes from previous version of pkgconf
  2. ========================================
  3. Changes from 1.6.0 to 1.6.1:
  4. ----------------------------
  5. * Bug fixes:
  6. - Fixed an issue where a personality may not be properly selected
  7. due to argv[0] containing a full path.
  8. - Fixed a regression where having an empty PKG_CONFIG_LIBDIR
  9. environment variable would not eliminate the default search
  10. paths.
  11. - Use POSIX realpath(3) instead of readlink() for deduplicating the
  12. search path. Use _fullpath() on Windows for the same purpose.
  13. - The dequoting logic for tuples has been improved to ensure that
  14. quotes *inside* a value remain quoted when necessary.
  15. Changes from 1.5.4 to 1.6.0:
  16. ----------------------------
  17. * Bug fixes:
  18. - Fixed issue where packages which referenced missing packages in
  19. Requires.private may have crashed due to memory corruption issues
  20. in some circumstances.
  21. - Fixed warnings reported by GCC 8 diagnostics.
  22. * Enhancements:
  23. - Add LIBPKGCONF_VERSION and LIBPKGCONF_VERSION_STR macros for
  24. determining libpkgconf version.
  25. - Add pkgconf_fragment_copy_list() to copy a fragment list to
  26. another fragment list.
  27. Changes from 1.5.3 to 1.5.4:
  28. ----------------------------
  29. * Bug fixes:
  30. - fix build on Windows with Meson
  31. - fix edge cases for path canonicalization (especially on Windows)
  32. Changes from 1.5.2 to 1.5.3:
  33. ----------------------------
  34. * Security fixes:
  35. - Fix edge cases involving dequoting zero-length tuples that can lead to a
  36. buffer overflow under the right circumstances. Thanks to A. Wilcox for
  37. reporting and supplying a patch. (MR 3)
  38. Changes from 1.5.1 to 1.5.2:
  39. ----------------------------
  40. * Bug fixes:
  41. - Ensure environment variables override values learned from personality files
  42. or built-in defaults.
  43. * Documentation enhancements:
  44. - Add pkgconf-personality(5) manpage documenting the personality file format.
  45. Changes from 1.5.0 to 1.5.1:
  46. ----------------------------
  47. * Bug fixes:
  48. - fixed a crash with some invalid multi-line .pc files
  49. Changes from 1.4.2 to 1.5.0:
  50. ---------------------------
  51. * Administrative:
  52. - The git repository has moved to <https://git.dereferenced.org/pkgconf/pkgconf>,
  53. due to the acquisition of GitHub by Microsoft.
  54. * Overall enhancements:
  55. - pkgconf now supports the proposed Requires.internal pkg-config extension,
  56. by merging it with the Requires.private list (there is no functional difference
  57. between the two in our resolver implementation)
  58. - Support for cross-compilation personalities have been added. To make use of this
  59. functionality, create a file in the new personality.d directory that sits inside
  60. the pkgconfig directory. The personality file format is described in
  61. pc-personality(5). (github #166)
  62. - Support for Haiku has been added, including interpretation of BELIBRARIES and
  63. other toolchain specifics. (github #180)
  64. - Testsuite support can be disabled when building with Meson. (github #175)
  65. * Bug fixes:
  66. - tuples are now appropriately dequoted when added by the parser (github #186).
  67. * Various Windows enhancements:
  68. - CMake supports building with GCC on Windows. (github #179)
  69. - Prefix rewriting has been improved. (github #177)
  70. - PKGCONF_API support has been implemented when building with Meson,
  71. allowing Meson to be used to build pkgconf on Windows. (github #174)
  72. * Documentation fixes:
  73. - The manpages have been linted and fixed. (github #181, #182, #183)
  74. - The description of pkgconf --exists has been corrected. (github #173)
  75. Changes from 1.4.1 to 1.4.2:
  76. ----------------------------
  77. * Bug fixes:
  78. - ensure pkgconf_dependency_t nodes have a solution marked when satisfied
  79. by an indirect provider (github #172)
  80. Changes from 1.4.0 to 1.4.1:
  81. ----------------------------
  82. * Bug fixes:
  83. - revert some quoting changes because they don't work well with certain
  84. GCC edge cases (github #168)
  85. * Enhancements:
  86. - add limited support for --cflags with --msvc-syntax
  87. Changes from 1.3.7 to 1.4.0:
  88. ----------------------------
  89. * Notable libpkgconf API changes:
  90. - pkgconf_pkg_t.requires has been renamed to pkgconf_pkg_t.required for
  91. C++20 compatibility.
  92. * Enhancements:
  93. - pkgconf and libpkgconf has been ported to Windows as native binaries.
  94. - improved compatibility with freedesktop.org pkg-config's ${pc_sysrootdir}
  95. usage pattern.
  96. - do not mention PKG_CONFIG_SKIP_CONFLICTS environmental variable when
  97. simplified errors are requested, as with PKG_CONFIG_PATH.
  98. - the dependency solver now stores solutions to dependency graph elements
  99. it visits, allowing for the dependency graph to be incrementally solved.
  100. this improves dependency solving time by an order of magnitude in most
  101. cases.
  102. - new --env option allows for exporting cflags/libs fragments as export
  103. variables
  104. - new support for building pkgconf with CMake and Meson
  105. - improved compiler warning flag detection on autoconf and CMake
  106. - removed PKGCONF_BUFSIZE allocations from the stack where possible
  107. - allow for customizing the way fragment lists are rendered using a callback API
  108. - new support for --msvc-syntax output using the new fragment rendering callbacks
  109. - fragments are now quoted according to POSIX literal rules
  110. - new variables on the pkg-config builtin:
  111. - ${pc_system_includedirs}: the system includedir search path known by pkgconf
  112. - ${pc_system_libdirs}: the system libdir search path known by pkgconf
  113. - new manpages:
  114. - pc(5) describing pkgconf's interpretation of pkg-config .pc files
  115. - pkg.m4(7) describing the autotools macros bundled with pkgconf
  116. * Bug fixes:
  117. - fix pkgconf_pkg_t.id generation on native Windows where either \ or / are usable
  118. as path separator.
  119. - add missing --modversion to --help output
  120. - do not evaluate module paths for modules that are not actually on disk
  121. - ensure we work on a zeroed buffer prior to calling realpath(2) with it
  122. - fix path deduplication edge case when cache-inodes feature is unavailable
  123. - fix path rewriting regression with PKG_CONFIG_SYSROOT_DIR when
  124. PKG_CONFIG_SYSROOT_DIR is set to /
  125. - fix crash in edge case where a .pc file has misquoting in a fragment list.
  126. - fix logic edge case when comparing relocated paths
  127. Changes from 1.3.6 to 1.3.7:
  128. ----------------------------
  129. * Enhancements:
  130. - improved diagnostics for malformed packages.
  131. * Bug fixes:
  132. - reject packages which contain incomplete metadata in post-parse phase.
  133. Changes from 1.3.5 to 1.3.6:
  134. ----------------------------
  135. * Enhancements:
  136. - add many cflags to the protected set: -Wa, -Wl, -Wp, -ansi, -std=, -stdlib=,
  137. -pedantic, -pthread, -trigraphs, -nostdinc, -nostdlibinc, -nobuiltininc.
  138. * Bug fixes:
  139. - handle -include cflag fragments properly.
  140. Changes from 1.3.4 to 1.3.5:
  141. ----------------------------
  142. * Bug fixes:
  143. - fix --variable output for compatibility some broken configure scripts when they
  144. request the same variable from multiple packages
  145. Changes from 1.3.3 to 1.3.4:
  146. ----------------------------
  147. * Bug fixes:
  148. - fix a quoting issue exposed by the Go testsuite
  149. Changes from 1.3.2 to 1.3.3:
  150. ----------------------------
  151. * Bug fixes:
  152. - back out disabling the dependency resolver for single-package queries, it caused
  153. too many regressions.
  154. * Enhancements:
  155. - allow explicitly disabling the dependency resolver via new environment variable,
  156. PKG_CONFIG_MINIMUM_TRAVERSE_DEPTH=1. while pkgconf could already do this using
  157. --minimum-traverse-depth=1, other pkg-config implementations do not have this
  158. option, so adding an environment variable allows to make better use of this
  159. feature (other implementations won't error due to unknown option this way)
  160. Changes from 1.3.1 to 1.3.2:
  161. ----------------------------
  162. * Bug fixes:
  163. - rewrite handling of --modversion, --print-variables and --variable to not require
  164. the dependency resolver
  165. - ensure we disable the dependency resolver in all cases where it is a single-package
  166. query (1.3.1 did not go far enough)
  167. Changes from 1.3.0 to 1.3.1:
  168. ----------------------------
  169. * Features:
  170. - implement --short-errors
  171. * Bug fixes:
  172. - only consider a single package at a time with --print-requires, --print-requires-private,
  173. --print-provides, --modversion, --print-variable and --print-variables
  174. * Enhancements:
  175. - synchronized latest freedesktop.org changes to pkg.m4
  176. - improve error reporting with legacy --atleast-version and similar flags.
  177. Changes from 1.2.0 to 1.3.0:
  178. ----------------------------
  179. * Features:
  180. - pkgconf --debug now provides a facility for tracing most relevant libpkgconf operations
  181. - libpkgconf: add warn and trace handlers for warnings
  182. - replace realpath() with faster, lighter weight path normalization function (github #112)
  183. - pkgconf CLI now emulates pkg-config quoting rules precisely, while allowing direct access
  184. to the actual fragments via libpkgconf
  185. * Bug fixes:
  186. - pkg: properly separate static and virtual packages so they are not inappropriately
  187. optimized out of the dependency graph (github #108)
  188. - argvsplit: do not consider ' and " to have similar rules to escape sequences (github #111)
  189. - pkg: strip trailing whitespace when parsing .pc files
  190. * Enhancements:
  191. - argvsplit basically rewritten from scratch
  192. - many code fixes spotted by coverity
  193. - add PKG_CONFIG_DONT_RELOCATE_PATHS and --dont-relocate-paths environment variables to
  194. disable path relocation feature if needed
  195. - remove extra whitespace that was present for compatibility with older pkg-config releases
  196. (github #113)
  197. Changes from 1.1.0 to 1.2.0:
  198. ----------------------------
  199. * Features:
  200. - new --path option lists the .pc files which provided the requested dependencies
  201. - new path relocation API: pkgconf_path_relocate(), which wraps functions such as
  202. realpath() and cygwin_conv_path().
  203. - new --with-path option adds a path to the search list
  204. - new --define-prefix and --dont-define-prefix features enable automatic prefix
  205. detection for relocatable SDKs. this is mostly useful on windows.
  206. * Bug fixes:
  207. - fragments: fix even more edge cases involving token concatenation
  208. - path lists: don't attempt to collect path inodes if the filter is disabled
  209. - path lists: explicitly avoid uninitialised data for the path inode cache
  210. - client: properly handle --keep-system-cflags and --keep-system-libs
  211. * Enhancements:
  212. - windows: build libpkgconf as a DLL
  213. - fragments: only munge fragments if sysroot_dir is actually set
  214. - overall API: resolver flags have been moved to being a client-object setting
  215. instead of used for every function invocation
  216. Changes from 1.0.1 to 1.1.0:
  217. ----------------------------
  218. * Features:
  219. - new Provides system allows alternate .pc files to provide a dependency
  220. - stable library API (with documentation): http://pkgconf.readthedocs.io/
  221. * Enhancements:
  222. - make it possible to programmatically declare dependencies instead of just using the parser
  223. - testsuite migrated to run under kyua
  224. - provide a libpkgconf.pc file for consumers to use
  225. - pkgconf client: new --pure flag to enable dependency graph optimization in --static mode
  226. - significant .pc parser speedups using bsearch(3).
  227. - handle -idirafter in the same way as -isystem CFLAGS
  228. - learn toolchain "system" paths from GCC environment variables, if present
  229. - filter duplicate PKG_CONFIG_PATH (and other) entries by inode
  230. * Bug fixes:
  231. - fragments: fix another edge case involving empty tokens being concatenated onto previous tokens
  232. (github #99)
  233. - libpkgconf: remove dependencies on config.h in public headers
  234. Changes from 1.0.0 to 1.0.1:
  235. ----------------------------
  236. * Enhancements:
  237. - new stub implementation of --print-provides (github #95)
  238. * Bug fixes:
  239. - fragments: fix an edge case involving path-only fragments and PKG_CONFIG_SYSROOT_DIR (github #94)
  240. Changes from 0.9.12 to 1.0.0:
  241. -----------------------------
  242. * Features:
  243. - new library: libpkgconf
  244. * Enhancements:
  245. - testsuite: use an explicit prefix on all tests
  246. - build: switch to automake
  247. * Bug fixes:
  248. - cast all usage of ctype(3) functions
  249. - do not expand variables passed via --define-variable for compatibility with pkg-config 0.29
  250. - let the CFLAGS being user settable
  251. Changes from 0.9.11 to 0.9.12:
  252. ------------------------------
  253. * Features:
  254. - add --list-package-names
  255. * Enhancements:
  256. - ensure -I and -L are never pushed back
  257. * Bug fixes:
  258. - fix implicit conversion warnings with variables over 31bits
  259. Changes from 0.9.10 to 0.9.11:
  260. ------------------------------
  261. * Features:
  262. - add --validate
  263. * Enhancements:
  264. - add large file support checks in autoconf
  265. * Bug fixes:
  266. - fix private lib deduplication
  267. - handle --static correctly in some more esoteric scenarios
  268. Changes from 0.9.9 to 0.9.10:
  269. -----------------------------
  270. * Features:
  271. * Enhancements:
  272. * Bug fixes:
  273. - Fix parser when dealing with commented lines
  274. Changes from 0.9.8 to 0.9.9:
  275. ----------------------------
  276. * Features:
  277. - add a sub out --print-provides
  278. * Enhancements:
  279. * Bug fixes:
  280. - Fix parser when dealing with comments in fields
  281. Changes from 0.9.7 to 0.9.8:
  282. ----------------------------
  283. * Features:
  284. * Enhancements:
  285. - Convert manpages to mdoc(7)
  286. * Bug fixes:
  287. - Fix parsing multiline fields
  288. Changes from 0.9.6 to 0.9.7:
  289. ----------------------------
  290. * Features:
  291. * Enhancements:
  292. - Convert manpages to mdoc(7)
  293. * Bug fixes:
  294. - Fix parsing multiline fields
  295. Changes from 0.9.5 to 0.9.6:
  296. ----------------------------
  297. * Features:
  298. - add a sub --debug
  299. * Enhancements:
  300. - Do not hardcode non-posix install(1)
  301. * Bug fixes:
  302. - fix --with-system-includedir and --with-system-libdir behaviour
  303. Changes from 0.9.4 to 0.9.5:
  304. ----------------------------
  305. * Features:
  306. * Enhancements:
  307. - Make all variables but CFLAGS and LIBS case sensitive
  308. * Bug fixes:
  309. Changes from 0.9.3 to 0.9.4:
  310. ----------------------------
  311. * Features:
  312. - Add a pkgconf(1) manpage
  313. * Enhancements:
  314. - Improve support for MacOS -framework
  315. * Bug fixes:
  316. Changes from 0.9.2 to 0.9.3:
  317. ----------------------------
  318. * Features:
  319. - Add support for CFLAGS.private
  320. * Enhancements:
  321. - Support out of source build
  322. - Improved private libs deduplication
  323. * Bug fixes:
  324. Changes from 0.9.1 to 0.9.2:
  325. ----------------------------
  326. * Features:
  327. * Enhancements:
  328. * Bug fixes:
  329. - Fix PKG_CONFIG_PATH being ignored when a .pc is directly supplied from
  330. command line
  331. Changes from 0.9.0 to 0.9.1:
  332. ----------------------------
  333. * Features:
  334. * Enhancements:
  335. - --simulate: print depgraph operations
  336. - --simulate: print bytecode program as a human-readable AST
  337. * Bug fixes:
  338. - reset parser state on new package atom
  339. Changes from 0.8.12 to 0.9.0:
  340. ----------------------------
  341. * Features:
  342. * Enhancements:
  343. - Rework the internal cache API
  344. - Rework the internal code to use the new pkg_list_t framework
  345. - Rework PKG_CONFIG_PATH handling code
  346. * Bug fixes:
  347. - fix multi-recursion with -framework