diff --git a/Makefile b/Makefile index aac8887311c5376819f5cb3613cb2d9ee006774b..079925659e6fe0fe70e989da896ef11aa2f7af1c 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,3 @@ -# Process flags -ifeq ($(Y), 1) - YFLAG=-y -endif - # Determine Coq version COQ_VERSION=$(shell coqc --version | egrep -o 'version 8.[0-9]' | egrep -o '8.[0-9]') COQ_MAKEFILE_FLAGS ?= @@ -33,9 +28,8 @@ Makefile.coq: _CoqProject Makefile # Install build-dependencies build-dep: cat opam.pins | build/opam-pins.sh - opam upgrade $(YFLAG) opam pin add coq-lambda-rust "$$(pwd)#HEAD" -k git -n -y - opam install coq-lambda-rust --deps-only $(YFLAG) + opam install coq-lambda-rust --deps-only -y # some fiels that do *not* need to be forwarded to Makefile.coq Makefile: ; diff --git a/build/opam-ci.sh b/build/opam-ci.sh index 95f19e830600f704f17fe22a8d470c17fff43364..35117dafd931f62f4fb7ded5fea7a5a6bda8c0ad 100755 --- a/build/opam-ci.sh +++ b/build/opam-ci.sh @@ -16,18 +16,17 @@ test -d "$OPAMROOT/repo/coq-released" || opam repo add coq-released https://coq. opam update opam install ocamlfind -y # Remove this once the Coq crew fixed their package... -# Pick fixed versions of some dependencies +# Install fixed versions of some dependencies echo for PIN in "${@}" do echo "Applying pin: $PIN" - opam pin add $PIN -k version -y -n + opam pin add $PIN -k version -y done -# Install/upgrade build-dependencies +# Install build-dependencies echo -opam upgrade -y -make build-dep Y=1 +make build-dep # done echo diff --git a/build/opam-pins.sh b/build/opam-pins.sh index 784100b25abf102cf4c7781208234c468cabc3c2..d08fb314e5b865d0d56c88c159d46863247d39b9 100755 --- a/build/opam-pins.sh +++ b/build/opam-pins.sh @@ -1,13 +1,52 @@ #!/bin/bash set -e -# Process an opam.pins file from stdin. +## Process an opam.pins file from stdin: Apply the pins and install the packages. +## Usage: (Arguments have to be given in the given order!) +## ./opam-pins.sh [--recursive] +## Arguments: +## -- recursive This is a recurisve call of the script to itself +## (you should not pass this argument yourself manually). + +# Parse arguments +if [[ "$1" == "--recursive" ]]; then + shift + IS_TOPLEVEL=0 +else + # We are the toplevel call. Record the old pin state. + IS_TOPLEVEL=1 + OLD_PINS="$(mktemp)" + opam pin list > "$OLD_PINS" +fi + +if [[ "$1" == "-n" ]]; then + shift + NFLAG="-n" +else + NFLAG="" +fi + +# Process stdin while read PACKAGE PIN; do if echo "$PIN" | egrep '^https://gitlab\.mpi-sws\.org' > /dev/null; then # an MPI URL -- try doing recursive pin processing URL=$(echo "$PIN" | sed 's|#|/raw/|')/opam.pins - curl -f "$URL" 2> /dev/null | "$0" + curl -f "$URL" 2> /dev/null | "$0" --recursive fi - echo "Applying pin: $PACKAGE -> $PIN" + echo "[opam-pins] Applying pin: $PACKAGE -> $PIN" opam pin add "$PACKAGE" "$PIN" -k git -y -n + echo done + +# If we are the toplevel call, see what pins changed and reinstall if necessary +if [[ "$IS_TOPLEVEL" == "1" ]]; then + NEW_PINS="$(mktemp)" + opam pin list > "$NEW_PINS" + # Compare the pin lists and filter for the changed package names + PACKAGES=$(diff -u0 "$OLD_PINS" "$NEW_PINS" | egrep '^[+][^+]' | sed 's/+\([a-z0-9-]\+\)[ .].*$/\1/') + if [[ -n "$PACKAGES" ]]; then + echo "[opam-pins] Reinstalling packages:" $PACKAGES + opam reinstall $PACKAGES -y + fi + rm "$OLD_PINS" "$NEW_PINS" +fi diff --git a/opam.pins b/opam.pins index 3c8dba6db1ea92c03fc97c40a163fdedf780ae2a..febb0c13ad543bd49553f0f5102381f1a14a21cf 100644 --- a/opam.pins +++ b/opam.pins @@ -1 +1 @@ -coq-iris https://gitlab.mpi-sws.org/FP/iris-coq#ce32b224b90b6c91eae1ddb60505107b2f66b263 +coq-iris https://gitlab.mpi-sws.org/FP/iris-coq#90f773c0eb319320932edfd4a5fbe878673bb3de