diff --git a/.github/ci/autoconf-install-smoke.sh b/.github/ci/autoconf-install-smoke.sh index 2068200e2a..f00163b194 100755 --- a/.github/ci/autoconf-install-smoke.sh +++ b/.github/ci/autoconf-install-smoke.sh @@ -1,8 +1,10 @@ #!/usr/bin/env bash set -euxo pipefail -destdir="${1:?usage: autoconf-install-smoke.sh [logical-prefix]}" +destdir="${1:?usage: autoconf-install-smoke.sh [logical-prefix] [examples-enabled] [flatzinc-enabled]}" logical_prefix="${2:-/usr/local}" +examples_enabled="${3:-yes}" +flatzinc_enabled="${4:-yes}" case "$logical_prefix" in /*) ;; @@ -23,12 +25,40 @@ solver_config="$solver_dir/gecode.msc" mznlib_dir="$install_prefix/share/minizinc/gecode" test -f "$install_prefix/include/gecode/support/config.hpp" -test -x "$install_prefix/bin/fzn-gecode" -test -x "$install_prefix/bin/mzn-gecode" -! grep -q "/usr/local" "$install_prefix/bin/mzn-gecode" -test -f "$solver_config" -test -f "$mznlib_dir/experimental/on_restart/fzn_on_restart_complete.mzn" +case "$examples_enabled" in + yes) + test -f "$install_prefix/include/examples/scowl.hpp" + test -f "$install_prefix/include/examples/job-shop-instances.hpp" + ;; + no) + test ! -e "$install_prefix/include/examples" + ;; + *) + echo "examples-enabled must be yes or no: $examples_enabled" >&2 + exit 2 + ;; +esac + +case "$flatzinc_enabled" in + yes) + test -x "$install_prefix/bin/fzn-gecode" + test -x "$install_prefix/bin/mzn-gecode" + ! grep -q "/usr/local" "$install_prefix/bin/mzn-gecode" + test -f "$solver_config" + test -f "$mznlib_dir/experimental/on_restart/fzn_on_restart_complete.mzn" + ;; + no) + test ! -e "$install_prefix/bin/fzn-gecode" + test ! -e "$install_prefix/bin/mzn-gecode" + test ! -e "$install_prefix/share/minizinc" + exit 0 + ;; + *) + echo "flatzinc-enabled must be yes or no: $flatzinc_enabled" >&2 + exit 2 + ;; +esac python3 - "$solver_config" "$solver_dir" <<'PY' import json diff --git a/Makefile.in b/Makefile.in index be42d52c23..1f041e2e29 100755 --- a/Makefile.in +++ b/Makefile.in @@ -860,6 +860,7 @@ else export FLATZINCCONFIG = tools/flatzinc/gecode.msc endif FLATZINCEXE = tools/flatzinc/fzn-gecode$(EXESUFFIX) +FLATZINCLAUNCHER = tools/flatzinc/mzn-gecode@BATCHFILE@ ifeq "@need_soname@" "yes" export FLATZINCSONAME = @WLSONAME@$(LIBPREFIX)@FLATZINC@$(SOSUFFIX) else @@ -882,6 +883,7 @@ export FLATZINCMZNLIB = export FLATZINCRES = export FLATZINCRC = FLATZINCEXE = +FLATZINCLAUNCHER = endif # @@ -906,6 +908,11 @@ INTEXAMPLESRC0 = \ INTEXAMPLEHDR = $(INTEXAMPLEHDR0:%=examples/%.hpp) INTEXAMPLESRC = $(INTEXAMPLESRC0:%=examples/%.cpp) +ifeq "@enable_examples@" "yes" +INSTALLEXAMPLEHDR = $(INTEXAMPLEHDR) +else +INSTALLEXAMPLEHDR = +endif ifeq "@enable_int_vars@" "yes" INTEXAMPLEEXE = $(INTEXAMPLESRC:%.cpp=%$(EXESUFFIX)) else @@ -1037,6 +1044,13 @@ ALLGECODEHDR = \ $(INTEXAMPLEHDR) ALLHDR = \ $(ALLGECODEHDR) $(THIRDHDR) +INSTALLGECODEHDR = \ + $(SUPPORTHDR) $(KERNELHDR) $(SEARCHHDR) \ + $(INTHDR) $(FLOATHDR) $(SETHDR) $(MMHDR) \ + $(DRIVERHDR) $(ITERHDR) $(GISTHDR) $(FLATZINCHDR) \ + $(INSTALLEXAMPLEHDR) +INSTALLHDR = \ + $(INSTALLGECODEHDR) $(THIRDHDR) ALLOBJ0 = $(ALLSRC:%.cpp=%$(OBJSUFFIX)) \ $(GISTMOCSRC:%.cpp=%$(OBJSUFFIX)) \ $(FLATZINC_GENSRC:%.cpp=%$(OBJSUFFIX)) @@ -1093,7 +1107,7 @@ LIBLIBTARGETS = PDBTARGETS = endif -EXETARGETS = $(FLATZINCEXE) tools/flatzinc/mzn-gecode@BATCHFILE@ +EXETARGETS = $(FLATZINCEXE) $(FLATZINCLAUNCHER) # # Testing @@ -2029,9 +2043,9 @@ endif endif -doinstallheaders: $(ALLHDR:%=$(top_srcdir)/%) $(EXTRA_HEADERS) $(VARIMPHDR) $(FLATZINCCONFIG) +doinstallheaders: $(INSTALLHDR:%=$(top_srcdir)/%) $(EXTRA_HEADERS) $(VARIMPHDR) $(FLATZINCCONFIG) mkdir -p $(DESTDIR)$(includedir) && \ - (cd $(top_srcdir) && tar cf - $(ALLHDR)) | \ + (cd $(top_srcdir) && tar cf - $(INSTALLHDR)) | \ (cd $(DESTDIR)$(includedir) && tar xf -) && \ for_varimpheaders="$(VARIMPHDR)" && \ for f in $$for_varimpheaders; do \ @@ -2039,18 +2053,22 @@ doinstallheaders: $(ALLHDR:%=$(top_srcdir)/%) $(EXTRA_HEADERS) $(VARIMPHDR) $(FL for_extraheaders="$(EXTRA_HEADERS)" && \ for f in $$for_extraheaders; do \ cp $$f $(DESTDIR)$(includedir)/$$f; done && \ - mkdir -p $(DESTDIR)$(datadir)/minizinc/solvers && \ for_flatconf="$(FLATZINCCONFIG)" && \ - for f in $$for_flatconf; do \ - cp $$f $(DESTDIR)$(datadir)/minizinc/solvers; done && \ + if test -n "$$for_flatconf"; then \ + mkdir -p $(DESTDIR)$(datadir)/minizinc/solvers && \ + for f in $$for_flatconf; do \ + cp $$f $(DESTDIR)$(datadir)/minizinc/solvers; done; \ + fi && \ for_mznlib="$(FLATZINCMZNLIB)" && \ - mznlibdir="$(DESTDIR)$(datadir)/minizinc/gecode" && \ - mkdir -p "$$mznlibdir" && \ - for f in $$for_mznlib; do \ - srcdir="$(top_srcdir)/$$f"; \ - (cd "$$srcdir" && find . -type f -name '*.mzn' \ - -exec sh -c 'mznlibdir=$$1; shift; for mznfile do mznfile=$${mznfile#./}; mzndir=$${mznfile%/*}; if test "$$mzndir" != "$$mznfile"; then mkdir -p "$$mznlibdir/$$mzndir" || exit 1; fi; cp "$$mznfile" "$$mznlibdir/$$mznfile" || exit 1; done' sh "$$mznlibdir" {} +) || exit 1; \ - done + if test -n "$$for_mznlib"; then \ + mznlibdir="$(DESTDIR)$(datadir)/minizinc/gecode" && \ + mkdir -p "$$mznlibdir" && \ + for f in $$for_mznlib; do \ + srcdir="$(top_srcdir)/$$f"; \ + (cd "$$srcdir" && find . -type f -name '*.mzn' \ + -exec sh -c 'mznlibdir=$$1; shift; for mznfile do mznfile=$${mznfile#./}; mzndir=$${mznfile%/*}; if test "$$mzndir" != "$$mznfile"; then mkdir -p "$$mznlibdir/$$mzndir" || exit 1; fi; cp "$$mznfile" "$$mznlibdir/$$mznfile" || exit 1; done' sh "$$mznlibdir" {} +) || exit 1; \ + done; \ + fi doinstalllib: mkdir -p $(DESTDIR)$(sharedlibdir) && \ diff --git a/changelog.in b/changelog.in index 18991b0bf4..80921440fe 100755 --- a/changelog.in +++ b/changelog.in @@ -96,6 +96,26 @@ Thanks: Mats Carlsson Fix non-terminating propagation for sorted constraints when a matching component contains no interval compatible with an input variable. +[ENTRY] +Module: other +What: bug +Rank: minor +Issue: 107 +Thanks: Yuri Victorovich +[DESCRIPTION] +Do not install example data headers when examples are disabled in an Autotools +build. + +[ENTRY] +Module: other +What: bug +Rank: minor +Issue: 108 +Thanks: Yuri Victorovich +[DESCRIPTION] +Do not create empty MiniZinc directories when FlatZinc is disabled in an +Autotools build. + [ENTRY] Module: flatzinc What: new