summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/web.scm55
1 files changed, 55 insertions, 0 deletions
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 301e64b299..becbf744a1 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -32,6 +32,9 @@
   #:use-module (gnu packages autotools)
   #:use-module ((gnu packages compression) #:select (zlib))
   #:use-module (gnu packages openssl)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages which)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages curl)
@@ -144,6 +147,58 @@ for efficient socket-like bidirectional reliable communication channels.")
     ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
     (license l:lgpl2.1)))
 
+(define-public libpsl
+  (package
+    (name "libpsl")
+    (version "0.6.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/rockdaboot/libpsl/"
+                                  "archive/" version ".tar.gz"))
+              (sha256
+               (base32
+                "10s7xxxx6pp4ydp3san69sa6q379ih3pv92fyi565ggmlw8igv7a"))))
+    (build-system gnu-build-system)
+    (inputs `(("icu4c" ,icu4c)))
+    ;; The release tarball lacks the generated files.
+    (native-inputs `(("autoconf" ,autoconf)
+                     ("automake" ,automake)
+                     ("gettext"  ,gnu-gettext)
+                     ("which"    ,which)
+                     ("libtool"  ,libtool)
+                     ("libtool"  ,libtool "bin")))
+    (arguments
+     `(#:phases (alist-cons-before
+                 'bootstrap 'fix-autogen-shebang
+                 (lambda _
+                   (substitute* "autogen.sh"
+                     ;; Removing -e as it causes the whole script to fail when
+                     ;; `which gtkdocize` fails.
+                     (("# !/bin/sh -e") (string-append "#!" (which "sh")))))
+                 (alist-cons-before
+                  'patch-usr-bin-file 'bootstrap
+                  (lambda _
+                    (zero? (system* "./autogen.sh")))
+                  %standard-phases))))
+    (home-page "https://github.com/rockdaboot/libpsl")
+    (synopsis "C library for the Publix Suffix List")
+    (description
+     "A \"public suffix\" is a domain name under which Internet users can
+directly register own names.
+
+Browsers and other web clients can use it to avoid privacy-leaking
+\"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain
+highlighting parts of the domain in a user interface, and sorting domain lists
+by site.
+
+Libpsl has built-in PSL data for fast access, allows to load PSL data from
+files, checks if a given domain is a public suffix, provides immediate cookie
+domain verification, finds the longest public part of a given domain, finds
+the shortest private part of a given domain, works with international
+domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008
+UTS#46")
+    (license l:x11)))
+
 (define-public perl-html-tagset
   (package
     (name "perl-html-tagset")