E.g. this works with 16.4 but fails in 17.0:

FROM postgres:16.4-alpine3.20 AS builder
USER root
WORKDIR /app
RUN apk update && apk add --no-cache --update-cache \
    openssl-libs-static \
    cyrus-sasl-static \
    libevent-static \
    libxml2-static \
    libedit-static \
    libxslt-static \
    sqlite-static \
    openldap-dev \
    libxslt-dev \
    libxml2-dev \
    zstd-static \
    zlib-static \
    libedit-dev \
    openssl-dev \
    lz4-static \
    e2fsprogs \
    zstd-dev \
    keyutils \
    zlib-dev \
    gdbm-dev \
    clang17 \
    lz4-dev \
    libldap \
    bison \
    curl \
    perl \
    make

COPY <<EOF ./main.cpp
#include<libpq-fe.h>
int main(){return PQconnectdb("")==NULL;}
EOF

RUN curl -L https://kerberos.org/dist/krb5/1.21/krb5-1.21.3.tar.gz >
krb5-1.21.3.tar.gz && tar xf krb5-1.21.3.tar.gz
RUN cd krb5-1.21.3/src && \
    ./configure && make && make install && \
    ./configure --disable-shared --enable-static && make && make install

RUN curl -L 
https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.28/cyrus-sasl-2.1.28.tar.gz
> cyrus-sasl-2.1.28.tar.gz
RUN tar xf cyrus-sasl-2.1.28.tar.gz && cd cyrus-sasl-2.1.28 &&
./configure --enable-static && make && make install

RUN clang++ -fno-common -static -o main main.cpp \
    -L/usr/local/lib -lpq -lpgcommon -lpgport \
    -lldap -lsasl2 -lssl -lcrypto -llber \
    -lgssapi_krb5 \
    -lkrb5 -lk5crypto -lcom_err -lkrb5support \
    -lgdbm


On Thu, Oct 10, 2024 at 5:28 PM Mikael Sand <ms...@seaber.io> wrote:

> I don't mind having this patch in use too much, I have a functional build
> and nothing to worry about, no luck necessary :)
>
> But, I expect a lot of unnecessary churn in the community if this is not
> fixed properly.
> Not all applications run inside docker, and not all can use dynamic
> linking.
> People can dislike static linking for whatever reason, but that doesn't
> remove the need for it (or both) in some cases and the desire for it in
> others.
>
> Judging from the commit, it doesn't seem like static linking is
> intentionally broken.
> Should a test be added so as not to break this by mistake?
> I must say I don't fully comprehend the context of that commit.
>
> On Thu, Oct 10, 2024 at 5:06 PM Mikael Sand <ms...@seaber.io> wrote:
>
>> This seems to be the commit that caused this:
>> https://github.com/postgres/postgres/commit/b6c7cfac88c47a9194d76f3d074129da3c46545a
>>
>> So it seems the commit is related to static linking.
>>
>> Is it somehow possible to statically link in a version of pgcommon with
>> correct function names into libpq?
>>
>

Reply via email to