Test round-trip of precompiled gems
Closed this issue · 2 comments
mudge commented
From @flavorjones:
I would recommend round-trip tests for the precompiled gems:
- for each architecture:
- build a precompiled gem (e.g. https://github.com/flavorjones/ruby-c-extensions-explained/blob/main/.github/workflows/precompiled.yml#L161)
- for each supported ruby version
- install the gem and run tests against it (preferably the entire suite) (e.g. https://github.com/flavorjones/ruby-c-extensions-explained/blob/main/.github/workflows/precompiled.yml#L191)
- also include musl target systems for the linux builds to make sure you won't get bitten by any glibc/musl incompatibilities.
stanhu commented
#76 is getting close to working, but there are a few Windows failures:
- Some of the jobs (such as https://github.com/mudge/re2/actions/runs/5572656906/jobs/10178996692) are failing because the
abseil
path exceeds 240 characters. Perhaps we can fix this by tellingmini_portile2
to use a different temp directory? - Windows 2022 builds (such as https://github.com/mudge/re2/actions/runs/5572656906/jobs/10178936082) are failing in the linker due to missing abseil symbols. I'm not sure yet why it works fine on my own Windows 2022 machine. Windows 2019 builds are working fine.
stanhu commented
It seems the Windows 2022 link order may be a problem with pkgconf
, which is used with MSYS2: pkgconf/pkgconf#268
I think I reproduced the issue by using MSYS2. The ordering below is incorrect:
$ PKG_CONFIG_PATH=.:../abseil-cpp-20230125.3/build/lib/pkgconfig pkg-config --libs --static re2
-L/usr/local/lib -labsl_flags -labsl_spinlock_wait -labsl_flags_internal -labsl_flags_reflection -labsl_bad_optional_access -labsl_strings_internal -labsl_flags_program_name -labsl_graphcycles_internal -labsl_symbolize -labsl_civil_time -labsl_time_zone -labsl_demangle_internal -labsl_flags_marshalling -labsl_str_format_internal -labsl_flags_private_handle_accessor -labsl_cord -labsl_hash -labsl_crc32c -labsl_crc_internal -labsl_cordz_handle -labsl_city -labsl_low_level_hash -labsl_bad_variant_access -labsl_hashtablez_sampler -pthread -Llib@ -lre2 -labsl_raw_hash_set -labsl_cordz_functions -labsl_exponential_biased -labsl_debugging_internal -labsl_stacktrace -labsl_crc_cpu_detect -labsl_cordz_info -labsl_time -labsl_crc_cord_state -labsl_cord_internal -labsl_malloc_internal -labsl_log_severity -labsl_flags_commandlineflag_internal -labsl_flags_config -labsl_flags_commandlineflag -labsl_int128 -labsl_throw_delegate -labsl_synchronization -lrt -labsl_base -labsl_strings -labsl_raw_logging_internal