~ruther/guix-local

99fe215cc1c511a82e326727c6a0d193d246a387 — David Craven 9 years ago 0f53b88
lint: 'inputs-should-be-native' checks for intltool, itstool and glib:bin.

* guix/scripts/lint.scm (check-inputs-should-be-native): Warn when intltool,
itstool or glib:bin isn't a native-input.
* tests/lint.scm (inputs: glib:bin is probably a native input): Add test.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2 files changed, 29 insertions(+), 8 deletions(-)

M guix/scripts/lint.scm
M tests/lint.scm
M guix/scripts/lint.scm => guix/scripts/lint.scm +18 -7
@@ 203,14 203,25 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
(define (check-inputs-should-be-native package)
  ;; Emit a warning if some inputs of PACKAGE are likely to belong to its
  ;; native inputs.
  (let ((inputs (package-inputs package)))
  (let ((linted package)
        (inputs (package-inputs package))
        (native-inputs '("pkg-config" "glib:bin" "intltool" "itstool")))
    (match inputs
      (((labels packages . _) ...)
       (when (member "pkg-config"
                     (map package-name (filter package? packages)))
        (emit-warning package
                      (_ "pkg-config should probably be a native input")
                      'inputs))))))
      (((labels packages . outputs) ...)
       (for-each (lambda (package output)
                   (when (package? package)
                     (let ((input (string-append
                                   (package-name package)
                                   (if (> (length output) 0)
                                       (string-append ":" (car output))
                                       ""))))
                       (when (member input native-inputs)
                         (emit-warning linted
                                       (format #f (_ "'~a' should probably \
be a native input")
                                               input)
                                       'inputs)))))
                 packages outputs)))))

(define (package-name-regexp package)
  "Return a regexp that matches PACKAGE's name as a word at the beginning of a

M tests/lint.scm => tests/lint.scm +11 -1
@@ 31,6 31,7 @@
  #:use-module (guix scripts lint)
  #:use-module (guix ui)
  #:use-module (gnu packages)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages pkg-config)
  #:use-module (web server)
  #:use-module (web server http)


@@ 319,7 320,16 @@ string) on HTTP requests."
       (let ((pkg (dummy-package "x"
                    (inputs `(("pkg-config" ,pkg-config))))))
         (check-inputs-should-be-native pkg)))
         "pkg-config should probably be a native input")))
         "'pkg-config' should probably be a native input")))

(test-assert "inputs: glib:bin is probably a native input"
  (->bool
    (string-contains
      (with-warnings
        (let ((pkg (dummy-package "x"
                     (inputs `(("glib" ,glib "bin"))))))
          (check-inputs-should-be-native pkg)))
          "'glib:bin' should probably be a native input")))

(test-assert "patches: file names"
  (->bool