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

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

 



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

On Sun, Feb 2, 2020 at 3:05 AM Johannes Schindelin
<Johannes.Schindelin@xxxxxx> 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@xxxxxxxxxxxxxxxx/)
> > 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@xxxxxx> 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@xxxxxxxxxxxxxxxx/)
> > 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@xxxxxxxxx> wrote:
> > >
> > > Johannes Schindelin <Johannes.Schindelin@xxxxxx> 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@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).
> > >
> > > I agree with the above reasoning and the suggestion given by Bates in
> > > https://lore.kernel.org/git/66967e0e-8bd9-f4b6-d2d4-ccce9004f42e@xxxxxxxxxxxxxxxx/
> > > sounds like a reasonable one.
> > >
> > > Thanks for digging and double-checking these two previous efforts,
> > > and giving another round of thoughts on them.
> > >
> > >
> > >
> > >
> >



[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