Skip to content

Commit 6df9fc2

Browse files
committed
contrib: build & test scalar by default, optionally install
Change how the newly proposed "scalar" command is handle, this builds on top of the proposed patches that add it along with documentation and tests to the "contrib/scalar/" directory[1]. With those patches we unconditionally build scalar.o and link it to libgit.a, but don't build the "scalar" binary itself, and don't run its tests as part of our normal test suite run or CI . As the changes to "t/t9099-scalar.sh" here shows that sort of arrangement leads to breakages. I.e. the scalar tests would fail on OSX, which our OSX CI jobs will catch, but only if we run the tests. Let's add a prerequisite to test that, which requires moving around some of the setup code. I think that for a libgit.a-using "scalar" in particular, and for "contrib" in general we're better off by not only compiling the object in question, but also linking it, and running its tests by default. What we won't do is install it by default, unless an "INSTALL_SCALAR=Y" is provided along with "make install". For context: There's been ongoing discussion about how this command should be integrated in terms of the "closeness" of its integration, and how "contrib" sources within git.git should be organized. That discussion started with my [2], was followed by a WIP patch[3] to implement the approach being finished up here, and has spawned the "[Discussion] The architecture of Scalar (and others) within Git" thread[4]. See also the large earlier discussion hanging off [3]. I really don't think it's important whether a given source file lives in-tree at "contrib/scalar/scalar.c" or the top-level "scalar.c", but as the diff below shows the latter approach is a smaller overall change in our build system, due to how it's organized, more details on that below under "Build changes". I think that part of the reason for sticking the new command in "contrib/scalar/" was to implicitly make it clear from the paths that it was different. I do think that would be a worthwhile goal in the abstract. But given the build simplifications we can attain by moving it to the top level that we should seek to resolve that ambiguity in the minds of any potential git.git code maintainers in some other way. To do that we now have a new 'OPTIONAL CONTRIB COMMANDS' section in "git help git" explaining our backwards and forwards compatibility non-promises when it comes to this and similar future commands. Our users are the ones most likely to be confused about why their git package has installed a "/usr/bin/scalar" that seemingly duplicates parts of git's own functionality. We're much better off by cross-linking our documentation, and mentioning the state of scalar in git's own documentation, along with the full list of porcelain and plumbing utilities. = Build changes = This fixes dependency bugs in the previous "contrib/scalar/Makefile", as well as implementing various missing bits of functionality, most notably "make install" will now install the "scalar" command, but only if INSTALL_SCALAR is defined. Those and other changes and non-changes, categorized as "Same", "New" and "Fixed" below: == Same == A.: We'll unconditionally build scalar.o, as before it's in the $(OBJECTS) list. B.: "make contrib/scalar/scalar.o" has the same dependency graph as before, but is now spelled "make scalar.o", more on the rename below. == New == C.: We'll now unconditionally build and test the scalar command. Before we'd only build scalar.o, but not link it. Its test lives in "t/t9099-scalar.sh" now (and take <1s to run). We should have test coverage of this in-tree command that's linking to libgit.a. Previously it had to be manually tested by cd-ing to contrib/scalar and running "make test", and it would not benefit from the combination of our various CI targets. D.: We'll unconditionally build scalar's documentation, and it will be linted along with the rest, including checking for broken links to other documentation. The minor change to scalar.txt here is needed due to the lint check added in cafd982 (doc lint: lint and fix missing "GIT" end sections, 2021-04-09), perhaps we should have a different end blurb for this command, but for now let's make it consistent with the rest. When installed (see below) this command is part of the git suite, so the end blurb should say something to that effect. E.: "make install" will now install the "scalar" binary, but only if "INSTALL_SCALAR" is defined. Relative to our $(prefix) we'll now have (this is with INSTALL_SYMLINKS=Y): libexec/git-core/scalar: symbolic link to ../../bin/scalar bin/scalar: ELF 64-bit LSB pie executable, Putting it into libexec isn't strictly necessary, but as we do it with "git" we do that by default, and this will ensure that anyone who relies on their path being "$(git --exec-path)" will also be able to find "scalar". Perhaps we shouldn't put it in "libexec" at all, but for now let's just follow the herd. F.: Likewise "make install-man install-doc install-html" works, and will install "scalar" documentation if "INSTALL_SCALAR" is defined. We'll install these files with those targets (and correctly split them by target, e.g. only scalar.1 with "install-man"): share/doc/git-doc/scalar.txt: ASCII text share/doc/git-doc/scalar.html: XML 1.0 document, ASCII text, with CRLF line terminators share/man/man1/scalar.1: troff or preprocessor input, ASCII text, with very long lines == Fixed == G.: The dependency graph of contrib/scalar/Makefile was broken when it came to scalar.o, it only depended on ../../libgit.a. So it was a requirement to run the top-level Makefile first to get around some of its dependency issues: make && make -C contrib/scalar H.: By having the top-level Makefile build scalar.o it'll work as well as any other git code, including benefiting from COMPUTE_HEADER_DEPENDENCIES. Targets such as (and possibly others): - "make tags TAGS cscope" - "make coccicheck" - "make check-docs" Wouldn't consider contrib/scalar at all, some of those would have been fixable, but as shown in the rest of this patch it's easier just to have scalar built like any other program instead. == Discussion and motivation == I've been fixing various dependency issues in git's Makefile infrastructure recently, some of which has been integrated into "master", some of which is currently under review on-list, and some of which isn't submitted yet. To the extent that we have build dependency issues and cases where we can't build something in parallel it's usually because we're invoking one Makefile from another. That's the case in most of our sub-Makefiles, which will usually need to invoke or depend on something created in the top-level Makefile. None of {t,Documentation,template}/Makefile etc. are truly independent, as looking at $(git grep -F '../' '*Makefile') will reveal, and we'll sometimes need to duplicate logic between them purely to get around them not being driven by one top-level Makefile logic. Much has been written on this topic, likely most notably the "Recursive Make Considered Harmful" paper (full PDF link at [5]), and to be fair, the there's also a well-known "Non-recursive Make Considered Harmful" retort at [6]). Theoretical opinions on the topic clearly differ. From a purely practical perspective I ran into textual and semantic conflicts with the "contrib/scalar/" work. I think the diffstat of this patch demonstrates that this is a much simpler approach, particularly considering that the code being replaced didn't perform much of the needed integrations that are "new" here. E.g. we now have "make install". The unsubmitted [7] (linked to by [8]) shows the boilerplate we'd need for that with the alternate approach. It would be more pleasing to not have to hardcode "git" in the pre-image and now "git" and "scalar" in the post-image in several places. My initial WIP [3] looks better, but built on a set of Makefile reorganization patches. I'd like to not make those patches a dependency of this change, but readers should rest assured that we're really not ending up with as many "scalar" special-cases in the long term as this diff indicates, most or all of those can all be generalized into Makefile refactoring that teaches our build system to build N number of differently named top-level commands. 1. https://lore.kernel.org/git/pull.1005.v6.git.1635323239.gitgitgadget@gmail.com/ 2. https://lore.kernel.org/git/87czpuxbwp.fsf@evledraar.gmail.com/ 3. https://lore.kernel.org/git/87ilz44kdk.fsf@evledraar.gmail.com/ 4. https://lore.kernel.org/git/b67bbef4-e4c3-b6a7-1c7f-7d405902ef8b@gmail.com/ 5. https://web.archive.org/web/20150330111905/http://miller.emu.id.au/pmiller/books/rmch/ 6. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/03/hadrian.pdf 7. dscho@473ca8ae673 8. https://lore.kernel.org/git/nycvar.QRO.7.76.6.2110210947590.56@tvgsbejvaqbjf.bet/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
1 parent b53f0c4 commit 6df9fc2

File tree

15 files changed

+115
-194
lines changed

15 files changed

+115
-194
lines changed

.github/workflows/main.yml

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,6 @@ jobs:
8989
HOME: ${{runner.workspace}}
9090
NO_PERL: 1
9191
run: . /etc/profile && ci/make-test-artifacts.sh artifacts
92-
- name: build Scalar
93-
shell: bash
94-
run: |
95-
make -C contrib/scalar &&
96-
mkdir -p artifacts/bin-wrappers artifacts/contrib/scalar &&
97-
cp contrib/scalar/scalar.exe artifacts/contrib/scalar/ &&
98-
cp bin-wrappers/scalar artifacts/bin-wrappers/
9992
- name: zip up tracked files
10093
run: git archive -o artifacts/tracked.tar.gz HEAD
10194
- name: upload tracked files and build artifacts
@@ -164,8 +157,6 @@ jobs:
164157
run: compat\vcbuild\vcpkg_copy_dlls.bat release
165158
- name: generate Visual Studio solution
166159
shell: bash
167-
env:
168-
INCLUDE_SCALAR: YesPlease
169160
run: |
170161
cmake `pwd`/contrib/buildsystems/ -DCMAKE_PREFIX_PATH=`pwd`/compat/vcbuild/vcpkg/installed/x64-windows \
171162
-DNO_GETTEXT=YesPlease -DPERL_TESTS=OFF -DPYTHON_TESTS=OFF -DCURL_NO_CURL_CMAKE=ON
@@ -179,12 +170,6 @@ jobs:
179170
run: |
180171
mkdir -p artifacts &&
181172
eval "$(make -n artifacts-tar INCLUDE_DLLS_IN_ARTIFACTS=YesPlease ARTIFACTS_DIRECTORY=artifacts NO_GETTEXT=YesPlease 2>&1 | grep ^tar)"
182-
- name: copy Scalar
183-
shell: bash
184-
run: |
185-
mkdir -p artifacts/bin-wrappers artifacts/contrib/scalar &&
186-
cp contrib/scalar/scalar.exe artifacts/contrib/scalar/ &&
187-
cp bin-wrappers/scalar artifacts/bin-wrappers/
188173
- name: zip up tracked files
189174
run: git archive -o artifacts/tracked.tar.gz HEAD
190175
- name: upload tracked files and build artifacts

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@
216216
/configure
217217
/.vscode/
218218
/tags
219+
/scalar
219220
/TAGS
220221
/cscope*
221222
/compile_commands.json

Documentation/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ MAN1_TXT += $(filter-out \
1818
MAN1_TXT += git.txt
1919
MAN1_TXT += gitk.txt
2020
MAN1_TXT += gitweb.txt
21+
ifndef NO_INSTALL_SCALAR_DOC
22+
MAN1_TXT += scalar.txt
23+
endif
2124

2225
# man5 / man7 guides (note: new guides should also be added to command-list.txt)
2326
MAN5_TXT += gitattributes.txt
@@ -311,6 +314,7 @@ endif
311314
cmds_txt = cmds-ancillaryinterrogators.txt \
312315
cmds-ancillarymanipulators.txt \
313316
cmds-mainporcelain.txt \
317+
cmds-optionalcontrib.txt \
314318
cmds-plumbinginterrogators.txt \
315319
cmds-plumbingmanipulators.txt \
316320
cmds-synchingrepositories.txt \

Documentation/cmd-list.perl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ sub format_one {
1010
$state = 0;
1111
open I, '<', "$name.txt" or die "No such file $name.txt";
1212
while (<I>) {
13-
if (/^git[a-z0-9-]*\(([0-9])\)$/) {
13+
if (/^[a-z0-9-]*\(([0-9])\)$/) {
1414
$mansection = $1;
1515
next;
1616
}

Documentation/git.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,18 @@ The following documentation pages are guides about Git concepts.
337337

338338
include::cmds-guide.txt[]
339339

340+
Optional contrib commands
341+
-------------------------
342+
343+
The following commands are included with the git sources, but may not
344+
be present in your installation.
345+
346+
These should be considered "contrib"-level when it comes to
347+
maintenance and stability promises. They might not even be included in
348+
your installation, and may either drastically change in the future, or
349+
go away entirely.
350+
351+
include::cmds-optionalcontrib.txt[]
340352

341353
Configuration Mechanism
342354
-----------------------

contrib/scalar/scalar.txt renamed to Documentation/scalar.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,6 @@ SEE ALSO
140140
--------
141141
linkgit:git-clone[1], linkgit:git-maintenance[1].
142142

143-
Scalar
143+
GIT
144144
---
145-
Associated with the linkgit:git[1] suite
145+
Part of the linkgit:git[1] suite

Makefile

Lines changed: 66 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,11 @@ all::
459459
# INSTALL_STRIP can be set to "-s" to strip binaries during installation,
460460
# if your $(INSTALL) command supports the option.
461461
#
462+
# Define INSTALL_SCALAR if you would like to install the optional
463+
# "scalar" command. This command is considered "contrib"-level, see
464+
# 'Optional "contrib" commands' in the built (with "make man") git(1)
465+
# manual page.
466+
#
462467
# Define GENERATE_COMPILATION_DATABASE to "yes" to generate JSON compilation
463468
# database entries during compilation if your compiler supports it, using the
464469
# `-MJ` flag. The JSON entries will be placed in the `compile_commands/`
@@ -579,8 +584,10 @@ GIT_OBJS =
579584
LIB_OBJS =
580585
OBJECTS =
581586
PROGRAM_OBJS =
587+
OTHER_PROGRAMS =
582588
PROGRAMS =
583589
EXCLUDED_PROGRAMS =
590+
SCALAR_OBJS =
584591
SCRIPT_PERL =
585592
SCRIPT_PYTHON =
586593
SCRIPT_SH =
@@ -784,7 +791,8 @@ BUILT_INS += git-switch$X
784791
BUILT_INS += git-whatchanged$X
785792

786793
# what 'all' will build but not install in gitexecdir
787-
OTHER_PROGRAMS = git$X
794+
OTHER_PROGRAMS += git$X
795+
OTHER_PROGRAMS += scalar$X
788796

789797
# what test wrappers are needed and 'install' will install, in bindir
790798
BINDIR_PROGRAMS_NEED_X += git
@@ -793,6 +801,18 @@ BINDIR_PROGRAMS_NEED_X += git-shell
793801
BINDIR_PROGRAMS_NEED_X += git-upload-archive
794802
BINDIR_PROGRAMS_NEED_X += git-upload-pack
795803

804+
# Sometimes we only have a test wrapper, but not a program to
805+
# install. This isn't so pretty, and we could refactor the
806+
# bin-wrappers/% and install code to make it unnecessary.
807+
ifdef INSTALL_SCALAR
808+
PROGRAMS += scalar$X
809+
BINDIR_PROGRAMS_NEED_X += scalar
810+
endif
811+
TEST_BINDIR_PROGRAMS_NEED_X = $(BINDIR_PROGRAMS_NEED_X)
812+
ifndef INSTALL_SCALAR
813+
TEST_BINDIR_PROGRAMS_NEED_X += scalar
814+
endif
815+
796816
BINDIR_PROGRAMS_NO_X += git-cvsserver
797817

798818
# Set paths to tools early so that they can be used for version tests.
@@ -2210,9 +2230,13 @@ git.sp git.s git.o: EXTRA_CPPFLAGS = \
22102230
'-DGIT_MAN_PATH="$(mandir_relative_SQ)"' \
22112231
'-DGIT_INFO_PATH="$(infodir_relative_SQ)"'
22122232

2213-
git$X: git.o GIT-LDFLAGS $(BUILTIN_OBJS) $(GITLIBS)
2214-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) \
2215-
$(filter %.o,$^) $(LIBS)
2233+
define top-level-cmd-rule
2234+
$(1)$X: $(1).o GIT-LDFLAGS $$(GITLIBS) $(2)
2235+
$$(QUIET_LINK)$$(CC) $$(ALL_CFLAGS) -o $$@ $$(ALL_LDFLAGS) \
2236+
$$(filter %.o,$$^) $(LIBS)
2237+
endef
2238+
$(eval $(call top-level-cmd-rule,git,$(BUILTIN_OBJS)))
2239+
$(eval $(call top-level-cmd-rule,scalar,))
22162240

22172241
help.sp help.s help.o: command-list.h
22182242
hook.sp hook.s hook.o: hook-list.h
@@ -2448,7 +2472,12 @@ GIT_OBJS += git.o
24482472
.PHONY: git-objs
24492473
git-objs: $(GIT_OBJS)
24502474

2475+
SCALAR_OBJS += scalar.o
2476+
.PHONY: scalar-objs
2477+
scalar-objs: $(SCALAR_OBJS)
2478+
24512479
OBJECTS += $(GIT_OBJS)
2480+
OBJECTS += $(SCALAR_OBJS)
24522481
OBJECTS += $(PROGRAM_OBJS)
24532482
OBJECTS += $(TEST_OBJS)
24542483
OBJECTS += $(XDIFF_OBJS)
@@ -2457,10 +2486,6 @@ ifndef NO_CURL
24572486
OBJECTS += http.o http-walker.o remote-curl.o
24582487
endif
24592488

2460-
SCALAR_SOURCES := contrib/scalar/scalar.c
2461-
SCALAR_OBJECTS := $(SCALAR_SOURCES:c=o)
2462-
OBJECTS += $(SCALAR_OBJECTS)
2463-
24642489
.PHONY: objects
24652490
objects: $(OBJECTS)
24662491

@@ -2594,10 +2619,6 @@ $(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o GIT-LDFLAGS $(GITLIBS
25942619
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
25952620
$(CURL_LIBCURL) $(EXPAT_LIBEXPAT) $(LIBS)
25962621

2597-
contrib/scalar/scalar$X: $(SCALAR_OBJECTS) GIT-LDFLAGS $(GITLIBS)
2598-
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) \
2599-
$(filter %.o,$^) $(LIBS)
2600-
26012622
$(LIB_FILE): $(LIB_OBJS)
26022623
$(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^
26032624

@@ -2870,15 +2891,18 @@ GIT-PYTHON-VARS: FORCE
28702891
fi
28712892
endif
28722893

2873-
test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X) $(TEST_PROGRAMS_NEED_X))
2894+
test_bindir_programs := $(patsubst %,bin-wrappers/%,$(TEST_BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X) $(TEST_PROGRAMS_NEED_X))
28742895

28752896
all:: $(TEST_PROGRAMS) $(test_bindir_programs)
28762897

2898+
# Substitution that's only done on programs named git-* in
2899+
# bin-wrappers/*
2900+
GIT_TEST_BINDIR_PROGRAMS_NEED_X = $(filter-out scalar,$(TEST_BINDIR_PROGRAMS_NEED_X))
28772901
bin-wrappers/%: wrap-for-bin.sh
28782902
@mkdir -p bin-wrappers
28792903
$(QUIET_GEN)sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
28802904
-e 's|@@BUILD_DIR@@|$(shell pwd)|' \
2881-
-e 's|@@PROG@@|$(patsubst test-%,t/helper/test-%$(X),$(@F))$(patsubst git%,$(X),$(filter $(@F),$(BINDIR_PROGRAMS_NEED_X)))|' < $< > $@ && \
2905+
-e 's|@@PROG@@|$(patsubst test-%,t/helper/test-%$(X),$(@F))$(patsubst git%,$(X),$(filter $(@F),$(GIT_TEST_BINDIR_PROGRAMS_NEED_X)))|' < $< > $@ && \
28822906
chmod +x $@
28832907

28842908
# GNU make supports exporting all variables by "export" without parameters.
@@ -3113,25 +3137,26 @@ endif
31133137
install-gitweb:
31143138
$(MAKE) -C gitweb install
31153139

3116-
install-doc: install-man-perl
3117-
$(MAKE) -C Documentation install
3118-
3119-
install-man: install-man-perl
3120-
$(MAKE) -C Documentation install-man
3140+
ifdef INSTALL_SCALAR
3141+
NO_INSTALL_SCALAR_DOC =
3142+
else
3143+
NO_INSTALL_SCALAR_DOC = NoScalarPlease
3144+
endif
31213145

31223146
install-man-perl: man-perl
31233147
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(mandir_SQ)/man3'
31243148
(cd perl/build/man/man3 && $(TAR) cf - .) | \
31253149
(cd '$(DESTDIR_SQ)$(mandir_SQ)/man3' && umask 022 && $(TAR) xof -)
31263150

3127-
install-html:
3128-
$(MAKE) -C Documentation install-html
3129-
3130-
install-info:
3131-
$(MAKE) -C Documentation install-info
3132-
3133-
install-pdf:
3134-
$(MAKE) -C Documentation install-pdf
3151+
define install-doc-rule
3152+
$(1): $(3)
3153+
$$(MAKE) -C Documentation $(2) NO_INSTALL_SCALAR_DOC=$$(NO_INSTALL_SCALAR_DOC)
3154+
endef
3155+
$(eval $(call install-doc-rule,install-doc,install,install-man-perl))
3156+
$(eval $(call install-doc-rule,install-man,install-man,install-man-perl))
3157+
$(eval $(call install-doc-rule,install-html,install-html,))
3158+
$(eval $(call install-doc-rule,install-info,install-info,))
3159+
$(eval $(call install-doc-rule,install-pdf,install-pdf,))
31353160

31363161
quick-install-doc:
31373162
$(MAKE) -C Documentation quick-install
@@ -3183,8 +3208,19 @@ ifneq ($(INCLUDE_DLLS_IN_ARTIFACTS),)
31833208
OTHER_PROGRAMS += $(shell echo *.dll t/helper/*.dll)
31843209
endif
31853210

3186-
artifacts-tar:: $(ALL_COMMANDS_TO_INSTALL) $(SCRIPT_LIB) $(OTHER_PROGRAMS) \
3187-
GIT-BUILD-OPTIONS $(TEST_PROGRAMS) $(test_bindir_programs) \
3211+
# No scalar in "cmake" yet, and since 4c2c38e800f (ci: modification of
3212+
# main.yml to use cmake for vs-build job, 2020-06-26) the "vs-build"
3213+
# job has a hard dependency on it. Let's fail in the tests instead of
3214+
# in the "vs-build" job itself.
3215+
ifeq ($(wildcard scalar),scalar)
3216+
ARCHIVE_OTHER_PROGRAMS = $(OTHER_PROGRAMS)
3217+
ARCHIVE_TEST_BINDIR_PROGRAMS = $(test_bindir_programs)
3218+
else
3219+
ARCHIVE_OTHER_PROGRAMS = $(filter-out scalar%, $(OTHER_PROGRAMS))
3220+
ARCHIVE_TEST_BINDIR_PROGRAMS = $(filter-out bin-wrappers/scalar,$(test_bindir_programs))
3221+
endif
3222+
artifacts-tar:: $(ALL_COMMANDS_TO_INSTALL) $(SCRIPT_LIB) $(ARCHIVE_OTHER_PROGRAMS) \
3223+
GIT-BUILD-OPTIONS $(TEST_PROGRAMS) $(ARCHIVE_TEST_BINDIR_PROGRAMS) \
31883224
$(MOFILES)
31893225
$(QUIET_SUBDIR0)templates $(QUIET_SUBDIR1) \
31903226
SHELL_PATH='$(SHELL_PATH_SQ)' PERL_PATH='$(PERL_PATH_SQ)'
@@ -3327,7 +3363,7 @@ check-docs::
33273363
-e 's/\.txt//'; \
33283364
) | while read how cmd; \
33293365
do \
3330-
case " $(patsubst %$X,%,$(ALL_COMMANDS) $(BUILT_INS) $(EXCLUDED_PROGRAMS)) " in \
3366+
case " $(patsubst %$X,%,$(ALL_COMMANDS) $(BUILT_INS) $(EXCLUDED_PROGRAMS) scalar) " in \
33313367
*" $$cmd "*) ;; \
33323368
*) echo "removed but $$how: $$cmd" ;; \
33333369
esac; \

ci/run-build-and-tests.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ linux-gcc-4.8|pedantic)
4949
make test
5050
;;
5151
esac
52-
make -C contrib/scalar test
5352

5453
check_unignored_build_artifacts
5554

ci/run-test-slice.sh

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,4 @@ make --quiet -C t T="$(cd t &&
1414
./helper/test-tool path-utils slice-tests "$1" "$2" t[0-9]*.sh |
1515
tr '\n' ' ')"
1616

17-
if test 0 = "$1"
18-
then
19-
make -C contrib/scalar test
20-
fi
21-
2217
check_unignored_build_artifacts

command-list.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
# synchingrepositories
1717
# synchelpers
1818
# purehelpers
19+
# optionalcontrib
1920
#
2021
# The type names are self explanatory. But if you want to see what
2122
# command belongs to what group to get a better picture, have a look
@@ -214,3 +215,4 @@ gitsubmodules guide
214215
gittutorial-2 guide
215216
gittutorial guide
216217
gitworkflows guide
218+
scalar optionalcontrib

0 commit comments

Comments
 (0)