[go: up one dir, main page]

Skip to content

Regression: 2.4.0 fails to build on other architectures than x86_64

Version 2.4.0 fails to build on aarch64, s390x and ppc64le in the same exact place. On ppc64le, it was already failing to build previously due to linker errors, but now it fails during building itself. Errors:

   Compiling anon v2.4.0 (/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0)
     Running `/usr/bin/rustc --crate-name anon --edition=2021 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type cdylib --crate-type lib --emit=dep-info,link -C opt-level=3 -C codegen-units=1 --cfg 'feature="pg16"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("default", "pg13", "pg14", "pg15", "pg16", "pg17", "pg18", "pg_test"))' -C metadata=0237f86850f59b90 --out-dir /builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps -C strip=debuginfo -L dependency=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps --extern c_str_macro=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libc_str_macro-9afeeaec71cd54e7.rlib --extern chrono=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libchrono-37e65630bc3720d9.rlib --extern fake=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libfake-d77bf4f05e7f774d.rlib --extern fastrand=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libfastrand-e9d857d3bc54111b.rlib --extern image=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libimage-a6586e029f1e7b94.rlib --extern md5=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libmd5-054a7cbb06265a16.rlib --extern paste=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libpaste-bba55c30f0bb0858.so --extern pgrx=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libpgrx-6faf540a126ca4eb.rlib --extern rand=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/librand-17a42d9c91b4151b.rlib --extern regex=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libregex-1026e15f33371938.rlib -Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn -L native=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/build/pgrx-pg-sys-55312a442cfb83f7/out -L /usr/lib64`
error[E0308]: mismatched types
     --> src/compat.rs:101:9
      |
99    |     pg_sys::parse_analyze_varparams(
      |     ------------------------------- arguments to this function are incorrect
100   |         arg_parseTree,
101   |         arg_sourceText,
      |         ^^^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
      |
      = note: expected raw pointer `*const u8`
                 found raw pointer `*const i8`
note: function defined here
     --> /builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/build/pgrx-pg-sys-55312a442cfb83f7/out/pg16.rs:43830:12
      |
43830 |     pub fn parse_analyze_varparams(
      |            ^^^^^^^^^^^^^^^^^^^^^^^
error[E0308]: mismatched types
   --> src/fixture.rs:355:13
    |
353 |         compat::parse_analyze_varparams(
    |         ------------------------------- arguments to this function are incorrect
354 |             raw_stmt.as_ptr(),
355 |             query_cstr.as_ptr(),
    |             ^^^^^^^^^^^^^^^^^^^ expected `*const i8`, found `*const u8`
    |
    = note: expected raw pointer `*const i8`
               found raw pointer `*const u8`
note: function defined here
   --> src/compat.rs:92:15
    |
92  | pub unsafe fn parse_analyze_varparams(
    |               ^^^^^^^^^^^^^^^^^^^^^^^
93  |     arg_parseTree: *mut pg_sys::RawStmt,
94  |     arg_sourceText: *const i8,
    |     -------------------------
error[E0308]: mismatched types
  --> src/hooks.rs:77:40
   |
77 |     pg_sys::ProcessUtility_hook = Some(process_utility_hook);
   |                                   ---- ^^^^^^^^^^^^^^^^^^^^ expected fn pointer, found fn item
   |                                   |
   |                                   arguments to this enum variant are incorrect
   |
   = note: expected fn pointer `unsafe extern "C-unwind" fn(_, *const u8, _, _, _, _, _, _)`
                 found fn item `unsafe extern "C-unwind" fn(_, *const i8, _, _, _, _, _, _) {process_utility_hook}`
help: the type constructed contains `unsafe extern "C-unwind" fn(*mut PlannedStmt, *const i8, bool, u32, *mut ParamListInfoData, *mut QueryEnvironment, *mut _DestReceiver, *mut QueryCompletion) {process_utility_hook}` due to the type of the argument passed
  --> src/hooks.rs:77:35
   |
77 |     pg_sys::ProcessUtility_hook = Some(process_utility_hook);
   |                                   ^^^^^--------------------^
   |                                        |
   |                                        this argument influences the type of `Some`
note: tuple variant defined here
  --> /builddir/build/BUILD/rust-1.89.0-build/rustc-1.89.0-src/library/core/src/option.rs:599:5
error[E0308]: mismatched types
   --> src/hooks.rs:140:21
    |
138 |                 prev_hook(
    |                 --------- arguments to this function are incorrect
139 |                     pstmt,
140 |                     query_string,
    |                     ^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
    |
    = note: expected raw pointer `*const u8`
               found raw pointer `*const i8`
error[E0308]: mismatched types
     --> src/hooks.rs:152:17
      |
150   |             pg_sys::standard_ProcessUtility(
      |             ------------------------------- arguments to this function are incorrect
151   |                 pstmt,
152   |                 query_string,
      |                 ^^^^^^^^^^^^ expected `*const u8`, found `*const i8`
      |
      = note: expected raw pointer `*const u8`
                 found raw pointer `*const i8`
note: function defined here
     --> /builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/build/pgrx-pg-sys-55312a442cfb83f7/out/pg16.rs:45905:12
      |
45905 |     pub fn standard_ProcessUtility(
      |            ^^^^^^^^^^^^^^^^^^^^^^^
For more information about this error, try `rustc --explain E0308`.
error: could not compile `anon` (lib) due to 5 previous errors
Caused by:
  process didn't exit successfully: `/usr/bin/rustc --crate-name anon --edition=2021 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type cdylib --crate-type lib --emit=dep-info,link -C opt-level=3 -C codegen-units=1 --cfg 'feature="pg16"' --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values("default", "pg13", "pg14", "pg15", "pg16", "pg17", "pg18", "pg_test"))' -C metadata=0237f86850f59b90 --out-dir /builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps -C strip=debuginfo -L dependency=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps --extern c_str_macro=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libc_str_macro-9afeeaec71cd54e7.rlib --extern chrono=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libchrono-37e65630bc3720d9.rlib --extern fake=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libfake-d77bf4f05e7f774d.rlib --extern fastrand=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libfastrand-e9d857d3bc54111b.rlib --extern image=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libimage-a6586e029f1e7b94.rlib --extern md5=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libmd5-054a7cbb06265a16.rlib --extern paste=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libpaste-bba55c30f0bb0858.so --extern pgrx=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libpgrx-6faf540a126ca4eb.rlib --extern rand=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/librand-17a42d9c91b4151b.rlib --extern regex=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/deps/libregex-1026e15f33371938.rlib -Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn -L native=/builddir/build/BUILD/postgresql16-anonymizer-2.4.0-build/postgresql_anonymizer-2.4.0/target/release/build/pgrx-pg-sys-55312a442cfb83f7/out -L /usr/lib64` (exit status: 1)
make: *** [Makefile:147: extension] Error 1

This is from powerpc, but the errors are identical on arm and s390x. Full build logs can be found here:

(ppc) https://kojipkgs.fedoraproject.org//work/tasks/2577/137172577/build.log

(s390x) https://kojipkgs.fedoraproject.org//work/tasks/2578/137172578/build.log

(aarch64) https://kojipkgs.fedoraproject.org//work/tasks/2576/137172576/build.log

Builds completely fine with no warnings on x86. Could you please take a look? Thanks!

P.S.: I packaged anonymizer 2.3.0 for Fedora Rawhide and EPEL9

Edited by pkhartsk
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information