William Pitcock
74d58d1b63
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).
2017-12-05 17:34:01 -06:00
William Pitcock
44b4b126f3
libpkgconf: pkg: record which pkgconf_client_t owns each pkgconf_pkg_t object
2017-12-05 17:32:00 -06:00
William Pitcock
7ced8d77ae
libpkgconf: fragment: pkgconf_fragment_parse: return false on parse failure
2017-09-19 21:48:53 -05:00
William Pitcock
e9fd43caa7
libpkgconf: clean up header includes ( closes #137 )
2017-09-17 23:38:25 -05:00
William Pitcock
048deb95b3
headers: add C++ wrappers ( closes #136 )
2017-09-13 14:35:28 -05:00
William Pitcock
1252d7ae6a
libpkgconf: dependency: make dependency_to_str() private, use a caller-supplied buffer for reentrancy
2017-09-08 19:53:52 -05:00
William Pitcock
615bab3df9
libpkgconf: pkg: pkgconf_pkg_report_graph_error(): move already_sent_notice to pkgconf_client_t
2017-09-08 19:48:31 -05:00
Dan Kegel
4ba2bac538
Don't depend on libtool magic to control which symbols are exported from shared libraries
2017-06-05 14:00:02 -07:00
Dan Kegel
4d7b4d7c8e
Minimal tweaks to compile with Visual C 2015
2017-06-04 19:19:55 -07:00
William Pitcock
cf3c50ca78
libpkgconf: pkg: pkgconf_try_specific_path() and pkgconf_pkg_new_from_file() require a mutable client to release resources when encountering invalid packages
2017-05-19 23:21:58 -05:00
William Pitcock
81011ba522
main: implement --short-errors ( #115 )
2017-02-27 09:54:02 -06:00
William Pitcock
794443a92a
dependency: break API to add tracepoints to dependency list building
2017-02-25 16:04:55 -06:00
William Pitcock
01fe5743ea
fragment: add new option to control escaping shell arguments
2017-02-25 15:32:49 -06:00
William Pitcock
d20efff495
libpkgconf: overhaul pkgconf_trace() a little
2017-02-04 19:49:59 -06:00
William Pitcock
bef293080a
libpkgconf: client: add trace logging too
2017-02-04 18:57:21 -06:00
William Pitcock
a6755cd792
libpkgconf: client: add pkgconf_warn()
2017-02-04 18:46:53 -06:00
William Pitcock
eb98a1e6c3
libpkgconf: client: clean up various aspects of error/warn handlers
2017-02-04 18:46:33 -06:00
William Pitcock
c0b6a62c40
libpkgconf: client: add warn handler and getter/setter for both warn handler and error handler
2017-02-04 18:37:58 -06:00
William Pitcock
647c0255aa
libpkgconf: add PKGCONF_PKG_PKGF_DONT_RELOCATE_PATHS ( #110 )
...
main: add PKG_CONFIG_DONT_RELOCATE_PATHS environment variable and --dont-relocate-paths option to disable path relocation
2017-02-03 13:17:21 -06:00
William Pitcock
0c01a81299
libpkgconf: split virtual/static package state (this is API/ABI safe, static packages are always treated as virtual when it comes to mutation)
2017-01-22 23:26:01 -06:00
William Pitcock
7237b811e7
add support for making paths relocatable ( closes #103 )
2017-01-20 00:58:48 -06:00
William Pitcock
ced4f00363
libpkgconf: client: add pkgconf_client_[get|set]_prefix_varname()
2017-01-19 19:16:00 -06:00
William Pitcock
13cf74c7a3
libpkgconf: kill flags from top-level fragment API (ref #105 )
2017-01-19 18:23:25 -06:00
William Pitcock
7b39c38408
libpkgconf: pkg: clean up use of flags variable (ref #105 )
2017-01-19 18:17:29 -06:00
William Pitcock
127fd037d4
libpkgconf: pkg: uncouple resolver flags from pkgconf_pkg_dir_list_build(). (ref #105 )
2017-01-19 17:35:57 -06:00
William Pitcock
0ca6a16ce5
libpkgconf: queue: nuke flags parameters (ref #105 )
2017-01-19 17:32:38 -06:00
William Pitcock
597c3c7faf
libpkgconf: client: add pkgconf_client_t.flags and a get/set interface for it
2017-01-19 17:22:20 -06:00
William Pitcock
4f94090fe4
libpkgconf: fragment: make pkgconf_fragment_filter() accept userdata ( closes #106 )
2017-01-18 20:25:19 -06:00
William Pitcock
1369f558c6
path: add new pkgconf_path_relocate() API which is a stub when path
...
relocation is not needed
2017-01-13 20:05:21 -06:00
William Pitcock
92f566ff38
libpkgconf: path: check both device node and inode for dedup. pointed out by @plicease
2016-12-30 11:39:45 -06:00
William Pitcock
2305031573
libpkgconf: path: make the duplicate filtering opt-in. some path lists should not be deduped (compiler path lists, for example)
2016-12-30 11:13:04 -06:00
William Pitcock
bad0da0c03
libpkgconf: path: filter out duplicate path entries by inode if possible ( closes #102 )
2016-12-30 11:01:15 -06:00
William Pitcock
6ef4a853b5
libpkgconf: migrate pkgconf client fragment_is_system_dir() to a libpkgconf API
2016-12-21 20:06:17 -06:00
William Pitcock
f6b074f267
libpkgconf: path: make pkgconf_path_match_list() take a const list argument
2016-12-21 19:50:05 -06:00
William Pitcock
61c750fde3
libpkgconf: pkg: cleanup and document pkg module
2016-12-15 23:36:59 -06:00
William Pitcock
82fa8b21cf
libpkgconf: separate config.h from the actual API headers
2016-12-13 12:14:08 -06:00
Graham Ollis
fa87608978
pass client and user data to error handler ( #100 )
2016-12-13 12:03:59 -06:00
William Pitcock
d6d7ff775a
main: use pkgconf_fragment_render() to render fragment lists instead of custom stuff
2016-12-09 23:07:15 -06:00
William Pitcock
2b5d763e31
main: use pkgconf_fragment_filter() instead of crazy stuff
2016-12-09 22:45:22 -06:00
William Pitcock
0232ee52a3
libpkgconf: fragment: add pkgconf_fragment_filter() to selectively copy a fragment list using a filter function
2016-12-09 22:18:59 -06:00
William Pitcock
062f0fd331
libpkgconf: pkg: pkgconf_pkg_new_from_file() and children do not need the resolver flags anymore, so remove them
2016-12-09 21:40:19 -06:00
William Pitcock
6e4fd027c3
main: switch to pkgconf_client_set_sysroot_dir() and remove the last vestige of PKGCONF_PKG_PKGF_MUNGE_SYSROOT_PREFIX
2016-12-09 21:37:36 -06:00
William Pitcock
a902203054
libpkgconf: fragment: simplify sysroot handling by using pkgconf_client_t.sysroot_dir presence
2016-12-09 21:36:59 -06:00
William Pitcock
f7b7853932
libpkgconf: tuple: add pkgconf_tuple_free_entry() to free a specific tuple node
2016-12-09 20:50:33 -06:00
William Pitcock
02ec215ecc
client: introduce pkgconf_client_t.buildroot_dir and pkgconf_client_t.sysroot_dir members
...
This adds buildroot and sysroot dir members to the pkgconf client structure, which will allow us to replace
the suboptimal PKGCONF_PKG_PKGF_MUNGE_SYSROOT_PREFIX code.
2016-12-09 20:41:39 -06:00
William Pitcock
011d8c77d6
libpkgconf: audit: migrate to pkgconf_client_t
2016-12-02 00:34:48 -06:00
William Pitcock
c05ecdfc9d
libpkgconf: migrate cache to pkgconf_client_t which unfortunately requires it to be non-const :(
2016-12-02 00:29:33 -06:00
William Pitcock
e7f4846508
libpkgconf: path: add cleanup functions
2016-12-02 00:04:43 -06:00
William Pitcock
a300787cef
libpkgconf: do not implicitly build the dir list, instead explicitly do it
2016-12-01 15:17:23 -06:00
William Pitcock
ad731d1948
libpkgconf: make pkgconf_pkg_dir_list_build() public
2016-12-01 15:11:37 -06:00
William Pitcock
434c465ca9
libpkgconf: migrate pkgconf_error() to use client objects
2016-12-01 15:09:54 -06:00
William Pitcock
8740c5cd55
libpkgconf: begin removing global state from libpkgconf library by introducing a "client" object which holds the state
2016-12-01 15:05:03 -06:00
William Pitcock
4bb46e20e3
libpkgconf: add path matching and environment building functions
2016-11-30 22:36:35 -06:00
William Pitcock
f4da1082cb
libpkgconf: refactor some path operations
2016-11-30 22:15:13 -06:00
William Pitcock
c2c7e7488e
pkg: add a more flexible framework for multi-level compare required for fuzzy Provides rules.
2016-09-08 23:54:57 -05:00
William Pitcock
d304d9cb2e
pkg: add support for 'simple' Provides rule entries ( #95 )
2016-09-08 22:10:24 -05:00
William Pitcock
bbe6dcc088
pkg: make pkgconf_scan_all() API more flexible to allow it to scan until it finds a qualifying pkgconf_pkg_t
2016-08-27 09:48:53 -05:00
William Pitcock
d72ece6a5f
dependency: add pkgconf_dependency_add for programmatically adding a dependency object
2016-08-26 23:40:15 -05:00
William Pitcock
f9101659bc
pkg: add support for parsing Provides: entries
2016-08-26 12:14:32 -05:00
William Pitcock
d5d194f1db
pkg: clean up dependency comparison code
2016-08-26 10:54:37 -05:00
William Pitcock
9e415ea151
libpkgconf: improve API to support any number of builtin packages
2016-08-26 00:26:30 -05:00
William Pitcock
45d422c484
libpkgconf: implement PKG_CONFIG_LOG style auditing ( closes #88 )
2016-07-10 15:20:31 -05:00
William Pitcock
41e0a65870
audit: add actual audit log I/O functions (ref #88 )
2016-07-10 15:03:58 -05:00
William Pitcock
20d448abb8
libpkgconf: add PKGCONF_ARRAY_SIZE() macro
2016-05-19 16:51:47 -05:00
Baptiste Daroussin
1fe91b914c
Do not parse the global variables
...
This fixes an incompatibility with pkg-confing 0.29
Found by Thomas Klausner <wiz@NetBSD.org> when building gupnp-igd-0.2.3
with introspection support
2015-12-08 00:02:14 +01:00
Baptiste Daroussin
46b772afe4
More casting is needed
...
Found on NetBSD by Thomas Klausner <wiz@NetBSD.org>
2015-12-07 11:04:31 +01:00
William Pitcock
b904864619
libpkgconf: do something better than error_msgout for error logging
2015-09-06 12:01:12 -05:00
William Pitcock
06a45f1b62
libpkgconf: clean up PKG_ERRF and PKGF_ defines
2015-09-06 11:45:00 -05:00
William Pitcock
50cf8db086
libpkgconf: clean up PKG_MODULE_SEPARATOR() and PKG_OPERATOR_CHAR() macros
2015-09-06 11:39:55 -05:00
William Pitcock
ec5cc3f068
libpkgconf: PKG_PROPF namespace becomes PKGCONF_PKG_PROPF.
2015-09-06 11:37:20 -05:00
William Pitcock
dd86ba43dd
libpkgconf: PKG_ comparators become PKGCONF_CMP_ namespace
2015-09-06 11:34:09 -05:00
William Pitcock
571d9c756c
libpkgconf: PKG_BUFSIZE becomes PKGCONF_BUFSIZE, remove unused PKG_MIN/PKG_MAX.
2015-09-06 11:29:56 -05:00
William Pitcock
ca1b02659a
libpkgconf: untangle remaining pkg_ functions related to pkgconf_pkg_t
2015-09-06 11:20:48 -05:00
William Pitcock
0d145ef85a
libpkgconf: pkg_compare_version() becomes pkgconf_compare_version(), same for pkg_scan_all()
2015-09-06 11:00:46 -05:00
William Pitcock
66247fae5f
libpkgconf: pkg_comparator_t becomes pkgconf_pkg_comparator_t (and so on)
2015-09-06 10:57:26 -05:00
William Pitcock
4410eb2c78
libpkgconf: pkg_queue becomes pkgconf_queue
2015-09-06 10:51:34 -05:00
William Pitcock
342950a5e4
libpkgconf: pkg_cache becomes pkgconf_cache
2015-09-06 10:50:23 -05:00
William Pitcock
b17f264032
libpkgconf: move some utility funcs into pkgconf_ namespace
2015-09-06 10:48:24 -05:00
William Pitcock
61d5fc72c8
libpkgconf: move pkg_fragment to pkgconf_fragment namespace
2015-09-06 10:44:10 -05:00
William Pitcock
4c71b25d5d
libpkgconf: move pkg_tuple to pkgconf_tuple namespace
2015-09-06 10:41:40 -05:00
William Pitcock
1ee18d0e69
libpkgconf: move pkg_dependency to pkgconf_dependency namespace
2015-09-06 10:38:30 -05:00
William Pitcock
cc2dcc1f5d
libpkgconf: move pkg_node and pkg_list to pkgconf_node and pkgconf_list namespaces
2015-09-06 10:31:21 -05:00
William Pitcock
a706b3dccc
initial libtoolization for libpkgconf
2015-09-06 09:35:08 -05:00