Commit Graph

83 Commits (73119e016551f17486d268b6d242d3f2e016c4f9)

Author SHA1 Message Date
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