git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Nirmal Khedkar <nirmalhk7@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: Facing error in git-imap-send while compiling Git
Date: Tue, 21 Jan 2020 22:09:07 +0100 (CET)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.2001212144560.46@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <CAFFaXsxLd8duDPTE1H-zJiYnTVSB3pHCfBV+08Y4jLvCWR9kNw@mail.gmail.com>

Hi,

On Tue, 21 Jan 2020, Nirmal Khedkar wrote:

> On Tue, Jan 21, 2020 at 3:05 AM Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
> >
> > On Tue, 21 Jan 2020, Nirmal Khedkar wrote:
> >
> > > On Fri, Jan 17, 2020 at 7:05 PM Johannes Schindelin
> > > <Johannes.Schindelin@gmx.de> wrote:
> > > >
> > > > On Fri, 17 Jan 2020, Nirmal Khedkar wrote:
> > > >
> > > > > On Fri, Jan 17, 2020 at 4:21 AM Junio C Hamano <gitster@pobox.com> wrote:
> > > > > >
> > > > > > Perhaps the thread
> > > > > >
> > > > > >   https://lore.kernel.org/git/xmqqpnfv3tq4.fsf@gitster-ct.c.googlers.com
> > > > > >
> > > > > > 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@gitster-ct.c.googlers.com/
> > > > 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@gmail.com>"
> > > > 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@gmail.com/

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@occam.eroen.eu/

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

  parent reply	other threads:[~2020-01-21 21:09 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-16 19:20 Facing error in git-imap-send while compiling Git Nirmal Khedkar
2020-01-16 22:51 ` Junio C Hamano
2020-01-17 12:42   ` Nirmal Khedkar
2020-01-17 13:35     ` Johannes Schindelin
2020-01-20 19:12       ` Nirmal Khedkar
2020-01-20 21:35         ` Johannes Schindelin
2020-01-21 11:50           ` Nirmal Khedkar
2020-01-21 18:11             ` Junio C Hamano
2020-01-21 21:09             ` Johannes Schindelin [this message]
2020-01-22 19:20               ` Junio C Hamano
2020-01-30 20:26                 ` Nirmal Khedkar
2020-01-30 23:03                   ` Beat Bolli
2020-02-01 21:35                   ` Johannes Schindelin
2020-02-15 14:00                     ` Nirmal Khedkar
  -- strict thread matches above, loose matches on Subject: below --
2020-02-17  9:30 Abhishek Kumar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=nycvar.QRO.7.76.6.2001212144560.46@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=nirmalhk7@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).