From 98d8d2ba6aaa47e07ed83dd839a4d0ef9ac090e4 Mon Sep 17 00:00:00 2001 From: JeremyRand Date: Sun, 29 Sep 2019 17:28:44 +0000 Subject: [PATCH] Add Travis check for dependency versions --- .travis.yml | 32 ++++++++++++++++++++ .travis/check-project-tags | 61 ++++++++++++++++++++++++++++++++++++++ .travis/check-tbb-tags | 24 +++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 .travis.yml create mode 100755 .travis/check-project-tags create mode 100755 .travis/check-tbb-tags diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..18ac5ec --- /dev/null +++ b/.travis.yml @@ -0,0 +1,32 @@ +language: go +go: + - "1.x" + +addons: + apt: + packages: + - libyaml-libyaml-perl + - libtemplate-perl + - libio-handle-util-perl + - libio-all-perl + - libio-captureoutput-perl + - libjson-perl + - libpath-tiny-perl + - libstring-shellquote-perl + - libsort-versions-perl + - libdigest-sha-perl + - libdata-uuid-perl + - libdata-dump-perl + - libfile-copy-recursive-perl + - git + - runc + - mercurial + +sudo: false + +install: + - make submodule-update +script: + - ./.travis/check-project-tags + - ./.travis/check-tbb-tags + diff --git a/.travis/check-project-tags b/.travis/check-project-tags new file mode 100755 index 0000000..58ddef6 --- /dev/null +++ b/.travis/check-project-tags @@ -0,0 +1,61 @@ +#!/bin/bash + +set -eu -o pipefail +shopt -s failglob + +FAIL=0 + +for PROJECTPATH in ./projects/* +do + PROJECT=$(basename ${PROJECTPATH}) + + # Tor devs are in charge of their dependencies + if [[ -e "./tor-browser-build/projects/${PROJECT}" || "${PROJECT}" = goxcrypto* || "${PROJECT}" = goxnet* || "${PROJECT}" = goxsys* ]] + then + continue + fi + + # Electrum devs are in charge of their dependencies + PROJECT_IS_ELECTRUM_DEP=1 + grep "project: ${PROJECT}" ./projects/electrum-nmc/config > /dev/null || PROJECT_IS_ELECTRUM_DEP=0 + if [ "$PROJECT_IS_ELECTRUM_DEP" = 1 ] + then + continue + fi + + # x509-signature-splice branch depends on Go version, so it won't always be the latest + if [ "${PROJECT}" = "gox509signaturesplice" ] + then + continue + fi + + GIT_REV=$(./rbm/rbm showconf ${PROJECT} git_hash) + + GIT_URL=$(./rbm/rbm showconf ${PROJECT} git_url) + + REMOTE_TAGS=$(git ls-remote --tags "${GIT_URL}") + if [ "${REMOTE_TAGS}" = "" ] + then + # There are no tags on the remote Git repo, so pretend HEAD is the latest. + LATEST_TAG=HEAD + else + LATEST_TAG=$(git ls-remote --tags "${GIT_URL}" | grep -v '\^{}' | awk '{print $2}' | awk -F"/" '{print $3}' | sort -V | tail --lines=1) + fi + LATEST_INFO=$(git ls-remote "${GIT_URL}" HEAD ${LATEST_TAG} ${LATEST_TAG}^{}) + + PROJECT_FAIL=0 + echo "${LATEST_INFO}" | grep ${GIT_REV} > /dev/null || PROJECT_FAIL=1 + if [ "${PROJECT_FAIL}" = 1 ] + then + FAIL=1 + echo "${PROJECT}: rbm uses ${GIT_REV}, latest at remote ${GIT_URL} are: +${LATEST_INFO}" + fi +done + +if [ "${FAIL}" = 1 ] +then + exit 1 +fi + +exit 0 diff --git a/.travis/check-tbb-tags b/.travis/check-tbb-tags new file mode 100755 index 0000000..2bc8581 --- /dev/null +++ b/.travis/check-tbb-tags @@ -0,0 +1,24 @@ +#!/bin/bash + +set -eu -o pipefail +shopt -s failglob + +FAIL=0 + +GIT_TAG=$(git submodule status tor-browser-build | awk '{print $3}') + +GIT_URL=https://git.torproject.org/builders/tor-browser-build.git + +LATEST_TAG=$(git ls-remote --tags "${GIT_URL}" | grep -v '\^{}' | awk '{print $2}' | awk -F"/" '{print $3}' | sort -V | tail --lines=1) +if [ "${GIT_TAG}" != "(${LATEST_TAG})" ] +then + FAIL=1 + echo "${PROJECT}: submodule uses ${GIT_REV}, latest tag is ${LATEST_TAG}" +fi + +if [ "${FAIL}" = 1 ] +then + exit 1 +fi + +exit 0