William Pitcock
ae42261c3f
argvsplit: refactor splitting state machine
2017-02-25 15:04:08 -06:00
John Hein
9b255d465c
If PKG_CONFIG_PATH element is a sym link, use the link destination instead of the link for inode caching checks.
...
See issue 112 & issue 110 (https://github.com/pkgconf/pkgconf/issues )
2017-02-24 23:26:41 -06:00
John Hein
76b8e0a26b
Normalize the path to remove duplicate / separators rather than possibly altering the path with realpath(3). Leave sym links as is in path components. This is also cheaper than realpath(3), and works on platforms that don't have realpath(3).
...
Note: if this is accepted, the check for realpath in configure.ac
can be removed, and some docs that mention realpath will be adjusted.
2017-02-24 23:26:10 -06:00
William Pitcock
d558e30ab3
libpkgconf: argvsplit: quoting logic was simplified too much
2017-02-07 10:25:38 -06:00
William Pitcock
b0c36cd128
libpkgconf: pkg: add some trace points
2017-02-04 20:35:49 -06:00
William Pitcock
16ecf82fd7
libpkgconf: client: bring up the default trace handler as early as possible
2017-02-04 20:09:21 -06:00
William Pitcock
f7f0bfc460
libpkgconf: cache: add trace points
2017-02-04 20:01:41 -06:00
William Pitcock
2b6bb5a252
libpkgconf: client: add trace points
2017-02-04 19:50:58 -06:00
William Pitcock
d20efff495
libpkgconf: overhaul pkgconf_trace() a little
2017-02-04 19:49:59 -06:00
William Pitcock
820ad83edd
libpkgconf: pkg: add variable whitespace warnings back, using pkgconf_warn().
2017-02-04 19:05:28 -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
d884dc46a2
libpkgconf: client: ensure error/warn handlers always have a sane default instead of actually NULL
2017-02-04 18:41:16 -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
fe40bc33f8
libpkgconf: argvsplit: do not consider ' or " to be equivalent to \ ( #111 )
2017-02-03 12:53:50 -06:00
William Pitcock
42d65b14c7
libpkgconf: client: add INCLUDE environment to the cflags path filter list on windows
2017-02-01 13:03:06 -06:00
William Pitcock
1aa1a43321
Revert "libpkgconf: pkg: warn when encountering trailing whitespace"
...
This reverts commit 2fa4fd09d0
.
2017-01-26 13:38:57 -06:00
William Pitcock
2fa4fd09d0
libpkgconf: pkg: warn when encountering trailing whitespace
2017-01-26 13:32:07 -06:00
William Pitcock
ef1503b769
libpkgconf: strip trailing whitespace
2017-01-26 13:10:52 -06:00
William Pitcock
b06bbe75a4
libpkgconf: path: only enable cygwin path relocation backend for msys (ref #72 )
2017-01-23 23:17:26 -06:00
William Pitcock
e87595b3d1
libpkgconf: use a better check instead of stat() for pkg-config file iteration, avoiding a TOCTOU race condition identified by coverity
2017-01-23 12:42:13 -06:00
William Pitcock
db65f935f0
libpkgconf: iter: check list->tail for null, not list->head
2017-01-23 00:24:13 -06:00
William Pitcock
0927ecf1c6
Revert "Actually fix the regression introduced in 7b39c38"
...
This reverts commit 5e5c418837
.
2017-01-22 23:29:59 -06:00
William Pitcock
5554be4986
libpkgconf: queue: chase API change (mark static root virtual packages as static)
2017-01-22 23:28:51 -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
9ece7cd487
libpkgconf: move sys/stat.h inclusion out of stdinc.h to the only other consumer of sys/stat.h
2017-01-22 23:09:38 -06:00
William Pitcock
e5f3dac6e7
libpkgconf: pkg: handle error value from stat(2).
2017-01-22 23:07:39 -06:00
William Pitcock
67796a1d86
libpkgconf: argvsplit: make escape handling more explicit
2017-01-22 23:04:01 -06:00
Igor Gnatenko
5db87c9685
remove dead assignments ( #109 )
...
* remove dead assignments
None of them are used.
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
* The address of an object "&pkgconf_pkg_provides_vermatch_rules[pkgdep->compare]" is never null
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
* Overrunning array pkgconf_pkg_comparator_names at element index 7
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
2017-01-22 11:31:34 -08:00
Baptiste Daroussin
5e5c418837
Actually fix the regression introduced in 7b39c38
2017-01-22 11:26:43 +01:00
Baptiste Daroussin
17be554a21
Revert "Fix regression introduced in 7b39c38"
...
This reverts commit 7d89f659ff
.
2017-01-22 11:23:24 +01:00
Baptiste Daroussin
7d89f659ff
Fix regression introduced in 7b39c38
...
now pkgconf --variable=pc_path pkg-config works
2017-01-22 10:44:09 +01: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
1ee3c12f53
libpkgconf: path: use pkgconf_path_relocate() when matching paths
2017-01-19 10:43:23 -06:00
William Pitcock
fa927fd379
libpkgconf: path: pkgconf_path_relocate(): implement realpath backend
2017-01-19 10:36:07 -06:00
William Pitcock
0315832285
doc: document pkgconf_path_relocate()
2017-01-19 10:31:40 -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
b428eeaacf
libpkgconf: remove legacy check to ensure pkgconf_pkg_dir_list_build() is only called once.
...
this is not necessary anymore because:
- we do path entry deduplication
- it is possible that we want to prime the dir list with some user-specified paths prior to building it
2017-01-18 11:29:24 -06:00
William Pitcock
147fd80750
path: relocate system libdir/includedir if appropriate
2017-01-13 20:12:38 -06:00
William Pitcock
cb1dc71e23
fragment: simplify pkgconf_fragment_copy_munged()
2017-01-13 20:10:02 -06:00
William Pitcock
87a5a1f0cc
path: when stubbing pkgconf_path_relocate(), suppress unused variables warnings
2017-01-13 20:08:22 -06:00
William Pitcock
27c3710521
fragment: when munging, do a path relocation too
2017-01-13 20:06:48 -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
7f6a185977
fragment: only munge if sysroot_dir is actually set
...
on cygwin/msys2, it is possible for munging to be enabled for other types of munging (instead of sysroot)
2017-01-13 19:55:54 -06:00
William Pitcock
4ba414f74a
fragment: handle oddball fragments like -framework more accurately
2017-01-07 15:04:34 -06:00
Baptiste Daroussin
3b3f1dc76e
Fix gcc warnings
2017-01-07 17:57:37 +01:00
Baptiste Daroussin
2e855972dc
inode cache: ensure we never use an unitilized struct stat
2017-01-07 17:52:44 +01:00
Graham Ollis
9c426b6f2c
do not filter non-existent directories if filter is off
2016-12-31 14:10:59 -06:00
William Pitcock
0c690dc891
libpkgconf: fragment: fix over-optimization of cflags/linker flags in edge cases involving non-standard options
2016-12-30 12:39:10 -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
aa041b415e
libpkgconf: path: add naive path list filtering function
2016-12-30 10:44:01 -06:00
William Pitcock
135da1440c
libpkgconf: iter: track list lengths
2016-12-30 09:57:01 -06:00
William Pitcock
ad1e414dee
libpkgconf: fragment: handle -idirafter in the same way as -isystem
...
(https://bugs.freedesktop.org/show_bug.cgi?id=97337 )
2016-12-30 02:47:42 -06:00
William Pitcock
c916e3a437
libpkgconf: client: filter all of the path-related GCC environment variables listed in the GCC manual (not just the ones in pkg-config)
2016-12-30 02:39:18 -06:00
William Pitcock
1ece862e87
libpkgconf: client: some toolchains have C_INCLUDE_PATH and CPLUS_INCLUDE_PATH, treat them as PKG_CONFIG_SYSTEM_INCLUDE_PATH.
2016-12-30 02:35:36 -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
cd0160a4a2
libpkgconf: handle PKG_CONFIG_SYSTEM_INCLUDE_PATH and PKG_CONFIG_SYSTEM_LIBRARY_PATH environment variables at client init time
2016-12-21 19:55:01 -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
32c8c73d8b
libpkgconf: pkg: pkgconf_pkg_find_in_registry_key() should actually be private
2016-12-15 22:57:15 -06:00
William Pitcock
21a6d6cd59
libpkgconf: client: set the error handler to default error handler if NULL was provided for the error handler
2016-12-15 22:33:22 -06:00
William Pitcock
568e5bfd1b
libpkgconf: client: move pkgconf_error() and pkgconf_default_error_handler() here
2016-12-15 22:33:01 -06:00
William Pitcock
c7e505fe44
libpkgconf: fragment: split out per-fragment length calculation and use it for all render functions (buffer overrun hardening)
2016-12-15 18:32:43 -06:00
William Pitcock
63b3989f24
libpkgconf: document fragment module
2016-12-15 18:27:57 -06:00
William Pitcock
82fa8b21cf
libpkgconf: separate config.h from the actual API headers
2016-12-13 12:14:08 -06:00
William Pitcock
487171950b
libpkgconf: client: fix doc strings up
2016-12-13 12:06:24 -06:00
Graham Ollis
fa87608978
pass client and user data to error handler ( #100 )
2016-12-13 12:03:59 -06:00
William Pitcock
e6c49153ff
libpkgconf: document tuple module
2016-12-11 17:28:27 -06:00
William Pitcock
4967c85d49
libpkgconf: document queue module
2016-12-10 23:27:21 -06:00
William Pitcock
4cc0d017da
libpkgconf: document path module
2016-12-10 20:14:42 -06:00
William Pitcock
af503f210a
libpkgconf: document dependency module
2016-12-10 19:57:26 -06:00
William Pitcock
9efa991d98
libpkgconf: update cache docs to new format
2016-12-10 19:40:51 -06:00
William Pitcock
74fbf4e5dc
libpkgconf: document audit module
2016-12-10 19:28:34 -06:00
William Pitcock
828c290207
libpkgconf: document argvsplit module
2016-12-10 18:56:09 -06:00
William Pitcock
91fbf683f1
libpkgconf: document client module
2016-12-10 18:35:17 -06:00
William Pitcock
b0c821af5c
bsdstubs: nothing seems to use strtok_r() anymore, kill it
2016-12-10 16:20:40 -06:00
William Pitcock
8213d91038
libpkgconf: migrate to using the pkgconf_ namespaced strlcat/strlcpy symbols
2016-12-10 16:19:40 -06:00
William Pitcock
bdaa26231b
bsdstubs: clean up the way this works by namespacing it
2016-12-10 16:16:37 -06:00
William Pitcock
eab112fb15
pkg: cleanups
2016-12-10 16:06:18 -06:00
William Pitcock
0ae2d8e5de
fragment: fix off-by-one error in pkgconf_fragment_render_len()
2016-12-10 15:47:21 -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
0baecbd165
libpkgconf: fragment: mark fragment objects const in several internal functions
2016-12-09 22:06:42 -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
792cd7c8e6
libpkgconf: tuple: handle sysroot without the need of PKGCONF_PKG_PKGF_MUNGE_SYSROOT_PREFIX
2016-12-09 21:32:55 -06:00
William Pitcock
38e959857a
libpkgconf: client: initialize sysroot and buildroot dirs to reasonable defaults
2016-12-09 21:08:53 -06:00
William Pitcock
92e9b78371
libpkgconf: tuple: when calling pkgconf_tuple_add() on a collection that already has a tuple entry for 'key', replace it instead of adding a new entry
2016-12-09 20:58:15 -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
3ba3aae783
libpkgconf: client: clean up cache
2016-12-02 00:48:26 -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
b7984a795c
libpkgconf: commit missing client.c
2016-12-01 15:31:09 -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
ce165646de
fragment: skip empty tokens ( closes #99 )
...
Due to the way that tokens are merged together for arguments which require explicit whitespace, an
empty token could result in a fragment like:
{.type = 'I', .data = '/usr/include '}
Such a fragment would be treated differently than:
{.type = 'I', .data = '/usr/include'}
This difference causes the compiler to include a system include path as part of the additional includes, thus
breaking things like include path shadowing, resulting in random build failures. As such, we skip empty tokens
from the tokenizer as they do not have any relevance anyway.
2016-10-25 14:03:25 -05:00
William Pitcock
6484dcb0c2
pkg: pkgconf_pkg_free(): be sure to free the Provides list
2016-09-16 09:59:41 -05:00
William Pitcock
b900e04628
pkg: add support for PKGCONF_CMP_NOT_EQUAL Provides rules, completing support of Provides rules ( closes #95 )
2016-09-10 01:51:19 -05:00
William Pitcock
4fcda862a4
pkg: make fuzzy Provides matching for PKG_CMP_NOT_EQUAL ops more correct
2016-09-09 14:34:38 -05:00
William Pitcock
892a03cd8c
pkg: fill in a lot of the fuzzy matching stuff (but some of it may be wrong, needs to be looked at)
2016-09-09 01:04:26 -05:00
William Pitcock
7c0264ac7a
pkg: implement rudementary support for fuzzy Provides matches
2016-09-09 00:17:46 -05: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
9783181cce
pkg: make pkgconf_vercmp_res_func_t more generic, allowing it to be used for Provides rules.
2016-09-08 23:23:15 -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
5ba46130d2
pkg: add anchor Provides entry once the .pc file is parsed, instead of faking it in the tool
2016-08-26 23:43:36 -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
4960242acb
pkg: make some compile-time defined tables const
2016-08-26 10:35:22 -05:00
William Pitcock
be4a002f1c
pkg: use bsearch(3) instead of a hardcoded tree of strcmp logic
2016-08-26 01:11:50 -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
b835d74d80
fragment: try to apply munging to all path-only fragments ( #94 )
2016-08-24 18:51:02 -05:00
William Pitcock
f6c96fc3d1
fragment: add pkgconf_fragment_should_munge() to simplify the munging logic a bit ( #94 )
2016-08-24 18:39:42 -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
f44f83998c
queue: namespace the virtual 'world' package as something that could never actually exist
2016-05-20 02:06:46 -05:00
William Pitcock
f72e1c6def
fragment: genericize the fragment merge determination and add support for -isystem ( closes #87 )
2016-05-19 17:05:04 -05:00
William Pitcock
20d448abb8
libpkgconf: add PKGCONF_ARRAY_SIZE() macro
2016-05-19 16:51:47 -05:00
William Pitcock
a892af7464
pkg: tolerate NULL in pkgconf_compare_version() ( closes #85 )
2016-01-21 11:09:17 -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
Baptiste Daroussin
cb83dab4ad
More casting for ctype
2015-12-02 14:59:51 +01:00
Baptiste Daroussin
7898b8297e
Correctly cast ctypes function input to unsigned int
...
This fixes issues found by building on NetBSD which is more pedantic
about thoses cases.
Reported by: Thomas Klausner (wiz at NetBSD)
2015-12-02 13:19:01 +01:00
William Pitcock
abbd6b06d4
Revert "Merge pull request #81 from dankegel/quotefest"
...
This reverts commit 42551f6364
, reversing
changes made to 938bb9e694
.
2015-09-27 16:10:33 -05:00
Dan Kegel
d0bbc686bf
Add tests for libraries quoted with double quotes, make them pass
2015-09-10 16:49:52 -07:00
Dan Kegel
41cb57e9cd
Add unit test for argvsplit
2015-09-10 16:35:06 -07:00
William Pitcock
b904864619
libpkgconf: do something better than error_msgout for error logging
2015-09-06 12:01:12 -05:00
William Pitcock
2f4f68fb62
libpkgconf: dependency: remove some dead debug code
2015-09-06 11:50:29 -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