git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Nirmal Khedkar <nirmalhk7@gmail.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>, dev+git@drbeat.li
Cc: git@vger.kernel.org, gitster@pobox.com
Subject: Re: Facing error in git-imap-send while compiling Git
Date: Sat, 15 Feb 2020 19:30:18 +0530	[thread overview]
Message-ID: <CAFFaXsztYtNtWeEMgkjYcZ-0_bcywGo5zFV0vwg6UjtXCx1ocw@mail.gmail.com> (raw)
In-Reply-To: <nycvar.QRO.7.76.6.2002012229480.46@tvgsbejvaqbjf.bet>

Hi All!
Apologies for late reply, had examinations for past week.

On Sun, Feb 2, 2020 at 3:05 AM Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
>
> Hi Nirmal,
>
> On Fri, 31 Jan 2020, Nirmal Khedkar wrote:
>
> > I'll admit I'm quite perplexed with this OpenSSL problem that I'm
> > facing. Here's what I've done along with their results:
> > 1. eroen and Jack Bates' suggestions
> > (https://lore.kernel.org/git/66967e0e-8bd9-f4b6-d2d4-ccce9004f42e@nottheoilrig.com/)
> > 2. I've also implemented Johannes' suggestions, and I'm still facing
> > the same problem.
>
> Could you repeat the symptoms? I forgot the details since you posted your
> previous email.

Here's the latest errors:
---
    LINK git-imap-send
imap-send.o: In function `verify_hostname':
imap-send.c:261: undefined reference to `sk_num'
imap-send.c:263: undefined reference to `sk_value'
imap-send.c:269: undefined reference to `sk_pop_free'
imap-send.c:269: undefined reference to `sk_pop_free'
imap-send.o: In function `ssl_socket_connect':
imap-send.c:301: undefined reference to `SSL_load_error_strings'
imap-send.c:302: undefined reference to `SSLv23_method'
collect2: error: ld returned 1 exit status
Makefile:2454: recipe for target 'git-imap-send' failed
make: *** [git-imap-send] Error 1
---

I was kind-of hoping that when I switch from Linux 5.3 Edge to Linux
5.3 (Which came about a week ago), these issues would disappear, but
they still exist.

I've also tried Beat Bolli's suggestion, but I get *no output* when I
run "make V=1 imap-send.o". I dont understand why either.

My previous emails have already mentioned this: I seriously want to
apply to Git. Its a serious component to all my projects and pretty
sure for everyone else's too, and contributing to Git gives me the
_contributing-back-to-society_ vibes which I like :)

So I'd love if someone could break down to me (who's never worked with
OpenSSL) on what imap-send does (in words simpler than ones in
manpages). I think only if I understand OpenSSL better, will I be able
to fix this issue.

Thanks a lot!
Regards,
Nirmal Khedkar

--
Nirmal Khedkar
https://nirmalhk7.github.io
Github: www.github.com/nirmalhk7



On Sun, Feb 2, 2020 at 3:05 AM Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
>
> Hi Nirmal,
>
> On Fri, 31 Jan 2020, Nirmal Khedkar wrote:
>
> > I'll admit I'm quite perplexed with this OpenSSL problem that I'm
> > facing. Here's what I've done along with their results:
> > 1. eroen and Jack Bates' suggestions
> > (https://lore.kernel.org/git/66967e0e-8bd9-f4b6-d2d4-ccce9004f42e@nottheoilrig.com/)
> > 2. I've also implemented Johannes' suggestions, and I'm still facing
> > the same problem.
>
> Could you repeat the symptoms? I forgot the details since you posted your
> previous email.
>
> > Here's the final diff:
> > ---
> > diff --git a/imap-send.c b/imap-send.c
> > index 6c54d8c29d..3248bc2123 100644
> > --- a/imap-send.c
> > +++ b/imap-send.c
> > @@ -41,7 +41,9 @@ typedef void *SSL;
> >  /* We don't have curl, so continue to use the historical implementation */
> >  #define USE_CURL_DEFAULT 0
> >  #endif
> > -
> > +#ifndef SSL_library_init
> > +       #define SSL_library_init();
> > +#endif
> >  static int verbosity;
> >  static int use_curl = USE_CURL_DEFAULT;
> >
> > @@ -59,6 +61,13 @@ static struct option imap_send_options[] = {
> >  #define DRV_BOX_BAD     -2
> >  #define DRV_STORE_BAD   -3
> >
> > +
> > +#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
> > +
> >  __attribute__((format (printf, 1, 2)))
> >  static void imap_info(const char *, ...);
> >  __attribute__((format (printf, 1, 2)))
> > @@ -275,21 +284,30 @@ static int verify_hostname(X509 *cert, const
> > char *hostname)
> >
> >  static int ssl_socket_connect(struct imap_socket *sock, int
> > use_tls_only, int verify)
> >  {
> > -#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
> > -       const SSL_METHOD *meth;
> > -#else
> > -       SSL_METHOD *meth;
> > -#endif
> > -       SSL_CTX *ctx;
> > -       int ret;
> > -       X509 *cert;
> > -
> > -       SSL_library_init();
> > -       SSL_load_error_strings();
> > +       #if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
> > +               const SSL_METHOD *meth;
> > +       #else
> > +               SSL_METHOD *meth;
> > +       #endif
> > +               SSL_CTX *ctx;
> > +               int ret;
> > +               X509 *cert;
> > +
> > +       #if OPENSSL_VERSION_NUMBER >= 0x10100000L ||
> > defined(LIBRESSL_VERSION_NUMBER)
> > +               OPENSSL_init_ssl(0, NULL);
> > +               meth = TLS_method();
> > +       #else
> > +               SSL_library_init();
> > +               SSL_load_error_strings();
> > +               meth = SSLv23_method();
> > +       #endif
> >
> > -       meth = SSLv23_method();
> >         if (!meth) {
> > -               ssl_socket_perror("SSLv23_method");
> > +       #if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
> > +                       ssl_socket_perror("TLS_method");
> > +       #else
> > +                       ssl_socket_perror("SSLv23_method");
> > +       #endif
> >                 return -1;
> >         }
> >
> >
> > ---
>
> That diff looks pretty okay to me.
>
> > Also, on a different note: I'm actually really interested in applying
> > to Git for GSoC, and I should be doing Git microprojects right now to
> > properly cement my chance of doing GSoC with Git. Many aspiring GSoC
> > applicants already been asking, enquiring and maybe even working about
> > Git microprojects, as evident from the mailing list.
>
> For the record, I am not even sure whether Git will participate in GSoC
> this year; I am not aware of any activity in that direction.
>
> Having said that, the purpose of a Git microproject is to get acquainted
> with the development process of Git (at least in my mind). It is not so
> much fixing some issue in Git, but more like learning how to interact with
> the Git mailing list, in particular how to communicate effectively with
> the developers/reviewers on this list.
>
> In that light, if I were a possible mentor (which I am not, at least not
> in this year's GSoC) I would not insist on a microproject. Or more like: I
> would accept your work on getting this vexing OpenSSL v1.1.1 issue sorted
> out as a microproject in its own right.
>
> > So while I'm not saying that I'm in deep trouble and all this OpenSSL
> > v1.1.1 issue fixing is completely useless (I'm learning quite a lot
> > along the way and able to understand the project structure), but
> > saying that I'm not worried about my GSoC prospects of working in this
> > organization would honestly be false :) . I love git, I would love
> > contributing to Git, but I'd love to do a GSoC Summer with Git much
> > more than the rest.
> >
> > Please let me know where am I going wrong. If there's any other system
> > packages that I can download so that I can focus on other Git issues
> > and this one simultaneously, please let me know. Here are my system
> > specifications (let me know if you need anything more specific):
> > ---
> > OS: Ubuntu 18.04
> > Linux Kernel: 5.3
> > OpenSSL Version: 1.1.1d
> > ---
> >
> > Apologies for the long email,
>
> This is not even close to being the longest email sent to this list, so
> don't worry!
>
> Ciao,
> Johannes
>
> > Thank You,
> > Nirmal Khedkar
> > (https://nirmalhk7.github.io)
> >
> >
> > On Thu, Jan 23, 2020 at 12:50 AM Junio C Hamano <gitster@pobox.com> wrote:
> > >
> > > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> > >
> > > >> 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).
> > >
> > > I agree with the above reasoning and the suggestion given by Bates in
> > > https://lore.kernel.org/git/66967e0e-8bd9-f4b6-d2d4-ccce9004f42e@nottheoilrig.com/
> > > sounds like a reasonable one.
> > >
> > > Thanks for digging and double-checking these two previous efforts,
> > > and giving another round of thoughts on them.
> > >
> > >
> > >
> > >
> >

  reply	other threads:[~2020-02-15 14:01 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
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 [this message]
  -- 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=CAFFaXsztYtNtWeEMgkjYcZ-0_bcywGo5zFV0vwg6UjtXCx1ocw@mail.gmail.com \
    --to=nirmalhk7@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=dev+git@drbeat.li \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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).