Commit 9c592dcc authored by Vivien Kraus's avatar Vivien Kraus
Browse files

Remove the "safe" target

There are some parts of the build system that are recursive.  For one,
the gnulib layer and the gettext build infrastructure.  However, we
also need to recursively build the library to generate the binding
code, and we need to recursively build all programs in order to get
their =--help= output for /help2man/.

For these reasons, it is impossible to go without a recursive build
system.

This poses an unsolved problem.  Recursive builds and multi-process
builds do not go well together, because each recursive branch does not
know what the other branch is touching.  So I had created a list of
things to get right in that order.  Each item of that list could be
built with multiple jobs, but the steps had to be taken in order.  I
had named this list "safe", because it ensured that there would be no
recursive call (except the safe target itself that would spawn all
tasks).

However, this is a little troubling because bootstrapping the project
with multiple jobs meant to run =autogen.sh=, then =configure=, then
=make safe=, then =make=.

I have found that Automake provides /subdirs/, which already
implements what I was trying to do.  So there is a subdir for each
step.
parent eaad2424
Pipeline #185170 passed with stages
in 37 minutes and 55 seconds
......@@ -14,4 +14,4 @@
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
((nil
(compile-command . "make -C @abs_top_srcdir@ VALAFLAGS=\"--no-color\" check distcheck")))
(compile-command . "cd @abs_top_srcdir@ ; make VALAFLAGS=\"--no-color\" -j all ; make VALAFLAGS=\"--no-color\" -j check ; make -j distcheck ; make -j git-check")))
......@@ -63,16 +63,19 @@
/doc/tarot.xml
/doc/xml
/doc/xml.c
/early-built-sources-task/Makefile.in
/eu.planete_kraus.Tarot.appdata.xml
/eu.planete_kraus.Tarot.appdata.xml.in
/eu.planete_kraus.Tarot.desktop
/eu.planete_kraus.Tarot.json.in
/git-version-gen
/gitlog-to-changelog
/guile-config-task/Makefile.in
/guix/gnu/packages/tarot.scm.in
/index.html
/install-sh
/lib
/libtarot-task/Makefile.in
/libtool
/ltmain.sh
/m4
......@@ -99,6 +102,8 @@
/po/stamp-po
/po/tarot.pot
/pre-inst-env
/programs-task/Makefile.in
/releases-task/Makefile.in
/releases.xml
/snippet
/src/gettext.h
......
......@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
SUBDIRS = po lib
SUBDIRS = po lib guile-config-task releases-task early-built-sources-task libtarot-task programs-task .
include defaults.am
......@@ -66,18 +66,10 @@ AM_CFLAGS += $(GOBJECT_CFLAGS)
AM_LDADD += $(GOBJECT_LIBS)
endif # WITH_GOBJECT
PRIO_1 = lib/libgnu.la src/libtarot/guile/tarot/config.scm
PRIO_2 = eu.planete_kraus.Tarot.appdata.xml.in releases.xml
PRIO_3 = src/libtarot/cards/tarot/cards_defs.h \
src/libtarot/cards/tarot/cards_private_impl.h \
$(dist_model_DATA:.model=.h)
PRIO_4 = src/libtarot/semantic-api/api.xml
PRIO_5 = $(bin_PROGRAMS)
.PHONY: safe
safe:
$(MAKE) $(AM_MAKEFLAGS) $(PRIO_1)
$(MAKE) $(AM_MAKEFLAGS) $(PRIO_2)
$(MAKE) $(AM_MAKEFLAGS) $(PRIO_3)
$(MAKE) $(AM_MAKEFLAGS) $(PRIO_4)
$(MAKE) $(AM_MAKEFLAGS) $(PRIO_5)
.PHONY: build-early-built-sources build-libtarot build-programs
build-early-built-sources:
$(MAKE) $(AM_MAKEFLAGS) $(BUILT_SOURCES)
build-libtarot:
$(MAKE) $(AM_MAKEFLAGS) src/libtarot/libtarot.la
build-programs:
$(MAKE) $(AM_MAKEFLAGS) $(bin_PROGRAMS)
......@@ -77,7 +77,7 @@ sh autogen.sh VALAFLAGS="--target-glib=2.50" || exit 1
|| (cat config.log ; exit 1) \
|| exit 1
make .version || exit 1
make -j safe || exit 1
make -j || exit 1
make -j git-check || exit 1
make -j distcheck || exit 1
cd $SOURCE_TOP || exit 1
......
......@@ -173,6 +173,11 @@ AC_SEARCH_LIBS([add_history], [history])
AC_CONFIG_FILES([ po/Makefile.in
Makefile
lib/Makefile
guile-config-task/Makefile
releases-task/Makefile
early-built-sources-task/Makefile
libtarot-task/Makefile
programs-task/Makefile
src/libtarot/pkgconfig/libtarot.pc
src/libtarot/pkgconfig/libtarot-gobject.pc
])
......
......@@ -27,9 +27,3 @@ check_PROGRAMS += \
%canon_reldir%_xml_LDADD = src/libtarot/libtarot.la $(AM_LDADD)
%canon_reldir%_petit_sec_LDADD = src/libtarot/libtarot.la $(AM_LDADD)
%canon_reldir%_duplicate_a_posteriori_LDADD = src/libtarot/libtarot.la $(AM_LDADD)
BUILT_SOURCES += \
%reldir%/players-and-cards.c \
%reldir%/events.c
%reldir%/players-and-cards.c: src/libtarot/cards/tarot/cards.h
%reldir%/events.c: src/libtarot/cards/tarot/cards.h
# tarot implements the rules of the tarot game
# Copyright (C) 2019 Vivien Kraus
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
all: task
task:
$(MAKE) $(AM_MAKEFLAGS) -C .. build-early-built-sources
......@@ -40,7 +40,6 @@ git-check:
$(MKDIR_P) .gitcheck/build
(cd .gitcheck/source && $(CI_ENV) ./autogen.sh)
(cd .gitcheck/build && $(CI_ENV) ../source/configure VALAFLAGS="--target-glib=2.50" CFLAGS="-Wall -Wextra -g" --enable-valgrind=yes --enable-silent-rules=yes)
(cd .gitcheck/build && $(CI_ENV) $(MAKE) $(AM_MAKEFLAGS) safe)
(cd .gitcheck/build && $(CI_ENV) $(MAKE) $(AM_MAKEFLAGS) all)
(cd .gitcheck/build && $(CI_ENV) $(MAKE) $(AM_MAKEFLAGS) check distcheck)
@tar tf .gitcheck/build/*.tar.gz
......@@ -111,7 +110,7 @@ git-check:
>&2 echo "Ignoring Gnulib's $$source";; \
./m4/*) \
>&2 echo "Ignoring autoconf's macro $$source";; \
./compile | ./depcomp | ./config.rpath | ./config.sub | ./texinfo.tex | ./ar-lib | ./INSTALL | ./missing | ./test-driver | ./ltmain.sh | ./aclocal.m4 | ./ChangeLog | ./config.h.in | ./config.guess | ./Makefile.in | ./configure | ./install-sh | ./ABOUT-NLS) \
./compile | ./depcomp | ./config.rpath | ./config.sub | ./texinfo.tex | ./ar-lib | ./INSTALL | ./missing | ./test-driver | ./ltmain.sh | ./aclocal.m4 | ./ChangeLog | ./config.h.in | ./config.guess | */Makefile.in | ./configure | ./install-sh | ./ABOUT-NLS) \
>&2 echo "Ignorign automake's $$source";; \
*/.git/*);; \
*~);; \
......
# tarot implements the rules of the tarot game
# Copyright (C) 2019 Vivien Kraus
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
all: task
task:
$(MAKE) $(AM_MAKEFLAGS) -C .. src/libtarot/guile/tarot/config.scm
# tarot implements the rules of the tarot game
# Copyright (C) 2019 Vivien Kraus
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
all: task
task:
$(MAKE) $(AM_MAKEFLAGS) -C .. build-libtarot
......@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: tarot 0.4.2.83-ebdc-dirty\n"
"Report-Msgid-Bugs-To: vivien@planete-kraus.eu\n"
"POT-Creation-Date: 2019-11-01 18:01+0100\n"
"PO-Revision-Date: 2019-10-12 11:34+0200\n"
"POT-Creation-Date: 2019-11-13 22:10+0100\n"
"PO-Revision-Date: 2019-11-13 21:16+0100\n"
"Last-Translator: Vivien Kraus <vivien@planete-kraus.eu>\n"
"Language-Team: French\n"
"Language: fr\n"
......@@ -1337,7 +1337,7 @@ msgid "generate"
msgstr "générer"
#: src/tarot-app/tarot_mcts.c:114
#, fuzzy, c-format
#, c-format
msgid ""
"Usage: tarot-mcts [OPTIONS]... < GAME\n"
"Play as the MCTS in GAME. Options:\n"
......@@ -1368,12 +1368,6 @@ msgstr ""
" l'algorithme. GRAINE ne peut pas être une chaîne vide ;\n"
"- -i N, --n-itérations=N : définit le nombre d'itérations. Plus il y\n"
" en a, mieux c'est. Par défaut : %lu ;\n"
"- -p X, --paramètre-mcts=X : définit le paramètre de MCTS (par\n"
" défaut : %f) ;\n"
"- -r X, --paramètre-aléatoire=X : définit la fraction des simulations\n"
" qui sont tirées uniformément (par défaut : %f) ;\n"
"- -a X, --paramètre-accord=X : définit la fraction des simulations qui\n"
" sont négociées par tous les joueurs (par défaut : %f) ;\n"
"- -g, --générer : jouer avec les mêmes paramètres jusqu'à la fin de la\n"
" partie.\n"
"\n"
......@@ -1645,7 +1639,7 @@ msgstr "Écart"
#, fuzzy
#~ msgid "Could not set up the menu.\n"
#~ msgstr "Impossible de mettre en place le MCTS.\n"
#~ msgstr "Impossible de mettre en place le menu.\n"
#~ msgid "Hello, world!\n"
#~ msgstr "Bonjour, le monde !\n"
......
# tarot implements the rules of the tarot game
# Copyright (C) 2019 Vivien Kraus
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
all: task
task:
$(MAKE) $(AM_MAKEFLAGS) -C .. build-programs
# tarot implements the rules of the tarot game
# Copyright (C) 2019 Vivien Kraus
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
all: task
task:
$(MAKE) $(AM_MAKEFLAGS) -C .. eu.planete_kraus.Tarot.appdata.xml.in releases.xml
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment