me
/
guix
Archived
1
0
Fork 0

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
Paul A. Patience 2022-07-04 04:59:36 +00:00 committed by Ludovic Courtès
parent 1fed71ce19
commit e07fa9b040
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 85 additions and 0 deletions

View File

@ -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")))