Skip to content

Conversation

vszakats
Copy link
Member

@vszakats vszakats commented Jul 23, 2023

We mistakently added transitive zlib to Requires.private before, then removed it. This patch re-adds zlib, but this time to Libs.private, which is listing raw libs and should include transitive libs as well.

Also add zlib when used as a direct dependency when zlib compression support is enabled.

Follow-up to ef53806

Closes #1131

@vszakats vszakats added the build label Jul 23, 2023
We mistakently added transitive zlib to `Requires.private` before, then
removed it. This patch re-adds zlib, but this time to `Libs.private`,
which is listing raw libs and should include transitive libs as well.

Also add zlib when used as a direct dependency when zlib compression
support is enabled.

Follow-up to ef53806

Closes libssh2#1131
@vszakats vszakats force-pushed the cmake-libssh2-transitive-zlib branch from d181f8f to 9d0da8a Compare July 23, 2023 16:41
@vszakats vszakats closed this in 6464301 Jul 23, 2023
@vszakats vszakats deleted the cmake-libssh2-transitive-zlib branch July 23, 2023 19:28
lampmanyao pushed a commit to lampmanyao/libssh2 that referenced this pull request Sep 3, 2023
We mistakently added transitive zlib to `Requires.private` before, then
removed it. This patch re-adds zlib, but this time to `Libs.private`,
which is listing raw libs and should include transitive libs as well.

Also add zlib when used as a direct dependency when zlib compression
support is enabled.

Follow-up to ef53806

Closes libssh2#1131
agreppin pushed a commit to agreppin/libssh2 that referenced this pull request Jul 14, 2024
We mistakently added transitive zlib to `Requires.private` before, then
removed it. This patch re-adds zlib, but this time to `Libs.private`,
which is listing raw libs and should include transitive libs as well.

Also add zlib when used as a direct dependency when zlib compression
support is enabled.

Follow-up to ef53806

Closes libssh2#1131
vszakats added a commit to vszakats/libssh2 that referenced this pull request Jul 13, 2025
And the libs listed in `Libs.private` in `libssh2.pc` with it.

The order and repetition might be significant for linkers that rely on
strict lib order and unable to resolve symbols without it. Such linker
is binutils `ld`.

This also syncs this snippet with curl.

De-duplication was originally introduced to avoid a repeat `-lz`. It
means after this patch a repeat `-lz` is back again. (with
a zlib-enabled OpenSSL or wolfSSL build.)

One safe way to de-duplicate would be to remove dupes when they appear
right next to each other. This is an excercise for another PR, because
cmake doesn't have such built-in function. Meanwhile, such duplicates
don't cause harm, and only make the output less clean-looking and
introduce potential differences between `libssh2.pc` generated by cmake
and autotools. (those aren't necessary identical anyway, yet.)

Follow-up to 6464301 libssh2#1131
vszakats added a commit that referenced this pull request Jul 13, 2025
`LIBSSH2_PC_LIBS_PRIVATE` ends up in `Libs.private` in `libssh2.pc`.

The order and duplication may be significant for linkers that rely on
strict lib order and unable to resolve symbols without it. Such linker
is binutils `ld`. De-duplication can break it.

As of now there is no purposeful duplication in libs in libssh2, thus
the de-duplication most likely did not affect actual builds.

It was originally introduced to avoid a repeat `-lz` (with
a zlib-enabled OpenSSL or wolfSSL build.) To keep this feature, this
patch makes sure to only delete duplicates that are next to each other.

Follow-up to 6464301 #1131

Closes #1621
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant