Skip to content

Library order is still not correct #322

@stanhu

Description

@stanhu

@kaniini This was supposedly fixed in pkgconf v2.0 (#268), but I'm still seeing an issue. Attached is the reproduction step with the .pc files I'm trying to use:

tar xvf test-pc.tar.gz
PKG_CONFIG_PATH=pkgconfig pkg-config --libs re2

test-pc.tar.gz

On Windows, with pkgconf v2.0.3 I see the incorrect order. For example, notice that -labsl_spinlock_wait precedes -labsl_flags, but in v1.8.0 -labsl_spinlock_wait is towards the end as it should be:

-pthread -L/home/stanhu/github/re2/ports/x64-mingw-ucrt/x86_64-w64-mingw32/libre2/2023-09-01/lib -lr
e2 -L/home/stanhu/github/re2/ports/x64-mingw-ucrt/x86_64-w64-mingw32/abseil/20230802.0/lib -labsl_sp
inlock_wait -labsl_flags -labsl_bad_optional_access -labsl_string_view -labsl_strings_internal -labs
l_flags_program_name -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_civil_time -l
absl_time_zone -labsl_symbolize -ldbghelp -labsl_debugging_internal -labsl_demangle_internal -labsl_
malloc_internal -labsl_flags_internal -labsl_flags_marshalling -labsl_log_severity -labsl_str_format
_internal -labsl_flags_reflection -labsl_flags_private_handle_accessor -labsl_flags_commandlineflag
-labsl_flags_commandlineflag_internal -labsl_flags_config -labsl_cord -labsl_crc32c -labsl_crc_inter
nal -labsl_crc_cpu_detect -labsl_cordz_functions -labsl_cordz_handle -labsl_stacktrace -labsl_cord_i
nternal -labsl_cordz_info -labsl_crc_cord_state -labsl_city -labsl_bad_variant_access -labsl_low_lev
el_hash -labsl_int128 -labsl_hash -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_time -l
absl_raw_logging_internal -labsl_throw_delegate -labsl_base -ladvapi32 -labsl_raw_hash_set -labsl_st
rings -labsl_synchronization

However, with pkgconf v1.8.0, I see the correct order:

-pthread -L/home/stanhu/github/re2/ports/x64-mingw-ucrt/x86_64-w64-mingw32/libre2/2023-09-01/lib -lr
e2 -L/home/stanhu/github/re2/ports/x64-mingw-ucrt/x86_64-w64-mingw32/abseil/20230802.0/lib -labsl_fl
ags -labsl_flags_internal -labsl_flags_marshalling -labsl_flags_reflection -labsl_flags_private_hand
le_accessor -labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal -labsl_flags_config -
labsl_flags_program_name -labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_cordz_functions -
labsl_cordz_handle -labsl_crc_cord_state -labsl_crc32c -labsl_crc_internal -labsl_crc_cpu_detect -la
bsl_raw_hash_set -labsl_hash -labsl_city -labsl_bad_variant_access -labsl_low_level_hash -labsl_hash
tablez_sampler -labsl_exponential_biased -labsl_bad_optional_access -labsl_str_format_internal -labs
l_synchronization -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_stacktrace -labs
l_symbolize -ldbghelp -labsl_debugging_internal -labsl_demangle_internal -labsl_malloc_internal -lab
sl_time -labsl_civil_time -labsl_strings -labsl_string_view -labsl_strings_internal -labsl_base -lad
vapi32 -labsl_spinlock_wait -labsl_int128 -labsl_throw_delegate -labsl_raw_logging_internal -labsl_l
og_severity -labsl_time_zone

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions