Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

curl: Split package to openssl, winssl and gnutls #8469

Merged
merged 3 commits into from
Jul 19, 2021

Conversation

orgads
Copy link
Contributor

@orgads orgads commented Apr 25, 2021

openssl keeps the default name. The other packages have suffixes.

@orgads orgads force-pushed the split-curl branch 4 times, most recently from b5d33cc to e71bf1d Compare April 25, 2021 11:55
@lazka
Copy link
Member

lazka commented Apr 25, 2021

Why do you need this?

@orgads
Copy link
Contributor Author

orgads commented Apr 25, 2021

For deploying ScummVM without ca dependencies. See the complex instructions here.

@lazka
Copy link
Member

lazka commented Apr 25, 2021

@dscho I see git4win uses winssl and you added mutli backend support to curl some time ago (https://curl.se/mail/lib-2017-08/0118.html). Do you have any thoughts on this change? What would make your life easier (or not harder)?

.ci/ci-build.sh Show resolved Hide resolved
@orgads orgads force-pushed the split-curl branch 2 times, most recently from 3ca2967 to 17a9032 Compare April 25, 2021 19:05
@orgads
Copy link
Contributor Author

orgads commented Apr 25, 2021

I don't know how to fix (or test locally) clang64. It fails when linking gnutls. Is it possible to opt out some of the sub-packages on clang?

@dscho
Copy link
Contributor

dscho commented Apr 26, 2021

@dscho I see git4win uses winssl and you added mutli backend support to curl some time ago (https://curl.se/mail/lib-2017-08/0118.html).

Right. In many ways, what I did is the opposite of what this change does. My intention was to have a single package providing all SSL backends, while this PR intends to host the different SSL backends in different packages.

Do you have any thoughts on this change?

I can see how it makes more sense for MSYS2 to have the three separate packages. After all, users specify precisely what packages they want, and they can then specify which backend they want by using the appropriate package name.

The main problem I see with this is dependencees. I.e. if there is a package that depends on mingw-w64-curl (such as mingw-w64-git), and the user installs mingw-w64-gnutls, that dependencee will now have an unfulfilled dependency.

I am not familiar enough with pacman to know whether there is a correct way to specify "we have multiple alternative variants of this package; any will do as dependency of XYZ".

What would make your life easier (or not harder)?

Since Git for Windows builds its own curl packages, this PR has no impact on my life that would it either harder or easier ;-)

@orgads
Copy link
Contributor Author

orgads commented Apr 26, 2021

Regarding the dependency issue, it is already handled. The alternative packages have provides, which means they can serve as a dependency for packages that depend on mingw-w64-curl.

@dscho
Copy link
Contributor

dscho commented Apr 26, 2021

Regarding the dependency issue, it is already handled. The alternative packages have provides, which means they can serve as a dependency for packages that depend on mingw-w64-curl.

Thanks, for some reason I had missed that (I did see the conflicts entries in the package_*() functions, though...)

@orgads orgads force-pushed the split-curl branch 3 times, most recently from 480feaa to 0e62f5e Compare May 3, 2021 15:38
@Biswa96
Copy link
Member

Biswa96 commented May 3, 2021

Let me solve the gnutls build issue if possible.

The gnutls issue falls under lld issues, I gave it up.

@orgads
Copy link
Contributor Author

orgads commented May 3, 2021

I don't mind. But anyway, you can always pull out the exclusions here in the same commit when you fix the gnutls build. Either way is fine with me.

@orgads
Copy link
Contributor Author

orgads commented May 5, 2021

@Biswa96 did you report to lld? From my experience, they're glad to help with reported bugs.

@Biswa96
Copy link
Member

Biswa96 commented May 5, 2021

Nope. Experts are discussing things here https://github.com/msys2/CLANG-packages/issues/39

@orgads
Copy link
Contributor Author

orgads commented May 5, 2021

Waiting for review then. @lazka?

@msink
Copy link

msink commented May 6, 2021

Will curl-winssl package use default Windows cert store?

https://stackoverflow.com/a/37553616:

Starting with libcurl 7.71.0, due to ship on June 24, 2020, it will get the ability to use the Windows CA cert store when built to use OpenSSL. You then need to use the CURLOPT_SSL_OPTIONS option and set the correct bit in the bitmask: CURLSSLOPT_NATIVE_CA.

Or "curl with default Windows certs" should be yet another package, and separate PR?

@orgads
Copy link
Contributor Author

orgads commented May 9, 2021

Will curl-winssl package use default Windows cert store?

https://stackoverflow.com/a/37553616:

Starting with libcurl 7.71.0, due to ship on June 24, 2020, it will get the ability to use the Windows CA cert store when built to use OpenSSL. You then need to use the CURLOPT_SSL_OPTIONS option and set the correct bit in the bitmask: CURLSSLOPT_NATIVE_CA.

Or "curl with default Windows certs" should be yet another package, and separate PR?

Looks like it does. No further changes are needed.

@jeremyd2019
Copy link
Member

I'd be willing to work on that in a follow-up pull request though, don't need to hold this up for that

Copy link
Member

@jeremyd2019 jeremyd2019 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gnutls and rtmpdump are now in staging for clang32, so it is now safe to remove the *-clang-* exclusion for the -gnutls variant. clangarm64 is also built.

mingw-w64-curl/PKGBUILD Outdated Show resolved Hide resolved
mingw-w64-curl/PKGBUILD Outdated Show resolved Hide resolved
mingw-w64-curl/PKGBUILD Outdated Show resolved Hide resolved
mingw-w64-curl/PKGBUILD Outdated Show resolved Hide resolved
@jeremyd2019
Copy link
Member

BTW, if you rebase to master you'll get a CLANG32 CI job to verify that works.

@orgads
Copy link
Contributor Author

orgads commented May 21, 2021

Done

Copy link
Member

@jeremyd2019 jeremyd2019 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the changes LGTM technically, but I have no opinion as to their desirability

@orgads
Copy link
Contributor Author

orgads commented May 28, 2021

Time to merge?

@msink
Copy link

msink commented May 28, 2021

@jeremyd2019 ability to statically link libcurl to single executable without any .dll and certificates folder dependencies is desired for years: #436 #823 #950 #3617

@msink
Copy link

msink commented May 28, 2021

Thinking it over once more - maybe better choice was to leave packages mingw-w64-curl and mingw-w64-libssh2 (almost) as is, and just clone them to completely new packages mingw-w64-curl-winssl, mingw-w64-curl-gnutls and mingw-w64-libssh2-wincng, in separate folders and their own PKGBUILD.
It would be less potentially breaing change for build infrastructure.
But not sure here.

@orgads
Copy link
Contributor Author

orgads commented May 28, 2021

But all the build logic and version number is exactly the same. What's the point in duplicating it? This will require the maintainers to remember to update 3 different packages on every new release, or when the build script should change.

What's the advantage?

@msink
Copy link

msink commented May 28, 2021

Well, as it done now - it have to change something .ci in not tested and potentially breaking way.
With cloned packages - no need to change .ci.
But again - I'm not sure it's good idea.

@jeremyd2019
Copy link
Member

I have no objection to this, but it's complicated enough that I leave it to a more experienced member/collaborator to review and merge.

@orgads
Copy link
Contributor Author

orgads commented May 31, 2021

ping? 7.77 is released...

By creating a file named .ci-sequential in the package directory.

Required for conflicting sub-packages.
openssl keeps the default name. The other package has a suffixes.
openssl keeps the default name. The other packages have suffixes.
@orgads
Copy link
Contributor Author

orgads commented Jun 1, 2021

Rebased and adapted to static/shared separation (hopefully).

@lazka
Copy link
Member

lazka commented Jun 1, 2021

thanks, I'll have another look shortly

@orgads
Copy link
Contributor Author

orgads commented Jun 9, 2021

ping?

@orgads
Copy link
Contributor Author

orgads commented Jul 12, 2021

Hello?

@orgads
Copy link
Contributor Author

orgads commented Jul 16, 2021

@lazka? Anybody else?

@lazka lazka merged commit 6d48e05 into msys2:master Jul 19, 2021
@orgads orgads deleted the split-curl branch July 19, 2021 17:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants