* [bug#73299] [PATCH v2 1/3] build/go: Replace symlinks with a copy of the file. [not found] <cover.1726516329.git.sharlatanus@gmail.com> @ 2024-09-16 20:10 ` Sharlatan Hellseher 2024-09-26 13:22 ` Maxim Cournoyer 2024-09-16 20:10 ` [bug#73299] [PATCH v2 2/3] gnu: go-github-com-prometheus-statsd-exporter: Remove redundant phase Sharlatan Hellseher 2024-09-16 20:10 ` [bug#73299] [PATCH v2 3/3] gnu: go-github-com-golang-protobuf: " Sharlatan Hellseher 2 siblings, 1 reply; 4+ messages in thread From: Sharlatan Hellseher @ 2024-09-16 20:10 UTC (permalink / raw) To: 73299 Cc: Sharlatan Hellseher, Efraim Flashner, Florian Pelz, Katherine Cox-Buday, Ludovic Courtès, Maxim Cournoyer, Sharlatan Hellseher From: Efraim Flashner <efraim@flashner.co.il> * guix/build/go-build-system.scm (fix-embed-files): New procedure. (%standard-phases): Add 'fix-embed-files after 'unpack. * guix/build-system/go.scm (#:embed-files): New key parameter. * doc/guix.texi: (go-build-system): Document a new key. Co-authored-by: Sharlatan Hellseher <sharlatanus@gmail.com> Change-Id: I27bc46fa1a3f4675ff73b6cba4ef5c3d177c22b1 --- doc/guix.texi | 8 ++++++++ guix/build-system/go.scm | 6 ++++++ guix/build/go-build-system.scm | 30 ++++++++++++++++++++++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 4abe258af0..e780bde6cf 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -130,6 +130,9 @@ Copyright @copyright{} 2024 Dariqq@* Copyright @copyright{} 2024 Denis 'GNUtoo' Carikli@* Copyright @copyright{} 2024 Fabio Natali@* +Copyright @copyright{} 2024 Troy Figiel@* +Copyright @copyright{} 2024 Sharlatan Hellseher@* + Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -9580,6 +9583,11 @@ Build Systems @code{#:test-flags} parameter, default is @code{'()}. See @code{go help test} and @code{go help testflag} for more details. +The key @code{#:embed-files}, default is @code{'()}, provides a list of +future embedded files or regexps matching files. They will be copied to +build directory after @code{unpack} phase. See +@url{https://pkg.go.dev/embed} for more details. + @end defvar @defvar glib-or-gtk-build-system diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm index e6e8b84e48..97581a14c6 100644 --- a/guix/build-system/go.scm +++ b/guix/build-system/go.scm @@ -6,6 +6,8 @@ ;;; Copyright © 2021, 2023 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> ;;; Copyright © 2024 Christina O'Donnell <cdo@mutix.org> +;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com> +;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -197,6 +199,7 @@ (define* (go-build name inputs (outputs '("out")) (search-paths '()) (install-source? #t) + (embed-files ''()) (import-path "") (unpack-path "") (build-flags ''()) @@ -226,6 +229,7 @@ (define* (go-build name inputs #:substitutable? #$substitutable? #:goarch #$goarch #:goos #$goos + #:embed-files #$embed-files #:search-paths '#$(sexp->gexp (map search-path-specification->sexp search-paths)) @@ -264,6 +268,7 @@ (define* (go-cross-build name (system (%current-system)) (goarch (first (go-target target))) (goos (last (go-target target))) + (embed-files ''()) (guile #f) (imported-modules %go-build-system-modules) (modules '((guix build go-build-system) @@ -297,6 +302,7 @@ (define* (go-cross-build name #:target #$target #:goarch #$goarch #:goos #$goos + #:embed-files #$embed-files #:inputs %build-target-inputs #:native-inputs %build-host-inputs #:search-paths '#$(map search-path-specification->sexp diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm index 3f0f5700a1..14cb5ae687 100644 --- a/guix/build/go-build-system.scm +++ b/guix/build/go-build-system.scm @@ -4,10 +4,12 @@ ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> -;;; Copyright © 2020, 2021, 2023 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020, 2021, 2023, 2024 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> ;;; Copyright © 2024 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2024 Picnoir <picnoir@alternativebit.fr> +;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com> +;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,8 +30,9 @@ (define-module (guix build go-build-system) #:use-module ((guix build gnu-build-system) #:prefix gnu:) #:use-module (guix build union) #:use-module (guix build utils) - #:use-module (ice-9 match) + #:use-module (ice-9 format) #:use-module (ice-9 ftw) + #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (rnrs io ports) #:use-module (rnrs bytevectors) @@ -201,6 +204,28 @@ (define* (setup-go-environment #:key inputs outputs goos goarch #:allow-other-ke (delete-file-recursively tmpdir)) #t) +(define* (fix-embed-files #:key embed-files #:allow-other-keys) + "Golang can't determine the valid directory of the module of embed file +which is symlinked during setup environment phase, but easy resolved after +coping file from the store to the build directory of the current package. Take +a list of files or regexps matching files from EMBED-FILES paramter, failover +to 'editions_defaults.binpb' which is a part of <github.com/golang/protobuf>." + ;; see details in Golang source: + ;; + ;; - URL: <https://github.com/golang/go/blob/> + ;; - commit: 82c14346d89ec0eeca114f9ca0e88516b2cda454 + ;; - file: src/cmd/go/internal/load/pkg.go#L2059 + (let ((embed-files (format #f "^(~{~a|~}~a)$" + embed-files + "editions_defaults.binpb"))) + (for-each (lambda (file) + (when (eq? (stat:type (lstat file)) + 'symlink) + (let ((file-store-path (readlink file))) + (delete-file file) + (copy-recursively file-store-path file)))) + (find-files "src" embed-files)))) + (define* (unpack #:key source import-path unpack-path #:allow-other-keys) "Relative to $GOPATH, unpack SOURCE in UNPACK-PATH, or IMPORT-PATH when UNPACK-PATH is unset. If the SOURCE archive has a single top level directory, @@ -321,6 +346,7 @@ (define %standard-phases (delete 'patch-generated-file-shebangs) (add-before 'unpack 'setup-go-environment setup-go-environment) (replace 'unpack unpack) + (add-after 'unpack 'fix-embed-files fix-embed-files) (replace 'build build) (replace 'check check) (replace 'install install) -- 2.46.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [bug#73299] [PATCH v2 1/3] build/go: Replace symlinks with a copy of the file. 2024-09-16 20:10 ` [bug#73299] [PATCH v2 1/3] build/go: Replace symlinks with a copy of the file Sharlatan Hellseher @ 2024-09-26 13:22 ` Maxim Cournoyer 0 siblings, 0 replies; 4+ messages in thread From: Maxim Cournoyer @ 2024-09-26 13:22 UTC (permalink / raw) To: Sharlatan Hellseher Cc: Katherine Cox-Buday, Ludovic Courtès, Florian Pelz, 73299, Efraim Flashner Hi Sharlatan, Some small nitpicks below: Sharlatan Hellseher <sharlatanus@gmail.com> writes: > From: Efraim Flashner <efraim@flashner.co.il> > > * guix/build/go-build-system.scm (fix-embed-files): New procedure. > (%standard-phases): Add 'fix-embed-files after 'unpack. > * guix/build-system/go.scm (#:embed-files): New key parameter. > * doc/guix.texi: (go-build-system): Document a new key. > > Co-authored-by: Sharlatan Hellseher <sharlatanus@gmail.com> > Change-Id: I27bc46fa1a3f4675ff73b6cba4ef5c3d177c22b1 > --- > doc/guix.texi | 8 ++++++++ > guix/build-system/go.scm | 6 ++++++ > guix/build/go-build-system.scm | 30 ++++++++++++++++++++++++++++-- > 3 files changed, 42 insertions(+), 2 deletions(-) > > diff --git a/doc/guix.texi b/doc/guix.texi > index 4abe258af0..e780bde6cf 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -130,6 +130,9 @@ > Copyright @copyright{} 2024 Dariqq@* > Copyright @copyright{} 2024 Denis 'GNUtoo' Carikli@* > Copyright @copyright{} 2024 Fabio Natali@* > +Copyright @copyright{} 2024 Troy Figiel@* Is this accurate? Should another Co-authored-by: git trailer be added for them? [...] [...] > diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm > index 3f0f5700a1..14cb5ae687 100644 > --- a/guix/build/go-build-system.scm > +++ b/guix/build/go-build-system.scm > @@ -4,10 +4,12 @@ > ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> > ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> > ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> > -;;; Copyright © 2020, 2021, 2023 Efraim Flashner <efraim@flashner.co.il> > +;;; Copyright © 2020, 2021, 2023, 2024 Efraim Flashner <efraim@flashner.co.il> > ;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev> > ;;; Copyright © 2024 Ekaitz Zarraga <ekaitz@elenq.tech> > ;;; Copyright © 2024 Picnoir <picnoir@alternativebit.fr> > +;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com> > +;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com> > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -28,8 +30,9 @@ (define-module (guix build go-build-system) > #:use-module ((guix build gnu-build-system) #:prefix gnu:) > #:use-module (guix build union) > #:use-module (guix build utils) > - #:use-module (ice-9 match) > + #:use-module (ice-9 format) > #:use-module (ice-9 ftw) > + #:use-module (ice-9 match) > #:use-module (srfi srfi-1) > #:use-module (rnrs io ports) > #:use-module (rnrs bytevectors) > @@ -201,6 +204,28 @@ (define* (setup-go-environment #:key inputs outputs goos goarch #:allow-other-ke > (delete-file-recursively tmpdir)) > #t) > > +(define* (fix-embed-files #:key embed-files #:allow-other-keys) > + "Golang can't determine the valid directory of the module of embed file ^ *an* embed file or embed fileS I typically prefer 'cannot' vs can't and likewise for 'do not' vs doesn't, etc., which I feel reads more "formal". > +which is symlinked during setup environment phase, but easy resolved after easy resolved -> easily resolved > +coping file from the store to the build directory of the current package. Take coping file -> copying the file; missing double space before 'Take'. > +a list of files or regexps matching files from EMBED-FILES paramter, failover paramter -> parameter > +to 'editions_defaults.binpb' which is a part of <github.com/golang/protobuf>." > + ;; see details in Golang source: Please use fully punctuated sentences for standalone comments; e.g. : "For the details, consult the Golang source:" > + ;; > + ;; - URL: <https://github.com/golang/go/blob/> > + ;; - commit: 82c14346d89ec0eeca114f9ca0e88516b2cda454 > + ;; - file: src/cmd/go/internal/load/pkg.go#L2059 You could use github's raw URL for the file, which doesn't require any javascript to be viewed. That's it! Thank you for working on improving Go on Guix. -- Maxim ^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug#73299] [PATCH v2 2/3] gnu: go-github-com-prometheus-statsd-exporter: Remove redundant phase. [not found] <cover.1726516329.git.sharlatanus@gmail.com> 2024-09-16 20:10 ` [bug#73299] [PATCH v2 1/3] build/go: Replace symlinks with a copy of the file Sharlatan Hellseher @ 2024-09-16 20:10 ` Sharlatan Hellseher 2024-09-16 20:10 ` [bug#73299] [PATCH v2 3/3] gnu: go-github-com-golang-protobuf: " Sharlatan Hellseher 2 siblings, 0 replies; 4+ messages in thread From: Sharlatan Hellseher @ 2024-09-16 20:10 UTC (permalink / raw) To: 73299; +Cc: Sharlatan Hellseher * gnu/packages/prometheus.scm (go-github-com-prometheus-statsd-exporter) [arguments]: <#:phases>: Remove 'fix-embed-files and relay on standard one. Change-Id: I1bc965c65bcd40fcaef7d0ace9943a01ef08bdd3 --- gnu/packages/prometheus.scm | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/gnu/packages/prometheus.scm b/gnu/packages/prometheus.scm index fe2fa18e95..a81932f62b 100644 --- a/gnu/packages/prometheus.scm +++ b/gnu/packages/prometheus.scm @@ -572,29 +572,7 @@ (define-public go-github-com-prometheus-statsd-exporter (arguments (list #:import-path "github.com/prometheus/statsd_exporter" - #:phases - #~(modify-phases %standard-phases - ;; TODO: Implement it in go-build-system. - ;; - ;; This happens due to Golang can't determine the valid directory of - ;; the module of embed file which is symlinked during setup - ;; environment phase, but easy resolved after coping file from the - ;; store to the build directory of the current package, see details - ;; in Golang source: - ;; - ;; - URL: <https://github.com/golang/go/blob/> - ;; - commit: 82c14346d89ec0eeca114f9ca0e88516b2cda454 - ;; - file: src/cmd/go/internal/load/pkg.go#L2059 - (add-before 'build 'fix-embed-files - (lambda _ - (for-each (lambda (file) - (let ((file-store-path (readlink file))) - (delete-file file) - (copy-recursively file-store-path file))) - (find-files "src" (string-append - ".*(editions_defaults.binpb" - "|landing_page.css" - "|landing_page.html)$")))))))) + #:embed-files #~(list "landing_page.css" "landing_page.html"))) (native-inputs (list go-github-com-stvp-go-udp-testing)) (propagated-inputs -- 2.46.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [bug#73299] [PATCH v2 3/3] gnu: go-github-com-golang-protobuf: Remove redundant phase. [not found] <cover.1726516329.git.sharlatanus@gmail.com> 2024-09-16 20:10 ` [bug#73299] [PATCH v2 1/3] build/go: Replace symlinks with a copy of the file Sharlatan Hellseher 2024-09-16 20:10 ` [bug#73299] [PATCH v2 2/3] gnu: go-github-com-prometheus-statsd-exporter: Remove redundant phase Sharlatan Hellseher @ 2024-09-16 20:10 ` Sharlatan Hellseher 2 siblings, 0 replies; 4+ messages in thread From: Sharlatan Hellseher @ 2024-09-16 20:10 UTC (permalink / raw) To: 73299; +Cc: Sharlatan Hellseher * gnu/packages/packages/golang-build.scm (go-github-com-golang-protobuf) [arguments]: <#:phases>: Remove 'fix-embed-files and relay on standard one. Change-Id: Ife4d86e8072588d562364534a66d41ff01851361 --- gnu/packages/golang-build.scm | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/gnu/packages/golang-build.scm b/gnu/packages/golang-build.scm index 8fdd652b63..7049acf8c2 100644 --- a/gnu/packages/golang-build.scm +++ b/gnu/packages/golang-build.scm @@ -103,24 +103,6 @@ (define-public go-github-com-golang-protobuf #:import-path "github.com/golang/protobuf" #:phases #~(modify-phases %standard-phases - ;; TODO: Implement it in go-build-system. - ;; - ;; This happens due to Golang can't determine the valid directory of - ;; the module of embed file which is symlinked during setup - ;; environment phase, but easy resolved after coping file from the - ;; store to the build directory of the current package, see details - ;; in Golang source: - ;; - ;; - URL: <https://github.com/golang/go/blob/> - ;; - commit: 82c14346d89ec0eeca114f9ca0e88516b2cda454 - ;; - file: src/cmd/go/internal/load/pkg.go#L2059 - (add-after 'unpack 'fix-embed-files - (lambda _ - (for-each (lambda (file) - (let ((file-store-path (readlink file))) - (delete-file file) - (copy-recursively file-store-path file))) - (find-files "src" ".*(editions_defaults.binpb)$")))) ;; XXX: Workaround for go-build-system's lack of Go modules ;; support. (delete 'build) -- 2.46.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-09-26 15:55 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <cover.1726516329.git.sharlatanus@gmail.com> 2024-09-16 20:10 ` [bug#73299] [PATCH v2 1/3] build/go: Replace symlinks with a copy of the file Sharlatan Hellseher 2024-09-26 13:22 ` Maxim Cournoyer 2024-09-16 20:10 ` [bug#73299] [PATCH v2 2/3] gnu: go-github-com-prometheus-statsd-exporter: Remove redundant phase Sharlatan Hellseher 2024-09-16 20:10 ` [bug#73299] [PATCH v2 3/3] gnu: go-github-com-golang-protobuf: " Sharlatan Hellseher
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).