From 23e7333bb4e4ec228596d994bec18dc8d0670b2e Mon Sep 17 00:00:00 2001 From: "Stefan K. Berg" Date: Fri, 18 Dec 2015 12:53:46 +0100 Subject: [PATCH] Align all plugins with new method for cache id The cache tool is now responsible for returning the commit ID of a branch, tag or commit. This change was first introduced in the bgpvpn plugin and now the rest of the plugins with a need for this are also using the same method. Without this, a plugin pointing to a commit ID on master would fail to build once the head of master is updated to point to a later commit... Change-Id: I7c32d5b41871741717ae42c1334e8557f0b0bedd Signed-off-by: Stefan K. Berg --- build/cache.sh | 23 ++++++++++++++++++++-- build/f_isoroot/f_bgpvpn-pluginbuild/Makefile | 2 +- build/f_isoroot/f_odlpluginbuild/Makefile | 2 +- .../f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile | 6 +++++- build/f_isoroot/f_qemupluginbuild/Makefile | 6 +++++- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/build/cache.sh b/build/cache.sh index ed900568a..07361d28a 100755 --- a/build/cache.sh +++ b/build/cache.sh @@ -96,13 +96,32 @@ validSHA1() { # Figure out commit ID from URI and tag/branch/commit ID getcommitid() { - HEADMATCH=`git ls-remote $1 | grep "refs/heads/$2$" | awk '{ print $1 }'` - TAGMATCH=`git ls-remote $1 | grep "refs/tags/$2$" | awk '{ print $1 }'` + if echo $2 | grep -q '^refs/changes/'; then + REF=`echo $2 | sed "s,refs\/changes\/\(.*\),\1,"` + else + REF=$2 + fi + + echo "Repo is $1, ref is ${REF}" >&2 + + HEADMATCH=`git ls-remote $1 | grep "refs/heads/${REF}$" | awk '{ print $1 }'` + TAGMATCH=`git ls-remote $1 | grep "refs/tags/${REF}$" | awk '{ print $1 }'` + CHANGEMATCH=`git ls-remote $1 | grep "refs/changes/${REF}$" | awk '{ print $1 }'` if [ -n "$HEADMATCH" ]; then echo "$HEADMATCH" elif [ -n "$TAGMATCH" ]; then echo "$TAGMATCH" + elif [ -n "$CHANGEMATCH" ]; then + echo "Warning: ${REF} is a change!" >&2 + TMPDIR=`mktemp -d /tmp/cacheXXXXX` + cd $TMPDIR + git clone $1 &>/dev/null || errorexit "Could not clone $1" + cd * || errorexit "Could not enter clone of $1" + git fetch $1 refs/changes/$REF &>/dev/null || errorexit "Could not fetch change" + git checkout FETCH_HEAD &>/dev/null || errorexit "Could not checkout FETCH_HEAD" + git show HEAD &>/dev/null || errorexit "Could not find commit $2" + git show HEAD | head -1 | awk '{ print $2 }' else TMPDIR=`mktemp -d /tmp/cacheXXXXX` cd $TMPDIR diff --git a/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile b/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile index 3da8d38b9..a99a426b6 100644 --- a/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile +++ b/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile @@ -61,7 +61,7 @@ release:.bgpvpnbuild # - The SHA1 hash of the HEAD on the plugin repo's $(BGPVPN_BRANCH) # - The contents of this Makefile .cacheid: - if [ ! -z $(BGPVPN_CHANGE) ]; then \ + @if [ ! -z $(BGPVPN_CHANGE) ]; then \ $(CACHETOOL) getcommitid $(BGPVPN_REPO) $(BGPVPN_CHANGE) > .cachedata; \ else \ $(CACHETOOL) getcommitid $(BGPVPN_REPO) $(BGPVPN_BRANCH) > .cachedata; \ diff --git a/build/f_isoroot/f_odlpluginbuild/Makefile b/build/f_isoroot/f_odlpluginbuild/Makefile index 4ec7e809b..ba5a06b0e 100644 --- a/build/f_isoroot/f_odlpluginbuild/Makefile +++ b/build/f_isoroot/f_odlpluginbuild/Makefile @@ -47,7 +47,7 @@ release:.odlbuild # - The SHA1 hash of the HEAD on the plugin repo's $(ODL_BRANCH) # - The contents of this Makefile .cacheid: - git ls-remote --heads $(ODL_REPO) | grep $(ODL_BRANCH) > .cachedata + @$(CACHETOOL) getcommitid $(ODL_REPO) $(ODL_BRANCH) > .cachedata sha1sum Makefile >> .cachedata cat .cachedata | $(CACHETOOL) getid > .cacheid diff --git a/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile b/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile index 601ec1e17..89af75b92 100644 --- a/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile +++ b/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile @@ -60,7 +60,11 @@ release:.ovsbuild # - The SHA1 hash of the HEAD on the plugin repo's $(OVS_NSH_DPDK_BRANCH) # - The contents of this Makefile .cacheid: - @git ls-remote --heads $(OVS_NSH_DPDK_REPO) | grep $(OVS_NSH_DPDK_BRANCH) | awk {'print $$1'} > .cachedata + @if [ ! -z $(OVS_NSH_DPDK_CHANGE) ]; then \ + $(CACHETOOL) getcommitid $(OVS_NSH_DPDK_REPO) $(OVS_NSH_DPDK_CHANGE) > .cachedata; \ + else \ + $(CACHETOOL) getcommitid $(OVS_NSH_DPDK_REPO) $(OVS_NSH_DPDK_BRANCH) > .cachedata; \ + fi @sha1sum Makefile | awk {'print $$1'} >> .cachedata @sha1sum config.mk | awk {'print $$1'} >> .cachedata @cat .cachedata | $(CACHETOOL) getid > .cacheid diff --git a/build/f_isoroot/f_qemupluginbuild/Makefile b/build/f_isoroot/f_qemupluginbuild/Makefile index 4e8d9e9f6..19a233731 100644 --- a/build/f_isoroot/f_qemupluginbuild/Makefile +++ b/build/f_isoroot/f_qemupluginbuild/Makefile @@ -60,7 +60,11 @@ release:.qemubuild # - The SHA1 hash of the HEAD on the plugin repo's $(QEMU_BRANCH) # - The contents of this Makefile .cacheid: - @git ls-remote --heads $(QEMU_REPO) | grep $(QEMU_BRANCH) | awk {'print $$1'} > .cachedata + @if [ ! -z $(QEMU_CHANGE) ]; then \ + $(CACHETOOL) getcommitid $(QEMU_REPO) $(QEMU_CHANGE) > .cachedata; \ + else \ + $(CACHETOOL) getcommitid $(QEMU_REPO) $(QEMU_BRANCH) > .cachedata; \ + fi @sha1sum Makefile | awk {'print $$1'} >> .cachedata @sha1sum config.mk | awk {'print $$1'} >> .cachedata @cat .cachedata | $(CACHETOOL) getid > .cacheid -- 2.16.6