Hi! Maxim Cournoyer <maxim.courno...@gmail.com> 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’.