aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorPierre Neidhardt <mail@ambrevar.xyz>2021-11-16 11:53:02 +0100
committerPierre Neidhardt <mail@ambrevar.xyz>2021-11-16 12:51:45 +0100
commite31d48d8db09e723727eeadbeea22d677f5d1d52 (patch)
tree7c1adc94d4f8860553a6ea6c7d8e1e08dbbc33c6 /gnu
parent2d55463053b411a4f034ca1ef65be615907b6012 (diff)
downloadguix-e31d48d8db09e723727eeadbeea22d677f5d1d52.tar
guix-e31d48d8db09e723727eeadbeea22d677f5d1d52.tar.gz
gnu: Add cl-https-everywhere.
* gnu/packages/lisp-xyz.scm (cl-https-everywhere, sbcl-cl-https-everywhere): New variables.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/lisp-xyz.scm82
1 files changed, 82 insertions, 0 deletions
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 4b17c173c9..da1a08edd7 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -19264,3 +19264,85 @@ Vernacular builds on Overlord and is inspired by Racket.")
(define-public cl-vernacular
(sbcl-package->cl-source-package sbcl-vernacular))
+
+(define-public sbcl-cl-https-everywhere
+ ;; No release.
+ (let ((commit "cbcc73b985a5b1c0ce0d4ec38bc982a0538d4bd8"))
+ (package
+ (name "sbcl-cl-https-everywhere")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruricolist/cl-https-everywhere/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1wcvx1icwym1ncd6wl1wxzkyyndrm796caalbklvjd4a2cbl3xxi"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("global-vars" ,sbcl-global-vars)
+ ("parenscript" ,sbcl-parenscript)
+ ("cl-markdown" ,sbcl-cl-markdown)
+ ("cl-tld" ,sbcl-cl-tld)
+ ("fxml" ,sbcl-fxml)
+ ("overlord" ,sbcl-overlord)
+ ("ppcre" ,sbcl-cl-ppcre)
+ ("serapeum" ,sbcl-serapeum)
+ ("trivial-gray-streams" ,sbcl-trivial-gray-streams)
+ ("vernacular" ,sbcl-vernacular)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)
+ ("https-everywhere"
+ ,(let ((commit "78d3425aef62d79da2c63c0fcd89ae9837af9a09"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/EFForg/https-everywhere")
+ (commit commit)))
+ (file-name (git-file-name "https-everywhere"
+ (git-version "2021.7.13" "1" commit)))
+ (sha256
+ (base32
+ "1bx5895lbsddx449mcvvss4dlvi07xsh4d2qnajsdvais6fpckh8")))))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'link-https-everywhere-repo
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((https-everywhere (assoc-ref inputs "https-everywhere")))
+ (symlink https-everywhere "https-everywhere"))))
+ (add-after 'unpack 'fix-overlord-build
+ ;; Upstream bugs? See
+ ;; https://github.com/ruricolist/cl-https-everywhere/issues/1.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (rulesets.xml (string-append out "/share/common-lisp/" (%lisp-type)
+ "/cl-https-everywhere/rulesets.xml")))
+ (substitute* "build.lisp"
+ (("\\(depends-on https-everywhere-version\\)") "")
+ ;; Don't rebuild the rulesets just because the timestamp is epoch.
+ (("\\(vernacular:require-default :cl-https-everywhere/rulesets-file \"rulesets.xml\"\\)")
+ (format #f "(if (uiop:file-exists-p ~s)
+ (compile-rulesets ~s)
+ (vernacular:require-default :cl-https-everywhere/rulesets-file \"rulesets.xml\"))"
+ rulesets.xml
+ rulesets.xml))
+ (("\\(uiop:parse-unix-namestring \"https-everywhere/src/chrome/content/rules/\\*\\.xml\")")
+ "\"https-everywhere/src/chrome/content/rules/*.xml\"")
+ (("\\(out temp :external-format :utf-8\\)")
+ "(out temp :external-format :utf-8 :if-exists :supersede)")))
+ #t)))))
+ (home-page "https://github.com/ruricolist/cl-https-everywhere/")
+ (synopsis "Use HTTPS Everywhere rules from Lisp")
+ (description
+ "CL-HTTPS-EVERYWHERE parses HTTPS Everywhere rulesets and makes them
+available for use in Lisp programs.")
+ (license (list license:expat
+ ;; For the ruleset
+ license:gpl2+)))))
+
+(define-public cl-https-everywhere
+ (sbcl-package->cl-source-package sbcl-cl-https-everywhere))