'build' scripts before installing.

Earlier we renamed git-foo.sh to git-foo while installing, which
was mostly done by inertia than anything else.  This however
made writing tests to use scripts harder.

This patch builds the scripts the same way as we build binaries
from their sources.  As a side effect, you can now specify
non-standard paths you have your Perl binary is in when running
the make.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2005-09-08 18:50:33 -07:00
parent 2f0f8b71ee
commit bc6146d2ab
5 changed files with 33 additions and 25 deletions

View File

@ -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 $@+ $@
sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <$@.in >$@+
sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <$@.sh >$@+
chmod +x $@+
mv $@+ $@
$(filter-out git,$(patsubst %.sh,%,$(SCRIPT_SH))) : % : %.sh
rm -f $@
sed -e '1s|#!.*/sh|#!$(SHELL_PATH)|' $@.sh >$@
chmod +x $@
$(patsubst %.perl,%,$(SCRIPT_PERL)) : % : %.perl
rm -f $@
sed -e '1s|#!.*perl|#!$(PERL_PATH)|' $@.perl >$@
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

View File

View File

@ -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
}

View File

@ -13,12 +13,12 @@ handled. Specifically, that a bogus branch is not created.
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' \

View File

@ -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' '