aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMaxime Devos <maximedevos@telenet.be>2023-08-21 15:59:53 +0200
committerLudovic Courtès <ludo@gnu.org>2023-09-08 19:12:15 +0200
commit96eda590e1eb288359532d92bbfc4795c60f3df5 (patch)
tree7f55daa264a996cdd29cba9cdb854966bf82c83e /tests
parent05f44bbeb40686599827cbe0df7fcc80122fe152 (diff)
downloadguix-96eda590e1eb288359532d92bbfc4795c60f3df5.tar
guix-96eda590e1eb288359532d92bbfc4795c60f3df5.tar.gz
lint: Check that (cc-for-target) and friends are used.
"CC=gcc" is almost always incorrect; people often just don't notice the incorrectness because they are compiling natively. For an exception, see tzdata. "guix style" partially made things worse, so I partially ignored it. * guix/lint.scm (check-compiler-for-target): New linter. * tests/lint.scm ("compiler-for-target: unconditional CC=gcc is unacceptable") ("compiler-for-target: looks through G-expressions") ("compiler-for-target: (cc-for-target) is acceptable") ("compiler-for-target: CC=gcc is acceptable when target=#false"): Test it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/lint.scm32
1 files changed, 31 insertions, 1 deletions
diff --git a/tests/lint.scm b/tests/lint.scm
index b91bd053c5..a52a82237b 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -10,7 +10,7 @@
;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
-;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021, 2023 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -342,6 +342,36 @@
`(#:tests? ,(not (%current-target-system)))))))
(check-tests-true pkg)))
+(test-equal "compiler-for-target: unconditional CC=gcc is unacceptable"
+ "'CC' should be set to '(cc-for-target)' instead of 'gcc'"
+ (single-lint-warning-message
+ (check-compiler-for-target
+ (dummy-package "x" (arguments '(#:make-flags '("CC=gcc")))))))
+
+
+(test-equal "compiler-for-target: looks through G-expressions"
+ "'CC' should be set to '(cc-for-target)' instead of 'gcc'"
+ (single-lint-warning-message
+ (check-compiler-for-target
+ (dummy-package "x" (arguments '(#:make-flags #~'("CC=gcc")))))))
+
+(test-equal "compiler-for-target: (cc-for-target) is acceptable"
+ '()
+ (check-compiler-for-target
+ (dummy-package "x"
+ (arguments
+ (list #:make-flags
+ #~(list (string-append "CC=" (cc-for-target))))))))
+
+(test-equal "compiler-for-target: CC=gcc is acceptable when target=#false"
+ '()
+ (check-compiler-for-target
+ ;; This (dummy) package consists purely of architecture-independent data.
+ (dummy-package "tzdata"
+ (arguments
+ (list #:target #false
+ #:make-flags #~(list "CC=gcc"))))))
+
;; The emacs-build-system sets #:tests? #f by default.
(test-equal "tests-true: #:tests? #t acceptable for emacs packages"
'()