diff mbox series

[bug#50162] gnu: global: Add ctags support.

Message ID 086db0822919d2c43b93dccd3f88be8588685b2f.1629619162.git.efraim@flashner.co.il
State Accepted
Headers show
Series [bug#50162] gnu: global: Add ctags support. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Efraim Flashner Aug. 22, 2021, 8:04 a.m. UTC
* gnu/packages/code.scm (global)[inputs]: Add bash-minimal,
universal-ctags, python-pygments.
[arguments]: Add configure-flags to find ctags. Add phases to install
plugins and to wrap python script with PYTHONPATH.
---

I've been using this variant of global for a couple of weeks now to get
global to work with Guix.

---

 gnu/packages/code.scm | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)


base-commit: 9e3b68203cba2b1bd96e524d3ae9dfc3336a72f7

Comments

Maxim Cournoyer Aug. 30, 2021, 7:57 p.m. UTC | #1
Hello!

Efraim Flashner <efraim@flashner.co.il> writes:

> * gnu/packages/code.scm (global)[inputs]: Add bash-minimal,
> universal-ctags, python-pygments.
> [arguments]: Add configure-flags to find ctags. Add phases to install
> plugins and to wrap python script with PYTHONPATH.
> ---
>
> I've been using this variant of global for a couple of weeks now to get
> global to work with Guix.
>
> ---
>
>  gnu/packages/code.scm | 34 +++++++++++++++++++++++++++++-----
>  1 file changed, 29 insertions(+), 5 deletions(-)
>
> diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
> index a414cde3de..04b354b71e 100644
> --- a/gnu/packages/code.scm
> +++ b/gnu/packages/code.scm
> @@ -64,6 +64,7 @@
>    #:use-module (gnu packages perl-compression)
>    #:use-module (gnu packages pkg-config)
>    #:use-module (gnu packages python)
> +  #:use-module (gnu packages python-xyz)
>    #:use-module (gnu packages serialization)
>    #:use-module (gnu packages sqlite)
>    #:use-module (gnu packages texinfo)
> @@ -137,17 +138,26 @@ highlighting your own code that seemed comprehensible when you wrote it.")
>                (base32
>                 "0g4aslm2zajq605py11s4rs1wdnzcqhkh7bc2xl5az42adzzg839"))))
>      (build-system gnu-build-system)
> -    (inputs `(("coreutils" ,coreutils)
> -              ("ncurses" ,ncurses)
> -              ("libltdl" ,libltdl)
> -              ("sqlite" ,sqlite)
> -              ("python-wrapper" ,python-wrapper)))
> +    (inputs
> +      `(("bash" ,bash-minimal)                    ; for wrap-program

This is news to me; must we now provide bash-minimal every time
wrap-program is used?

> +        ("coreutils" ,coreutils)
> +        ("ctags" ,universal-ctags)
> +        ("libltdl" ,libltdl)
> +        ("ncurses" ,ncurses)
> +        ("python-pygments" ,python-pygments)
> +        ("python-wrapper" ,python-wrapper)
> +        ("sqlite" ,sqlite)))
>      (arguments
>       `(#:configure-flags
>         (list (string-append "--with-ncurses="
>                              (assoc-ref %build-inputs "ncurses"))
>               (string-append "--with-sqlite3="
>                              (assoc-ref %build-inputs "sqlite"))
> +             (string-append "--with-universal-ctags="
> +                            (assoc-ref %build-inputs "ctags") "/bin/ctags")
> +             (string-append "--sysconfdir="
> +                            (assoc-ref %outputs "out") "/share/gtags")
> +             "--localstatedir=/var"         ; This needs to be a writable location.
>               "--disable-static")
>  
>         #:phases
> @@ -158,6 +168,20 @@ highlighting your own code that seemed comprehensible when you wrote it.")
>                             (assoc-ref inputs "coreutils") "/bin/echo")))
>                 (substitute* "globash/globash.in"
>                   (("/bin/echo") echo)))))
> +         (add-after 'post-install 'install-plugins
> +           (lambda _
> +             (with-directory-excursion "plugin-factory"
> +               (invoke "make" "install"))))
> +         (add-before 'install 'dont-install-to-/var
> +           (lambda _
> +             (substitute* "gozilla/Makefile"
> +               (("DESTDIR\\)\\$\\{localstatedir\\}") "TMPDIR)"))))
> +         (add-after 'install-plugins 'wrap-program
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (wrap-program
> +               (string-append (assoc-ref outputs "out")
> +                              "/share/gtags/script/pygments_parser.py")
> +               `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))))
>          (add-after 'install 'post-install
>            (lambda* (#:key outputs #:allow-other-keys)
>              ;; Install the plugin files in the right place.

I have built it (but not tested it), but the rest this LGTM!  Feel free
to push.

Thank you,

Maxim
Efraim Flashner Aug. 31, 2021, 10:11 a.m. UTC | #2
On Mon, Aug 30, 2021 at 03:57:39PM -0400, Maxim Cournoyer wrote:
> Hello!
> 
> Efraim Flashner <efraim@flashner.co.il> writes:
> 
> > * gnu/packages/code.scm (global)[inputs]: Add bash-minimal,
> > universal-ctags, python-pygments.
> > [arguments]: Add configure-flags to find ctags. Add phases to install
> > plugins and to wrap python script with PYTHONPATH.
> > ---
> >
> > I've been using this variant of global for a couple of weeks now to get
> > global to work with Guix.
> >
> > ---
> >
> >  gnu/packages/code.scm | 34 +++++++++++++++++++++++++++++-----
> >  1 file changed, 29 insertions(+), 5 deletions(-)
> >
> > diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
> > index a414cde3de..04b354b71e 100644
> > --- a/gnu/packages/code.scm
> > +++ b/gnu/packages/code.scm
> > @@ -64,6 +64,7 @@
> >    #:use-module (gnu packages perl-compression)
> >    #:use-module (gnu packages pkg-config)
> >    #:use-module (gnu packages python)
> > +  #:use-module (gnu packages python-xyz)
> >    #:use-module (gnu packages serialization)
> >    #:use-module (gnu packages sqlite)
> >    #:use-module (gnu packages texinfo)
> > @@ -137,17 +138,26 @@ highlighting your own code that seemed comprehensible when you wrote it.")
> >                (base32
> >                 "0g4aslm2zajq605py11s4rs1wdnzcqhkh7bc2xl5az42adzzg839"))))
> >      (build-system gnu-build-system)
> > -    (inputs `(("coreutils" ,coreutils)
> > -              ("ncurses" ,ncurses)
> > -              ("libltdl" ,libltdl)
> > -              ("sqlite" ,sqlite)
> > -              ("python-wrapper" ,python-wrapper)))
> > +    (inputs
> > +      `(("bash" ,bash-minimal)                    ; for wrap-program
> 
> This is news to me; must we now provide bash-minimal every time
> wrap-program is used?

Its new, I think the aim was to make sure that even if a package is
cross compiled it uses the correct bash when wrapping the
program/script.

> > +        ("coreutils" ,coreutils)
> > +        ("ctags" ,universal-ctags)
> > +        ("libltdl" ,libltdl)
> > +        ("ncurses" ,ncurses)
> > +        ("python-pygments" ,python-pygments)
> > +        ("python-wrapper" ,python-wrapper)
> > +        ("sqlite" ,sqlite)))
> >      (arguments
> >       `(#:configure-flags
> >         (list (string-append "--with-ncurses="
> >                              (assoc-ref %build-inputs "ncurses"))
> >               (string-append "--with-sqlite3="
> >                              (assoc-ref %build-inputs "sqlite"))
> > +             (string-append "--with-universal-ctags="
> > +                            (assoc-ref %build-inputs "ctags") "/bin/ctags")
> > +             (string-append "--sysconfdir="
> > +                            (assoc-ref %outputs "out") "/share/gtags")
> > +             "--localstatedir=/var"         ; This needs to be a writable location.
> >               "--disable-static")
> >  
> >         #:phases
> > @@ -158,6 +168,20 @@ highlighting your own code that seemed comprehensible when you wrote it.")
> >                             (assoc-ref inputs "coreutils") "/bin/echo")))
> >                 (substitute* "globash/globash.in"
> >                   (("/bin/echo") echo)))))
> > +         (add-after 'post-install 'install-plugins
> > +           (lambda _
> > +             (with-directory-excursion "plugin-factory"
> > +               (invoke "make" "install"))))
> > +         (add-before 'install 'dont-install-to-/var
> > +           (lambda _
> > +             (substitute* "gozilla/Makefile"
> > +               (("DESTDIR\\)\\$\\{localstatedir\\}") "TMPDIR)"))))
> > +         (add-after 'install-plugins 'wrap-program
> > +           (lambda* (#:key inputs outputs #:allow-other-keys)
> > +             (wrap-program
> > +               (string-append (assoc-ref outputs "out")
> > +                              "/share/gtags/script/pygments_parser.py")
> > +               `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))))
> >          (add-after 'install 'post-install
> >            (lambda* (#:key outputs #:allow-other-keys)
> >              ;; Install the plugin files in the right place.
> 
> I have built it (but not tested it), but the rest this LGTM!  Feel free
> to push.
> 
> Thank you,
> 
> Maxim

Thanks! Patch pushed.
Maxim Cournoyer Aug. 31, 2021, 2:31 p.m. UTC | #3
Hello Efraim,

Efraim Flashner <efraim@flashner.co.il> writes:

> On Mon, Aug 30, 2021 at 03:57:39PM -0400, Maxim Cournoyer wrote:
>> Hello!
>> 
>> Efraim Flashner <efraim@flashner.co.il> writes:
>> 
>> > * gnu/packages/code.scm (global)[inputs]: Add bash-minimal,
>> > universal-ctags, python-pygments.
>> > [arguments]: Add configure-flags to find ctags. Add phases to install
>> > plugins and to wrap python script with PYTHONPATH.
>> > ---
>> >
>> > I've been using this variant of global for a couple of weeks now to get
>> > global to work with Guix.
>> >
>> > ---
>> >
>> >  gnu/packages/code.scm | 34 +++++++++++++++++++++++++++++-----
>> >  1 file changed, 29 insertions(+), 5 deletions(-)
>> >
>> > diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
>> > index a414cde3de..04b354b71e 100644
>> > --- a/gnu/packages/code.scm
>> > +++ b/gnu/packages/code.scm
>> > @@ -64,6 +64,7 @@
>> >    #:use-module (gnu packages perl-compression)
>> >    #:use-module (gnu packages pkg-config)
>> >    #:use-module (gnu packages python)
>> > +  #:use-module (gnu packages python-xyz)
>> >    #:use-module (gnu packages serialization)
>> >    #:use-module (gnu packages sqlite)
>> >    #:use-module (gnu packages texinfo)
>> > @@ -137,17 +138,26 @@ highlighting your own code that seemed comprehensible when you wrote it.")
>> >                (base32
>> >                 "0g4aslm2zajq605py11s4rs1wdnzcqhkh7bc2xl5az42adzzg839"))))
>> >      (build-system gnu-build-system)
>> > -    (inputs `(("coreutils" ,coreutils)
>> > -              ("ncurses" ,ncurses)
>> > -              ("libltdl" ,libltdl)
>> > -              ("sqlite" ,sqlite)
>> > -              ("python-wrapper" ,python-wrapper)))
>> > +    (inputs
>> > +      `(("bash" ,bash-minimal)                    ; for wrap-program
>> 
>> This is news to me; must we now provide bash-minimal every time
>> wrap-program is used?
>
> Its new, I think the aim was to make sure that even if a package is
> cross compiled it uses the correct bash when wrapping the
> program/script.

I see.  It's good that it's explicit, but on the other hand, it's a bit
tedious or error prone to have to remember to do so everywhere.  I'll
give it some time!

Thank you,

Maxim
diff mbox series

Patch

diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index a414cde3de..04b354b71e 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -64,6 +64,7 @@ 
   #:use-module (gnu packages perl-compression)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
@@ -137,17 +138,26 @@  highlighting your own code that seemed comprehensible when you wrote it.")
               (base32
                "0g4aslm2zajq605py11s4rs1wdnzcqhkh7bc2xl5az42adzzg839"))))
     (build-system gnu-build-system)
-    (inputs `(("coreutils" ,coreutils)
-              ("ncurses" ,ncurses)
-              ("libltdl" ,libltdl)
-              ("sqlite" ,sqlite)
-              ("python-wrapper" ,python-wrapper)))
+    (inputs
+      `(("bash" ,bash-minimal)                    ; for wrap-program
+        ("coreutils" ,coreutils)
+        ("ctags" ,universal-ctags)
+        ("libltdl" ,libltdl)
+        ("ncurses" ,ncurses)
+        ("python-pygments" ,python-pygments)
+        ("python-wrapper" ,python-wrapper)
+        ("sqlite" ,sqlite)))
     (arguments
      `(#:configure-flags
        (list (string-append "--with-ncurses="
                             (assoc-ref %build-inputs "ncurses"))
              (string-append "--with-sqlite3="
                             (assoc-ref %build-inputs "sqlite"))
+             (string-append "--with-universal-ctags="
+                            (assoc-ref %build-inputs "ctags") "/bin/ctags")
+             (string-append "--sysconfdir="
+                            (assoc-ref %outputs "out") "/share/gtags")
+             "--localstatedir=/var"         ; This needs to be a writable location.
              "--disable-static")
 
        #:phases
@@ -158,6 +168,20 @@  highlighting your own code that seemed comprehensible when you wrote it.")
                            (assoc-ref inputs "coreutils") "/bin/echo")))
                (substitute* "globash/globash.in"
                  (("/bin/echo") echo)))))
+         (add-after 'post-install 'install-plugins
+           (lambda _
+             (with-directory-excursion "plugin-factory"
+               (invoke "make" "install"))))
+         (add-before 'install 'dont-install-to-/var
+           (lambda _
+             (substitute* "gozilla/Makefile"
+               (("DESTDIR\\)\\$\\{localstatedir\\}") "TMPDIR)"))))
+         (add-after 'install-plugins 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program
+               (string-append (assoc-ref outputs "out")
+                              "/share/gtags/script/pygments_parser.py")
+               `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))))
         (add-after 'install 'post-install
           (lambda* (#:key outputs #:allow-other-keys)
             ;; Install the plugin files in the right place.