threads / discuss / 4536

git-1.4.0 make problems

Subject: git-1.4.0 make problems

## tl;dr

5 messages between Jun 17, 2006 and Jun 17, 2006.

replies: 4people: 3as markdown or json

Michael Somos· Jun 17, 2006, 02:18 UTC · lore
I downloaded the git-1.4.0.tar.bz2 recently and encountered a few problems.
1) The untar process creates a stray file "pax_global_header".
I am using GNU tar v1.13.22 and I get this message :
======================================================================
> tar jxf ~/u/source/git-1.4.0.tar.bz2

tar: pax_global_header: Unknown file type 'g', extracted as normal file ======================================================================

2) The make install process ignores the "prefix=..." argument. I have
to comment out one line for this :
======================================================================
> diff Makefile git-1.4.0/

94c94 < #prefix = $(HOME) ---

> prefix = $(HOME)
======================================================================
3) The make has a problem with "expat" include and libararies.
I have to add more lines to the Makefile to handle this like some
of the other include and libraries :

====================================================================== 351,358c351 < endif < < ifndef NO_EXPAT < ifdef EXPATDIR < # This is still problematic -- gcc does not always want -R. < ALL_CFLAGS += -I$(EXPATDIR)/include < EXPAT_LIBEXPAT = -L$(EXPATDIR)/lib -R$(EXPATDIR)/lib -lexpat < else ---

>       ifndef NO_EXPAT

360c353 < endif ---

>       endif
======================================================================

Other than that, it installed okay. I will have to read the docs and use it to see how it goes otherwise.

Rene Scharfe· Jun 17, 2006, 06:58 UTC · re: Michael Somos · lore

Re: git-1.4.0 make problems

| I downloaded the git-1.4.0.tar.bz2 recently and encountered a few
| problems.
|
| 1) The untar process creates a stray file "pax_global_header".
| I am using GNU tar v1.13.22 and I get this message :
|
| ======================================================================
| > tar jxf ~/u/source/git-1.4.0.tar.bz2
| tar: pax_global_header: Unknown file type 'g', extracted as normal
| file
| ======================================================================

You can ignore or delete that file. It is a pax extended global header, containing the git commit ID as a comment. GNU tar started supporting pax headers with version 1.13.93 (released 2004-02-23). Version 1.13.22 was released on 2001-08-29, by the way. May I ask what operating system and version you are using?

| 2) The make install process ignores the "prefix=..." argument. I have
| to comment out one line for this :
|
| ======================================================================
| > diff Makefile git-1.4.0/
| 94c94
| < #prefix = $(HOME)
| ---
| > prefix = $(HOME)
| ======================================================================

It took me a while to realize that your diffs are reversed. It's too early for me, I think I'll go to bed again. :)

Anyway, prefix handling is currently being worked on. Yakov Lerner sent a patch which seems to make make do what you need.

| 3) The make has a problem with "expat" include and libararies.
| I have to add more lines to the Makefile to handle this like some
| of the other include and libraries :
|
| ======================================================================
| 351,358c351
| < endif
| <
| < ifndef NO_EXPAT
| <       ifdef EXPATDIR
| <               # This is still problematic -- gcc does not always want -R.
| <               ALL_CFLAGS += -I$(EXPATDIR)/include
| <               EXPAT_LIBEXPAT = -L$(EXPATDIR)/lib -R$(EXPATDIR)/lib -lexpat
|
| <           else
| ---
| >       ifndef NO_EXPAT
| 360c353
| <           endif
| ---
| >       endif
| ======================================================================
Looks sensible, except for the formatting.
| Other than that, it installed okay. I will have to read the docs and
| use it to see how it goes otherwise.

A good first exercise would be to fetch the git repository, edit Makefile and commit your change, and then send a patch to this list -- all using git (except the editing part). :-) Care to try that? Please let us know of any difficulties you may encounter.

Thanks, René

Junio C Hamano· Jun 17, 2006, 20:56 UTC · re: Rene Scharfe · lore

Re: git-1.4.0 make problems

Rene Scharfe <rene.scharfe@lsrfire.ath.cx> writes:
Show 14 quoted lines
> | 1) The untar process creates a stray file "pax_global_header".
> | I am using GNU tar v1.13.22 and I get this message :
> |
> | ======================================================================
> | > tar jxf ~/u/source/git-1.4.0.tar.bz2
> | tar: pax_global_header: Unknown file type 'g', extracted as normal
> | file
> | ======================================================================
>
> You can ignore or delete that file.  It is a pax extended global header,
> containing the git commit ID as a comment.  GNU tar started supporting
> pax headers with version 1.13.93 (released 2004-02-23).  Version 1.13.22
> was released on 2001-08-29, by the way.  May I ask what operating system
> and version you are using?
I've been using (in my non-git related project aka day-job)
  git-tar-tree HEAD^{tree} $(PROJECT)-$(RELNAME) >$(PROJECT)-$(RELNAME).tar 

to avoid this. Although all of my target machines have gtar that are recent enough so I do not need it, but when the tarball has version string in its name, there is not much point having the pax header to identify the contents (where the pax header shines is when the result does not have the version string in its name).

This might be a sensible thing to do for our dist target as well. The product of our dist target is for people who build from the source to bootstrap themselves (if they have git, then fetching the source using git is preferred anyway), as opposed to using pre-built binaries, so being as friendly as we can to different implementations of tar is a good thing.

Rene Scharfe· Jun 17, 2006, 21:55 UTC · re: Junio C Hamano · lore

Re: git-1.4.0 make problems

Junio C Hamano schrieb:
Show 16 quoted lines
> I've been using (in my non-git related project aka day-job)
> 
> git-tar-tree HEAD^{tree} $(PROJECT)-$(RELNAME) >$(PROJECT)-$(RELNAME).tar
> 
> to avoid this.  Although all of my target machines have gtar that are
> recent enough so I do not need it, but when the tarball has version
> string in its name, there is not much point having the pax header to
> identify the contents (where the pax header shines is when the result
> does not have the version string in its name).
> 
> This might be a sensible thing to do for our dist target as well.
> The product of our dist target is for people who build from the
> source to bootstrap themselves (if they have git, then fetching the
> source using git is preferred anyway), as opposed to using pre-built
> binaries, so being as friendly as we can to different implementations
> of tar is a good thing.

Hrm. Is the header really that unfriendly? With a non-POSIX tar you get an extra file and a nice, if somewhat cryptic, reminder to upgrade your archiver. ;-) Seriously, this is way below my annoyance-radar, but I'm obviously biased.

What do you think about the following patch for starters? It adds an example to the git-tar-tree documentation showing your "tree trick" and corrects two formatting buglets.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
diff --git a/Documentation/git-tar-tree.txt b/Documentation/git-tar-tree.txt
index 831537b..c93a8fe 100644
--- a/Documentation/git-tar-tree.txt
+++ b/Documentation/git-tar-tree.txt
@@ -45,11 +45,16 @@ git tar-tree HEAD | (cd /var/tmp/ && mkd
 	latest commit on the current branch, and extracts it in
 	`/var/tmp/junk` directory.
 
-git tar-tree v2.6.17 linux-2.6.17 | gzip >linux-2.6.17.tar.gz
+git tar-tree v2.6.17 linux-2.6.17 | gzip >linux-2.6.17.tar.gz::
 
 	Create a tarball for v2.6.17 release.
 
-git tar-tree --remote=example.com:git.git v0.99 >git-0.99.tar
+git tar-tree v2.6.17{caret}\{tree\} linux-2.6.17 | gzip >linux-2.6.17.tar.gz::
+
+	Create a tarball for v2.6.17 release, but without a
+	global extended pax header.
+
+git tar-tree --remote=example.com:git.git v0.99 >git-0.99.tar::
 
 	Get a tarball v0.99 from example.com.
 
Junio C Hamano· Jun 17, 2006, 22:40 UTC · re: Rene Scharfe · lore

Re: git-1.4.0 make problems

Rene Scharfe <rene.scharfe@lsrfire.ath.cx> writes:
> Hrm.  Is the header really that unfriendly?  With a non-POSIX tar you
> get an extra file and a nice, if somewhat cryptic, reminder to upgrade
> your archiver. ;-)  Seriously, this is way below my annoyance-radar,
> but I'm obviously biased.

I do not mind tar-tree producing the header by default and having to override it with ^{tree} -- actually I think it is a good default. I think that particular use in our Makefile, however, is not necessary.

> What do you think about the following patch for starters?

Documentation updates are always welcome, and I think this is a good change. Thanks.

← back to recent threads