git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Building GIT on older systems.

From
TSTim Schumacher <schumact@gmail.com>
Date
Feb 29, 2012, 22:17 UTC
Message-ID
<4F4EA3F4.7040501@gmail.com>
In-Reply-To
<20120229205510.GA628@sigill.intra.peff.net>
Hi Peff, thanks!
Comments in-line below.
-Tim
On 2/29/2012 1:55 PM, Jeff King wrote:
Show 28 quoted lines
> On Wed, Feb 29, 2012 at 01:22:21PM -0700, Tim Schumacher wrote:
>
>> After a long battle trying to get git to compile on my dev boxes I am
>> seeking help from the gurus...  I have an old system, redhat linux
>> 7.3, with a 2.4.18 kernel with gcc 2.96 toolchain.  Unfortuneatly,
>> upgrading is not currently an option.
> That's pretty old, but I would think git should be build-able on it with
> the right Makefile flags set. We build on even older versions of
> Solaris.
>
>> I have figured out so far that I can run the command
>>
>> make NO_NSEC=true
>>
>> to get past the time struct compile error.
> As an aside, you can put definitions like this into config.mak, which is
> read automatically by the Makefile. Then you don't have to specify them
> on the command line for each 'make' invocation.
>
>> After that, I was able to hand edit the Makefile to set
>>
>> BASIC_LDFLAGS = -ldl
>>
>> so linking the git-imap-send program succeeds (was failing to link
>> against this library for some reason...).
> What was the link error? I don't know why imap-send would need to link
> against -ldl. However, you should be able to just put -ldl into the
> LDFLAGS on the command-line or in config.mak.

The actual link errors were unresolved references to the dl* family of functions: dlopen, dlsym, etc.

>> I tried to run configure with these options, but it did not seem to
>> take, only setting NO_NSEC=true to the make command line seems to
>> work.
> Was NO_NSEC set in the resulting config.mak.autogen?
Not sure.  I set up the config.mak though so it is sticking with that.
Show 19 quoted lines
>
>> Anyway, now I get to the point in the build where it goes into the
>> perl subdir and fails with:
>>
>>     SUBDIR perl
>> /bin/sh: -c: line 3: syntax error near unexpected token
>> `"s<\Q++LOCALEDIR++\E></'
>> /bin/sh: -c: line 3: `        -e "pm_to_blib({qw{Git/I18N.pm
>> blib/lib/Git/I18N.pm private-Error.pm blib/lib/Error.pm Git.pm
>> blib/lib/Git.pm}},'blib/lib/auto','/usr/bin/perl -pe
>> "s<\Q++LOCALEDIR++\E></usr/local/git-1.7.9.2/share/locale>"')"'
>> make[2]: *** [pm_to_blib] Error 2
>> make[1]: *** [all] Error 2
>> make: *** [all] Error 2
> I haven't seen that before. The snippet mentioned in the error message
> is actually written to the Makefile by Makefile.PL. Can you show us the
> relevant part of the Makefile (i.e., the command that contains
> "++LOCALEDIR++") so we can see if it's broken? My suspicion is that
> there is an error in the generation of the Makefile by Makefile.PL.

Around line 108 in my GIT_HOME/perl/perl.mak I have this: (line numbers are from VI)

     108 PM_FILTER = $(PERL) -pe 
"s<\Q++LOCALEDIR++\E></home/tschumacher/share/locale>"
and later PM_FILTER is used as:
     713
     714 # --- MakeMaker pm_to_blib section:
     715
     716 pm_to_blib: $(TO_INST_PM)
     717     @$(PERL) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" \
     718     "-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" -MExtUtils::Install \
     719         -e 
"pm_to_blib({qw{$(PM_TO_BLIB)}},'$(INST_LIB)/auto','$(PM_FILTER)')"
     720     @$(TOUCH) $@
     721
Show 23 quoted lines
> Although your perl is so old the first step may be either to turn off
> perl or upgrade to a newer version (see below).
>
>> A couple questions I have so far:
>> (1)  how can I make make output the actual command it is executing so
>> I can try to debug things more quickly?
> Doing "make V=1" will be more verbose. You can also use "make -d" to get
> more output about which rules and commands are being followed, but its
> output can be a bit overwhelming (and I don't think you have a make
> problem, exactly).
>
>> (2)  how can I configure the Makefile to automatically set -ldl as
>> well as the NO_NSEC flag?
> Put it in LDFLAGS.
>
>> (3)  My perl -v output: This is perl, v5.6.1 built for i386-linux.  Is
>> this sufficient?
> These days we require at least 5.8, mostly because no developers are using 5.6
> and support for it is bit-rotting. If your perl is that old, probably
> setting NO_PERL is the best option. You will lose a few perl features
> like interactive patch selection ("git add -p") and git-svn.
>
> -Peff

I am trying to install a newer version of perl on this box and will retry the configure adding --with-perl option and see how it goes.

Previous: Jeff KingNext: Junio C Hamano
Message 4 of 5 in “Building GIT on older systems.”
  1. Tim SchumacherFeb 29, 2012
  2. Dan JohnsonFeb 29, 2012
  3. Jeff KingFeb 29, 2012
  4. Tim SchumacherFeb 29, 2012
  5. Junio C HamanoFeb 29, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.