I now commited a programmatic check for GnuTLS. Try it out. It should not
require your fix.

Mmm without my trick the configure script still prints

...
HTTP Client:                    curl (OpenSSL)
...

--madmurphy

On Wed, Sep 7, 2022 at 3:44 PM Schanzenbach, Martin <mschanzenb...@posteo.de>
wrote:

>
>
> > On 7. Sep 2022, at 14:59, madmurphy <madmurphy...@gmail.com> wrote:
> >
> > Hi Martin,
> >
> > That means, if you can find out how the packages linked against
> libcurl-compat or libcurl-gnutls are built from source, you can do the same
> with the gnunet package.
> > The packages in the official repositories that explicitly require
> libcurl-gnutls (and not simply libcurl) are spotify-launcher (PKGBUILD /
> package source code) and steam-native-runtime (PKGBUILD / no source code
> here, it's just glue). But it is a mystery to me how they would find out.
>
> They probably do not distinguish between the two versions. The package
> build simply makes sure that during linking, the correct link is set.
>
> >
> > Ah look here:
> https://github.com/archlinux/svntogit-packages/blob/packages/curl/trunk/PKGBUILD#L94
> > The curl-compat package does link libcurl.so against the versioned files.
> > And curl-gnutls does the same:
> https://github.com/archlinux/svntogit-packages/blob/packages/curl/trunk/PKGBUILD#L94
> > That libcurl-compat package compiles curl with different build settings,
> then renames libcurl.so.4.8.0 to libcurl-compat.so.4.8.0, and finally links
> libcurl.so.3, libcurl.so.4.0.0, libcurl.so.4.1.0, libcurl.so.4.2.0,
> libcurl.so.4.3.0, libcurl.so.4.4.0, libcurl.so.4.5.0, libcurl.so.4.6.0,
> libcurl.so.4.7.0 to libcurl-compat.so.4.8.0 (these version are all old
> versions, and the files libcurl.so, libcurl.so.4 and libcurl.so.4.8.0
> remain linked to the binary shipped by the original curl package).
> >
> > That libcurl-gnutls package does exactly the same, but the basename of
> the symlinks becomes libcurl-gnutls.so.* instead of simply libcurl.so.*.
> >
> > FYI I updated the detection logic again. You may check if that works for
> you know.
> > If I try to build the last GNUnet commit with libcurl-gnutls from the
> official Arch repository I still get
> >
> > ...
> > HTTP Client:                    curl (OpenSSL)
> > ...
> >
> > while if I use my hacked libcurl-gnutls I get
> >
> > ...
> > HTTP Client:                    curl-gnutls
> > ...
> >
> > I think I found a solution. I will publish a glue package on AUR named
> libcurl-gnutls.so, which will depend on the official libcurl-gnutls, and on
> which GNUnet will depend. All this glue package will do is simply creating
> an unversioned symlink.
>
> Yeah.. curl-config just seems to be a bash script where the supported
> backends are hardcoded when it is "compiled".
> So even if you install curl-gnutls it will still say "openssl"... great.
>
> I now commited a programmatic check for GnuTLS. Try it out. It should not
> require your fix.
> No idea if anybody actually ships curl with multiple TLS backends, but we
> check on runtime anyway so its fine.
> We may want to set the backend explicity maybe with curl_global_sslset...
>
> BR
> Martin
>
> >
> > --madmurphy
> >
> >
> > On Wed, Sep 7, 2022 at 7:33 AM Martin Schanzenbach <
> mschanzenb...@posteo.de> wrote:
> > FYI I updated the detection logic again. You may check if that works for
> > you know.
> > Know that even if it detected "curl-openssl" for you the last time, it
> > probably was correctly linked against the "drop-in" libcurl-gnutls.
> > We just were not able to detect that.
> >
> > BR
> >
> > Excerpts from Martin Schanzenbach's message of 2022-09-07 06:06:52 +0000:
> > > Excerpts from madmurphy's message of 2022-09-06 22:17:53 +0100:
> > > > Okay, about the libcurl-gnutls package, Martin was right. If I add
> this
> > > > line to the PKGBUILD of that package,
> > > >
> > > > ln -s libcurl-gnutls.so.4.8.0 "${pkgdir}"/usr/lib/libcurl-gnutls.so
> > > >
> > > > Everything goes well in GNUnet and the configure script prints
> > > >
> > > > ...
> > > > HTTP Client:                    curl-gnutls
> > > > ...
> > > >
> > > > Now the question is what to do. In theory I could publish my own
> version of
> > > > libcurl-gnutls on AUR with only that line added, and make GNUnet
> depend on
> > > > it. But I wonder why Arch developers did that. My guess is that for
> > > > creating the libcurl-gnutls package they copied and hacked the
> section of
> > > > the PKGBUILD that builds libcurl-compat
> > > > <https://archlinux.org/packages/core/x86_64/libcurl-compat/>, which
> is a
> > > > glue package that also does not ship the unversioned .so file
> > > > <https://archlinux.org/packages/core/x86_64/libcurl-compat/files/>.
> Who
> > > > knows…
> > > >
> > >
> > > Ah look here:
> https://github.com/archlinux/svntogit-packages/blob/packages/curl/trunk/PKGBUILD#L94
> > > The curl-compat package does link libcurl.so against the versioned
> > > files.
> > > And curl-gnutls does the same:
> https://github.com/archlinux/svntogit-packages/blob/packages/curl/trunk/PKGBUILD#L94
> > >
> > > So, this would actually confirm my initial thoughts that those are
> > > drop-in replacements and that we should not check for libcurl-gnutls at
> > > all.
> > > I have no idea how to "detect" the version of curl in this case.
> > > But, I also do not think it really matters.
> > > So maybe we should just remove the logic that tries to identify the
> curl
> > > version.
> > >
> > > > Jacki, what do you suggest? The PKGBUILD of libcurl-gnutls attached
> to this
> > > > email works well for GNUnet. But for publishing on AUR we would need
> to
> > > > rename it in some way.
> > > >
> > > > --madmurphy
> > > >
> > > > On Tue, Sep 6, 2022 at 9:06 PM Martin Schanzenbach <
> mschanzenb...@posteo.de>
> > > > wrote:
> > > >
> > > > > Excerpts from Christian Grothoff's message of 2022-09-06 21:34:45
> +0200:
> > > > > > On 9/6/22 14:43, madmurphy wrote:
> > > > > > > Just out of curiosity, why do I get
> > > > > > >
> > > > > > > gstreamer:                      no
> > > > > >
> > > > > > You need also certain related gstreamer libraries
> > > > > > (gstreamer-plugins-base or something like that) before gstreamer
> is
> > > > > > considered "complete enough" to work for GNUnet.
> > > > > >
> > > > >
> > > > > I have to disagree that this is what configure.ac checks. I
> invite you
> > > > > to investigate as well. I am at a loss as what exactly the logic
> > > > > currently is. It sais "gstreamer no" for me, too, but conversation
> is
> > > > > built with the "gst" "backend". Whatever that means. Anyway.
> > > > >
> > > > > > -Christian
> > > > >
>
>

Reply via email to