Re: Facing error in git-imap-send while compiling Git

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Tue, 21 Jan 2020, Nirmal Khedkar wrote:

> On Tue, Jan 21, 2020 at 3:05 AM Johannes Schindelin
> <Johannes.Schindelin@xxxxxx> wrote:
> >
> > On Tue, 21 Jan 2020, Nirmal Khedkar wrote:
> >
> > > On Fri, Jan 17, 2020 at 7:05 PM Johannes Schindelin
> > > <Johannes.Schindelin@xxxxxx> wrote:
> > > >
> > > > On Fri, 17 Jan 2020, Nirmal Khedkar wrote:
> > > >
> > > > > On Fri, Jan 17, 2020 at 4:21 AM Junio C Hamano <gitster@xxxxxxxxx> wrote:
> > > > > >
> > > > > > Perhaps the thread
> > > > > >
> > > > > >   https://lore.kernel.org/git/xmqqpnfv3tq4.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx
> > > > > >
> > > > > > may help?
> > > > >
> > > > > It did, to the extent that I now know why I'm facing these errors out
> > > > > of the blue.
> > > > >
> > > > > I'm  not quite sure as to what am I supposed to do right now, should I
> > > > > wait for Liam's patch to be merged,  or should I implement his fixes
> > > > > locally or should I just downgrade my openssl?
> > > > >
> > > > > Liam's PR (#516 on GitGitGadget [1]) haven't yet passed all build
> > > > > checks and I guess its still a work in progress. Nevertheless I've
> > > > > tried implementing his fixes to imap-send.c, and the make still fails.
> > > > > Am I missing something here?
> > > >
> > > > Speaking for myself, I am still waiting for
> > > > https://public-inbox.org/git/xmqqpnfv3tq4.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx/
> > > > to be addressed adequately. I think this is the main blocker.
> > > >
> > > > You could be that person who addresses this, as already 10 days went past
> > > > without even so much as an acknowledgement of Junio's suggestion. Maybe
> > > > you can make it work, and submit a fixed patch (You could take authorship
> > > > and add a footer "Original-patch-by: Liam Huang <liamhuang0205@xxxxxxxxx>"
> > > > because it is most likely a total rewrite of Liam's patch).
> > > >
> > > > Ciao,
> > > > Johannes
> > >
> > > The OpenSSL version on my system is 1.1.1. I've tried implementing
> > > Junio's suggestions, and it just doesn't work.
> >
> > Does the code otherwise compile cleanly with `make DEVELOPER=1`?
> >
> > > It gives me the same
> > > error as it gave me earlier.
> > >
> >
> > Those are linker errors, meaning that the symbols were not found in the
> > libraries.
> >
> > If you build with `make V=1 DEVELOPER=1` you should see that
> > `git-imap-send` links in OpenSSL via -lssl (and/or -lcrypto). Is this the
> > case for you?
>
> Doing "echo DEVELOPER=1 >config.mak" does not help in any way. I get
> the same errors. Here's my diff, in case I have been making mistakes
> all along.
>
>
> ---
> diff --git a/imap-send.c b/imap-send.c
> index 6c54d8c29d..73ed3bc287 100644
> --- a/imap-send.c
> +++ b/imap-send.c
> @@ -42,6 +42,12 @@ typedef void *SSL;
>  #define USE_CURL_DEFAULT 0
>  #endif
>
> +#if OPENSSL_VERSION_NUMBER < 0x10100000L
> +    #define OPENSSL_sk_num(x) sk_GENERAL_NAME_num(x)
> +    #define OPENSSL_sk_value(x,y) sk_GENERAL_NAME_value((x),(y))
> +    #define OPENSSL_sk_pop_free(x,y) sk_GENERAL_NAME_pop_free((x),(y))
> +#endif

That looks sensible.

> +
>  static int verbosity;
>  static int use_curl = USE_CURL_DEFAULT;
>
> @@ -59,6 +65,8 @@ static struct option imap_send_options[] = {
>  #define DRV_BOX_BAD     -2
>  #define DRV_STORE_BAD   -3
> ---
>
> From my limited knowledge of OpenSSL libraries, I think the error has
> more to do with 'SSL_library_init()' , which appears like a
> constructor to the OpenSSL library. I found these emails regarding
> "if" cases around this function. Please check out these patches:
> 1. Rosen Penev:
> https://lore.kernel.org/git/20181227023548.396-1-rosenp@xxxxxxxxx/

I remember that one. And I agreed with Junio that the documentation
suggests that the call is _optional_, while the patch suggests that it
would be _incorrect_ instead.

And looking at
https://www.openssl.org/docs/man1.1.1/man3/SSL_library_init.html suggests
to me that it is still supported.

Having said that, if I look at the headers installed for `libssl-dev`
version `1.1.1-1ubuntu2.1~18.04.5` in my Ubuntu installation, I see that
`/usr/include/openssl/ssl.h` defines that symbol as:

	#  define SSL_library_init() OPENSSL_init_ssl(0, NULL)

but _only_:

	# if OPENSSL_API_COMPAT < 0x10100000L

So maybe that disagrees with the documentation that says that
SSL_library_init() is optional?

The curious thing is that `OPENSSL_API_COMPAT` is not even defined
anywhere. So maybe it _is_ the right thing to also `#define
SSL_library_init() (void)` in the diff you listed above?

_Maybe_ guarded within `#ifndef SSL_library_init ... #endif` guards?

> 2. eroen: https://lore.kernel.org/git/20170112104219.563497-1-git-scm@xxxxxxxxxxxxxx/

That sounds like a good suggestion, too.

> Are the fixes made in these patches relevant here. Please let me know
> if I'm going wrong.

Yes, both threads are relevant, and if you can reconcile them into a patch
that makes Git compile with OpenSSL v1.1.1, I will try my best to review
them (Cc: me, just in case).

Ciao,
Johannes




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux