[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
09/09: guix: import: Report go version for go importer.
From: |
guix-commits |
Subject: |
09/09: guix: import: Report go version for go importer. |
Date: |
Sat, 16 Dec 2023 12:22:44 -0500 (EST) |
efraim pushed a commit to branch master
in repository guix.
commit 6aade039e1007b5fece031d80aade43e108768a4
Author: Efraim Flashner <efraim@flashner.co.il>
AuthorDate: Tue Nov 28 12:04:27 2023 +0200
guix: import: Report go version for go importer.
* guix/import/go.scm (go-package, go.mod-go-version): New procedures.
(go-module->guix-package): Add the #:go keyword in the generated package
definition if the required go is newer than the default go.
* tests/go.scm (mock-http-get): Use gexps for package arguments.
Change-Id: I8d005740a442330ac307a40a53764c803ceffc4f
---
guix/import/go.scm | 31 ++++++++++++++++++++++++++-----
tests/go.scm | 6 +++---
2 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/guix/import/go.scm b/guix/import/go.scm
index 940cdac4b0..dd9298808d 100644
--- a/guix/import/go.scm
+++ b/guix/import/go.scm
@@ -29,6 +29,7 @@
#:use-module (guix git)
#:use-module (guix hash)
#:use-module (guix i18n)
+ #:use-module ((guix utils) #:select (version>?))
#:use-module (guix diagnostics)
#:use-module (guix import utils)
#:use-module (guix import json)
@@ -93,6 +94,11 @@
;;; Code:
+(define (go-package)
+ "Return the 'go' package. This is a lazy reference so that we don't
+depend on (gnu packages golang)."
+ (module-ref (resolve-interface '(gnu packages golang)) 'go))
+
(define http-fetch*
;; Like http-fetch, but memoized and returning the body as a string.
(memoize (lambda args
@@ -314,7 +320,7 @@ comment, or unknown) and is followed by the indicated data."
(define-peg-pattern with all (or (and module-path version) file-path))
(define-peg-pattern replace all (and original => with EOL))
(define-peg-pattern replace-top body
- (and (ignore "replace")
+ (and (ignore "replace")
(or (and block-start (* (or replace block-line)) block-end) replace)))
;; RetractSpec = ( Version | "[" Version "," Version "]" ) newline .
@@ -378,6 +384,17 @@ DIRECTIVE."
;; Prevent inlining of this procedure, which is accessed by unit tests.
(set! go.mod-requirements go.mod-requirements)
+(define (go.mod-go-version go.mod)
+ "Return the minimum version of go required to specified by GO.MOD."
+ (let ((go-version (go.mod-directives go.mod 'go)))
+ (if (null? go-version)
+ ;; If the go directive is missing, go 1.16 is assumed.
+ '(version "1.16")
+ (flatten go-version))))
+
+;; Prevent inlining of this procedure, which is accessed by unit tests.
+(set! go.mod-go-version go.mod-go-version)
+
(define-record-type <vcs>
(%make-vcs url-prefix root-regex type)
vcs?
@@ -610,6 +627,7 @@ When VERSION is unspecified, the latest version available
is used."
available-versions
module-path))
(content (fetch-go.mod goproxy module-path version*))
+ (min-go-version (second (go.mod-go-version (parse-go.mod content))))
(dependencies+versions (go.mod-requirements (parse-go.mod content)))
(dependencies (if pin-versions?
dependencies+versions
@@ -634,10 +652,13 @@ When VERSION is unspecified, the latest version available
is used."
,(vcs->origin vcs-type vcs-repo-url version*))
(build-system go-build-system)
(arguments
- '(#:import-path ,module-path
- ,@(if (string=? module-path-sans-suffix root-module-path)
- '()
- `(#:unpack-path ,root-module-path))))
+ (list ,@(if (version>? min-go-version (package-version (go-package)))
+ `(#:go ,(string->number min-go-version))
+ '())
+ #:import-path ,module-path
+ ,@(if (string=? module-path-sans-suffix root-module-path)
+ '()
+ `(#:unpack-path ,root-module-path))))
,@(maybe-propagated-inputs
(map (match-lambda
((name version)
diff --git a/tests/go.scm b/tests/go.scm
index a70a0ddbf5..d2e8846b30 100644
--- a/tests/go.scm
+++ b/tests/go.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright � 2021 Fran�ois Joulaud <francois.joulaud@radiofrance.com>
-;;; Copyright � 2021 Sarah Morgensen <iskarian@mgsn.dev>
+;;; Copyright © 2021 François Joulaud <francois.joulaud@radiofrance.com>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -387,7 +387,7 @@ require github.com/kr/pretty v0.2.1
"0sjjj9z1dhilhpc8pq4154czrb79z9cm044jvn75kxcjv6v5l2m5"))))
(build-system go-build-system)
(arguments
- '(#:import-path "github.com/go-check/check"))
+ (list #:import-path "github.com/go-check/check"))
(propagated-inputs
`(("go-github-com-kr-pretty" ,go-github-com-kr-pretty)))
(home-page "https://github.com/go-check/check")
- branch master updated (d5298c5e33 -> 6aade039e1), guix-commits, 2023/12/16
- 05/09: gnu: fpc: Add support for powerpc-linux., guix-commits, 2023/12/16
- 03/09: gnu: fpc: Fix building on i686-linux., guix-commits, 2023/12/16
- 06/09: gnu: fpc: Add support for powerpc64le-linux., guix-commits, 2023/12/16
- 02/09: gnu: valgrind: Mark as unsupported on i586-gnu., guix-commits, 2023/12/16
- 07/09: gnu: fpc: Add support for aarch64-linux., guix-commits, 2023/12/16
- 08/09: guix: import: Don't include indirect dependencies in go., guix-commits, 2023/12/16
- 01/09: gnu: valgrind: Use correct glibc., guix-commits, 2023/12/16
- 09/09: guix: import: Report go version for go importer.,
guix-commits <=
- 04/09: gnu: fpc: Patch more dynamic-linker paths., guix-commits, 2023/12/16