Subject: Re: bug#55139: package-location is wrong for transformed packages

From: Ludovic Courtès <[email-masked]>
Date: Mon, 23 May 2022 15:28:10 +0200

Hi!

Maxim Cournoyer <[email-masked]> skribis:

> Yeah, I ended up with this [0]:
>
> (define (locate-package-via-git name)
>   "Return the location object corresponding to package NAME, searched via git."
>   (let* ((input-pipe (open-pipe* OPEN_READ
> 				 "git" "grep" "-n" "--column"
>                                  (format #f "^(define-public ~a$" name)))
> 	 (output (get-string-all input-pipe)) ;file:line:column:match
> 	 (exit-val (status:exit-val (close-pipe input-pipe))))
>     (case exit-val
>       ((0)
>        (let ((components (string-split output #\:)))
>          (location
>           (first components)                   ;file
>           (string->number (second components)) ;1-indexed line
>           ;; FIXME: Comment discrepancy in (guix diagnostics), which
>           ;; says the column is 0-indexed.
>           (and=> (string->number (third components)) 1-)))) ;0-indexed column
>       ((1) #f)                                            ;no match
>       (else (error "git grep failed with status" exit-val)))))
>
> and it does feel silly to have to shell out to git, but it did the job.
>
> Thanks,
>
> Maxim
>
> [0]  https://notabug.org/apteryx/guix-api-examples/src/master/purge-python2-packages.scm#L42

Nice, it’s good to have these examples—and hopefully we’ll soon be able
to remove a whole bunch of ‘python2-’ packages!

As for ‘package-definition-location’, I don’t think we can reasonably do
any better, so I’m tempted to close the bug.

WDYT?

Ludo’.