From f36b30bcd67f8a753d4ba0ba097b96eba5c70de6 Mon Sep 17 00:00:00 2001 From: Allan Blanchard <allan.blanchard@cea.fr> Date: Fri, 4 Mar 2022 10:48:37 +0100 Subject: [PATCH] [doc] allow sequential build of manuals --- doc/build-manuals.sh | 63 ++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/doc/build-manuals.sh b/doc/build-manuals.sh index 53e5ab503a6..ee63e0d148b 100755 --- a/doc/build-manuals.sh +++ b/doc/build-manuals.sh @@ -1,9 +1,10 @@ #! /usr/bin/env bash -# GNU parallel needs to be installed +# Look for GNU parallel +PARALLEL=1 if ! command -v parallel >/dev/null 2>/dev/null; then - echo "parallel is required" - exit 127 + echo "parallel not found, building in sequential" + PARALLEL=0 fi # latexmk needs to be installed @@ -73,26 +74,42 @@ EACSL_DOC=../src/plugins/e-acsl/doc export -f build -# Note: The makefiles of ACSL/E-ACSL are not parallelizable when producing both -# acsl.pdf and acsl-implementation.pdf (race conditions in intermediary files, -# leading to non-deterministic errors). -# Therefore, we perform a second call to parellel for these files. -SHELL=(type -p bash) parallel --halt soon,fail=1 --csv build {1} {2} {3} ::: \ -userman/userman.pdf,user-manual.pdf,$FC_SUFFIX \ -developer/developer.pdf,plugin-development-guide.pdf,$FC_SUFFIX \ -rte/main.pdf,rte-manual.pdf,$FC_SUFFIX \ -aorai/main.pdf,aorai-manual.pdf,$FC_SUFFIX \ -aorai/aorai-example.tgz,aorai-example.tgz,$FC_SUFFIX \ -value/main.pdf,eva-manual.pdf,$FC_SUFFIX \ -metrics/metrics.pdf,metrics-manual.pdf,$FC_SUFFIX \ -../src/plugins/wp/doc/manual/wp.pdf,wp-manual.pdf,$FC_SUFFIX \ -acsl/acsl-implementation.pdf,acsl-implementation.pdf,$FC_SUFFIX \ -$EACSL_DOC/refman/e-acsl-implementation.pdf,e-acsl-implementation.pdf,$FC_SUFFIX \ -$EACSL_DOC/userman/main.pdf,e-acsl-manual.pdf,$FC_SUFFIX \ - -SHELL=(type -p bash) parallel --halt soon,fail=1 --csv build {1} {2} {3} ::: \ -acsl/acsl.pdf,acsl.pdf,$ACSL_SUFFIX \ -$EACSL_DOC/refman/e-acsl.pdf,e-acsl.pdf,$EACSL_SUFFIX +if [[ $PARALLEL -eq 1 ]]; then + # Note: The makefiles of ACSL/E-ACSL are not parallelizable when producing both + # acsl.pdf and acsl-implementation.pdf (race conditions in intermediary files, + # leading to non-deterministic errors). + # Therefore, we perform a second call to parellel for these files. + SHELL=(type -p bash) parallel --halt soon,fail=1 --csv build {1} {2} {3} ::: \ + userman/userman.pdf,user-manual.pdf,$FC_SUFFIX \ + developer/developer.pdf,plugin-development-guide.pdf,$FC_SUFFIX \ + rte/main.pdf,rte-manual.pdf,$FC_SUFFIX \ + aorai/main.pdf,aorai-manual.pdf,$FC_SUFFIX \ + aorai/aorai-example.tgz,aorai-example.tgz,$FC_SUFFIX \ + value/main.pdf,eva-manual.pdf,$FC_SUFFIX \ + metrics/metrics.pdf,metrics-manual.pdf,$FC_SUFFIX \ + ../src/plugins/wp/doc/manual/wp.pdf,wp-manual.pdf,$FC_SUFFIX \ + acsl/acsl-implementation.pdf,acsl-implementation.pdf,$FC_SUFFIX \ + $EACSL_DOC/refman/e-acsl-implementation.pdf,e-acsl-implementation.pdf,$FC_SUFFIX \ + $EACSL_DOC/userman/main.pdf,e-acsl-manual.pdf,$FC_SUFFIX \ + + SHELL=(type -p bash) parallel --halt soon,fail=1 --csv build {1} {2} {3} ::: \ + acsl/acsl.pdf,acsl.pdf,$ACSL_SUFFIX \ + $EACSL_DOC/refman/e-acsl.pdf,e-acsl.pdf,$EACSL_SUFFIX +else + build userman/userman.pdf user-manual.pdf $FC_SUFFIX + build developer/developer.pdf plugin-development-guide.pdf $FC_SUFFIX + build rte/main.pdf rte-manual.pdf $FC_SUFFIX + build aorai/main.pdf aorai-manual.pdf $FC_SUFFIX + build aorai/aorai-example.tgz aorai-example.tgz $FC_SUFFIX + build value/main.pdf eva-manual.pdf $FC_SUFFIX + build metrics/metrics.pdf metrics-manual.pdf $FC_SUFFIX + build ../src/plugins/wp/doc/manual/wp.pdf wp-manual.pdf $FC_SUFFIX + build acsl/acsl.pdf acsl.pdf $ACSL_SUFFIX + build acsl/acsl-implementation.pdf acsl-implementation.pdf $FC_SUFFIX + build $EACSL_DOC/refman/e-acsl-implementation.pdf e-acsl-implementation.pdf $FC_SUFFIX + build $EACSL_DOC/userman/main.pdf e-acsl-manual.pdf $FC_SUFFIX + build $EACSL_DOC/refman/e-acsl.pdf e-acsl.pdf $EACSL_SUFFIX +fi # Sanity check: version differences between Frama-C, ACSL and E-ACSL FAIL = 0 -- GitLab