* [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
[not found] <cover.1704041948.git.maxim.cournoyer@gmail.com>
@ 2023-12-31 16:59 ` Maxim Cournoyer
2023-12-31 19:13 ` Liliana Marie Prikler
2023-12-31 16:59 ` [bug#68180] [PATCH 2/4] build: perl: Accept Gexps for #:module-build-flags Maxim Cournoyer
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2023-12-31 16:59 UTC (permalink / raw)
To: 68180
Cc: Maxim Cournoyer, Andrew Tropin, Katherine Cox-Buday,
Liliana Marie Prikler
Before this change, using Emacs in a pure environment, e.g. 'guix shell --pure
emacs', would cause problems such as:
jka-compr-insert-file-contents: Uncompression program ‘sh’ not found
And other problems were found requiring the other tools. While the above
could be patched in place for 'sh', it seems more robust and universally
useful to have the commands appear on PATH, should other Elisp modules want to
call to these directly as well.
* gnu/packages/emacs.scm (emacs-minimal) [arguments] <phases>: Adjust the
wrap-emacs-paths phase to wrap additional inputs.
[inputs]: Add findutils, gawk and sed.
(%emacs-modules): Add (srfi srfi-26).
Change-Id: Ifb4fe2fc12ddc9eae387adb3da3f7821fab78e65
---
gnu/packages/emacs.scm | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index b9d9e2b891..85d40d01de 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2016 David Thompson <dthompson2@worcester.edu>
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2017, 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2017, 2019, 2020, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
@@ -59,6 +59,7 @@ (define-module (gnu packages emacs)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages fribidi)
+ #:use-module (gnu packages gawk)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gd)
#:use-module (gnu packages gettext)
@@ -94,6 +95,7 @@ (define (%emacs-modules build-system)
`((guix build ,(symbol-append which '-build-system))
(guix build utils)
(srfi srfi-1)
+ (srfi srfi-26)
(ice-9 ftw))))
(define-public emacs-minimal
@@ -231,12 +233,17 @@ (define-public emacs-minimal
(wrap-program prog
;; Some variants rely on uname being in PATH for Tramp.
;; Tramp paths can't be hardcoded, because they need to
- ;; be portable.
+ ;; be portable. "sh", "find", "awk" and "sed" are also
+ ;; needed by common Elisp modules e.g., for reading
+ ;; documentation, so have them on PATH.
`("PATH" suffix
- ,(map dirname
- (list (search-input-file inputs "/bin/gzip")
- ;; for coreutils
- (search-input-file inputs "/bin/yes"))))
+ ,(map (compose dirname (cut search-input-file inputs <>))
+ (list "bin/awk"
+ "bin/find" ;findutils
+ "bin/gzip"
+ "bin/sed"
+ "bin/sh" ;bash
+ "bin/yes"))) ;coreutils
`("EMACSLOADPATH" suffix ,lisp-dirs)))
(find-files (string-append out "/bin")
;; Matches versioned and unversioned emacs binaries.
@@ -254,7 +261,7 @@ (define-public emacs-minimal
(copy-file
(car (find-files "bin" "^emacs-([0-9]+\\.)+[0-9]+$"))
"bin/emacs")))))))
- (inputs (list bash-minimal coreutils gzip ncurses))
+ (inputs (list bash-minimal coreutils findutils gawk gzip ncurses sed))
(native-inputs (list autoconf pkg-config texinfo))
(home-page "https://www.gnu.org/software/emacs/")
(synopsis "The extensible text editor (minimal build for byte-compilation)")
--
2.41.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
2023-12-31 16:59 ` [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper Maxim Cournoyer
@ 2023-12-31 19:13 ` Liliana Marie Prikler
2023-12-31 21:10 ` Maxim Cournoyer
0 siblings, 1 reply; 11+ messages in thread
From: Liliana Marie Prikler @ 2023-12-31 19:13 UTC (permalink / raw)
To: Maxim Cournoyer, 68180; +Cc: Katherine Cox-Buday, Andrew Tropin
Am Sonntag, dem 31.12.2023 um 11:59 -0500 schrieb Maxim Cournoyer:
> Before this change, using Emacs in a pure environment, e.g. 'guix
> shell --pure emacs', would cause problems such as:
>
> jka-compr-insert-file-contents: Uncompression program ‘sh’ not
> found
>
> And other problems were found requiring the other tools. While the
> above could be patched in place for 'sh', it seems more robust and
> universally useful to have the commands appear on PATH, should other
> Elisp modules want to call to these directly as well.
>
> * gnu/packages/emacs.scm (emacs-minimal) [arguments] <phases>: Adjust
> the
> wrap-emacs-paths phase to wrap additional inputs.
> [inputs]: Add findutils, gawk and sed.
> (%emacs-modules): Add (srfi srfi-26).
>
> Change-Id: Ifb4fe2fc12ddc9eae387adb3da3f7821fab78e65
> ---
We already have a phase to patch in the real path of /bin/sh where it's
used. This appears to be an odd case that's missed.
Cheers
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
2023-12-31 19:13 ` Liliana Marie Prikler
@ 2023-12-31 21:10 ` Maxim Cournoyer
2024-01-01 7:33 ` Andrew Tropin via Guix-patches via
0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2023-12-31 21:10 UTC (permalink / raw)
To: Liliana Marie Prikler; +Cc: 68180, Katherine Cox-Buday, Andrew Tropin
Hi Liliana,
Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> Am Sonntag, dem 31.12.2023 um 11:59 -0500 schrieb Maxim Cournoyer:
>> Before this change, using Emacs in a pure environment, e.g. 'guix
>> shell --pure emacs', would cause problems such as:
>>
>> jka-compr-insert-file-contents: Uncompression program ‘sh’ not
>> found
>>
>> And other problems were found requiring the other tools. While the
>> above could be patched in place for 'sh', it seems more robust and
>> universally useful to have the commands appear on PATH, should other
>> Elisp modules want to call to these directly as well.
>>
>> * gnu/packages/emacs.scm (emacs-minimal) [arguments] <phases>: Adjust
>> the
>> wrap-emacs-paths phase to wrap additional inputs.
>> [inputs]: Add findutils, gawk and sed.
>> (%emacs-modules): Add (srfi srfi-26).
>>
>> Change-Id: Ifb4fe2fc12ddc9eae387adb3da3f7821fab78e65
>> ---
> We already have a phase to patch in the real path of /bin/sh where it's
> used. This appears to be an odd case that's missed.
I appreciate exactness, but it seems fragile to rely on nobody adding
new references or someone catching them as new Emacs modules get added
or changed :-).
My reasoning was that since Emacs already depends on bash, why not
ensure it'll always be found on PATH, by wrapping instead of
substituting.
Does it make sense?
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
2023-12-31 21:10 ` Maxim Cournoyer
@ 2024-01-01 7:33 ` Andrew Tropin via Guix-patches via
2024-01-02 2:07 ` Maxim Cournoyer
0 siblings, 1 reply; 11+ messages in thread
From: Andrew Tropin via Guix-patches via @ 2024-01-01 7:33 UTC (permalink / raw)
To: Maxim Cournoyer, Liliana Marie Prikler; +Cc: 68180, Katherine Cox-Buday
[-- Attachment #1: Type: text/plain, Size: 2195 bytes --]
On 2023-12-31 16:10, Maxim Cournoyer wrote:
> Hi Liliana,
>
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
>
>> Am Sonntag, dem 31.12.2023 um 11:59 -0500 schrieb Maxim Cournoyer:
>>> Before this change, using Emacs in a pure environment, e.g. 'guix
>>> shell --pure emacs', would cause problems such as:
>>>
>>> jka-compr-insert-file-contents: Uncompression program ‘sh’ not
>>> found
>>>
>>> And other problems were found requiring the other tools. While the
>>> above could be patched in place for 'sh', it seems more robust and
>>> universally useful to have the commands appear on PATH, should other
>>> Elisp modules want to call to these directly as well.
>>>
>>> * gnu/packages/emacs.scm (emacs-minimal) [arguments] <phases>: Adjust
>>> the
>>> wrap-emacs-paths phase to wrap additional inputs.
>>> [inputs]: Add findutils, gawk and sed.
>>> (%emacs-modules): Add (srfi srfi-26).
>>>
>>> Change-Id: Ifb4fe2fc12ddc9eae387adb3da3f7821fab78e65
>>> ---
>> We already have a phase to patch in the real path of /bin/sh where it's
>> used. This appears to be an odd case that's missed.
>
> I appreciate exactness, but it seems fragile to rely on nobody adding
> new references or someone catching them as new Emacs modules get added
> or changed :-).
>
> My reasoning was that since Emacs already depends on bash, why not
> ensure it'll always be found on PATH, by wrapping instead of
> substituting.
>
> Does it make sense?
Yep, make sense to me. I also find cases from time to time, when some
binary or another isn't found by some elisp code.
However, providing those binaries via PATH can make some code or
programs to work, when executed from inside Emacs and not to work in the
environment outside, which can be really confusing in some cases.
A simple example, imaging we have a script: 1.sh, which contains:
sh --version
This one will work:
guix shell emacs-with-bash --pure -- emacs --eval '(shell-command "./1.sh")'
This one will not:
guix shell emacs-with-bash --pure -- ./1.sh
That said, the idea of patching all the pathes to binaries seems better
to me.
--
Best regards,
Andrew Tropin
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
2024-01-01 7:33 ` Andrew Tropin via Guix-patches via
@ 2024-01-02 2:07 ` Maxim Cournoyer
2024-01-02 7:00 ` Andrew Tropin via Guix-patches via
0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2024-01-02 2:07 UTC (permalink / raw)
To: Andrew Tropin; +Cc: 68180, Katherine Cox-Buday, Liliana Marie Prikler
Hi Andrew,
Andrew Tropin <andrew@trop.in> writes:
[...]
>>> We already have a phase to patch in the real path of /bin/sh where it's
>>> used. This appears to be an odd case that's missed.
>>
>> I appreciate exactness, but it seems fragile to rely on nobody adding
>> new references or someone catching them as new Emacs modules get added
>> or changed :-).
>>
>> My reasoning was that since Emacs already depends on bash, why not
>> ensure it'll always be found on PATH, by wrapping instead of
>> substituting.
>>
>> Does it make sense?
>
> Yep, make sense to me. I also find cases from time to time, when some
> binary or another isn't found by some elisp code.
>
> However, providing those binaries via PATH can make some code or
> programs to work, when executed from inside Emacs and not to work in the
> environment outside, which can be really confusing in some cases.
>
> A simple example, imaging we have a script: 1.sh, which contains:
> sh --version
>
> This one will work:
> guix shell emacs-with-bash --pure -- emacs --eval '(shell-command "./1.sh")'
>
> This one will not:
> guix shell emacs-with-bash --pure -- ./1.sh
>
> That said, the idea of patching all the pathes to binaries seems better
> to me.
I'm not sure if I got you correctly: do you prefer to wrap Emacs with
the tools it needs in PATH, or patch the references exactly in its
source, as Liliana suggested?
I've tried the "exact" patch suggested by Liliana in v2. I tested that
reading a manual page was possible in a containerized environment still
worked.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
2024-01-02 2:07 ` Maxim Cournoyer
@ 2024-01-02 7:00 ` Andrew Tropin via Guix-patches via
2024-01-02 16:34 ` Maxim Cournoyer
0 siblings, 1 reply; 11+ messages in thread
From: Andrew Tropin via Guix-patches via @ 2024-01-02 7:00 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 68180, Katherine Cox-Buday, Liliana Marie Prikler
[-- Attachment #1: Type: text/plain, Size: 1832 bytes --]
On 2024-01-01 21:07, Maxim Cournoyer wrote:
> Hi Andrew,
>
> Andrew Tropin <andrew@trop.in> writes:
>
> [...]
>
>>>> We already have a phase to patch in the real path of /bin/sh where it's
>>>> used. This appears to be an odd case that's missed.
>>>
>>> I appreciate exactness, but it seems fragile to rely on nobody adding
>>> new references or someone catching them as new Emacs modules get added
>>> or changed :-).
>>>
>>> My reasoning was that since Emacs already depends on bash, why not
>>> ensure it'll always be found on PATH, by wrapping instead of
>>> substituting.
>>>
>>> Does it make sense?
>>
>> Yep, make sense to me. I also find cases from time to time, when some
>> binary or another isn't found by some elisp code.
>>
>> However, providing those binaries via PATH can make some code or
>> programs to work, when executed from inside Emacs and not to work in the
>> environment outside, which can be really confusing in some cases.
>>
>> A simple example, imaging we have a script: 1.sh, which contains:
>> sh --version
>>
>> This one will work:
>> guix shell emacs-with-bash --pure -- emacs --eval '(shell-command "./1.sh")'
>>
>> This one will not:
>> guix shell emacs-with-bash --pure -- ./1.sh
>>
>> That said, the idea of patching all the pathes to binaries seems better
>> to me.
>
> I'm not sure if I got you correctly: do you prefer to wrap Emacs with
> the tools it needs in PATH, or patch the references exactly in its
> source, as Liliana suggested?
I'm more on the "patching the references exactly" side to avoid the
problem mentioned above.
>
> I've tried the "exact" patch suggested by Liliana in v2. I tested that
> reading a manual page was possible in a containerized environment still
> worked.
👍
--
Best regards,
Andrew Tropin
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
2024-01-02 7:00 ` Andrew Tropin via Guix-patches via
@ 2024-01-02 16:34 ` Maxim Cournoyer
2024-01-19 3:17 ` bug#68180: " Maxim Cournoyer
0 siblings, 1 reply; 11+ messages in thread
From: Maxim Cournoyer @ 2024-01-02 16:34 UTC (permalink / raw)
To: Andrew Tropin; +Cc: 68180, Katherine Cox-Buday, Liliana Marie Prikler
Hi!
Andrew Tropin <andrew@trop.in> writes:
[...]
> I'm more on the "patching the references exactly" side to avoid the
> problem mentioned above.
OK, thanks for clarifying! You'll see this done in the v2 already sent
to this ticket.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#68180: [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper.
2024-01-02 16:34 ` Maxim Cournoyer
@ 2024-01-19 3:17 ` Maxim Cournoyer
0 siblings, 0 replies; 11+ messages in thread
From: Maxim Cournoyer @ 2024-01-19 3:17 UTC (permalink / raw)
To: Andrew Tropin; +Cc: 68180-done, Katherine Cox-Buday, Liliana Marie Prikler
Hi,
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
> Hi!
>
> Andrew Tropin <andrew@trop.in> writes:
>
> [...]
>
>> I'm more on the "patching the references exactly" side to avoid the
>> problem mentioned above.
>
> OK, thanks for clarifying! You'll see this done in the v2 already sent
> to this ticket.
I've now applied this to master, in its exact variant posted in v2.
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 2/4] build: perl: Accept Gexps for #:module-build-flags.
[not found] <cover.1704041948.git.maxim.cournoyer@gmail.com>
2023-12-31 16:59 ` [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper Maxim Cournoyer
@ 2023-12-31 16:59 ` Maxim Cournoyer
2023-12-31 16:59 ` [bug#68180] [PATCH 3/4] gnu: perl-b-keywords: Update to 1.26 Maxim Cournoyer
2023-12-31 16:59 ` [bug#68180] [PATCH 4/4] gnu: Add emacs-pde Maxim Cournoyer
3 siblings, 0 replies; 11+ messages in thread
From: Maxim Cournoyer @ 2023-12-31 16:59 UTC (permalink / raw)
To: 68180; +Cc: Maxim Cournoyer
* guix/build-system/perl.scm (perl-build) [module-build-flags]: Accept gexps.
Change-Id: If1daa4d9a8cf97824b75f2113f4d7d83256463ce
---
guix/build-system/perl.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm
index 7c6deb34bf..0d5493ab90 100644
--- a/guix/build-system/perl.scm
+++ b/guix/build-system/perl.scm
@@ -133,7 +133,9 @@ (define* (perl-build name inputs
search-paths))
#:make-maker? #$make-maker?
#:make-maker-flags #$make-maker-flags
- #:module-build-flags #$(sexp->gexp module-build-flags)
+ #:module-build-flags #$(if (pair? module-build-flags)
+ (sexp->gexp module-build-flags)
+ module-build-flags)
#:phases #$(if (pair? phases)
(sexp->gexp phases)
phases)
--
2.41.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 3/4] gnu: perl-b-keywords: Update to 1.26.
[not found] <cover.1704041948.git.maxim.cournoyer@gmail.com>
2023-12-31 16:59 ` [bug#68180] [PATCH 1/4] gnu: emacs: Add awk, find, sed and sh to PATH wrapper Maxim Cournoyer
2023-12-31 16:59 ` [bug#68180] [PATCH 2/4] build: perl: Accept Gexps for #:module-build-flags Maxim Cournoyer
@ 2023-12-31 16:59 ` Maxim Cournoyer
2023-12-31 16:59 ` [bug#68180] [PATCH 4/4] gnu: Add emacs-pde Maxim Cournoyer
3 siblings, 0 replies; 11+ messages in thread
From: Maxim Cournoyer @ 2023-12-31 16:59 UTC (permalink / raw)
To: 68180; +Cc: Maxim Cournoyer
* gnu/packages/perl.scm (perl-b-keywords): Update to 1.26.
Change-Id: I3fdb9acf9f257ff9583179e29b2e6a26104b7e0d
---
gnu/packages/perl.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 8b82c272fc..5b32d6ecec 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -927,14 +927,14 @@ (define-public perl-b-hooks-op-check
(define-public perl-b-keywords
(package
(name "perl-b-keywords")
- (version "1.22")
+ (version "1.26")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/B-Keywords-"
version ".tar.gz"))
(sha256
- (base32 "0i2ksp0w9wv1qc22hrdl3k48cww64syhmv8zf6x0kgyd4081hr56"))))
+ (base32 "0d7dgbw3wdaqw8g7nl86q6gqfqsnzg2a9y47vpgb0zr65xfibaid"))))
(build-system perl-build-system)
(home-page "https://metacpan.org/release/B-Keywords")
(synopsis "Lists of reserved barewords and symbol names")
--
2.41.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#68180] [PATCH 4/4] gnu: Add emacs-pde.
[not found] <cover.1704041948.git.maxim.cournoyer@gmail.com>
` (2 preceding siblings ...)
2023-12-31 16:59 ` [bug#68180] [PATCH 3/4] gnu: perl-b-keywords: Update to 1.26 Maxim Cournoyer
@ 2023-12-31 16:59 ` Maxim Cournoyer
3 siblings, 0 replies; 11+ messages in thread
From: Maxim Cournoyer @ 2023-12-31 16:59 UTC (permalink / raw)
To: 68180
Cc: Maxim Cournoyer, Andrew Tropin, Katherine Cox-Buday,
Liliana Marie Prikler
* gnu/packages/emacs-xyz.scm (emacs-pde): New variable.
Change-Id: Icab5d8acf9d441bb4a832a82e75432d64cc77ba7
---
gnu/packages/emacs-xyz.scm | 86 ++++++++++++++++++++++++++++++++++++++
1 file changed, 86 insertions(+)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index a8ac238f58..fe46342adf 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -167,6 +167,7 @@ (define-module (gnu packages emacs-xyz)
#:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system emacs)
+ #:use-module (guix build-system perl)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
@@ -271,6 +272,7 @@ (define-module (gnu packages emacs-xyz)
#:use-module (gnu packages erlang)
#:use-module (gnu packages statistics)
#:use-module (gnu packages libcanberra)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages virtualization)
#:use-module (gnu packages web-browsers)
#:use-module (gnu packages wget)
@@ -12271,6 +12273,90 @@ (define-public emacs-hl-todo
regexp that matches all known keywords.")
(license license:gpl3+)))
+(define-public emacs-pde
+ (package
+ (name "emacs-pde")
+ (version "0.2.17")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://cpan/authors/id/Y/YE/YEWENBIN/Emacs-PDE-v"
+ version ".tar.gz"))
+ (modules '((guix build utils)))
+ (snippet '(begin
+ ;; Delete pre-generated Texinfo and HTML documentation.
+ (for-each delete-file '("lisp/doc/pde.info"
+ "lisp/doc/pde.html"))
+ (delete-file-recursively "lisp/doc/pde")))
+ (sha256
+ (base32 "1i82isha839c8lx73kgp43v7gxr2adsr1yfw1glyxvi62w5ab9qz"))))
+ (build-system perl-build-system)
+ (arguments
+ (list
+ #:imported-modules `(,@%emacs-build-system-modules
+ ,@%perl-build-system-modules)
+ #:modules '((guix build perl-build-system)
+ (guix build emacs-utils)
+ (guix build utils))
+ #:module-build-flags
+ #~(list (string-append "--elispdir=" #$output
+ "/share/emacs/site-lisp/pde")
+ "--verbose")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-commands
+ (lambda* (#:key inputs #:allow-other-keys)
+ (make-file-writable "lisp/pde-vars.el")
+ (emacs-substitute-variables "lisp/pde-vars.el"
+ ("pde-perl-program"
+ (search-input-file inputs "bin/perl"))
+ ("pde-perl-version"
+ #$(package-version (this-package-input "perl")))
+ ("pde-perldoc-program"
+ (search-input-file inputs "bin/perldoc"))
+ ("pde-find-program"
+ (search-input-file inputs "bin/find")))
+ (make-file-writable "lisp/perlcritic.el")
+ (emacs-substitute-variables "lisp/perlcritic.el"
+ ("perlcritic-program"
+ (search-input-file inputs "bin/perlcritic")))
+ (make-file-writable "lisp/perldoc.el")
+ (emacs-substitute-variables "lisp/perldoc.el"
+ ("perldoc-cache-el"
+ "(expand-file-name \"~/.cache/perldoc-cache.el\"")
+ ("perldoc-pod2man"
+ (search-input-file inputs "bin/pod2man")))
+ (make-file-writable "lisp/perltidy.el")
+ (emacs-substitute-variables "lisp/perltidy.el"
+ ("perltidy-program"
+ (search-input-file inputs "bin/perltidy")))
+ (substitute* "lisp/tools/perldoc-cache.pl"
+ (("`perldoc")
+ (string-append
+ "`" (search-input-file inputs "bin/perldoc"))))))
+ (add-after 'build 'generate-doc
+ (lambda _
+ (invoke "./Build" "info")))
+ (add-after 'install 'move-doc
+ (lambda _
+ (let ((info (string-append #$output "/share/info/pde.info")))
+ (mkdir-p (dirname info))
+ (rename-file (string-append
+ #$output
+ "/share/emacs/site-lisp/pde/doc/pde.info")
+ info)))))))
+ (native-inputs (list emacs-minimal perl-module-build texinfo))
+ (inputs (list findutils perl perl-critic))
+ (home-page "https://metacpan.org/release/Emacs-PDE")
+ (synopsis "Perl Development Environment for Emacs")
+ (description "Emacs::PDE is a collection of Emacs Lisp extensions to
+facilitate Perl programming. CPerl Mode has provided an excellent environment
+for coding; Emacs::PDE provides other common tools such as creating files
+using templates, smart compiling, @command{perldoc}, @command{perltidy},
+debugger, tags tree view and so on. PDE also provides an easy configuration
+for Perl programing, and a tutorial for novices to start using Emacs.")
+ (license license:perl-license)))
+
(define-public emacs-perspective
(package
(name "emacs-perspective")
--
2.41.0
^ permalink raw reply related [flat|nested] 11+ messages in thread