Hello, Leo Prikler <leo.prik...@student.tugraz.at> writes:
> Am Donnerstag, den 29.04.2021, 19:54 +0200 schrieb raingloom: >> Trying to import kineto and getting this error when building it: >> >> guix build: error: invalid character `~' in name >> `go-git-sr-ht-~sircmpwn-kineto-0.0.0-20210225135222-edd4fe31f16f- >> checkout.drv' >> >> I know the names are significant in go-build-system so I'm not sure >> how >> to work around the issue without breaking anything. As far as I can tell, the go-build-system doesn't care about the actual package names, just #:import-path and #:unpack-path. The names should only be significant to the go importer insofar as go-module->guix-package-name does not generate collisions. > The way Go works, I would hazard a guess, that > module git.sr.ht/~sircmpwn/kineto > and > module git.sr.ht/sircmpwn/kineto > name two different modules. However, as the latter can't exist since > sr.ht prefixes user names with ~, I think a name transformation, that > maps the former to the latter should be safe. On the other hand, since > this just affects store file names, we might instead want to map "~" to > "-" in the general case of it appearing anywhere. WDYT? It might be slightly uglier, but I think it's better to keep a consistent policy of "replace any invalid characters with a hyphen", as it is less likely to generate collisions and it provides a hint to the reader that there *is* a character there. I have attached a patch to do so below, verified that a recursive import of the package mentioned above builds without modification (well, I had to update a dependency...) and verified that there are not currently any go packages using a tilde in their name with: $ egrep -r '"go-[^"]*~[^"]*"' gnu/packages
>From 2c942a06cf94acdca07f2a59736c89521953af0f Mon Sep 17 00:00:00 2001 Message-Id: <2c942a06cf94acdca07f2a59736c89521953af0f.1625436903.git.iskar...@mgsn.dev> From: Sarah Morgensen <iskar...@mgsn.dev> Date: Sun, 4 Jul 2021 15:00:15 -0700 Subject: [PATCH] import: go: Replace tildes with hyphens in package names. Fixes <https://issues.guix.gnu.org/48111>. * guix/import/go.scm (go-module->guix-package-name): Replace tildes with hyphens. --- guix/import/go.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guix/import/go.scm b/guix/import/go.scm index 5e23d6a2b3..d8f838f635 100644 --- a/guix/import/go.scm +++ b/guix/import/go.scm @@ -430,9 +430,9 @@ hence the need to derive this information." (define* (go-module->guix-package-name module-path #:optional version) "Converts a module's path to the canonical Guix format for Go packages. Optionally include a VERSION string to append to the name." - ;; Map dot, slash and underscore characters to hyphens. + ;; Map dot, slash, underscore and tilde characters to hyphens. (let ((module-path* (string-map (lambda (c) - (if (member c '(#\. #\/ #\_)) + (if (member c '(#\. #\/ #\_ #\~)) #\- c)) module-path))) base-commit: 9e63bafafbe7a7c2d9804fae62302ac8a7e90090 -- 2.31.1
-- Sarah