Merge branch 'jk/rebuild-perl-scripts-with-no-perl-seting-change' into maint
authorJunio C Hamano <gitster@pobox.com>
Mon, 22 Dec 2014 20:18:35 +0000 (12:18 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 22 Dec 2014 20:18:35 +0000 (12:18 -0800)
The build procedure did not bother fixing perl and python scripts
when NO_PERL and NO_PYTHON build-time configuration changed.

* jk/rebuild-perl-scripts-with-no-perl-seting-change:
Makefile: have python scripts depend on NO_PYTHON setting
Makefile: simplify by using SCRIPT_{PERL,SH}_GEN macros
Makefile: have perl scripts depend on NO_PERL setting

1  2 
Makefile
diff --combined Makefile
index 827006ba611c7e8be0ae4d92eaeaa321d7b9feb2,e3cab521541998e8e682d48793038ae14efc50d3..7482a4dbab458b1b82a7cb683ce7dc6f41fd4145
+++ b/Makefile
@@@ -14,11 -14,11 +14,11 @@@ all:
  # Define INLINE to a suitable substitute (such as '__inline' or '') if git
  # fails to compile with errors about undefined inline functions or similar.
  #
 -# Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf()
 +# Define SNPRINTF_RETURNS_BOGUS if you are on a system which snprintf()
  # or vsnprintf() return -1 instead of number of characters which would
  # have been written to the final string if enough space had been available.
  #
 -# Define FREAD_READS_DIRECTORIES if your are on a system which succeeds
 +# Define FREAD_READS_DIRECTORIES if you are on a system which succeeds
  # when attempting to read from an fopen'ed directory.
  #
  # Define NO_OPENSSL environment variable if you do not have OpenSSL.
  # dependency rules.  The default is "auto", which means to use computed header
  # dependencies if your compiler is detected to support it.
  #
 -# Define CHECK_HEADER_DEPENDENCIES to check for problems in the hard-coded
 -# dependency rules.
 -#
  # Define NATIVE_CRLF if your platform uses CRLF for line endings.
  #
  # Define XDL_FAST_HASH to use an alternative line-hashing method in
@@@ -429,6 -432,7 +429,6 @@@ XDIFF_OBJS 
  VCSSVN_OBJS =
  GENERATED_H =
  EXTRA_CPPFLAGS =
 -LIB_H =
  LIB_OBJS =
  PROGRAM_OBJS =
  PROGRAMS =
@@@ -547,7 -551,6 +547,7 @@@ PROGRAMS += $(patsubst %.o,git-%$X,$(PR
  
  TEST_PROGRAMS_NEED_X += test-chmtime
  TEST_PROGRAMS_NEED_X += test-ctype
 +TEST_PROGRAMS_NEED_X += test-config
  TEST_PROGRAMS_NEED_X += test-date
  TEST_PROGRAMS_NEED_X += test-delta
  TEST_PROGRAMS_NEED_X += test-dump-cache-tree
@@@ -568,7 -571,6 +568,7 @@@ TEST_PROGRAMS_NEED_X += test-revision-w
  TEST_PROGRAMS_NEED_X += test-run-command
  TEST_PROGRAMS_NEED_X += test-scrap-cache-tree
  TEST_PROGRAMS_NEED_X += test-sha1
 +TEST_PROGRAMS_NEED_X += test-sha1-array
  TEST_PROGRAMS_NEED_X += test-sigchain
  TEST_PROGRAMS_NEED_X += test-string-list
  TEST_PROGRAMS_NEED_X += test-subprocess
@@@ -629,11 -631,131 +629,11 @@@ VCSSVN_LIB = vcs-svn/lib.
  
  GENERATED_H += common-cmds.h
  
 -LIB_H += advice.h
 -LIB_H += archive.h
 -LIB_H += argv-array.h
 -LIB_H += attr.h
 -LIB_H += bisect.h
 -LIB_H += blob.h
 -LIB_H += branch.h
 -LIB_H += builtin.h
 -LIB_H += bulk-checkin.h
 -LIB_H += bundle.h
 -LIB_H += cache-tree.h
 -LIB_H += cache.h
 -LIB_H += color.h
 -LIB_H += column.h
 -LIB_H += commit.h
 -LIB_H += compat/bswap.h
 -LIB_H += compat/mingw.h
 -LIB_H += compat/obstack.h
 -LIB_H += compat/poll/poll.h
 -LIB_H += compat/precompose_utf8.h
 -LIB_H += compat/terminal.h
 -LIB_H += compat/win32/dirent.h
 -LIB_H += compat/win32/pthread.h
 -LIB_H += compat/win32/syslog.h
 -LIB_H += connected.h
 -LIB_H += convert.h
 -LIB_H += credential.h
 -LIB_H += csum-file.h
 -LIB_H += decorate.h
 -LIB_H += delta.h
 -LIB_H += diff.h
 -LIB_H += diffcore.h
 -LIB_H += dir.h
 -LIB_H += exec_cmd.h
 -LIB_H += ewah/ewok.h
 -LIB_H += ewah/ewok_rlw.h
 -LIB_H += fetch-pack.h
 -LIB_H += fmt-merge-msg.h
 -LIB_H += fsck.h
 -LIB_H += gettext.h
 -LIB_H += git-compat-util.h
 -LIB_H += gpg-interface.h
 -LIB_H += graph.h
 -LIB_H += grep.h
 -LIB_H += hashmap.h
 -LIB_H += help.h
 -LIB_H += http.h
 -LIB_H += kwset.h
 -LIB_H += levenshtein.h
 -LIB_H += line-log.h
 -LIB_H += line-range.h
 -LIB_H += list-objects.h
 -LIB_H += ll-merge.h
 -LIB_H += log-tree.h
 -LIB_H += mailmap.h
 -LIB_H += merge-blobs.h
 -LIB_H += merge-recursive.h
 -LIB_H += mergesort.h
 -LIB_H += notes-cache.h
 -LIB_H += notes-merge.h
 -LIB_H += notes-utils.h
 -LIB_H += notes.h
 -LIB_H += object.h
 -LIB_H += pack-objects.h
 -LIB_H += pack-revindex.h
 -LIB_H += pack.h
 -LIB_H += pack-bitmap.h
 -LIB_H += parse-options.h
 -LIB_H += patch-ids.h
 -LIB_H += pathspec.h
 -LIB_H += pkt-line.h
 -LIB_H += prio-queue.h
 -LIB_H += progress.h
 -LIB_H += prompt.h
 -LIB_H += quote.h
 -LIB_H += reachable.h
 -LIB_H += reflog-walk.h
 -LIB_H += refs.h
 -LIB_H += remote.h
 -LIB_H += rerere.h
 -LIB_H += resolve-undo.h
 -LIB_H += revision.h
 -LIB_H += run-command.h
 -LIB_H += send-pack.h
 -LIB_H += sequencer.h
 -LIB_H += sha1-array.h
 -LIB_H += sha1-lookup.h
 -LIB_H += shortlog.h
 -LIB_H += sideband.h
 -LIB_H += sigchain.h
 -LIB_H += strbuf.h
 -LIB_H += streaming.h
 -LIB_H += string-list.h
 -LIB_H += submodule.h
 -LIB_H += tag.h
 -LIB_H += tar.h
 -LIB_H += thread-utils.h
 -LIB_H += transport.h
 -LIB_H += tree-walk.h
 -LIB_H += tree.h
 -LIB_H += unpack-trees.h
 -LIB_H += unicode_width.h
 -LIB_H += url.h
 -LIB_H += urlmatch.h
 -LIB_H += userdiff.h
 -LIB_H += utf8.h
 -LIB_H += varint.h
 -LIB_H += vcs-svn/fast_export.h
 -LIB_H += vcs-svn/line_buffer.h
 -LIB_H += vcs-svn/repo_tree.h
 -LIB_H += vcs-svn/sliding_window.h
 -LIB_H += vcs-svn/svndiff.h
 -LIB_H += vcs-svn/svndump.h
 -LIB_H += walker.h
 -LIB_H += wildmatch.h
 -LIB_H += wt-status.h
 -LIB_H += xdiff-interface.h
 -LIB_H += xdiff/xdiff.h
 -LIB_H += xdiff/xdiffi.h
 -LIB_H += xdiff/xemit.h
 -LIB_H += xdiff/xinclude.h
 -LIB_H += xdiff/xmacros.h
 -LIB_H += xdiff/xprepare.h
 -LIB_H += xdiff/xtypes.h
 -LIB_H += xdiff/xutils.h
 +LIB_H = $(shell $(FIND) . \
 +      -name .git -prune -o \
 +      -name t -prune -o \
 +      -name Documentation -prune -o \
 +      -name '*.h' -print)
  
  LIB_OBJS += abspath.o
  LIB_OBJS += advice.o
@@@ -764,7 -886,6 +764,7 @@@ LIB_OBJS += submodule.
  LIB_OBJS += symlinks.o
  LIB_OBJS += tag.o
  LIB_OBJS += trace.o
 +LIB_OBJS += trailer.o
  LIB_OBJS += transport.o
  LIB_OBJS += transport-helper.o
  LIB_OBJS += tree-diff.o
@@@ -829,7 -950,6 +829,7 @@@ BUILTIN_OBJS += builtin/hash-object.
  BUILTIN_OBJS += builtin/help.o
  BUILTIN_OBJS += builtin/index-pack.o
  BUILTIN_OBJS += builtin/init-db.o
 +BUILTIN_OBJS += builtin/interpret-trailers.o
  BUILTIN_OBJS += builtin/log.o
  BUILTIN_OBJS += builtin/ls-files.o
  BUILTIN_OBJS += builtin/ls-remote.o
@@@ -905,6 -1025,11 +905,6 @@@ sysconfdir = et
  endif
  endif
  
 -ifdef CHECK_HEADER_DEPENDENCIES
 -COMPUTE_HEADER_DEPENDENCIES = no
 -USE_COMPUTED_HEADER_DEPENDENCIES =
 -endif
 -
  ifndef COMPUTE_HEADER_DEPENDENCIES
  COMPUTE_HEADER_DEPENDENCIES = auto
  endif
@@@ -1256,6 -1381,7 +1256,6 @@@ ifdef NO_INET_PTO
  endif
  ifndef NO_UNIX_SOCKETS
        LIB_OBJS += unix-socket.o
 -      LIB_H += unix-socket.h
        PROGRAM_OBJS += credential-cache.o
        PROGRAM_OBJS += credential-cache--daemon.o
  endif
@@@ -1279,10 -1405,12 +1279,10 @@@ endi
  ifdef BLK_SHA1
        SHA1_HEADER = "block-sha1/sha1.h"
        LIB_OBJS += block-sha1/sha1.o
 -      LIB_H += block-sha1/sha1.h
  else
  ifdef PPC_SHA1
        SHA1_HEADER = "ppc/sha1.h"
        LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
 -      LIB_H += ppc/sha1.h
  else
  ifdef APPLE_COMMON_CRYPTO
        COMPAT_CFLAGS += -DCOMMON_DIGEST_FOR_OPENSSL
@@@ -1351,9 -1479,6 +1351,9 @@@ ifdef NO_REGE
        COMPAT_CFLAGS += -Icompat/regex
        COMPAT_OBJS += compat/regex/regex.o
  endif
 +ifdef NATIVE_CRLF
 +      BASIC_CFLAGS += -DNATIVE_CRLF
 +endif
  
  ifdef USE_NED_ALLOCATOR
         COMPAT_CFLAGS += -Icompat/nedmalloc
@@@ -1610,8 -1735,8 +1610,8 @@@ git.sp git.s git.o: EXTRA_CPPFLAGS = 
        '-DGIT_INFO_PATH="$(infodir_relative_SQ)"'
  
  git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS) $(GITLIBS)
 -      $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \
 -              $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
 +      $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) git.o \
 +              $(BUILTIN_OBJS) $(LIBS)
  
  help.sp help.s help.o: common-cmds.h
  
@@@ -1662,7 -1787,7 +1662,7 @@@ GIT-SCRIPT-DEFINES: FORC
              fi
  
  
- $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh GIT-SCRIPT-DEFINES
+ $(SCRIPT_SH_GEN) : % : %.sh GIT-SCRIPT-DEFINES
        $(QUIET_GEN)$(cmd_munge_script) && \
        chmod +x $@+ && \
        mv $@+ $@
@@@ -1676,8 -1801,11 +1676,11 @@@ git.res: git.rc GIT-VERSION-FIL
          $(join -DMAJOR= -DMINOR=, $(wordlist 1,2,$(subst -, ,$(subst ., ,$(GIT_VERSION))))) \
          -DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" $< -o $@
  
+ # This makes sure we depend on the NO_PERL setting itself.
+ $(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS
  ifndef NO_PERL
- $(patsubst %.perl,%,$(SCRIPT_PERL)): perl/perl.mak
+ $(SCRIPT_PERL_GEN): perl/perl.mak
  
  perl/perl.mak: perl/PM.stamp
  
@@@ -1690,7 -1818,7 +1693,7 @@@ perl/perl.mak: GIT-CFLAGS GIT-PREFIX pe
        $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' $(@F)
  
  PERL_DEFINES = $(PERL_PATH_SQ):$(PERLLIB_EXTRA_SQ)
- $(patsubst %.perl,%,$(SCRIPT_PERL)): % : %.perl perl/perl.mak GIT-PERL-DEFINES GIT-VERSION-FILE
+ $(SCRIPT_PERL_GEN): % : %.perl perl/perl.mak GIT-PERL-DEFINES GIT-VERSION-FILE
        $(QUIET_GEN)$(RM) $@ $@+ && \
        INSTLIBDIR=`MAKEFLAGS= $(MAKE) -C perl -s --no-print-directory instlibdir` && \
        INSTLIBDIR_EXTRA='$(PERLLIB_EXTRA_SQ)' && \
@@@ -1724,7 -1852,7 +1727,7 @@@ git-instaweb: git-instaweb.sh gitweb GI
        chmod +x $@+ && \
        mv $@+ $@
  else # NO_PERL
- $(patsubst %.perl,%,$(SCRIPT_PERL)) git-instaweb: % : unimplemented.sh
+ $(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh
        $(QUIET_GEN)$(RM) $@ $@+ && \
        sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
            -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \
        mv $@+ $@
  endif # NO_PERL
  
+ # This makes sure we depend on the NO_PYTHON setting itself.
+ $(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS
  ifndef NO_PYTHON
  $(SCRIPT_PYTHON_GEN): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS
  $(SCRIPT_PYTHON_GEN): % : %.py
@@@ -1812,13 -1943,29 +1818,13 @@@ $(dep_dirs)
  missing_dep_dirs := $(filter-out $(wildcard $(dep_dirs)),$(dep_dirs))
  dep_file = $(dir $@).depend/$(notdir $@).d
  dep_args = -MF $(dep_file) -MQ $@ -MMD -MP
 -ifdef CHECK_HEADER_DEPENDENCIES
 -$(error cannot compute header dependencies outside a normal build. \
 -Please unset CHECK_HEADER_DEPENDENCIES and try again)
 -endif
  endif
  
  ifneq ($(COMPUTE_HEADER_DEPENDENCIES),yes)
 -ifndef CHECK_HEADER_DEPENDENCIES
  dep_dirs =
  missing_dep_dirs =
  dep_args =
  endif
 -endif
 -
 -ifdef CHECK_HEADER_DEPENDENCIES
 -ifndef PRINT_HEADER_DEPENDENCIES
 -missing_deps = $(filter-out $(notdir $^), \
 -      $(notdir $(shell $(MAKE) -s $@ \
 -              CHECK_HEADER_DEPENDENCIES=YesPlease \
 -              USE_COMPUTED_HEADER_DEPENDENCIES=YesPlease \
 -              PRINT_HEADER_DEPENDENCIES=YesPlease)))
 -endif
 -endif
  
  ASM_SRC := $(wildcard $(OBJECTS:o=S))
  ASM_OBJ := $(ASM_SRC:S=o)
@@@ -1826,10 -1973,45 +1832,10 @@@ C_OBJ := $(filter-out $(ASM_OBJ),$(OBJE
  
  .SUFFIXES:
  
 -ifdef PRINT_HEADER_DEPENDENCIES
 -$(C_OBJ): %.o: %.c FORCE
 -      echo $^
 -$(ASM_OBJ): %.o: %.S FORCE
 -      echo $^
 -
 -ifndef CHECK_HEADER_DEPENDENCIES
 -$(error cannot print header dependencies during a normal build. \
 -Please set CHECK_HEADER_DEPENDENCIES and try again)
 -endif
 -endif
 -
 -ifndef PRINT_HEADER_DEPENDENCIES
 -ifdef CHECK_HEADER_DEPENDENCIES
 -$(C_OBJ): %.o: %.c $(dep_files) FORCE
 -      @set -e; echo CHECK $@; \
 -      missing_deps="$(missing_deps)"; \
 -      if test "$$missing_deps"; \
 -      then \
 -              echo missing dependencies: $$missing_deps; \
 -              false; \
 -      fi
 -$(ASM_OBJ): %.o: %.S $(dep_files) FORCE
 -      @set -e; echo CHECK $@; \
 -      missing_deps="$(missing_deps)"; \
 -      if test "$$missing_deps"; \
 -      then \
 -              echo missing dependencies: $$missing_deps; \
 -              false; \
 -      fi
 -endif
 -endif
 -
 -ifndef CHECK_HEADER_DEPENDENCIES
  $(C_OBJ): %.o: %.c GIT-CFLAGS $(missing_dep_dirs)
        $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
  $(ASM_OBJ): %.o: %.S GIT-CFLAGS $(missing_dep_dirs)
        $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
 -endif
  
  %.s: %.c GIT-CFLAGS FORCE
        $(QUIET_CC)$(CC) -o $@ -S $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $<
@@@ -1956,9 -2138,9 +1962,9 @@@ XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --
  XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \
        --keyword=gettextln --keyword=eval_gettextln
  XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --keyword=__ --language=Perl
 -LOCALIZED_C := $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
 -LOCALIZED_SH := $(SCRIPT_SH)
 -LOCALIZED_PERL := $(SCRIPT_PERL)
 +LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
 +LOCALIZED_SH = $(SCRIPT_SH)
 +LOCALIZED_PERL = $(SCRIPT_PERL)
  
  ifdef XGETTEXT_INCLUDE_TESTS
  LOCALIZED_C += t/t0200/test.c
@@@ -1966,7 -2148,7 +1972,7 @@@ LOCALIZED_SH += t/t0200/test.s
  LOCALIZED_PERL += t/t0200/test.perl
  endif
  
 -po/git.pot: $(LOCALIZED_C)
 +po/git.pot: $(GENERATED_H) FORCE
        $(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ $(XGETTEXT_FLAGS_C) $(LOCALIZED_C)
        $(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing $(XGETTEXT_FLAGS_SH) \
                $(LOCALIZED_SH)