|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +set -e |
| 4 | + |
| 5 | +# This script generates opam/packages/*/*.dev/opam files using Coq's CI |
| 6 | +# project tracking info and generates $OUTPUT mentioning |
| 7 | +# them |
| 8 | +OUTPUT=${OUTPUT:=coq_platform_packages_ci.sh} |
| 9 | + |
| 10 | +TMP=`mktemp -d` |
| 11 | +trap "rm -rf $TMP" EXIT |
| 12 | + |
| 13 | +function log { |
| 14 | + echo $1 |
| 15 | +} |
| 16 | + |
| 17 | +function git_clone { |
| 18 | + test -d $TMP/git/$1 || (log "DBG: Cloning $1 ..."; git clone $2 -b $3 --depth=1 $TMP/git/$1 >/dev/null 2>&1) |
| 19 | +} |
| 20 | + |
| 21 | +function test_package { |
| 22 | + printf "%-52s # %s\n" "PACKAGES=\"\${PACKAGES} $1.dev\"" "$2" >> $OUTPUT |
| 23 | +} |
| 24 | + |
| 25 | +function skip_package { |
| 26 | + printf "#%-51s # %s\n" "PACKAGES=\"\${PACKAGES} $1.dev\"" "$2" >> $OUTPUT |
| 27 | +} |
| 28 | + |
| 29 | +function create_opam_pinned_package { |
| 30 | + local cip="$1" |
| 31 | + local package="$2" |
| 32 | + local REPO_VAR="${cip}_CI_GITURL" |
| 33 | + local REPO=${!REPO_VAR} |
| 34 | + local BRANCH_VAR="${cip}_CI_REF" |
| 35 | + local BRANCH=${!BRANCH_VAR} |
| 36 | + git_clone $cip ${REPO} ${BRANCH} |
| 37 | + mkdir -p opam/packages/$package/$package.dev/ |
| 38 | + if [ -e $TMP/git/$cip/$package.opam ]; then |
| 39 | + cp $TMP/git/$cip/$package.opam opam/packages/$package/$package.dev/opam |
| 40 | + elif [ -e $TMP/git/$cip/*.opam ]; then |
| 41 | + cp $TMP/git/$cip/*.opam opam/packages/$package/$package.dev/opam |
| 42 | + elif [ -e $TMP/git/$cip/opam ]; then |
| 43 | + cp $TMP/git/$cip/opam opam/packages/$package/$package.dev/opam |
| 44 | + else |
| 45 | + log "WARNING: No opam file for $cip $package" |
| 46 | + skip_package $package "since no opam package found" |
| 47 | + return |
| 48 | + fi |
| 49 | + local HASH=$(cd $TMP/git/$cip/ && git log --oneline | cut -f 1 -d ' ') |
| 50 | + printf "\nsrc { url : \"%s\" }" "git+${REPO}#${HASH}" >> opam/packages/$package/$package.dev/opam |
| 51 | + log "INFO: Testing $package at hash $HASH (on branch $BRANCH from $REPO)" |
| 52 | + test_package $package "${REPO}#${HASH} (on branch $BRANCH)" |
| 53 | +} |
| 54 | + |
| 55 | +# fetch ci info for Coq |
| 56 | +git_clone coq https://github.com/coq/coq.git master |
| 57 | +. git/coq/dev/ci/ci-basic-overlay.sh |
| 58 | +# fake ci project for Coq itself |
| 59 | +project coq "https://github.com/coq/coq.git" "master" |
| 60 | +COQ_CI_PROJECTS="${projects[*]}" |
| 61 | + |
| 62 | +# fetch package list from the current platform |
| 63 | +COQ_PLATFORM_EXTENT=f |
| 64 | +COQ_PLATFORM_COMPCERT=f |
| 65 | +COQ_PLATFORM_VST=y |
| 66 | +. coq_platform_packages.sh |
| 67 | + |
| 68 | +# create the .dev package and their list |
| 69 | +> $OUTPUT |
| 70 | +for pv in $PACKAGES; do |
| 71 | + package=`echo $pv | sed -e 's/\..*//'` |
| 72 | + case $package in |
| 73 | + coqide) |
| 74 | + create_opam_pinned_package coq $package |
| 75 | + ;; |
| 76 | + coq-mathcomp-ssreflect|coq-mathcomp-fingroup|coq-mathcomp-algebra|coq-mathcomp-solvable|coq-mathcomp-field|coq-mathcomp-character) |
| 77 | + create_opam_pinned_package mathcomp $package |
| 78 | + ;; |
| 79 | + coq-hierarchy-builder) # https://github.com/coq/coq/pull/13633 |
| 80 | + create_opam_pinned_package elpi_hb $package |
| 81 | + ;; |
| 82 | + coq-gappa) # https://github.com/coq/coq/pull/13633 |
| 83 | + create_opam_pinned_package gappa_plugin $package |
| 84 | + ;; |
| 85 | + lablgtk3|gappa|menhir) # why are these in the platform? |
| 86 | + continue |
| 87 | + ;; |
| 88 | + *) |
| 89 | + found=f |
| 90 | + for cip in $COQ_CI_PROJECTS; do |
| 91 | + if [ "$found" = "f" -a "${cip/_/-}" = "${package#coq-}" ]; then |
| 92 | + found=t |
| 93 | + create_opam_pinned_package ${cip} $package |
| 94 | + fi |
| 95 | + done |
| 96 | + if [ "$found" = "f" ]; then |
| 97 | + log "WARNING: platform package $package has no corresponding entry in Coq's ci" |
| 98 | + skip_package $package "no corresponding entry in Coq's ci" |
| 99 | + fi |
| 100 | + ;; |
| 101 | + esac |
| 102 | +done |
| 103 | + |
| 104 | +echo "========================== platform version CI ==================" |
| 105 | +cat $OUTPUT |
0 commit comments