Subject: Re: [ SPAM? ] Re: [bug#47539] [PATCH 00/28] Add gh and dependencies

From: Leo Prikler <[email-masked]>
Date: Thu, 01 Apr 2021 20:10:51 +0200

Am Donnerstag, den 01.04.2021, 20:05 +0200 schrieb Xinglu Chen:
> On Thu, Apr 01 2021, Leo Prikler wrote:
> 
> > > Compiling github-cli without the package doesn't work, and the
> > > package is used in multiple places in the source code.  I don't
> > > really know what we can do here.  Should I open an issue on their
> > > GitHub page, or just leave it as is?
> > For now, I don't think this is going to be a blocking issue, as
> > long as
> > the package and the input are appropriately marked, e.g. with
> > comments,
> > and we make sure not to endorse the Microsoft OS through them.  
> > As to how we might handle this, we could do our own investigations
> > into
> > dropping the dependency, but asking a question (make sure to tag it
> > as
> > such) should work as well.  Also be clear, that the goal is not
> > necessarily to remove the dependency altogether, but rather make it
> > an
> > optional one.
> > 
> > After doing some quick investigations myself, I think the following
> > pair of substitute*s might work:
> >   (("github.com/cli/safeexec") "os/exec")
> >   (("safeexec") "exec")
> 
> Thank you for the pointer, I managed to get it to work with the
> following snippet:
> 
> #+begin_src scheme
> (add-after 'unpack 'remove-safeexec
>            (lambda* (#:key outputs #:allow-other-keys)
>              (let ((prefix-file (lambda (file)
>                              (string-append "src/github.com/cli/cli/"
> file))))
>                ;; 'github.com/cli/safeexec' is only used for Windows,
> we
>                ;; replace it with the regular 'os/exec'.  See
>                ;; <https://issues.guix.gnu.org/47539> for discussion.
>                (substitute* (map prefix-file
>                                  '("pkg/cmd/alias/expand/expand.go"
>                                    "script/build.go"))
>                  (("github.com/cli/safeexec") "os/exec")
>                  (("safeexec") "exec"))
>                ;; These files have already imported 'os/exec',
> meaning that
>                ;; 'os/exec' would get imported twice, causing an
> error.
>                ;; Instead, we just remove the
> 'github.com/cli/safeexec'.
>                (substitute* (map prefix-file
>                                  '("cmd/gh/main.go"
>                                    "git/git.go"
>                                    "pkg/iostreams/iostreams.go"
>                                    "pkg/cmd/auth/shared/ssh_keys.go"
>                                    "pkg/cmd/pr/checkout/checkout.go"
>                                    "pkg/cmdutil/web_browser.go"
>                                    "pkg/surveyext/editor_manual.go"))
>                  (("\"github.com/cli/safeexec\"") "")
>                  (("safeexec") "exec")))))
> #+end_src
This should probably be implemented with directory excursions, but
other than that if it works for you, then LGTM :)