Improve ABC repository management in Makefile
authorXiretza <xiretza@xiretza.xyz>
Wed, 29 Jan 2020 18:05:23 +0000 (19:05 +0100)
committerXiretza <xiretza@xiretza.xyz>
Thu, 12 Mar 2020 18:26:21 +0000 (19:26 +0100)
`rev-parse --short` output may have a different abbreviated hash length than
ABCREV, so a simple string comparison always fails, even if the correct
commit is checked out. Pass both commits through rev-parse and then
compare the full hashes instead.

Add an `echo-abc-rev` target so that packaging scripts can set ABCPULL=0 and
handle all the git nastiness themselves.

Makefile

index c6ecc972316a59693077e4f3d625653b7a2ec04b..49ab780d52e818f6cb05ddf529641f9fe6daae11 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -669,7 +669,8 @@ ifneq ($(ABCREV),default)
        $(Q) if ( cd abc 2> /dev/null && ! git diff-index --quiet HEAD; ); then \
                echo 'REEBE: NOP pbagnvaf ybpny zbqvsvpngvbaf! Frg NOPERI=qrsnhyg va Lbflf Znxrsvyr!' | tr 'A-Za-z' 'N-ZA-Mn-za-m'; false; \
        fi
-       $(Q) if test "`cd abc 2> /dev/null && git rev-parse --short HEAD`" != "$(ABCREV)"; then \
+# set a variable so the test fails if git fails to run - when comparing outputs directly, empty string would match empty string
+       $(Q) if ! (cd abc && rev="`git rev-parse $(ABCREV)`" && test "`git rev-parse HEAD`" == "$$rev"); then \
                test $(ABCPULL) -ne 0 || { echo 'REEBE: NOP abg hc gb qngr naq NOPCHYY frg gb 0 va Znxrsvyr!' | tr 'A-Za-z' 'N-ZA-Mn-za-m'; exit 1; }; \
                echo "Pulling ABC from $(ABCURL):"; set -x; \
                test -d abc || git clone $(ABCURL) abc; \
@@ -931,6 +932,9 @@ echo-yosys-ver:
 echo-git-rev:
        @echo "$(GIT_REV)"
 
+echo-abc-rev:
+       @echo "$(ABCREV)"
+
 -include libs/*/*.d
 -include frontends/*/*.d
 -include passes/*/*.d