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