From b5fa9b29d1fa06d3d7c46eeda9a8ebb91bf24ccd Mon Sep 17 00:00:00 2001 From: Ralf Jung <jung@mpi-sws.org> Date: Fri, 13 Jan 2017 19:02:27 +0100 Subject: [PATCH] avoid re-downloading already properly pinned packages --- .gitlab-ci.yml | 2 +- build/opam-ci.sh | 14 ++++++++++---- build/opam-pins.sh | 8 ++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 27b7707fe..28e8e1605 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ iris-coq8.6: - coq script: # prepare - - . build/opam-ci.sh 'coq 8.6' 'coq-mathcomp-ssreflect 1.6.1' + - . build/opam-ci.sh coq 8.6 coq-mathcomp-ssreflect 1.6.1 # build - 'time make -j8' cache: diff --git a/build/opam-ci.sh b/build/opam-ci.sh index 9a10038de..c4189bab6 100755 --- a/build/opam-ci.sh +++ b/build/opam-ci.sh @@ -17,10 +17,16 @@ opam update # Install fixed versions of some dependencies echo -for PIN in "${@}" -do - echo "Applying pin: $PIN" - opam pin add $PIN -k version -y +while (( "$#" )); do # while there are arguments left + PACKAGE="$1" ; shift + VERSION="$1" ; shift + # Check if the pin is already set + if opam pin list | fgrep "$PACKAGE.$VERSION " > /dev/null; then + echo "[opam-ci] $PACKAGE already pinned to $VERSION" + else + echo "[opam-ci] Pinning $PACKAGE to $VERSION" + opam pin add "$PACKAGE" "$VERSION" -k version -y + fi done # Install build-dependencies diff --git a/build/opam-pins.sh b/build/opam-pins.sh index aebd23ca2..669cd99b8 100755 --- a/build/opam-pins.sh +++ b/build/opam-pins.sh @@ -11,7 +11,11 @@ while read PACKAGE URL HASH; do # an MPI URL -- try doing recursive pin processing curl -f "$URL/raw/$HASH" 2> /dev/null | "$0" fi - echo "[opam-pins] Applying pin: $PACKAGE -> $URL#$HASH" - opam pin add "$PACKAGE.dev.$HASH" "$URL#$HASH" -k git -y -n + if opam pin list | fgrep "$PACKAGE.dev.$HASH " > /dev/null; then + echo "[opam-pins] $PACKAGE already at commit $HASH" + else + echo "[opam-pins] Applying pin: $PACKAGE -> $URL#$HASH" + opam pin add "$PACKAGE.dev.$HASH" "$URL#$HASH" -k git -y -n + fi echo done -- GitLab