Skip to content

libpq >= 12 fails to static link with openssl #81

Closed
@clux

Description

@clux

Similar issue as before, and others have reported it too: sgrif/pq-sys#27
This is why libpq is pinned to latest 11 release. we could upgrade, if pq-sys actually merged the fix :(

build log

./test.sh pq
+ docker_build pq
+ local -r crate=pqcrate
+ docker run --rm -v /home/runner/work/muslrust/muslrust/test/pqcrate:/volume -v cargo-cache:/root/.cargo/registry -e RUST_BACKTRACE=1 clux/muslrust:temp cargo build
    Updating crates.io index
 Downloading crates ...
  Downloaded pq-sys v0.4.6
   Compiling pkg-config v0.3.19
   Compiling cc v1.0.68
   Compiling autocfg v1.0.1
   Compiling libc v0.2.97
   Compiling bitflags v1.2.1
   Compiling pq-sys v0.4.6
   Compiling openssl v0.10.35
   Compiling foreign-types-shared v0.1.1
   Compiling once_cell v1.8.0
   Compiling cfg-if v1.0.0
   Compiling openssl-sys v0.9.64
   Compiling foreign-types v0.3.2
   Compiling pqcrate v0.1.0 (/volume)
error: linking with `cc` failed: exit status: 1
  |
  = note: "cc" "-m64" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crt1.o" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crti.o" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtbegin.o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c.1hftbp5vx4rs5tz7.rcgu.o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c.384p7u03hmdaoaf8.rcgu.o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c.3qduubka0xitgj0c.rcgu.o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c.4kqgrua8qp7696ql.rcgu.o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c.52ydmaq45nh7bzb4.rcgu.o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c.7ylijitxf4r67r5.rcgu.o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c.44o8ammlpytcjale.rcgu.o" "-Wl,--as-needed" "-L" "/volume/target/x86_64-unknown-linux-musl/debug/deps" "-L" "/volume/target/debug/deps" "-L" "/musl/lib" "-L" "/musl/lib" "-L" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib" "-Wl,-Bstatic" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libopenssl-9e6f4c7c82243f09.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libonce_cell-257079c73d6e0a81.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libbitflags-2b06d9303e6233ff.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libforeign_types-9a0e339477be781e.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libforeign_types_shared-0d04ac3b44ec5718.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libcfg_if-93cca5c086798193.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/libopenssl_sys-379f78d685c6567a.rlib" "/volume/target/x86_64-unknown-linux-musl/debug/deps/liblibc-3f1a4e24e22ed966.rlib" "-Wl,--start-group" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-645ff18786bd8f4c.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libpanic_unwind-1e7397296328c849.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libminiz_oxide-b0dc2ee69d3cd28d.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libadler-d7bd6706a60956bd.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libobject-20323123b22dd8d9.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libaddr2line-b1856e39a6442059.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libgimli-dc23389320eb7017.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd_detect-09742bee4d7cdce6.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_demangle-13bbc2cbe6da9731.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libhashbrown-12c3bed34f07ecaa.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_alloc-074dd2bf98e1bb95.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libunwind-654bedcd013d11ca.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libcfg_if-dc501baf64ee4c09.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/liblibc-9e3694f1b1e58590.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/liballoc-6346596a31b8c817.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/librustc_std_workspace_core-3e240aff10db9180.rlib" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libcore-60eab00334ec8288.rlib" "-Wl,--end-group" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/libcompiler_builtins-91bbdb295abafcf0.rlib" "-Wl,-Bdynamic" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-nostartfiles" "-L" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib" "-L" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained" "-o" "/volume/target/x86_64-unknown-linux-musl/debug/deps/pqcrate-7882b05042e23d6c" "-Wl,--gc-sections" "-static" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtend.o" "/root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-musl/lib/self-contained/crtn.o"
  = note: /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure.o): In function `pqsecure_raw_read':
          fe-secure.c:(.text+0x211): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure.o): In function `pqsecure_raw_write':
          fe-secure.c:(.text+0x46c): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-openssl.o): In function `pgtls_read':
          fe-secure-openssl.c:(.text+0x236): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-openssl.o): In function `pgtls_write':
          fe-secure-openssl.c:(.text+0x598): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-openssl.o): In function `pq_lockingcallback':
          fe-secure-openssl.c:(.text+0xb97): undefined reference to `pg_fprintf'
          fe-secure-openssl.c:(.text+0xbeb): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-openssl.o): In function `initialize_SSL':
          fe-secure-openssl.c:(.text+0x1053): undefined reference to `pg_snprintf'
          fe-secure-openssl.c:(.text+0x11cb): undefined reference to `pg_snprintf'
          fe-secure-openssl.c:(.text+0x133f): undefined reference to `pg_snprintf'
          fe-secure-openssl.c:(.text+0x13b5): undefined reference to `pg_strerror_r'
          fe-secure-openssl.c:(.text+0x1a2b): undefined reference to `pg_snprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-openssl.o): In function `open_client_SSL':
          fe-secure-openssl.c:(.text+0x1da6): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-openssl.o): In function `SSLerrmessage':
          fe-secure-openssl.c:(.text+0x20d3): undefined reference to `pg_snprintf'
          fe-secure-openssl.c:(.text+0x2132): undefined reference to `pg_snprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-openssl.o): In function `PQsslAttribute':
          fe-secure-openssl.c:(.text+0x22a8): undefined reference to `pg_snprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-common.o): In function `wildcard_certificate_match':
          fe-secure-common.c:(.text+0x92): undefined reference to `pg_strcasecmp'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-secure-common.o): In function `pq_verify_peer_name_matches_certificate_name':
          fe-secure-common.c:(.text+0x225): undefined reference to `pg_strcasecmp'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `connectOptions2':
          fe-connect.c:(.text+0x106b): undefined reference to `pg_snprintf'
          fe-connect.c:(.text+0x1508): undefined reference to `pg_get_encoding_from_locale'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `connectNoDelay':
          fe-connect.c:(.text+0x1aed): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `getHostaddr':
          fe-connect.c:(.text+0x1b88): undefined reference to `inet_net_ntop'
          fe-connect.c:(.text+0x1bca): undefined reference to `inet_net_ntop'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `connectFailureMessage':
          fe-connect.c:(.text+0x1c65): undefined reference to `pg_getnameinfo_all'
          fe-connect.c:(.text+0x1c85): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x1e61): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x1ec2): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `setKeepalivesIdle':
          fe-connect.c:(.text+0x217a): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `setKeepalivesInterval':
          fe-connect.c:(.text+0x22a7): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o):fe-connect.c:(.text+0x23d4): more undefined references to `pg_strerror_r' follow
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `connectDBStart':
          fe-connect.c:(.text+0x2583): undefined reference to `pg_link_canary_is_frontend'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `PQconnectPoll':
          fe-connect.c:(.text+0x2dba): undefined reference to `pg_snprintf'
          fe-connect.c:(.text+0x2e0e): undefined reference to `pg_getaddrinfo_all'
          fe-connect.c:(.text+0x2eaf): undefined reference to `pg_getaddrinfo_all'
          fe-connect.c:(.text+0x2f93): undefined reference to `pg_snprintf'
          fe-connect.c:(.text+0x3004): undefined reference to `pg_getaddrinfo_all'
          fe-connect.c:(.text+0x336d): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x33df): undefined reference to `pg_set_noblock'
          fe-connect.c:(.text+0x3403): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x347f): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x3582): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x3759): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x381b): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x38d8): undefined reference to `getpeereid'
          fe-connect.c:(.text+0x3926): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x3979): undefined reference to `pqGetpwuid'
          fe-connect.c:(.text+0x39b4): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x3b32): undefined reference to `pg_strerror_r'
          fe-connect.c:(.text+0x3c50): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `release_conn_addrinfo':
          fe-connect.c:(.text+0x5a36): undefined reference to `pg_freeaddrinfo_all'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `internal_cancel':
          fe-connect.c:(.text+0x6124): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `parseServiceInfo':
          fe-connect.c:(.text+0x649f): undefined reference to `pg_snprintf'
          fe-connect.c:(.text+0x6559): undefined reference to `pg_snprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `PQsetClientEncoding':
          fe-connect.c:(.text+0x8d7a): undefined reference to `pg_get_encoding_from_locale'
          fe-connect.c:(.text+0x8dcf): undefined reference to `pg_sprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `defaultNoticeProcessor':
          fe-connect.c:(.text+0x90ab): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `passwordFromFile':
          fe-connect.c:(.text+0x9314): undefined reference to `pg_fprintf'
          fe-connect.c:(.text+0x9350): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `pqGetHomeDirectory':
          fe-connect.c:(.text+0x9862): undefined reference to `pqGetpwuid'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-connect.o): In function `default_threadlock':
          fe-connect.c:(.text+0x98fc): undefined reference to `pg_fprintf'
          fe-connect.c:(.text+0x9936): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-exec.o): In function `pqInternalNotice':
          fe-exec.c:(.text+0x15f7): undefined reference to `pg_vsnprintf'
          fe-exec.c:(.text+0x171d): undefined reference to `pg_sprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-exec.o): In function `pqSaveParameterStatus':
          fe-exec.c:(.text+0x19aa): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-exec.o): In function `PQfnumber':
          fe-exec.c:(.text+0x4288): undefined reference to `pg_tolower'
          fe-exec.c:(.text+0x43a0): undefined reference to `pg_tolower'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-misc.o): In function `pqGetc':
          fe-misc.c:(.text+0xe9): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-misc.o): In function `pqPutc':
          fe-misc.c:(.text+0x157): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-misc.o): In function `pqGets_internal':
          fe-misc.c:(.text+0x266): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-misc.o): In function `pqPuts':
          fe-misc.c:(.text+0x332): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-misc.o): In function `pqGetnchar':
          fe-misc.c:(.text+0x3f6): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-misc.o):fe-misc.c:(.text+0x433): more undefined references to `pg_fprintf' follow
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-misc.o): In function `pqSocketCheck':
          fe-misc.c:(.text+0x17d0): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-protocol2.o): In function `pqSetenvPoll':
          fe-protocol2.c:(.text+0x182): undefined reference to `pg_strcasecmp'
          fe-protocol2.c:(.text+0x19e): undefined reference to `pg_sprintf'
          fe-protocol2.c:(.text+0x1bf): undefined reference to `pg_sprintf'
          fe-protocol2.c:(.text+0x267): undefined reference to `pg_strcasecmp'
          fe-protocol2.c:(.text+0x295): undefined reference to `pg_sprintf'
          fe-protocol2.c:(.text+0x2c8): undefined reference to `pg_sprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-protocol3.o): In function `build_startup_packet':
          fe-protocol3.c:(.text+0x39a9): undefined reference to `pg_strcasecmp'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(pqexpbuffer.o): In function `appendPQExpBufferVA':
          pqexpbuffer.c:(.text+0x5b7): undefined reference to `pg_vsnprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(encnames.o): In function `pg_char_to_encoding':
          encnames.c:(.text+0x1d4): undefined reference to `pg_fprintf'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth.o): In function `pg_password_sendauth':
          fe-auth.c:(.text+0x6a3): undefined reference to `pg_md5_encrypt'
          fe-auth.c:(.text+0x6e0): undefined reference to `pg_md5_encrypt'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth.o): In function `pg_fe_getauthname':
          fe-auth.c:(.text+0xb10): undefined reference to `pqGetpwuid'
          fe-auth.c:(.text+0xb64): undefined reference to `pg_strerror_r'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth.o): In function `PQencryptPassword':
          fe-auth.c:(.text+0xc7d): undefined reference to `pg_md5_encrypt'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth.o): In function `PQencryptPasswordConn':
          fe-auth.c:(.text+0xece): undefined reference to `pg_md5_encrypt'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `pg_fe_scram_init':
          fe-auth-scram.c:(.text+0xb7): undefined reference to `pg_saslprep'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `build_client_first_message':
          fe-auth-scram.c:(.text+0x5e1): undefined reference to `pg_strong_random'
          fe-auth-scram.c:(.text+0x61a): undefined reference to `pg_b64_enc_len'
          fe-auth-scram.c:(.text+0x680): undefined reference to `pg_b64_encode'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `build_client_final_message':
          fe-auth-scram.c:(.text+0x94a): undefined reference to `pg_b64_enc_len'
          fe-auth-scram.c:(.text+0x99d): undefined reference to `pg_b64_encode'
          fe-auth-scram.c:(.text+0xac1): undefined reference to `pg_b64_enc_len'
          fe-auth-scram.c:(.text+0xaf3): undefined reference to `pg_b64_encode'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `read_server_first_message':
          fe-auth-scram.c:(.text+0xd3c): undefined reference to `pg_b64_dec_len'
          fe-auth-scram.c:(.text+0xdad): undefined reference to `pg_b64_decode'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `read_server_final_message':
          fe-auth-scram.c:(.text+0xfef): undefined reference to `pg_b64_dec_len'
          fe-auth-scram.c:(.text+0x1052): undefined reference to `pg_b64_decode'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `calculate_client_proof':
          fe-auth-scram.c:(.text+0x112d): undefined reference to `scram_SaltedPassword'
          fe-auth-scram.c:(.text+0x1147): undefined reference to `scram_ClientKey'
          fe-auth-scram.c:(.text+0x115c): undefined reference to `scram_H'
          fe-auth-scram.c:(.text+0x1177): undefined reference to `scram_HMAC_init'
          fe-auth-scram.c:(.text+0x11a9): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x11c4): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x11f6): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x1211): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x123b): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x1251): undefined reference to `scram_HMAC_final'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `verify_server_signature':
          fe-auth-scram.c:(.text+0x12f0): undefined reference to `scram_ServerKey'
          fe-auth-scram.c:(.text+0x130b): undefined reference to `scram_HMAC_init'
          fe-auth-scram.c:(.text+0x133d): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x1358): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x138a): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x13a5): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x13d7): undefined reference to `scram_HMAC_update'
          fe-auth-scram.c:(.text+0x13ed): undefined reference to `scram_HMAC_final'
          /volume/target/x86_64-unknown-linux-musl/debug/deps/libpq_sys-30779afa45d38741.rlib(fe-auth-scram.o): In function `pg_fe_scram_build_verifier':
          fe-auth-scram.c:(.text+0x1463): undefined reference to `pg_saslprep'
          fe-auth-scram.c:(.text+0x1492): undefined reference to `pg_strong_random'
          fe-auth-scram.c:(.text+0x14d2): undefined reference to `scram_build_verifier'
          collect2: error: ld returned 1 exit status
          

error: aborting due to previous error

error: could not compile `pqcrate`

Activity

linked a pull request that will close this issuelibpg 12+ working branch #98on May 23, 2022
added
blockedupstream work needed
and removed on May 24, 2022
clux

clux commented on Jan 26, 2024

@clux
OwnerAuthor

might need to look into this again; the upstream sgrif/pq-sys#27 (comment) got closed with a comment suggesting it "should work". not sure i am super hopeful, more and more references to people not getting static linking to work (even oxide in oxidecomputer/omicron#213 ).

basically either we fix this now or we remove libpq entirely from the image because we can't ship a pq that's 5 major versions behind (see #126 (comment)). unfortunately i need to look at other things first, so leaving this open.

added and removed
blockedupstream work needed
on Jan 26, 2024
clux

clux commented on May 20, 2025

@clux
OwnerAuthor

no one does seem to particularly care about this version having been EOL since 2023, and I don't have a huge desire to try to make it work given the amount of upstream resistance to static linking of it.

Because I am removing openssl for #153 and libpq kind of relies on it, I will take the time to also remove libpq.

It's another lib I don't trust this docker image to handle safely and you shouldn't rely on EOL versions.

If you want openssl + libpq you should probably use https://github.com/BlackDex/rust-musl which has up to date (with openssl 3) dependencies. In the mean time, this allows me to streamline this image for what I intended it for; the 95% rust use case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @clux

      Issue actions

        libpq >= 12 fails to static link with openssl · Issue #81 · clux/muslrust