threads / discuss / 46306

Help needed for solving a few issues with building git

Subject: Help needed for solving a few issues with building git

## tl;dr

6 messages between Jul 3, 2017 and Jul 5, 2017.

replies: 5people: 3as markdown or json

Kaartic Sivaraam· Jul 3, 2017, 13:18 UTC · lore
Hello all,

Building without localization support ------------------------------------ I tried to build git from source without localization support by adding the following line to the Makefile,

    NO_GETTEXT=1

It doesn't seem to be working for reasons I'm unable to find. I used the following commands to build git.

    make prefix=$CUSTOM_BUILD_LOCATION
    make install prefix=$CUSTOM_BUILD_LOCATION

While trying to build (without the 'gettext' library that's required for localization) I get the following error,

    Manifying 8 pod documents
        SUBDIR templates
        MSGFMT po/build/locale/pt_PT/LC_MESSAGES/git.mo
    /bin/sh: 1: msgfmt: not found
    Makefile:2179: recipe for target
    'po/build/locale/pt_PT/LC_MESSAGES/git.mo' failed
    make: *** [po/build/locale/pt_PT/LC_MESSAGES/git.mo] Error 127
    What could I be missing?
    Adding HTTPS support
    --------------------
    I tried to add HTTP/HTTPS support to the custom built version for which
    AFAIK 'git' depends on 'curl'. I tried providing the location of the
    curl source in the Makefile using the following line after reading the
    instructions in the Makefile.
    CURLDIR=/path/to/curl/source
    Even after doing this the custom built git errors with the following
    message when I try to use the 'git fetch' command,
    fatal: Unable to find remote helper for 'https'
    Any thing I'm missing?
    Note: In case you were wondering, I was able to build 'git' after
    installing the dependant package which I find useless as I don't
    require any localization messages.
-- 
Kaartic
Torsten Bögershausen· Jul 3, 2017, 14:14 UTC · re: Kaartic Sivaraam · lore

Re: Help needed for solving a few issues with building git

On 2017-07-03 15:18, Kaartic Sivaraam wrote:
Show 9 quoted lines
> Hello all,
> 
> Building without localization support
> ------------------------------------
> I tried to build git from source without localization support by adding
> the following line to the Makefile,
> 
>     NO_GETTEXT=1
> 
May be
make NO_GETTEXT=yes
Junio C Hamano· Jul 3, 2017, 18:13 UTC · re: Kaartic Sivaraam · lore

Re: Help needed for solving a few issues with building git

Kaartic Sivaraam <kaarticsivaraam91196@gmail.com> writes:
Show 27 quoted lines
> Hello all,
>
> Building without localization support
> ------------------------------------
> I tried to build git from source without localization support by adding
> the following line to the Makefile,
>
>     NO_GETTEXT=1
>
> It doesn't seem to be working for reasons I'm unable to find. I used
> the following commands to build git.
>
>     make prefix=$CUSTOM_BUILD_LOCATION
>     make install prefix=$CUSTOM_BUILD_LOCATION
>
> While trying to build (without the 'gettext' library that's required
> for localization) I get the following error,
>
>     Manifying 8 pod documents
>         SUBDIR templates
>         MSGFMT po/build/locale/pt_PT/LC_MESSAGES/git.mo
>     /bin/sh: 1: msgfmt: not found
>     Makefile:2179: recipe for target
>     'po/build/locale/pt_PT/LC_MESSAGES/git.mo' failed
>     make: *** [po/build/locale/pt_PT/LC_MESSAGES/git.mo] Error 127
>
>     What could I be missing?
There is
    ifndef NO_GETTEXT
    all:: $(MOFILES)
    endif

which attempts to avoid generating *.mo files, but that does not seem to be working.

Show 10 quoted lines
>
>
>     Adding HTTPS support
>     --------------------
>     I tried to add HTTP/HTTPS support to the custom built version for which
>     AFAIK 'git' depends on 'curl'. I tried providing the location of the
>     curl source in the Makefile using the following line after reading the
>     instructions in the Makefile.
>
>     CURLDIR=/path/to/curl/source

Shouldn't this point at an installed location (iow, we do not build curl from the source while building Git)?

    # Define CURLDIR=/foo/bar if your curl header and library files are in
    # /foo/bar/include and /foo/bar/lib directories.
>     Even after doing this the custom built git errors with the following
>     message when I try to use the 'git fetch' command,
>
>     fatal: Unable to find remote helper for 'https'

This is probably because you are trying to run without installing? Ask the "git" you built what its --exec-path is, and run "ls" on that directory to see if you have git-remote-https installed?

Trying a freshly built Git binaries without installing is done by setting GIT_EXEC_PATH to point at bin-wrappers/ directory at the top-level of your build tree (that is how our tests can run on an otherwise virgin box with no Git installed).

Junio C Hamano· Jul 3, 2017, 20:11 UTC · re: Junio C Hamano · lore

Re: Help needed for solving a few issues with building git

Junio C Hamano <gitster@pobox.com> writes:
Show 21 quoted lines
>> While trying to build (without the 'gettext' library that's required
>> for localization) I get the following error,
>>
>>     Manifying 8 pod documents
>>         SUBDIR templates
>>         MSGFMT po/build/locale/pt_PT/LC_MESSAGES/git.mo
>>     /bin/sh: 1: msgfmt: not found
>>     Makefile:2179: recipe for target
>>     'po/build/locale/pt_PT/LC_MESSAGES/git.mo' failed
>>     make: *** [po/build/locale/pt_PT/LC_MESSAGES/git.mo] Error 127
>>
>>     What could I be missing?
>
> There is
>
>     ifndef NO_GETTEXT
>     all:: $(MOFILES)
>     endif
>
> which attempts to avoid generating *.mo files, but that does not
> seem to be working.

The above comes from one of the Tcl things (probably gitk-git) For now

    $ make NO_GETTEXT=1 NO_MSGFMT=1
may help.

NO_GETTEXT is "My build environment may or may not be capable of doing the gettext things, but I choose not to use it in my build result" but NO_MSGFMT is simply "I do not have the msgfmt tool".

Having to specify both is rather unfortunate and we may want to streamline this.

Kaartic Sivaraam· Jul 4, 2017, 20:00 UTC · re: Junio C Hamano · lore

Re: Help needed for solving a few issues with building git

On Mon, 2017-07-03 at 11:13 -0700, Junio C Hamano wrote:
Show 18 quoted lines
>     Adding HTTPS support
> > >     --------------------
> > >     I tried to add HTTP/HTTPS support to the custom built version
> > > for which
> > >     AFAIK 'git' depends on 'curl'. I tried providing the location
> > > of the
> > >     curl source in the Makefile using the following line after
> > > reading the
> > >     instructions in the Makefile.
> > > 
> > >     CURLDIR=/path/to/curl/source
> > 
>  Shouldn't this point at an installed location (iow, we do not build
>  curl from the source while building Git)?
>  
>      # Define CURLDIR=/foo/bar if your curl header and library files
>  are in
>      # /foo/bar/include and /foo/bar/lib directories.

I tried pointing it to the installed location, it doesn't seem to be working. To elaborate a little on what I did,

        * I installed the "libcurl4-openssl-dev" package b
        * I found that the 'include' directory to be present  at
        '/usr/include/x86_64-linux-gnu/curl'. I wasn't sure if
        '/usr/lib/x86_64-linux-gnu/' is the corresponding library
        directory. 
        * I took the common parent of both '/usr' and ran the following 
          commands to build 'git'
            $ make CURLDIR=/usr prefix=/custom/location
            $ make CURLDIR=/usr install prefix=/custom/location
        * The build did succeed but I get an error that "'https' helper
        is not found"
Was anything I did, wrong?
>  This is probably because you are trying to run without installing?
Nope. I'm *installing* git not using the binary wrappers.
>  Ask the "git" you built what its --exec-path is, and run "ls" on
>  that directory to see if you have git-remote-https installed?
>  

Obviously, I don't see any 'git-remote-https' binary in the folder to which I built git.

Show 5 quoted lines
>  Trying a freshly built Git binaries without installing is done by
>  setting GIT_EXEC_PATH to point at bin-wrappers/ directory at the
>  top-level of your build tree (that is how our tests can run on an
>  otherwise virgin box with no Git installed).
> 
On Mon, 2017-07-03 at 13:11 -0700, Junio C Hamano wrote:
Show 6 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
> 
>     $ make NO_GETTEXT=1 NO_MSGFMT=1
> 
> may help.
> 

Ok, I seem to have crapped a little. It seems following the intructions in the Makefile blindly led to this issue. Reading the instruction "Define NO_GETTEXT if you don't want Git output to be translated.", I defined NO_GETTEXT=1 in the Makefile itself! (as specified in the previous thread)

I'm able to build git without localization support by using the following command,

    make NO_GETTEXT=1 prefix=/custom/location
Show 6 quoted lines
> NO_GETTEXT is "My build environment may or may not be capable of
> doing the gettext things, but I choose not to use it in my build
> result" but NO_MSGFMT is simply "I do not have the msgfmt tool".
> 
> Having to specify both is rather unfortunate and we may want to
> streamline this.
I guess it's not required!
-- 
Kaartic
Kaartic Sivaraam· Jul 5, 2017, 17:06 UTC · re: Kaartic Sivaraam · lore

Re: Help needed for solving a few issues with building git

On Wed, 2017-07-05 at 01:30 +0530, Kaartic Sivaraam wrote:
Show 21 quoted lines
> I tried pointing it to the installed location, it doesn't seem to be
> working. To elaborate a little on what I did,
> 
>         * I installed the "libcurl4-openssl-dev" package b
>         * I found that the 'include' directory to be present  at
>         '/usr/include/x86_64-linux-gnu/curl'. I wasn't sure if
>         '/usr/lib/x86_64-linux-gnu/' is the corresponding library
>         directory. 
>         * I took the common parent of both '/usr' and ran the
> following 
>           commands to build 'git'
> 
>             $ make CURLDIR=/usr prefix=/custom/location
>             $ make CURLDIR=/usr install prefix=/custom/location
> 
>         * The build did succeed but I get an error that "'https'
> helper
>         is not found"
> 
> Was anything I did, wrong?
> 

Ok, at last I was able to build git with https support using 'curl' built from it's source. Anyways, thanks for the help, folks.

Show 17 quoted lines
> >  This is probably because you are trying to run without installing?
> 
> Nope. I'm *installing* git not using the binary wrappers.
> 
> >  Ask the "git" you built what its --exec-path is, and run "ls" on
> >  that directory to see if you have git-remote-https installed?
> >  
> 
> Obviously, I don't see any 'git-remote-https' binary in the folder to
> which I built git.
> 
> >  Trying a freshly built Git binaries without installing is done by
> >  setting GIT_EXEC_PATH to point at bin-wrappers/ directory at the
> >  top-level of your build tree (that is how our tests can run on an
> >  otherwise virgin box with no Git installed).
> > 
> 

← back to recent threads