gnu: Add cppawk and cppawk-egawk.
* gnu/packages/gawk.scm (cppawk, cppawk-egawk): New variables. Signed-off-by: Ludovic Courtès <ludo@gnu.org>master
parent
1fed71ce19
commit
e07fa9b040
|
@ -23,12 +23,16 @@
|
|||
(define-module (gnu packages gawk)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages libsigsegv)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system copy)
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
(define-public gawk
|
||||
|
@ -160,3 +164,84 @@ block-scoped lexical variables."))))
|
|||
This version aims to be smaller and faster than GNU Awk, at the expense
|
||||
of fewer features and extensions.")
|
||||
(license license:gpl2))) ;version 2 only
|
||||
|
||||
(define-public cppawk
|
||||
(package
|
||||
(name "cppawk")
|
||||
(version "20220703")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://www.kylheku.com/git/cppawk")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0b09757q81sz4gn62k3mv5bgllyb2v5m64346s8fc99mqqif70cx"))))
|
||||
(build-system copy-build-system)
|
||||
(arguments
|
||||
`(#:install-plan '(("bin/cppawk" "bin/cppawk")
|
||||
("share/cppawk/include" "share/cppawk/include")
|
||||
("./" "share/man/man1" #:include-regexp (".*\\.1$")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-paths
|
||||
(lambda _
|
||||
(substitute* "bin/cppawk"
|
||||
(("/bin/bash") (which "bash"))
|
||||
(("dirname") (which "dirname"))
|
||||
(("mktemp") (which "mktemp"))
|
||||
;; Extra space to prevent matching Awk's printf.
|
||||
(("printf ") (string-append (which "printf") " "))
|
||||
(("rm -f") (string-append (which "rm") " -f"))
|
||||
(("prepro=cpp") (string-append "prepro=" (which "cpp")))
|
||||
(("sed -e") (string-append (which "sed") " -e")))))
|
||||
(add-after 'fix-paths 'fix-awk-paths
|
||||
(lambda _
|
||||
(substitute* "bin/cppawk"
|
||||
(("awk=gawk") (string-append "awk=" (which "gawk")))
|
||||
(("awk '") (string-append (which "gawk") " '")))))
|
||||
(add-after 'build 'check
|
||||
(lambda _
|
||||
(invoke "./runtests"))))))
|
||||
(native-inputs
|
||||
;; For tests
|
||||
(list mawk))
|
||||
(inputs
|
||||
(list coreutils ; For dirname, mktemp, printf, rm
|
||||
gawk-mpfr ; Default variant, but supports others
|
||||
gcc ; For cpp
|
||||
sed))
|
||||
(home-page "https://www.kylheku.com/cgit/cppawk/")
|
||||
(synopsis "Wrapper script that adds C preprocessing to Awk")
|
||||
(description
|
||||
"@command{cppawk} is a shell script that invokes the C preprocessor
|
||||
(@command{cpp}) on Awk code and calls Awk (by default GNU Awk) on the result.
|
||||
|
||||
@command{cppawk} understands the basic Awk options like @option{-F} and
|
||||
@option{-v}, and also understands common @command{cpp} options like
|
||||
@option{-I} and @option{-Dmacro=value}.
|
||||
|
||||
@command{cppawk} has no dependencies beyond Awk, @command{cpp}, @command{sed}
|
||||
and some GNU core utilities (including @command{printf}). Preprocessed
|
||||
programs can be captured and transferred to systems that have Awk but not
|
||||
@command{cpp} or @command{cppawk}.")
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public cppawk-egawk
|
||||
(package/inherit cppawk
|
||||
(name "cppawk-egawk")
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments cppawk)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(replace 'fix-awk-paths
|
||||
(lambda _
|
||||
(substitute* "bin/cppawk"
|
||||
(("awk=gawk") (string-append "awk=" (which "egawk")))
|
||||
(("awk '") (string-append (which "egawk") " '")))))))))
|
||||
(inputs
|
||||
(modify-inputs (package-inputs cppawk)
|
||||
(delete "gawk-mpfr")
|
||||
(prepend egawk-next)))
|
||||
(synopsis "cppawk that calls Enhanced GNU Awk by default")))
|
||||
|
|
Reference in New Issue