From 35038d89fbd952e72023152478aa3cb070a907d8 Mon Sep 17 00:00:00 2001 From: Robin Johnson Date: Tue, 14 May 2019 08:53:06 +0200 Subject: [PATCH] Makefile: Add NO_CVS define to disable all CVS interface utilities Forward-ported from 1.7.12 to current git.git v1.8.4 Forward-ported from v1.8.4 to v1.8.5.1 Forward-ported from v1.8.5.3 to v1.9.0_rc3 Forward-ported from 1.9.0_rc3 to current git.git v2.0.0_rc0 Forward-ported from v2.0.0_rc0 to v2.0.0 Forward-ported from v2.0.0 to v2.2.2 Forward-ported from v2.2.2 to v2.8.4 Forward-ported from v2.8.4 to v2.10.0 Forward-ported from v2.10.0 to v2.12.0 Forward-ported from v2.12.0 to v2.17.0-rc1 Forward-ported from v2.17.0-rc1 to v2.18.0-rc1 Forward-ported from v2.18.0-rc1 to v2.22.0-rc0 Forward-ported from v2.22.0-rc0 to v2.31.0-rc0 Forward-ported from v2.31.0-rc0 to v2.33.0-rc0 Forward-ported from v2.33.0-rc0 to v2.37.0-rc0 Forward-ported from v2.37.0-rc0 to v2.37.0-rc1 Signed-off-by: Lars Wendler --- Makefile | 50 ++++++++++++++++++++++-------- t/t9200-git-cvsexportcommit.sh | 5 +++ t/t9400-git-cvsserver-server.sh | 8 ++++- t/t9401-git-cvsserver-crlf.sh | 15 ++++++--- t/t9600-cvsimport.sh | 41 +++++++++++++++--------- t/t9601-cvsimport-vendor-branch.sh | 11 +++++++ t/t9602-cvsimport-branches-tags.sh | 11 +++++++ t/t9603-cvsimport-patchsets.sh | 11 +++++++ t/test-lib.sh | 1 + 9 files changed, 119 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index 04d0fd1fe6..31e00ec7e6 100644 --- a/Makefile +++ b/Makefile @@ -316,6 +316,8 @@ include shared.mak # # Define NO_TCLTK if you do not want Tcl/Tk GUI. # +# Define NO_CVS if you do not want any CVS interface utilities. +# # The TCL_PATH variable governs the location of the Tcl interpreter # used to optimize git-gui for your system. Only used if NO_TCLTK # is not set. Defaults to the bare 'tclsh'. @@ -605,6 +607,7 @@ PROGRAM_OBJS = PROGRAMS = EXCLUDED_PROGRAMS = SCRIPT_PERL = +SCRIPT_PERL_CVS = SCRIPT_PYTHON = SCRIPT_SH = SCRIPT_LIB = @@ -637,31 +640,33 @@ SCRIPT_LIB += git-sh-setup SCRIPT_PERL += git-add--interactive.perl SCRIPT_PERL += git-archimport.perl -SCRIPT_PERL += git-cvsexportcommit.perl -SCRIPT_PERL += git-cvsimport.perl -SCRIPT_PERL += git-cvsserver.perl SCRIPT_PERL += git-send-email.perl SCRIPT_PERL += git-svn.perl +SCRIPT_PERL_CVS += git-cvsexportcommit.perl +SCRIPT_PERL_CVS += git-cvsimport.perl +SCRIPT_PERL_CVS += git-cvsserver.perl + SCRIPT_PYTHON += git-p4.py # Generated files for scripts SCRIPT_SH_GEN = $(patsubst %.sh,%,$(SCRIPT_SH)) SCRIPT_PERL_GEN = $(patsubst %.perl,%,$(SCRIPT_PERL)) +SCRIPT_PERL_CVS_GEN = $(patsubst %.perl,%,$(SCRIPT_PERL_CVS)) SCRIPT_PYTHON_GEN = $(patsubst %.py,%,$(SCRIPT_PYTHON)) # Individual rules to allow e.g. # "make -C ../.. SCRIPT_PERL=contrib/foo/bar.perl build-perl-script" # from subdirectories like contrib/*/ .PHONY: build-perl-script build-sh-script build-python-script -build-perl-script: $(SCRIPT_PERL_GEN) +build-perl-script: $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) build-sh-script: $(SCRIPT_SH_GEN) build-python-script: $(SCRIPT_PYTHON_GEN) .PHONY: install-perl-script install-sh-script install-python-script install-sh-script: $(SCRIPT_SH_GEN) $(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' -install-perl-script: $(SCRIPT_PERL_GEN) +install-perl-script: $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) $(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' install-python-script: $(SCRIPT_PYTHON_GEN) $(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' @@ -670,12 +675,13 @@ install-python-script: $(SCRIPT_PYTHON_GEN) clean-sh-script: $(RM) $(SCRIPT_SH_GEN) clean-perl-script: - $(RM) $(SCRIPT_PERL_GEN) + $(RM) $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) clean-python-script: $(RM) $(SCRIPT_PYTHON_GEN) SCRIPTS = $(SCRIPT_SH_GEN) \ $(SCRIPT_PERL_GEN) \ + $(SCRIPT_PERL_CVS_GEN) \ $(SCRIPT_PYTHON_GEN) \ git-instaweb @@ -2350,13 +2356,27 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX -DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" -i $< -o $@ # This makes sure we depend on the NO_PERL setting itself. -$(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS +$(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN): GIT-BUILD-OPTIONS + +_SCRIPT_PERL_GEN = +_SCRIPT_PERL_NOGEN = # Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX # since the locale directory is injected. perl_localedir_SQ = $(localedir_SQ) ifndef NO_PERL +_SCRIPT_PERL_GEN = $(SCRIPT_PERL_GEN) + +ifndef NO_CVS +_SCRIPT_PERL_GEN += $(SCRIPT_PERL_CVS_GEN) +else +_SCRIPT_PERL_NOGEN += $(SCRIPT_PERL_CVS_GEN) +_REASON = NO_CVS +_REASON_CONTENT = $(NO_CVS) +endif # NO_CVS + +$(_SCRIPT_PERL_GEN): PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl PERL_DEFINES = PERL_DEFINES += $(PERL_PATH_SQ) @@ -2380,7 +2400,7 @@ endif PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir) -$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE +$(_SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE $(QUIET_GEN) \ sed -e '1{' \ -e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \ @@ -2426,14 +2446,18 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES chmod +x $@+ && \ mv $@+ $@ else # NO_PERL -$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh - $(QUIET_GEN) \ +_SCRIPT_PERL_NOGEN += $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) git-instaweb +_REASON = NO_PERL +_REASON_CONTENT = $(NO_PERL) +endif # NO_PERL + +$(_SCRIPT_PERL_NOGEN): % : unimplemented.sh + $(QUIET_GEN)$(RM) $@ $@+ && \ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ - -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \ + -e 's|@@REASON@@|$(_REASON)=$(_REASON_CONTENT)|g' \ unimplemented.sh >$@+ && \ chmod +x $@+ && \ mv $@+ $@ -endif # NO_PERL # This makes sure we depend on the NO_PYTHON setting itself. $(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS @@ -2737,7 +2761,7 @@ MSGMERGE_FLAGS = --add-location --backup=off --update LOCALIZED_C = $(sort $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \ $(GENERATED_H)) LOCALIZED_SH = $(sort $(SCRIPT_SH) git-sh-setup.sh) -LOCALIZED_PERL = $(sort $(SCRIPT_PERL)) +LOCALIZED_PERL = $(sort $(SCRIPT_PERL) $(SCRIPT_PERL_CVS)) ifdef XGETTEXT_INCLUDE_TESTS LOCALIZED_C += t/t0200/test.c diff --git a/t/t9200-git-cvsexportcommit.sh b/t/t9200-git-cvsexportcommit.sh index c5946cb0b8..223fd5409b 100755 --- a/t/t9200-git-cvsexportcommit.sh +++ b/t/t9200-git-cvsexportcommit.sh @@ -11,6 +11,11 @@ if ! test_have_prereq PERL; then test_done fi +if ! test_have_prereq CVS; then + skip_all='skipping git cvsexportcommit tests, cvs not available' + test_done +fi + cvs >/dev/null 2>&1 if test $? -ne 1 then diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh index 210ddf09e3..a620126d3f 100755 --- a/t/t9400-git-cvsserver-server.sh +++ b/t/t9400-git-cvsserver-server.sh @@ -14,9 +14,15 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh if ! test_have_prereq PERL; then - skip_all='skipping git cvsserver tests, perl not available' + skip_all='skipping git-cvsserver tests, perl not available' test_done fi + +if ! test_have_prereq CVS; then + skip_all='skipping git-cvsserver tests, cvs not available' + test_done +fi + cvs >/dev/null 2>&1 if test $? -ne 1 then diff --git a/t/t9401-git-cvsserver-crlf.sh b/t/t9401-git-cvsserver-crlf.sh index a34805acdc..0d7759f73b 100755 --- a/t/t9401-git-cvsserver-crlf.sh +++ b/t/t9401-git-cvsserver-crlf.sh @@ -60,15 +60,20 @@ check_status_options() { return $stat } -cvs >/dev/null 2>&1 -if test $? -ne 1 +if ! test_have_prereq PERL then - skip_all='skipping git-cvsserver tests, cvs not found' + skip_all='skipping git-cvsserver tests, perl not available' test_done fi -if ! test_have_prereq PERL +if ! test_have_prereq CVS then - skip_all='skipping git-cvsserver tests, perl not available' + skip_all='skipping git-cvsserver tests, cvs not available' + test_done +fi +cvs >/dev/null 2>&1 +if test $? -ne 1 +then + skip_all='skipping git-cvsserver tests, cvs not found' test_done fi perl -e 'use DBI; use DBD::SQLite' >/dev/null 2>&1 || { diff --git a/t/t9600-cvsimport.sh b/t/t9600-cvsimport.sh index 5680849218..7288db820b 100755 --- a/t/t9600-cvsimport.sh +++ b/t/t9600-cvsimport.sh @@ -11,14 +11,25 @@ if ! test_have_prereq NOT_ROOT; then test_done fi -test_expect_success PERL 'setup cvsroot environment' ' +if ! test_have_prereq PERL +then + skip_all='skipping git cvsimport tests, perl not available' + test_done +fi +if ! test_have_prereq CVS +then + skip_all='skipping git cvsimport tests, cvs not available' + test_done +fi + +test_expect_success 'setup cvsroot environment' ' CVSROOT=$(pwd)/cvsroot && export CVSROOT ' -test_expect_success PERL 'setup cvsroot' '$CVS init' +test_expect_success 'setup cvsroot' '$CVS init' -test_expect_success PERL 'setup a cvs module' ' +test_expect_success 'setup a cvs module' ' mkdir "$CVSROOT/module" && $CVS co -d module-cvs module && @@ -50,23 +61,23 @@ EOF ) ' -test_expect_success PERL 'import a trivial module' ' +test_expect_success 'import a trivial module' ' git cvsimport -a -R -z 0 -C module-git module && test_cmp module-cvs/o_fortuna module-git/o_fortuna ' -test_expect_success PERL 'pack refs' '(cd module-git && git gc)' +test_expect_success 'pack refs' '(cd module-git && git gc)' -test_expect_success PERL 'initial import has correct .git/cvs-revisions' ' +test_expect_success 'initial import has correct .git/cvs-revisions' ' (cd module-git && git log --format="o_fortuna 1.1 %H" -1) > expected && test_cmp expected module-git/.git/cvs-revisions ' -test_expect_success PERL 'update cvs module' ' +test_expect_success 'update cvs module' ' (cd module-cvs && cat <o_fortuna && O Fortune, @@ -94,7 +105,7 @@ EOF ) ' -test_expect_success PERL 'update git module' ' +test_expect_success 'update git module' ' (cd module-git && git config cvsimport.trackRevisions true && @@ -105,7 +116,7 @@ test_expect_success PERL 'update git module' ' ' -test_expect_success PERL 'update has correct .git/cvs-revisions' ' +test_expect_success 'update has correct .git/cvs-revisions' ' (cd module-git && git log --format="o_fortuna 1.1 %H" -1 HEAD^ && @@ -113,7 +124,7 @@ test_expect_success PERL 'update has correct .git/cvs-revisions' ' test_cmp expected module-git/.git/cvs-revisions ' -test_expect_success PERL 'update cvs module' ' +test_expect_success 'update cvs module' ' (cd module-cvs && echo 1 >tick && @@ -122,7 +133,7 @@ test_expect_success PERL 'update cvs module' ' ) ' -test_expect_success PERL 'cvsimport.module config works' ' +test_expect_success 'cvsimport.module config works' ' (cd module-git && git config cvsimport.module module && @@ -134,7 +145,7 @@ test_expect_success PERL 'cvsimport.module config works' ' ' -test_expect_success PERL 'second update has correct .git/cvs-revisions' ' +test_expect_success 'second update has correct .git/cvs-revisions' ' (cd module-git && git log --format="o_fortuna 1.1 %H" -1 HEAD^^ && @@ -143,7 +154,7 @@ test_expect_success PERL 'second update has correct .git/cvs-revisions' ' test_cmp expected module-git/.git/cvs-revisions ' -test_expect_success PERL 'import from a CVS working tree' ' +test_expect_success 'import from a CVS working tree' ' $CVS co -d import-from-wt module && (cd import-from-wt && @@ -156,12 +167,12 @@ test_expect_success PERL 'import from a CVS working tree' ' ' -test_expect_success PERL 'no .git/cvs-revisions created by default' ' +test_expect_success 'no .git/cvs-revisions created by default' ' ! test -e import-from-wt/.git/cvs-revisions ' -test_expect_success PERL 'test entire HEAD' 'test_cmp_branch_tree main' +test_expect_success 'test entire HEAD' 'test_cmp_branch_tree main' test_done diff --git a/t/t9601-cvsimport-vendor-branch.sh b/t/t9601-cvsimport-vendor-branch.sh index 116cddba3a..a7e7299c81 100755 --- a/t/t9601-cvsimport-vendor-branch.sh +++ b/t/t9601-cvsimport-vendor-branch.sh @@ -37,6 +37,17 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./lib-cvs.sh +if ! test_have_prereq PERL +then + skip_all='skipping git cvsimport tests, perl not available' + test_done +fi +if ! test_have_prereq CVS +then + skip_all='skipping git cvsimport tests, cvs not available' + test_done +fi + setup_cvs_test_repository t9601 test_expect_success PERL 'import a module with a vendor branch' ' diff --git a/t/t9602-cvsimport-branches-tags.sh b/t/t9602-cvsimport-branches-tags.sh index e5266c9a87..0e1878ffd3 100755 --- a/t/t9602-cvsimport-branches-tags.sh +++ b/t/t9602-cvsimport-branches-tags.sh @@ -9,6 +9,17 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./lib-cvs.sh +if ! test_have_prereq PERL +then + skip_all='skipping git cvsimport tests, perl not available' + test_done +fi +if ! test_have_prereq CVS +then + skip_all='skipping git cvsimport tests, cvs not available' + test_done +fi + setup_cvs_test_repository t9602 test_expect_success PERL 'import module' ' diff --git a/t/t9603-cvsimport-patchsets.sh b/t/t9603-cvsimport-patchsets.sh index 19f38f78f2..bd5727e8bf 100755 --- a/t/t9603-cvsimport-patchsets.sh +++ b/t/t9603-cvsimport-patchsets.sh @@ -14,6 +14,17 @@ test_description='git cvsimport testing for correct patchset estimation' . ./lib-cvs.sh +if ! test_have_prereq PERL +then + skip_all='skipping git cvsimport tests, perl not available' + test_done +fi +if ! test_have_prereq CVS +then + skip_all='skipping git cvsimport tests, cvs not available' + test_done +fi + setup_cvs_test_repository t9603 test_expect_failure PERL 'import with criss cross times on revisions' ' diff --git a/t/test-lib.sh b/t/test-lib.sh index 55857af601..791aa324a9 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -1573,6 +1573,7 @@ test_set_prereq REFFILES ( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1 test -z "$NO_CURL" && test_set_prereq LIBCURL +test -z "$NO_CVS" && test_set_prereq CVS test -z "$NO_PERL" && test_set_prereq PERL test -z "$NO_PTHREADS" && test_set_prereq PTHREADS test -z "$NO_PYTHON" && test_set_prereq PYTHON -- 2.37.0.rc0