Immediately after I updated the "master" branch with the tool
renames, I got a complaint from somebody telling me that the
things do not work anymore without 'make install'.

Strictly speaking, git has never worked fully without
installation because 'git' wrapper looked for things in the same
directory as it was in, which meant that 'git applymbox' would
not have worked anyway (it was coming from tools/applymbox until
recently), but on the other hand it certainly is nice if we can
run most of the things immediately after building but before
installing.

This patch attempts to remedy it.  What is helped the most is
that test scripts do not have to special case the scripts
anymore; obviously we do want to be able to run tests before
installing.  A downside is that your working tree after a build
has a lot more files than before.

As a side effect, you can specify non-standard path your Perl is
installed, and you can explicitly say "#!/usr/local/bin/bash".

Comments?


---
cd /opt/packrat/playpen/public/in-place/git/git.junio/
git diff HEAD
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -142,6 +142,13 @@ ifeq ($(shell uname -s),SunOS)
        PLATFORM_DEFINES += -DNO_GETDOMAINNAME=1
 endif
 
+ifndef SHELL_PATH
+       SHELL_PATH = /bin/sh
+endif
+ifndef PERL_PATH
+       PERL_PATH = /usr/bin/perl
+endif
+
 ifndef NO_OPENSSL
        LIB_OBJS += epoch.o
        OPENSSL_LIBSSL = -lssl
@@ -179,21 +186,32 @@ endif
 
 DEFINES += '-DSHA1_HEADER=$(SHA1_HEADER)'
 
-SCRIPTS = $(SCRIPT_SH) $(SCRIPT_PERL) gitk
+SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
+         $(patsubst %.perl,%,$(SCRIPT_PERL)) gitk
 
 ### Build rules
 
-all: $(PROGRAMS) git.sh
+all: $(PROGRAMS) $(SCRIPTS)
 
 all:
        $(MAKE) -C templates
 
-git.sh: git.sh.in Makefile
+git: git.sh Makefile
        rm -f [EMAIL PROTECTED] $@
-       sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <[EMAIL PROTECTED] >[EMAIL 
PROTECTED]
+       sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <[EMAIL PROTECTED] >[EMAIL 
PROTECTED]
        chmod +x [EMAIL PROTECTED]
        mv [EMAIL PROTECTED] $@
 
+$(filter-out git,$(patsubst %.sh,%,$(SCRIPT_SH))) : % : %.sh
+       rm -f $@
+       sed -e '1s|#!.*/sh|#!$(SHELL_PATH)|' [EMAIL PROTECTED] >$@
+       chmod +x $@
+
+$(patsubst %.perl,%,$(SCRIPT_PERL)) : % : %.perl
+       rm -f $@
+       sed -e '1s|#!.*perl|#!$(PERL_PATH)|' [EMAIL PROTECTED] >$@
+       chmod +x $@
+
 %.o: %.c
        $(CC) -o $*.o -c $(ALL_CFLAGS) $<
 %.o: %.S
@@ -250,19 +268,8 @@ check:
 
 install: $(PROGRAMS) $(SCRIPTS)
        $(INSTALL) -m755 -d $(DESTDIR)$(bindir)
-       $(INSTALL) $(PROGRAMS) $(DESTDIR)$(bindir)
-       @for s in $(SCRIPTS); \
-       do \
-               case "$$s" in \
-               *.*) \
-                       e=`expr "$$s" : '\(.*\)\.[^.]*$$'` ;; \
-               *) \
-                       e="$$s" ;; \
-               esac && \
-               echo ": install $$s $(DESTDIR)$(bindir)/$$e" && \
-               $(INSTALL) $$s $(DESTDIR)$(bindir)/$$e || exit; \
-       done
-       $(INSTALL) git-revert.sh $(DESTDIR)$(bindir)/git-cherry-pick
+       $(INSTALL) $(PROGRAMS) $(SCRIPTS) $(DESTDIR)$(bindir)
+       $(INSTALL) git-revert $(DESTDIR)$(bindir)/git-cherry-pick
        sh ./cmd-rename.sh $(DESTDIR)$(bindir)
        $(MAKE) -C templates install
 
@@ -299,7 +306,8 @@ deb: dist
 
 clean:
        rm -f *.o mozilla-sha1/*.o ppc/*.o $(PROGRAMS) $(LIB_FILE)
-       rm -f git-core.spec git.sh
+       rm -f $(filter-out gitk,$(SCRIPTS))
+       rm -f git-core.spec
        rm -rf $(GIT_TARNAME)
        rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
        rm -f git-core_$(GIT_VERSION)-*.deb git-core_$(GIT_VERSION)-*.dsc
diff --git a/git.sh.in b/git.sh
similarity index 100%
rename from git.sh.in
rename to git.sh
diff --git a/t/t1005-read-tree-m-2way-emu23.sh 
b/t/t1005-read-tree-m-2way-emu23.sh
--- a/t/t1005-read-tree-m-2way-emu23.sh
+++ b/t/t1005-read-tree-m-2way-emu23.sh
@@ -25,7 +25,7 @@ In the test, these paths are used:
 read_tree_twoway () {
     git-read-tree --emu23 "$1" "$2" &&
     git-ls-files --stage &&
-    git-merge-index ../../git-merge-one-file.sh -a &&
+    git-merge-index git-merge-one-file -a &&
     git-ls-files --stage
 }
 
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh
@@ -13,12 +13,12 @@ handled.  Specifically, that a bogus bra
 test_expect_success \
     'prepare an trivial repository' \
     'echo Hello > A &&
-     ../../git-update-index --add A &&
-     ../../git-commit.sh -m "Initial commit."'
+     git-update-index --add A &&
+     git-commit -m "Initial commit."'
 
 test_expect_failure \
     'git branch --help should return error code' \
-    '../../git-branch.sh --help'
+    'git-branch --help'
 
 test_expect_failure \
     'git branch --help should not have created a bogus branch' \
diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh
--- a/t/t5400-send-pack.sh
+++ b/t/t5400-send-pack.sh
@@ -21,9 +21,9 @@ test_expect_success setup '
            parent=$commit || return 1
        done &&
        echo "$commit" >.git/HEAD &&
-       git-clone.sh -l ./. victim &&
+       git-clone -l ./. victim &&
        cd victim &&
-       git-log.sh &&
+       git-log &&
        cd .. &&
        echo $zero >.git/HEAD &&
        parent=$zero &&
@@ -35,7 +35,7 @@ test_expect_success setup '
        done &&
        echo "$commit" >.git/HEAD &&
        echo Rebase &&
-       git-log.sh'
+       git-log'
 
 test_expect_success \
         'pushing rewound head should not barf but require --force' ' 



-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to