Git development
 help / color / mirror / Atom feed
* Re: [PATCH 2, proof of concept] autoconf: Use %configure in git.spec, autoconf dependency only in rpm target
From: Pavel Roskin @ 2006-07-06  4:16 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: git
In-Reply-To: <200607041609.36329.jnareb@gmail.com>

Hi Jakub,

On Tue, 2006-07-04 at 16:09 +0200, Jakub Narebski wrote:
> Sidenote 1: current git.spec.in doesn't allow building RPMS from a dirty
> version: 
>   error: line 3: Illegal char '-' in version: Version:    1.4.1.g1c7c-dirty
> Is it intentional?

I don't know if it's intentional, but it's annoying.  The workaround is
to use StGIT and run "stg refresh" before "make rpm".

> +Patch0: 	git-add-autoconf-configure.patch.gz

I don't think we need patches in git.spec.in.  Let's leave it to the
actual distributions.  If you have a problem with rpm, please submit the
autoconf support for now and the rest will be cleaned up eventually.
Besides, the "next" branch has different and potentially conflicting
changes to git.spec.in for Git.pm support.

-- 
Regards,
Pavel Roskin

^ permalink raw reply

* Re: [RFC] GIT user survey
From: Pavel Roskin @ 2006-07-06  5:09 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: git
In-Reply-To: <e8e1ea$s5c$1@sea.gmane.org>

On Tue, 2006-07-04 at 17:28 +0200, Jakub Narebski wrote:
> Paolo Ciarrocchi wrote:
> 
> > I was wondering whether it could be a good idea to have a kind of "GIT
> > users survey" when google pointed my eyes to this page:
> > http://www.selenic.com/pipermail/mercurial/2006-April/007513.html
> > 
> > So I modified the content of the survey and published a DRAFT here:
> > http://paolo.ciarrocchi.googlepages.com/GITSurvey
> 
> Could you please add the final version (and of course results) on
> Git Wiki (http://git.or.cz/gitwiki), like original one is on Mercurial
> wiki: http://www.selenic.com/mercurial/wiki/index.cgi/UserSurvey ?
> 
> Thanks in advance
> 
> P.S. I wonder why my Mozilla 1.7.12 sees GITSurvey as binary/octet-stream
> instead of text/plain file...

It's not a Mozilla thing.  It's a server configuration.

$ wget http://paolo.ciarrocchi.googlepages.com/GITSurvey
--00:52:45--  http://paolo.ciarrocchi.googlepages.com/GITSurvey
           => `GITSurvey'
Resolving paolo.ciarrocchi.googlepages.com... 64.233.179.93,
64.233.179.91
Connecting to paolo.ciarrocchi.googlepages.com|64.233.179.93|:80...
connected.
HTTP request sent, awaiting response... 200 OK
Length: 2,078 (2.0K) [application/octet-stream]


Regarding the questions (sorry, I could have missed comments of others):

  What is your preferred language?

Preferred to type or preferred to speak?  There answer is not always the
same, at least for me.

  How did you hear about GIT?

With my own ears.  "How did you learn about GIT" would be better because
many respondents probably _read_ about GIT first.

s/histoty/history
s/porcellains/porcelains/

What is the "history depth"?  How do I measure it?

  Which porcelains do you use?

Which child did you abuse today?  Let's avoid loaded questions.  Some
people are just fine with bare git.

Have you tried to get GIT help from other people?

  Better: Have you asked other people to help you with GIT? 

-- 
Regards,
Pavel Roskin

^ permalink raw reply

* comparing file contents in is_exact_match?
From: Martin Waitz @ 2006-07-06  5:57 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 708 bytes --]

hoi :)

I created a git repository for my photo collection and then renamed
some photos (about 600).  Now git status and commit get hit by
the OOM killer.

The reason for that is that is_exact_match (in diffcore-rename.c) maps
both the source and destination file into memory and then compares them
byte for byte.  This is a little bit too much for my little machine.

When I remove the content comparation and only leave the sha1
comparision, then my renames are correctly found in a second.  But
unluckily, some other renames in the testcases are not correctly
handled any more.

So is there an easy solution?  Why is the content comparision in
is_exact_match needed?

-- 
Martin Waitz

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* Re: comparing file contents in is_exact_match?
From: Junio C Hamano @ 2006-07-06  6:20 UTC (permalink / raw)
  To: Martin Waitz; +Cc: git
In-Reply-To: <20060706055729.GA12512@admingilde.org>

Martin Waitz <tali@admingilde.org> writes:

> The reason for that is that is_exact_match (in diffcore-rename.c) maps
> both the source and destination file into memory and then compares them
> byte for byte.  This is a little bit too much for my little machine.
>
> When I remove the content comparation and only leave the sha1
> comparision, then my renames are correctly found in a second.  But
> unluckily, some other renames in the testcases are not correctly
> handled any more.
>
> So is there an easy solution?  Why is the content comparision in
> is_exact_match needed?

Because your working tree can be out of sync with respect to
what's in the index, in which case we cannot trust the sha1
while running diff-index (without --cached flag).

git-update-index --refresh before doing anything might help.

^ permalink raw reply

* Re: Does Git run on Windows ?
From: Johannes Schindelin @ 2006-07-06  6:34 UTC (permalink / raw)
  To: Aaron Gray; +Cc: Git Mailing List
In-Reply-To: <01c001c6a0a7$a2783f90$0200a8c0@AMD2500>



On Thu, 6 Jul 2006, Aaron Gray wrote:

> This maybe a stupid question but does Git run on Windows ?

You do know that there are several list archives?

> Are there better options ?

Than Windows? Yes.

> Its got lots of C code, and Bash scripts, with a couple of Perl scripts.

And you completely forgot Python.

> So should run on Cygwin okay, maybe even MinGW. Anyone tried either ?

Yes, I have tried.

You might be surprised that Cygwin is supported. But then, you could have 
seen it in the Makefile.

I also tried to port git to MinGW. This project is stalled a little, 
because there is really, really, _really_ much to adapt.

MinGW inherits the problem of Windows being utterly non-POSIX, and that 
has to be worked around.

HOWEVER, if you would like to continue where I left off, I'll send you a 
repo URL where you can download it.

Ciao,
Dscho

^ permalink raw reply

* [RFC/PATCH] git-svn: migrate out of contrib
From: Eric Wong @ 2006-07-06  7:14 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Eric Wong
In-Reply-To: <20060704215643.GA31763@localdomain>

Allow NO_SVN_TESTS to be defined to skip git-svn tests.  These
tests are time-consuming due to SVN being slow, and even more so
if SVN Perl libraries are not available.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
 .gitignore                                         |    1 
 {contrib/git-svn => Documentation}/git-svn.txt     |    0 
 Makefile                                           |    6 ++-
 contrib/git-svn/.gitignore                         |    4 --
 contrib/git-svn/Makefile                           |   44 --------------------
 contrib/git-svn/git-svn.perl => git-svn.perl       |    2 -
 t/Makefile                                         |   10 +++++
 {contrib/git-svn/t => t}/lib-git-svn.sh            |   18 ++++----
 .../t9100-git-svn-basic.sh                         |    4 ++
 .../t9101-git-svn-props.sh                         |    0 
 .../t9102-git-svn-deep-rmdir.sh                    |    0 
 .../t9103-git-svn-graft-branches.sh                |    0 
 .../t9104-git-svn-follow-parent.sh                 |    0 
 .../t9105-git-svn-commit-diff.sh                   |    0 
 14 files changed, 28 insertions(+), 61 deletions(-)

diff --git a/.gitignore b/.gitignore
index 7b954d5..9b69a0f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -106,6 +106,7 @@ git-ssh-push
 git-ssh-upload
 git-status
 git-stripspace
+git-svn
 git-svnimport
 git-symbolic-ref
 git-tag
diff --git a/contrib/git-svn/git-svn.txt b/Documentation/git-svn.txt
similarity index 100%
rename from contrib/git-svn/git-svn.txt
rename to Documentation/git-svn.txt
diff --git a/Makefile b/Makefile
index 7fa4a27..2f4dfb8 100644
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,10 @@ #
 # Define NO_SYMLINK_HEAD if you never want .git/HEAD to be a symbolic link.
 # Enable it on Windows.  By default, symrefs are still used.
 #
+# Define NO_SVN_TESTS if you want to skip time-consuming SVN interopability
+# tests.  These tests take up a significant amount of the total test time
+# but are not needed unless you plan to talk to SVN repos.
+#
 # Define PPC_SHA1 environment variable when running make to make use of
 # a bundled SHA1 routine optimized for PowerPC.
 #
@@ -134,7 +138,7 @@ SCRIPT_PERL = \
 	git-shortlog.perl git-rerere.perl \
 	git-annotate.perl git-cvsserver.perl \
 	git-svnimport.perl git-mv.perl git-cvsexportcommit.perl \
-	git-send-email.perl
+	git-send-email.perl git-svn.perl
 
 SCRIPT_PYTHON = \
 	git-merge-recursive.py
diff --git a/contrib/git-svn/.gitignore b/contrib/git-svn/.gitignore
deleted file mode 100644
index d8d87e3..0000000
--- a/contrib/git-svn/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-git-svn
-git-svn.xml
-git-svn.html
-git-svn.1
diff --git a/contrib/git-svn/Makefile b/contrib/git-svn/Makefile
deleted file mode 100644
index 7c20946..0000000
--- a/contrib/git-svn/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-all: git-svn
-
-prefix?=$(HOME)
-bindir=$(prefix)/bin
-mandir=$(prefix)/man
-man1=$(mandir)/man1
-INSTALL?=install
-doc_conf=../../Documentation/asciidoc.conf
--include ../../config.mak
-
-git-svn: git-svn.perl
-	cp $< $@
-	chmod +x $@
-
-install: all
-	$(INSTALL) -d -m755 $(DESTDIR)$(bindir)
-	$(INSTALL) git-svn $(DESTDIR)$(bindir)
-
-install-doc: doc
-	$(INSTALL) git-svn.1 $(DESTDIR)$(man1)
-
-doc: git-svn.1
-git-svn.1 : git-svn.xml
-	xmlto man git-svn.xml
-git-svn.xml : git-svn.txt
-	asciidoc -b docbook -d manpage \
-		-f ../../Documentation/asciidoc.conf $<
-git-svn.html : git-svn.txt
-	asciidoc -b xhtml11 -d manpage \
-		-f ../../Documentation/asciidoc.conf $<
-test: git-svn
-	cd t && for i in t????-*.sh; do $(SHELL) ./$$i $(TEST_FLAGS); done
-
-# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
-full-test:
-	$(MAKE) test GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C
-	$(MAKE) test GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C
-	$(MAKE) test GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \
-							LC_ALL=en_US.UTF-8
-	$(MAKE) test GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \
-							LC_ALL=en_US.UTF-8
-
-clean:
-	rm -f git-svn *.xml *.html *.1
diff --git a/contrib/git-svn/git-svn.perl b/git-svn.perl
similarity index 100%
rename from contrib/git-svn/git-svn.perl
rename to git-svn.perl
index 8bc4188..145eaa8 100755
--- a/contrib/git-svn/git-svn.perl
+++ b/git-svn.perl
@@ -8,7 +8,7 @@ use vars qw/	$AUTHOR $VERSION
 		$GIT_SVN_INDEX $GIT_SVN
 		$GIT_DIR $GIT_SVN_DIR $REVDB/;
 $AUTHOR = 'Eric Wong <normalperson@yhbt.net>';
-$VERSION = '1.1.1-broken';
+$VERSION = '@@GIT_VERSION@@';
 
 use Cwd qw/abs_path/;
 $GIT_DIR = abs_path($ENV{GIT_DIR} || '.git');
diff --git a/t/Makefile b/t/Makefile
index 632c55f..8983509 100644
--- a/t/Makefile
+++ b/t/Makefile
@@ -11,6 +11,7 @@ # Shell quote;
 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
 
 T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)
+TSVN = $(wildcard t91[0-9][0-9]-*.sh)
 
 ifdef NO_PYTHON
 	GIT_TEST_OPTS += --no-python
@@ -24,6 +25,15 @@ all: $(T) clean
 clean:
 	rm -fr trash
 
+# we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
+full-svn-test:
+	$(MAKE) $(TSVN) GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C
+	$(MAKE) $(TSVN) GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C
+	$(MAKE) $(TSVN) GIT_SVN_NO_LIB=1 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \
+							LC_ALL=en_US.UTF-8
+	$(MAKE) $(TSVN) GIT_SVN_NO_LIB=0 GIT_SVN_NO_OPTIMIZE_COMMITS=0 \
+							LC_ALL=en_US.UTF-8
+
 .PHONY: $(T) clean
 .NOTPARALLEL:
 
diff --git a/contrib/git-svn/t/lib-git-svn.sh b/t/lib-git-svn.sh
similarity index 65%
rename from contrib/git-svn/t/lib-git-svn.sh
rename to t/lib-git-svn.sh
index d7f972a..450fee8 100644
--- a/contrib/git-svn/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -1,14 +1,12 @@
-PATH=$PWD/../:$PATH
-if test -d ../../../t
+. ./test-lib.sh
+
+if test -n "$NO_SVN_TESTS"
 then
-    cd ../../../t
-else
-    echo "Must be run in contrib/git-svn/t" >&2
-    exit 1
+	test_expect_success 'skipping git-svn tests, NO_SVN_TESTS defined' :
+	test_done
+	exit
 fi
 
-. ./test-lib.sh
-
 GIT_DIR=$PWD/.git
 GIT_SVN_DIR=$GIT_DIR/svn/git-svn
 SVN_TREE=$GIT_SVN_DIR/svn-tree
@@ -16,7 +14,7 @@ SVN_TREE=$GIT_SVN_DIR/svn-tree
 svnadmin >/dev/null 2>&1
 if test $? != 1
 then
-    test_expect_success 'skipping contrib/git-svn test' :
+    test_expect_success 'skipping git-svn tests, svnadmin not found' :
     test_done
     exit
 fi
@@ -24,7 +22,7 @@ fi
 svn >/dev/null 2>&1
 if test $? != 1
 then
-    test_expect_success 'skipping contrib/git-svn test' :
+    test_expect_success 'skipping git-svn tests, svn not found' :
     test_done
     exit
 fi
diff --git a/contrib/git-svn/t/t0000-contrib-git-svn.sh b/t/t9100-git-svn-basic.sh
old mode 100644
new mode 100755
similarity index 98%
rename from contrib/git-svn/t/t0000-contrib-git-svn.sh
rename to t/t9100-git-svn-basic.sh
index b482bb6..bf1d638
--- a/contrib/git-svn/t/t0000-contrib-git-svn.sh
+++ b/t/t9100-git-svn-basic.sh
@@ -3,7 +3,7 @@ #
 # Copyright (c) 2006 Eric Wong
 #
 
-test_description='git-svn tests'
+test_description='git-svn basic tests'
 GIT_SVN_LC_ALL=$LC_ALL
 
 case "$LC_ALL" in
@@ -17,6 +17,8 @@ esac
 
 . ./lib-git-svn.sh
 
+echo 'define NO_SVN_TESTS to skip git-svn tests'
+
 mkdir import
 cd import
 
diff --git a/contrib/git-svn/t/t0001-contrib-git-svn-props.sh b/t/t9101-git-svn-props.sh
old mode 100644
new mode 100755
similarity index 100%
rename from contrib/git-svn/t/t0001-contrib-git-svn-props.sh
rename to t/t9101-git-svn-props.sh
diff --git a/contrib/git-svn/t/t0002-deep-rmdir.sh b/t/t9102-git-svn-deep-rmdir.sh
old mode 100644
new mode 100755
similarity index 100%
rename from contrib/git-svn/t/t0002-deep-rmdir.sh
rename to t/t9102-git-svn-deep-rmdir.sh
diff --git a/contrib/git-svn/t/t0003-graft-branches.sh b/t/t9103-git-svn-graft-branches.sh
old mode 100644
new mode 100755
similarity index 100%
rename from contrib/git-svn/t/t0003-graft-branches.sh
rename to t/t9103-git-svn-graft-branches.sh
diff --git a/contrib/git-svn/t/t0004-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh
old mode 100644
new mode 100755
similarity index 100%
rename from contrib/git-svn/t/t0004-follow-parent.sh
rename to t/t9104-git-svn-follow-parent.sh
diff --git a/contrib/git-svn/t/t0005-commit-diff.sh b/t/t9105-git-svn-commit-diff.sh
old mode 100644
new mode 100755
similarity index 100%
rename from contrib/git-svn/t/t0005-commit-diff.sh
rename to t/t9105-git-svn-commit-diff.sh
-- 
1.4.1.ge255

^ permalink raw reply related

* Re: comparing file contents in is_exact_match?
From: Martin Waitz @ 2006-07-06  7:16 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vd5cj9rvm.fsf@assigned-by-dhcp.cox.net>

[-- Attachment #1: Type: text/plain, Size: 706 bytes --]

hoi :)

On Wed, Jul 05, 2006 at 11:20:13PM -0700, Junio C Hamano wrote:
> Martin Waitz <tali@admingilde.org> writes:
> > Why is the content comparision in is_exact_match needed?
> 
> Because your working tree can be out of sync with respect to
> what's in the index, in which case we cannot trust the sha1
> while running diff-index (without --cached flag).

so perhaps we need three phases instead of two:
first sort out all renames that can be detected by the sha1,
then compare file contents and finally do the diff.

> git-update-index --refresh before doing anything might help.

At the moment it is doing (N-1)^2 content compares, even if
the index is in sync.

-- 
Martin Waitz

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* Re: comparing file contents in is_exact_match?
From: Junio C Hamano @ 2006-07-06  7:33 UTC (permalink / raw)
  To: Martin Waitz; +Cc: git
In-Reply-To: <20060706071629.GB12512@admingilde.org>

Martin Waitz <tali@admingilde.org> writes:

>> Because your working tree can be out of sync with respect to
>> what's in the index, in which case we cannot trust the sha1
>> while running diff-index (without --cached flag).
>
> so perhaps we need three phases instead of two:
> first sort out all renames that can be detected by the sha1,
> then compare file contents and finally do the diff.

Makes sort-of sense.

Although I am not sure how much this would help with a regular
workload, maybe something like this untested patch might help
your situation?

-- >8 --
diffcore-rename: try matching up renames without populating filespec first

Signed-off-by: Junio C Hamano <junkio@cox.net>

---
diff --git a/diffcore-rename.c b/diffcore-rename.c
index d57e865..affff7a 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -96,11 +96,15 @@ static struct diff_rename_src *register_
 	return &(rename_src[first]);
 }
 
-static int is_exact_match(struct diff_filespec *src, struct diff_filespec *dst)
+static int is_exact_match(struct diff_filespec *src,
+			  struct diff_filespec *dst,
+			  int contents_too)
 {
 	if (src->sha1_valid && dst->sha1_valid &&
 	    !memcmp(src->sha1, dst->sha1, 20))
 		return 1;
+	if (!contents_too)
+		return 0;
 	if (diff_populate_filespec(src, 1) || diff_populate_filespec(dst, 1))
 		return 0;
 	if (src->size != dst->size)
@@ -242,7 +246,7 @@ void diffcore_rename(struct diff_options
 	struct diff_queue_struct *q = &diff_queued_diff;
 	struct diff_queue_struct outq;
 	struct diff_score *mx;
-	int i, j, rename_count;
+	int i, j, rename_count, contents_too;
 	int num_create, num_src, dst_cnt;
 
 	if (!minimum_score)
@@ -273,16 +277,23 @@ void diffcore_rename(struct diff_options
 
 	/* We really want to cull the candidates list early
 	 * with cheap tests in order to avoid doing deltas.
+	 * The first round matches up the up-to-date entries,
+	 * and then during the second round we try to match
+	 * cache-dirty entries as well.
 	 */
-	for (i = 0; i < rename_dst_nr; i++) {
-		struct diff_filespec *two = rename_dst[i].two;
-		for (j = 0; j < rename_src_nr; j++) {
-			struct diff_filespec *one = rename_src[j].one;
-			if (!is_exact_match(one, two))
-				continue;
-			record_rename_pair(i, j, MAX_SCORE);
-			rename_count++;
-			break; /* we are done with this entry */
+	for (contents_too = 0; contents_too < 2; contents_too++) { 
+		for (i = 0; i < rename_dst_nr; i++) {
+			struct diff_filespec *two = rename_dst[i].two;
+			if (rename_dst[i].pair)
+				continue; /* dealt with an earlier round */
+			for (j = 0; j < rename_src_nr; j++) {
+				struct diff_filespec *one = rename_src[j].one;
+				if (!is_exact_match(one, two, contents_too))
+					continue;
+				record_rename_pair(i, j, MAX_SCORE);
+				rename_count++;
+				break; /* we are done with this entry */
+			}
 		}
 	}
 

^ permalink raw reply related

* Re: comparing file contents in is_exact_match?
From: Martin Waitz @ 2006-07-06  7:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7vwtar89wy.fsf@assigned-by-dhcp.cox.net>

[-- Attachment #1: Type: text/plain, Size: 539 bytes --]

On Thu, Jul 06, 2006 at 12:33:33AM -0700, Junio C Hamano wrote:
> Martin Waitz <tali@admingilde.org> writes:
> > so perhaps we need three phases instead of two:
> > first sort out all renames that can be detected by the sha1,
> > then compare file contents and finally do the diff.
> 
> Makes sort-of sense.
> 
> Although I am not sure how much this would help with a regular
> workload, maybe something like this untested patch might help
> your situation?

patch looks good, I'll try it in the evening.

-- 
Martin Waitz

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* git on HP-UX
From: Michal Rokos @ 2006-07-06  7:50 UTC (permalink / raw)
  To: git

Hello,

I needed following changes in order to make git compile on HP-UX:
# uname -s -r -m
HP-UX B.11.11 9000/800

Packages installed:
OpenSSL	A.00.09.07-d.002
perl		B.5.6.1.C
+ unofficial:
gcc		4.1.1
libiconv	1.10
make	3.80
zlib		1.2.3

Has to be compiled with:
PERL_PATH=/opt/perl/bin/perl gmake prefix=/opt/git install

Please keep me on CC (I'm not subscribed).

Signed-off-by: Michal Rokos <michal.rokos@nextsoft.cz>

--- a/Makefile
+++ b/Makefile
@@ -328,6 +328,17 @@ ifeq ($(uname_S),IRIX64)
 	# for now, build 32-bit version
 	ALL_LDFLAGS += -L/usr/lib32
 endif
+ifeq ($(uname_S),HP-UX)
+	NO_IPV6 = YesPlease
+	NO_CURL = YesPlease
+	NO_SETENV = YesPlease
+	NO_STRCASESTR = YesPlease
+	NO_STRLCPY = YesPlease
+	NEEDS_LIBICONV = YesPlease
+	ALL_CFLAGS += -D_REENTRANT -D_XOPEN_SOURCE -D_HPUX_SOURCE -I/opt/openssl/include -Dhstrerror=strerror
+	ALL_LDFLAGS += -L/opt/openssl/lib
+	INSTALL = $(PWD)/compat/compat_install
+endif
 ifneq (,$(findstring arm,$(uname_M)))
 	ARM_SHA1 = YesPlease
 endif
--- a/compat/compat_install	2006-07-06 09:31:27.000000000 +0200
+++ b/compat/compat_install	2006-07-06 09:31:18.000000000 +0200
@@ -0,0 +1,34 @@
+#!/usr/bin/sh
+#
+# Copyright (c) 2006 Michal Rokos
+#
+# Dummy 'install' replacement intended to be used
+# on HP-UX under sh-posix.
+
+while getopts 'dm:' opt; do
+    case $opt in
+    d) DIR_MODE=1;;
+    m) MODE=$OPTARG;;
+    \?) echo "Unknown argument $OPTARG"; exit 1;;
+    esac
+done
+shift $((OPTIND-1))
+
+if [[ -n "$DIR_MODE" ]] && [[ -n "$MODE" ]]; then
+    mkdir -p -m "$MODE" "$@"
+elif [[ -n "$DIR_MODE" ]]; then
+    mkdir -p "$@"
+else
+    set -A args "$@"
+    last=$#
+    dest=${args[last-1]}
+    unset args[last-1]
+    set "${args[@]}"
+
+    cp "$@" "$dest"
+
+    [[ -n "$MODE" ]] && chmod "$MODE" "$@"
+fi
+
+exit 0
+

-- 
Michal Rokos

NextSoft s.r.o.
Vyskočilova 1/1410
140 21 Praha 4
phone:  +420 267 224 311
fax:    +420 267 224 307
mobile: +420 736 646 591
e-mail: michal.rokos@nextsoft.cz

^ permalink raw reply

* [RFH] further upload-pack/fetch-pack tweaks
From: Junio C Hamano @ 2006-07-06  8:43 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git, Ralf Baechle, Linus Torvalds

I was reviewing this issue and have an updated attempt to solve
the issue slightly differently.  I think I have something
working but would like to borrow extra sets of eyeballs.

    From: Junio C Hamano <junkio@cox.net>
    Subject: [PATCH/RFC] upload-pack: stop "ack continue" when we know common commits for wanted refs
    To: Ralf Baechle <ralf@linux-mips.org>
    cc: git@vger.kernel.org, Linus Torvalds <torvalds@osdl.org>
    Date: Fri, 26 May 2006 19:20:54 -0700
    Message-ID: <7vfyiwi4xl.fsf@assigned-by-dhcp.cox.net>

    When the downloader's repository has more roots than the server
    side has, the "have" exchange to figure out recent common
    commits ends up traversing the whole history of branches that
    only exist on the downloader's side.  When the downloader is
    asking for newer commits on the branch that exists on both ends,
    this is totally unnecessary.

    This adds logic to the server side to see if the wanted refs can
    reach the "have" commits received so far, and stop issuing "ack
    continue" once all of them can be reached from "have" commits.

The idea in the new implementation is to notice that the
downloader sent "have" for an object we do not know about, and
when we already have some "have" from them and some "want" are
still not known if they are already reachable from these
"have"s, we traverse the commit ancestry down to oldest "have"s
so far (this is just a heuristic) to see if all of "want" have
some common ancestor with the other side.  When we know all
"want" can be reachable by some "have" we have seen so far, we
send "ACK continue" when the downloader sends a "have" that we
do not have, to cause the downloader to stop traversing that
futile branch which leads to the root we do not have.  The code
sits near the tip of "pu".

I've started from a clone of git.git repository and tried to
fetch "todo" branch from another clone that does not have
anything but the "todo" branch.  So the downloader has five
extra roots (one for git.git itself, one for gitk, one for
gitweb, and one each for htmldocs and manpages).

        # upstream is just "todo" branch and nothing else
        git clone -n git.git upstream
        cd upstream
        mv .git/refs trash
        mkdir -p .git/refs/heads .git/refs/tags
        echo 'ref: refs/heads/master' >.git/HEAD
        cat trash/heads/todo >.git/refs/heads/master
        git repack -a -d
        cd ..

        # downloader has up-to-date git.git but stale "todo"
	git clone -n git.git downloader
        cd downloader
        git checkout todo
        git reset --hard HEAD~30
        git repack -a -d

        # try downloading things from upstream
        git fetch-pack -k -v ../upstream master 2>/var/tmp/new.out
	git fetch-pack -k -v --exec=old-git-upload-pack \
        	../upstream master 2>/var/tmp/old.out


It does send smaller number of "have"s than the current code,
but I noticed that near the end of transfer, after it gets an
"ACK continue" for a common commit on "todo" branch and an "ACK
continue" for a not-common commit on "master" branch, it keeps
sending the commits that are marked on the fetch-pack side as
COMMON_REF (so the last ref sent is v0.99^0 commit), although
upload-pack has told the downloader that whatever is reachable
from "master" branch are commits both sides agreed are common,
so I suspect it should not go down that path that far to reach
v0.99^0 commit.

I have a feeling that either get_rev() or mark_common() logic is
not marking ancestors of commit that are known to be common
properly.  Does this ring a bell?

^ permalink raw reply

* [PATCH 2/3] configure: Add test for Python
From: Dennis Stosberg @ 2006-07-06 12:40 UTC (permalink / raw)
  To: git

The test tries to find the path to a suitable Python binary.
It also adds a --python=/path parameter to override the autodetection.

Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
---
 config-lib.sh |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/config-lib.sh b/config-lib.sh
index 69999a8..50ad6e9 100755
--- a/config-lib.sh
+++ b/config-lib.sh
@@ -263,6 +263,7 @@ Installation directories:
 Miscellaneous options:
   --cc=COMPILER          use this C compiler to build MPlayer [gcc]
   --perl=PATH            path to perl binary [autodetect]
+  --python=PATH          path to python binary [autodetect]
   --target=PLATFORM      target platform (i386-linux, arm-linux, etc)
   --with-install=PATH    use a custom install program (useful if your OS uses
                          a GNU-incompatible install utility by default and
@@ -299,6 +300,8 @@ EOF
 			_cc=`echo $ac_option | cut -d '=' -f 2` ;;
 		--perl=*)
 			_perl=`echo $ac_option | cut -d '=' -f 2` ;;
+		--python=*)
+			_python=`echo $ac_option | cut -d '=' -f 2` ;;
 		--target=*)
 			_target=`echo $ac_option | cut -d '=' -f 2` ;;
 		--with-install=*)
@@ -426,6 +429,24 @@ EOF
 		die "your perl version is too old"
 	fi
 	echores "$_perl_version"
+
+	echocheck "for python"
+	for __py_bin in python python2.4 python2.3; do
+		test "$_python" && continue
+
+		__candidate=`which $__py_bin`
+		test "$__candidate" || continue
+
+		$__candidate - <<EOF || continue
+import sys
+v = sys.version_info
+if v < (2, 3):
+    sys.exit(1)
+EOF
+		_python=$__candidate
+	done
+	test "$_python" || die "cannot find path to python"
+	echores "$_python"
 }
 
 write_config() {
@@ -437,6 +458,7 @@ # -------- Generated by configure ------
 
 CC = $_cc
 PERL_PATH = $_perl
+PYTHON_PATH = $_python
 INSTALL = $_install
 
 EOF
-- 
1.4.1

^ permalink raw reply related

* [PATCH 1/3] configure: Add test for Perl
From: Dennis Stosberg @ 2006-07-06 12:40 UTC (permalink / raw)
  To: git

This patch adds two tests to the configuration script. The first
one tries to find a perl binary in the path.  The second one checks
whether the found perl is of a sufficient version.

It also adds a --perl=/path parameter to override the autodetection
of the perl binary.

Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
---
 config-lib.sh |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/config-lib.sh b/config-lib.sh
index 68fecc5..69999a8 100755
--- a/config-lib.sh
+++ b/config-lib.sh
@@ -262,6 +262,7 @@ Installation directories:
 
 Miscellaneous options:
   --cc=COMPILER          use this C compiler to build MPlayer [gcc]
+  --perl=PATH            path to perl binary [autodetect]
   --target=PLATFORM      target platform (i386-linux, arm-linux, etc)
   --with-install=PATH    use a custom install program (useful if your OS uses
                          a GNU-incompatible install utility by default and
@@ -296,6 +297,8 @@ EOF
 
 		--cc=*)
 			_cc=`echo $ac_option | cut -d '=' -f 2` ;;
+		--perl=*)
+			_perl=`echo $ac_option | cut -d '=' -f 2` ;;
 		--target=*)
 			_target=`echo $ac_option | cut -d '=' -f 2` ;;
 		--with-install=*)
@@ -409,8 +412,21 @@ int main(void) { return 0; }
 EOF
 	{ cc_check && tmp_run; } || die "unusable compiler or produced binary"
 	echores yes
-}
 
+	echocheck "for perl"
+	if test -z "$_perl" ; then
+		_perl=`which perl`
+		test "$_perl" || die "cannot find path to perl"
+	fi
+	echores "$_perl"
+
+	echocheck "perl version"
+	_perl_version=`"$_perl" -e 'require 5.6.0;printf "%vd", $^V'`
+	if test -z "$_perl_version" ; then
+		die "your perl version is too old"
+	fi
+	echores "$_perl_version"
+}
 
 write_config() {
 	echo "Creating config.mak.autogen"
@@ -420,6 +436,7 @@ write_config() {
 # -------- Generated by configure -----------
 
 CC = $_cc
+PERL_PATH = $_perl
 INSTALL = $_install
 
 EOF
-- 
1.4.1

^ permalink raw reply related

* [PATCH 3/3] configure: Try to figure out compiler options
From: Dennis Stosberg @ 2006-07-06 12:41 UTC (permalink / raw)
  To: git

This patch adds tests to determine of what flavour the used
compiler is and sets CFLAGS and the PIC flag appropriately.

Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
---
 Makefile      |    3 ++-
 config-lib.sh |   56 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 53 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 4dc5379..23c784e 100644
--- a/Makefile
+++ b/Makefile
@@ -96,6 +96,7 @@ ALL_CFLAGS = $(CFLAGS)
 ALL_LDFLAGS = $(LDFLAGS)
 PERL_CFLAGS =
 PERL_LDFLAGS =
+PICFLAG = -fPIC
 STRIP ?= strip
 
 prefix = $(HOME)
@@ -483,7 +484,7 @@ endif
 endif
 endif
 ifdef USE_PIC
-	ALL_CFLAGS += -fPIC
+	ALL_CFLAGS += $(PICFLAG)
 endif
 ifdef NO_ACCURATE_DIFF
 	BASIC_CFLAGS += -DNO_ACCURATE_DIFF
diff --git a/config-lib.sh b/config-lib.sh
index 50ad6e9..6000ec9 100755
--- a/config-lib.sh
+++ b/config-lib.sh
@@ -35,9 +35,9 @@ compile_check() {
 	echo
 	cat "$1"
 	echo
-	echo "$_cc $CFLAGS $_inc_extra $_ld_static $_ld_extra -o $TMPO $@"
+	echo "$_cc $_cflags $_inc_extra $_ld_static $_ld_extra -o $TMPO $@"
 	rm -f "$TMPO"
-	$_cc $CFLAGS $_inc_extra $_ld_static $_ld_extra -o "$TMPO" "$@" || return $?
+	$_cc $_cflags $_inc_extra $_ld_static $_ld_extra -o "$TMPO" "$@" || return $?
 	echo
 	echo "ldd $TMPO"
 	$_ldd "$TMPO" || return $?
@@ -261,7 +261,7 @@ Installation directories:
   --gitpythondir=DIR     use this prefix for python libraries [PREFIX/share/git-core/python]
 
 Miscellaneous options:
-  --cc=COMPILER          use this C compiler to build MPlayer [gcc]
+  --cc=COMPILER          use this C compiler to build Git [cc]
   --perl=PATH            path to perl binary [autodetect]
   --python=PATH          path to python binary [autodetect]
   --target=PLATFORM      target platform (i386-linux, arm-linux, etc)
@@ -351,8 +351,8 @@ EOF
 				i[3-9]86*|x86|x86pc|k5|k6|k6_2|k6_3|k6-2|k6-3|pentium*|athlon*|i586_i686|i586-i686|BePC) host_arch=i386 ;;
 				ia64) host_arch=ia64 ;;
 				x86_64|amd64)
-				if [ -n "`$_cc -dumpmachine | sed -n '/^x86_64-/p;/^amd64-/p'`" -a \
-					-z "`echo $CFLAGS | grep -- -m32`"  ]; then
+				if [ -n "`$_cc -dumpmachine 2>/dev/null | sed -n '/^x86_64-/p;/^amd64-/p'`" -a \
+					-z "`echo $_cflags | grep -- -m32`"  ]; then
 					host_arch=x86_64
 				else
 					host_arch=i386
@@ -408,7 +408,51 @@ test_setup() {
 	TMPS="$I/git-conf-$RANDOM-$$.S"
 }
 
+cc_flavour() {
+
+	echocheck "whether cc is GCC"
+	cat > $TMPC <<EOF
+#ifndef __GNUC__
+#error Not GCC
+#endif
+int main(void) { return 0; }
+EOF
+	if cc_check ; then
+		echores "yes"
+		_cc_flavour="gcc"
+		return
+	fi
+	echores "no"
+
+	echocheck "whether cc is Sun CC"
+	cat > $TMPC <<EOF
+#ifndef __SUNPRO_C
+#error Not SUN CC
+#endif
+int main(void) { return 0; }
+EOF
+	if cc_check ; then
+		echores "yes"
+		_cc_flavour="suncc"
+		return
+	fi
+	echores "no"
+}
+
 basic_tests() {
+	_cc_flavour=unknown
+	cc_flavour
+
+	if test "$_cc_flavour" = "gcc" ; then
+		_cflags="-g -O2 -Wall"
+		_picflag="-fPIC"
+	elif test "$_cc_flavour" = "suncc"; then
+		_cflags="-g -xO3"
+		_picflag="-KPIC"
+	fi
+	test "$CFLAGS" && _cflags="$CFLAGS"
+	test "$PICFLAG" && _picflag="$PICFLAG"
+
 	echocheck "if your build environment is sane"
 	cat > $TMPC <<EOF
 int main(void) { return 0; }
@@ -457,6 +501,8 @@ write_config() {
 # -------- Generated by configure -----------
 
 CC = $_cc
+CFLAGS = $_cflags
+PICFLAG = $_picflag
 PERL_PATH = $_perl
 PYTHON_PATH = $_python
 INSTALL = $_install
-- 
1.4.1

^ permalink raw reply related

* Re: git2rss --- publish changes from git-log via RSS
From: Bennett Todd @ 2006-07-06 12:53 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: git
In-Reply-To: <e8elej$4sa$1@sea.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 931 bytes --]

2006-07-04T21:09:32 Jakub Narebski:
> Added to http://git.or.cz/gitwiki/InterfacesFrontendsAndTools#git2rss
> Please correct/expand the info if needed.

Thanks. But I'm not sure it belongs there. If anybody else turns out
to be interested, and we work out how to update it to pull out the
Bent-specific stuff hardcoded in it, and document the result, then
maybe. At best it might be an example someone could copy, if they
wanted to publish an rss of git-log, with some hardwired assumptions
about the log format and the archive structure. It's not based on
darcs2rss, it's a complete rewrite, and much simpler since I used
XML::RSS::SimpleGen.

> BTW. gitweb includes RSS feed, see e.g.:
>   http://www.kernel.org/git/?p=git/git.git;a=rss
>   http://www.kernel.org/git/?p=git/git.git;a=opml

Can it be used for offline generation? I don't run any CGIs on my
webserver, I re-generate bent.xml whenever I push any updates.

-Bennett

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Randal L. Schwartz @ 2006-07-06 13:03 UTC (permalink / raw)
  To: Dennis Stosberg; +Cc: git
In-Reply-To: <20060706124025.G325584e9@leonov.stosberg.net>

>>>>> "Dennis" == Dennis Stosberg <dennis@stosberg.net> writes:

Dennis> +	_perl_version=`"$_perl" -e 'require 5.6.0;printf "%vd", $^V'`

perl -V:version gives you the version like:

        version='5.8.6';

nice and eval-able. :)  But you can just rely on the exit status from

        perl -e 'eval { require 5.006; 1 } or exit 1'

which will be good (0) if the perl is new enough, and bad (1) if the perl is
too old.  (Perl4 will really barf and give an error as well, but still
be an exit 1.)

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Timo Hirvonen @ 2006-07-06 13:10 UTC (permalink / raw)
  To: Dennis Stosberg; +Cc: git
In-Reply-To: <20060706124025.G325584e9@leonov.stosberg.net>

Dennis Stosberg <dennis@stosberg.net> wrote:

> +	echocheck "for perl"
> +	if test -z "$_perl" ; then
> +		_perl=`which perl`
> +		test "$_perl" || die "cannot find path to perl"
> +	fi
> +	echores "$_perl"

"which" isn't portable. On SunOS 5.9 "which foo" prints error message to
stdout and returns 0.  I use this in my own configure scripts:

path_find()
{
        if test -x "$1"
        then
                echo "$1"
                return 0
        fi
        for i in `echo $PATH | sed 's/:/ /g'`
        do
                if test -x "$i/$1"
                then
                        echo "$i/$1"
                        return 0
                fi
        done
        return 1
}

-- 
http://onion.dynserv.net/~timo/

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Dennis Stosberg @ 2006-07-06 13:29 UTC (permalink / raw)
  To: Timo Hirvonen; +Cc: git
In-Reply-To: <20060706161011.ccc2ea1c.tihirvon@gmail.com>

Timo Hirvonen wrote:

> "which" isn't portable. On SunOS 5.9 "which foo" prints error message to
> stdout and returns 0.  I use this in my own configure scripts:

Yes, you're right and that function looks fine.  I will resend the
patches later, but I'll wait a few hours for further comments.

Regards,
Dennis

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Matthias Lederhofer @ 2006-07-06 13:58 UTC (permalink / raw)
  To: Timo Hirvonen; +Cc: Dennis Stosberg, git
In-Reply-To: <20060706161011.ccc2ea1c.tihirvon@gmail.com>

> "which" isn't portable. On SunOS 5.9 "which foo" prints error message to
> stdout and returns 0.  I use this in my own configure scripts:
> 
> path_find()
> {
>         if test -x "$1"
>         then
>                 echo "$1"
>                 return 0
>         fi
>         for i in `echo $PATH | sed 's/:/ /g'`
>         do
>                 if test -x "$i/$1"
>                 then
>                         echo "$i/$1"
>                         return 0
>                 fi
>         done
>         return 1
> }

This will not work with spaces in $PATH. I'd do something like this if
cut is portable (I have only freebsd and linux to test):

path_find()
{
    path="$PATH"
    while [ "$path" != "" ]; do
        p="`echo $path | cut -d : -f 1`"
        if [ "$p" = "$path" ]; then
            path=""
        else
            path="`echo $path | cut -d : -f 2-`"
        fi
        if [ -x "$p/$1" ]; then
            echo "$p/$1"
            return 0
        fi
    done
    return 1
}

Is there any reason to check the current directory first? "which"
doesn't do it for me and without ./ in the front it does not work
(without . is not in $PATH).

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Gerrit Pape @ 2006-07-06 14:17 UTC (permalink / raw)
  To: git; +Cc: Timo Hirvonen, Dennis Stosberg
In-Reply-To: <E1FyUNT-0007Ko-JR@moooo.ath.cx>

On Thu, Jul 06, 2006 at 03:58:47PM +0200, Matthias Lederhofer wrote:
> This will not work with spaces in $PATH. I'd do something like this if
> cut is portable (I have only freebsd and linux to test):

This should work with shell/builtins only, no sed/cut:

 path=${PATH}:
 while test -n "$path"; do
   p=${path%%:*}/$1
   test ! -x "$p" || { echo "$p"; return 0; }
   path=${path#*:}
 done
 test ! -x "$1" || { echo "$1" && return 0; }
 return 1

Regards, Gerrit.

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Dennis Stosberg @ 2006-07-06 14:25 UTC (permalink / raw)
  To: git, Timo Hirvonen
In-Reply-To: <20060706141725.28115.qmail@775c2aaf180a85.315fe32.mid.smarden.org>

Gerrit Pape wrote:

> This should work with shell/builtins only, no sed/cut:
>
>  path=${PATH}:
>  while test -n "$path"; do
>    p=${path%%:*}/$1
>    test ! -x "$p" || { echo "$p"; return 0; }
>    path=${path#*:}

$ exec /bin/sh
$ uname -a
SunOS hostname 5.9 Generic_118558-25 sun4u sparc SUNW,Ultra-5_10 Solaris
$ echo ${PATH%%:*}
bad substitution
$ echo ${PATH#*:}
bad substitution

Regards,
Dennis

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Timo Hirvonen @ 2006-07-06 14:27 UTC (permalink / raw)
  To: Matthias Lederhofer; +Cc: dennis, git
In-Reply-To: <E1FyUNT-0007Ko-JR@moooo.ath.cx>

Matthias Lederhofer <matled@gmx.net> wrote:

> This will not work with spaces in $PATH. I'd do something like this if
> cut is portable (I have only freebsd and linux to test):

This works at least with SunOS /bin/sh, dash, posh and bash.

path_find()
{
        if test -x "$1"
        then
                echo "$1"
                return 0
        fi
	_ifs="$IFS"
	IFS=:
        for i in $PATH
        do
                if test -x "$i/$1"
                then
			IFS="$_ifs"
                        echo "$i/$1"
                        return 0
                fi
        done
	IFS="$_ifs"
        return 1
}

> Is there any reason to check the current directory first? "which"
> doesn't do it for me and without ./ in the front it does not work
> (without . is not in $PATH).

It is not needed but might be useful if PERL is user configurable
variable and can contain either full path or basename. For example this
code

    test "$PROG" || PROG=prog
    PROG=`path_find "$PROG"`

works with these cases

    $ PROG=/usr/bin/program ./configure
    $ PROG=program-1.2 ./configure

-- 
http://onion.dynserv.net/~timo/

^ permalink raw reply

* Re: git on HP-UX
From: Pavel Roskin @ 2006-07-06 14:53 UTC (permalink / raw)
  To: Michal Rokos; +Cc: git
In-Reply-To: <200607060950.34558.michal.rokos@nextsoft.cz>

Hello!

On Thu, 2006-07-06 at 09:50 +0200, Michal Rokos wrote:
> Hello,
> 
> I needed following changes in order to make git compile on HP-UX:
> +ifeq ($(uname_S),HP-UX)
> +	NO_IPV6 = YesPlease
> +	NO_CURL = YesPlease

Is there any fundamental problem with curl and IPv6 on HP-UX?  I don't
think so.

Sorry for using your path as a bad example, but the appearance of such
patches is a perfect argument for a real configure script.  If we
continue patching Makefile, we'll drown in such conditionals.  And the
worst thing is, nobody without access to an HP-UX system will know why
IPv6 isn't working there.  Makefile will become a pile of code that
cannot be easily verified for correctness.

Autoconf based tests can actually test if certain code can be compiled
and linked.  If HP-UX fixed IPv6, the test would enable it.  If some
genius manages to compile curl on HP-UX, http support will be enabled on
that machine with no manual changes in Makefile.

I hope the Autoconf based configure is on its way to git, but I don't
see in in the "pu" branch yet.  I'm not very keen about reinventing
Autoconf and hacking a hand-made configure script.

-- 
Regards,
Pavel Roskin

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Dennis Stosberg @ 2006-07-06 15:34 UTC (permalink / raw)
  To: Timo Hirvonen; +Cc: Matthias Lederhofer, git
In-Reply-To: <20060706172756.a42f1627.tihirvon@gmail.com>

Timo Hirvonen wrote:

>         if test -x "$1"
>         then
>                 echo "$1"
>                 return 0
>         fi

When run in the Git source directory, this will find the perl/
subdir.  If the user gives an absolute path to the perl binary,
there will be no auto-detection anyway, so I think we don't need it.

> It is not needed but might be useful if PERL is user configurable
> variable and can contain either full path or basename. For example this
> code
> 
>     test "$PROG" || PROG=prog
>     PROG=`path_find "$PROG"`
> 
> works with these cases
> 
>     $ PROG=/usr/bin/program ./configure
>     $ PROG=program-1.2 ./configure

I will add that.  For the compiler, the script already checks $CC.
I wonder whether

  --with-perl=...
  --with-python=... 

is more common (more similar to autoconf) than

  --perl=
  --python=

Regards,
Dennis

^ permalink raw reply

* Re: [PATCH 1/3] configure: Add test for Perl
From: Alex Riesen @ 2006-07-06 15:40 UTC (permalink / raw)
  To: Dennis Stosberg; +Cc: git
In-Reply-To: <20060706124025.G325584e9@leonov.stosberg.net>

On 7/6/06, Dennis Stosberg <dennis@stosberg.net> wrote:
>  Miscellaneous options:
>    --cc=COMPILER          use this C compiler to build MPlayer [gcc]

Is it still MPlayer's?

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox