|
|
|
@ -1,7 +1,9 @@ |
|
|
|
|
#!/usr/bin/env nix-shell |
|
|
|
|
#!nix-shell -i bash -p coreutils git nix curl |
|
|
|
|
# shellcheck shell=bash enable=all |
|
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
shopt -s inherit_errexit |
|
|
|
|
|
|
|
|
|
# this script will generate versions.nix in the right location |
|
|
|
|
# this should contain the versions' revs and hashes |
|
|
|
@ -25,10 +27,12 @@ export TMPDIR=/tmp |
|
|
|
|
# remove items left in /nix/store? |
|
|
|
|
|
|
|
|
|
# get the latest tag that isn't an RC or *.99 |
|
|
|
|
latest_tag="$(git ls-remote --tags --sort -version:refname \ |
|
|
|
|
https://gitlab.com/kicad/code/kicad.git \ |
|
|
|
|
| grep -o 'refs/tags/[0-9]*\.[0-9]*\.[0-9]*$' \ |
|
|
|
|
| grep -v "\.99" | grep -v "\.9\.9" | head -n 1 | cut -d '/' -f 3)" |
|
|
|
|
latest_tags="$(git ls-remote --tags --sort -version:refname https://gitlab.com/kicad/code/kicad.git)" |
|
|
|
|
# using a scratch variable to ensure command failures get caught (SC2312) |
|
|
|
|
scratch="$(grep -o 'refs/tags/[0-9]*\.[0-9]*\.[0-9]*$' <<< "${latest_tags}")" |
|
|
|
|
scratch="$(grep -ve '\.99' -e '\.9\.9' <<< "${scratch}")" |
|
|
|
|
scratch="$(head -n 1 <<< "${scratch}")" |
|
|
|
|
latest_tag="$(cut -d '/' -f 3 <<< "${scratch}")" |
|
|
|
|
|
|
|
|
|
all_versions=( "${latest_tag}" master ) |
|
|
|
|
|
|
|
|
@ -60,11 +64,15 @@ tmp="${here}/,versions.nix.${RANDOM}" |
|
|
|
|
|
|
|
|
|
libs=( symbols templates footprints packages3d ) |
|
|
|
|
|
|
|
|
|
get_rev="git ls-remote --heads --tags" |
|
|
|
|
get_rev() { |
|
|
|
|
git ls-remote --heads --tags "$@" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
gitlab="https://gitlab.com/kicad" |
|
|
|
|
# append commit hash or tag |
|
|
|
|
gitlab_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/archive.tar.gz?sha=" |
|
|
|
|
src_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/archive.tar.gz?sha=" |
|
|
|
|
lib_pre="https://gitlab.com/api/v4/projects/kicad%2Flibraries%2Fkicad-" |
|
|
|
|
lib_mid="/repository/archive.tar.gz?sha=" |
|
|
|
|
|
|
|
|
|
count=0 |
|
|
|
|
|
|
|
|
@ -104,16 +112,19 @@ for version in "${all_versions[@]}"; do |
|
|
|
|
printf "%6ssrc = {\n" "" |
|
|
|
|
|
|
|
|
|
echo "Checking src" >&2 |
|
|
|
|
src_rev="$(${get_rev} "${gitlab}"/code/kicad.git "${version}" | cut -f1)" |
|
|
|
|
scratch="$(get_rev "${gitlab}"/code/kicad.git "${version}")" |
|
|
|
|
src_rev="$(cut -f1 <<< "${scratch}")" |
|
|
|
|
has_rev="$(grep -sm 1 "\"${pname}\"" -A 4 "${file}" | grep -sm 1 "${src_rev}" || true)" |
|
|
|
|
has_hash="$(grep -sm 1 "\"${pname}\"" -A 5 "${file}" | grep -sm 1 "sha256" || true)" |
|
|
|
|
|
|
|
|
|
if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then |
|
|
|
|
echo "Reusing old ${pname}.src.sha256, already latest .rev" >&2 |
|
|
|
|
grep -sm 1 "\"${pname}\"" -A 5 "${file}" | grep -sm 1 "rev" -A 1 |
|
|
|
|
scratch=$(grep -sm 1 "\"${pname}\"" -A 5 "${file}") |
|
|
|
|
grep -sm 1 "rev" -A 1 <<< "${scratch}" |
|
|
|
|
else |
|
|
|
|
prefetched="$(${prefetch} "${src_pre}${src_rev}")" |
|
|
|
|
printf "%8srev =\t\t\t\"%s\";\n" "" "${src_rev}" |
|
|
|
|
printf "%8ssha256 =\t\t\"%s\";\n" \ |
|
|
|
|
"" "$(${prefetch} "${gitlab_pre}${src_rev}")" |
|
|
|
|
printf "%8ssha256 =\t\t\"%s\";\n" "" "${prefetched}" |
|
|
|
|
count=$((count+1)) |
|
|
|
|
fi |
|
|
|
|
printf "%6s};\n" "" |
|
|
|
@ -126,20 +137,23 @@ for version in "${all_versions[@]}"; do |
|
|
|
|
for lib in "${libs[@]}"; do |
|
|
|
|
echo "Checking ${lib}" >&2 |
|
|
|
|
url="${gitlab}/libraries/kicad-${lib}.git" |
|
|
|
|
lib_rev="$(${get_rev} "${url}" "${version}" | cut -f1 | tail -n1)" |
|
|
|
|
scratch="$(get_rev "${url}" "${version}")" |
|
|
|
|
scratch="$(cut -f1 <<< "${scratch}")" |
|
|
|
|
lib_rev="$(tail -n1 <<< "${scratch}")" |
|
|
|
|
has_rev="$(grep -sm 1 "\"${pname}\"" -A 19 "${file}" | grep -sm 1 "${lib_rev}" || true)" |
|
|
|
|
has_hash="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}.sha256" || true)" |
|
|
|
|
if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then |
|
|
|
|
echo "Reusing old kicad-${lib}-${today}.src.sha256, already latest .rev" >&2 |
|
|
|
|
grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}" -A 1 |
|
|
|
|
scratch="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}")" |
|
|
|
|
grep -sm 1 "${lib}" -A 1 <<< "${scratch}" |
|
|
|
|
else |
|
|
|
|
prefetched="$(${prefetch} "${lib_pre}${lib}${lib_mid}${lib_rev}")" |
|
|
|
|
printf "%8s%s.rev =\t" "" "${lib}" |
|
|
|
|
case "${lib}" in |
|
|
|
|
symbols|templates) printf "\t" ;; *) ;; |
|
|
|
|
esac |
|
|
|
|
printf "\"%s\";\n" "${lib_rev}" |
|
|
|
|
printf "%8s%s.sha256 =\t\"%s\";\n" "" \ |
|
|
|
|
"${lib}" "$(${prefetch} "https://gitlab.com/api/v4/projects/kicad%2Flibraries%2Fkicad-${lib}/repository/archive.tar.gz?sha=${lib_rev}")" |
|
|
|
|
printf "%8s%s.sha256 =\t\"%s\";\n" "" "${lib}" "${prefetched}" |
|
|
|
|
count=$((count+1)) |
|
|
|
|
fi |
|
|
|
|
done |
|
|
|
|