Skip to content

[BUG] regression from 1.8.0 -> 1.9 library output ordering #268

@1480c1

Description

@1480c1

Hi, downstream issue msys2/MINGW-packages#13390

For the first issue, copying relevant info here:

Previously, with 1.8.0, I got:

$ pkgconf --static --libs opusurl
-LC:/msys64/ucrt64/lib -lopusurl -lopusfile -LC:/msys64/ucrt64/lib -logg -lopus -lm -lssp -LC:/msys64/ucrt64/lib -lssl -LC:/msys64/ucrt64/lib -lws2_32 -lgdi32 -lcrypt32 -lcrypto -lws2_32 -lgdi32 -lcrypt32

(note the -lssl being after -lopusurl)

After MSYS2 updated to 1.9.3, I got:

$ pkgconf --static --libs opusurl
-LC:/msys64/ucrt64/lib -lssl -LC:/msys64/ucrt64/lib -lcrypto -lws2_32 -lgdi32 -lcrypt32 -lopusurl -lopusfile -LC:/msys64/ucrt64/lib -logg -lopus -lm -lssp

(note the position of -lssl)

I've narrowed that issue down to 197fcad, I have one that seems to work for opusurl, but not for another issue.

Second issue that is not present in the downstream issue since I just now found out about it:

with a custom compiled static gnutls and 1.8.0, I got:

$ pkgconf --static --libs gnutls
-LD:/mabs/local32/lib -lgnutls -lws2_32 -lws2_32 -lws2_32 -lgmp -latomic -ladvapi32 -lcrypt32 -lncrypt -lbcrypt -lcrypt32 -LD:/mabs/msys64/mingw32/lib -lnettle -lhogweed -lgmp -LD:/mabs/msys64/mingw32/lib -lnettle -ltasn1 -lz -lbrotlienc -LD:/mabs/msys64/mingw32/lib -lbrotlicommon -lbrotlidec -LD:/mabs/msys64/mingw32/lib -lbrotlicommon -lzstd

(note the duplicate -lnettle after -lhogweed)

However, with 1.9.3, I got:

$ pkgconf --static --libs gnutls
-LD:/mabs/local32/lib -lgnutls -lws2_32 -lws2_32 -lws2_32 -lgmp -latomic -ladvapi32 -lcrypt32 -lncrypt -lbcrypt -lcrypt32 -LD:/mabs/msys64/mingw32/lib -lnettle -lhogweed -lgmp -ltasn1 -lz -lbrotlienc -LD:/mabs/msys64/mingw32/lib -lbrotlicommon -lbrotlidec -lzstd

(notice the lack of the duplicate -lnettle after -lhogweed)

gnutls.pc lists Requires.private: nettle, hogweed, libtasn1, zlib, libbrotlienc, libbrotlidec, libzstd
hogweed.pc (from msys2) lists Requires.private: nettle
nettle.pc (from msys2) lists Libs: -L${libdir} -lnettle

Somehow, the fact that hogweed depends on nettle either disappears or isn't sorted properly.

Down-downstream issue for this is m-ab-s/media-autobuild_suite#2298 (comment)
link line copied here from ffmpeg's config.log

ccache g++ -pipe -static-libgcc -static-libstdc++ -L/local64/lib -L/mingw64/lib -Wl,--nxcompat,--dynamicbase -Wl,--high-entropy-va -Wl,--as-needed -Wl,--pic-executable,-e,mainCRTStartup -Wl,--image-base,0x140000000 -ID:/mabs/local64/include -ID:/mabs/msys64/mingw64/include -LD:/mabs/local64/lib -LD:/mabs/msys64/mingw64/lib -LD:/mabs/msys64/mingw64/lib -o /tmp/ffconf.iqeyOE8l/test.exe /tmp/ffconf.iqeyOE8l/test.o -lgnutls -lws2_32 -lws2_32 -lws2_32 -lgmp -latomic -ladvapi32 -lcrypt32 -lncrypt -lbcrypt -lcrypt32 -lnettle -lhogweed -lgmp -ltasn1 -lz -lbrotlienc -lbrotlicommon -lbrotlidec -lzstd
D:/mabs/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:/mabs/msys64/mingw64/lib/libhogweed.a(pkcs1-sec-decrypt.o):(.text+0xa0): undefined reference to `nettle_cnd_memcpy'

This one seems to affect linux as well as compiling latest master (0226cdd) shows the lack of nettle after hogweed as well, despite it being present in 1.8.0. The first issue is not present on linux

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