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>
Wed, 29 Jan 2020 18:10:54 +0000 (19:10 +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 f147a4f472c0d709996d37637da0d34aabaa0e76..ed2b7a147ace664221ac3c51039539edc9662aa0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -668,7 +668,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; \
@@ -925,6 +926,9 @@ echo-yosys-ver:
 echo-git-rev:
        @echo "$(GIT_REV)"
 
+echo-abc-rev:
+       @echo "$(ABCREV)"
+
 -include libs/*/*.d
 -include frontends/*/*.d
 -include passes/*/*.d