unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#48111: tilde in Go package names (eg. sourcehut hosted packages)
@ 2021-04-29 17:54 raingloom
  2021-04-30  9:53 ` Leo Prikler
  0 siblings, 1 reply; 5+ messages in thread
From: raingloom @ 2021-04-29 17:54 UTC (permalink / raw)
  To: 48111

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.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#48111: tilde in Go package names (eg. sourcehut hosted packages)
  2021-04-29 17:54 bug#48111: tilde in Go package names (eg. sourcehut hosted packages) raingloom
@ 2021-04-30  9:53 ` Leo Prikler
  2021-05-03  2:16   ` raingloom
  2021-07-04 22:51   ` Sarah Morgensen via Bug reports for GNU Guix
  0 siblings, 2 replies; 5+ messages in thread
From: Leo Prikler @ 2021-04-30  9:53 UTC (permalink / raw)
  To: raingloom, 48111

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.
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? 

Regards,
Leo





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#48111: tilde in Go package names (eg. sourcehut hosted packages)
  2021-04-30  9:53 ` Leo Prikler
@ 2021-05-03  2:16   ` raingloom
  2021-07-04 22:51   ` Sarah Morgensen via Bug reports for GNU Guix
  1 sibling, 0 replies; 5+ messages in thread
From: raingloom @ 2021-05-03  2:16 UTC (permalink / raw)
  To: Leo Prikler; +Cc: 48111

On Fri, 30 Apr 2021 11:53:40 +0200
Leo Prikler <leo.prikler@student.tugraz.at> wrote:

> 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.  
> 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? 
> 
> Regards,
> Leo
> 

It turns out that it's okay to change the names, only the input alist
keys are significant. So it was relatively quick to fix this by hand.
Not sure how the importer should handle it. I've been meaning to look
at importers for a while, because I wanna tackle either a Chicken or an
Akku importer, so, I'll try something Eventually (TM), but can't
promise a deadline.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#48111: tilde in Go package names (eg. sourcehut hosted packages)
  2021-04-30  9:53 ` Leo Prikler
  2021-05-03  2:16   ` raingloom
@ 2021-07-04 22:51   ` Sarah Morgensen via Bug reports for GNU Guix
  2021-07-05  7:57     ` Leo Prikler
  1 sibling, 1 reply; 5+ messages in thread
From: Sarah Morgensen via Bug reports for GNU Guix @ 2021-07-04 22:51 UTC (permalink / raw)
  To: Leo Prikler; +Cc: 48111, raingloom

[-- Attachment #1: Type: text/plain, Size: 1767 bytes --]

Hello,

Leo Prikler <leo.prikler@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


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: import: go: Replace tildes with hyphens in package names. --]
[-- Type: text/x-patch, Size: 1451 bytes --]

From 2c942a06cf94acdca07f2a59736c89521953af0f Mon Sep 17 00:00:00 2001
Message-Id: <2c942a06cf94acdca07f2a59736c89521953af0f.1625436903.git.iskarian@mgsn.dev>
From: Sarah Morgensen <iskarian@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


[-- Attachment #3: Type: text/plain, Size: 10 bytes --]


--
Sarah

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* bug#48111: tilde in Go package names (eg. sourcehut hosted packages)
  2021-07-04 22:51   ` Sarah Morgensen via Bug reports for GNU Guix
@ 2021-07-05  7:57     ` Leo Prikler
  0 siblings, 0 replies; 5+ messages in thread
From: Leo Prikler @ 2021-07-05  7:57 UTC (permalink / raw)
  To: Sarah Morgensen; +Cc: 48111-done

Hello,

Am Sonntag, den 04.07.2021, 15:51 -0700 schrieb Sarah Morgensen:
> 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.
Fair enough, that's a reasonable take.

> 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
I couldn't verify this as the importer delivered 410s, but the patch
LGTM, so I pushed it.

Thanks,
Leo





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-07-05  7:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-29 17:54 bug#48111: tilde in Go package names (eg. sourcehut hosted packages) raingloom
2021-04-30  9:53 ` Leo Prikler
2021-05-03  2:16   ` raingloom
2021-07-04 22:51   ` Sarah Morgensen via Bug reports for GNU Guix
2021-07-05  7:57     ` Leo Prikler

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).