guix_mirror_bot pushed a commit to branch master
in repository guix.
commit 13aa09790af1b783050e99ce7c3e7ad068fe342a
Author: Zhu Zihao <[email protected]>
AuthorDate: Tue Oct 7 02:34:44 2025 +0800
gnu: Add guile-extensible-match.
* gnu/packages/guile-xyz.scm (guile-extensible-match): New variable.
Change-Id: I404519c6efcc6aec6656be1f965450ac23ac951d
Signed-off-by: Ludovic Courtès <[email protected]>
---
gnu/packages/guile-xyz.scm | 67 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index ad45984a06..9e053c7998 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2300,6 +2300,73 @@ format.")
#~(cons "guile_effective_version=2.2"
#$make-flags))))))
+(define-public guile-extensible-match
+ (package
+ (name "guile-extensible-match")
+ (version "0.75.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://codeberg.org/dpk/extensible-match")
+ ;; This commit is 1 commit ahead of tag v0.75.1,
+ ;; includes a patch remove SRFI-151 dependency, which
+ ;; is not packaged in Guix.
+ (commit "d2d32e0e09d37c78dbdd4fedd1af1c6dd3663bb6")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1b2a7cl2fax6ysb5dj7ssy89w4w8xbn3iwc9ffb0p7948sxw7xgx"))))
+ (build-system guile-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'adjust-files-for-guile
+ (lambda _args
+ ;; This is not needed for us.
+ (delete-file-recursively "impl-lib")
+
+ ;; Delete test files.
+ (delete-file "extensible-match-test.sls")
+ (delete-file "extensible-match/internal-tests.sls")
+
+ ;; Rename all file with *.sls to *.scm, if there's Guile's
+ ;; specific implementation (*.guile.sls), make it override the
+ ;; generic one.
+ (rename-file "extensible-match/pattern-syntax.guile.sls"
+ "extensible-match/pattern-syntax.sls")
+ (for-each
+ (lambda (sls)
+ (rename-file sls (string-append
+ (string-drop-right sls 3)
+ "scm")))
+ (find-files "." ".*\\.sls$"))
+
+ ;; Missing SRFI-244, but it's too trivial to be a single package.
+ (substitute* "extensible-match/match.scm"
+ (("\\(srfi :244 define-values\\)")
+ "(only (guile) define-values)"))))
+
+ (add-after 'adjust-files-for-guile 'fix-srfi-naming
+ (lambda _arg
+ (substitute* (find-files "srfi" ".*\\.scm$")
+ (("\\(srfi :262") "(srfi srfi-262"))
+
+ (rename-file "srfi/:262.scm" "srfi/srfi-262.scm")
+ (rename-file "srfi/:262" "srfi/srfi-262"))))))
+ (native-inputs (list guile-3.0))
+ (propagated-inputs (list guile-srfi-133))
+ (home-page "https://codeberg.org/dpk/extensible-match")
+ (synopsis
+ "Extensible patter-matching library")
+ (description
+ "Guile-extensible-match is an implementation of SRFI-262. It provides
+user extensible pattern matching syntax. This implementation use a range
+of optimizations to generate efficient matching code.")
+ (license license:expat)))
+
(define-public guile-newra
;; There has been no release let.
(let ((commit "266e72ef433cab44f60f8595e2435247b225d457")