summaryrefslogtreecommitdiff
path: root/gnu/packages/search.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/search.scm')
-rw-r--r--gnu/packages/search.scm260
1 files changed, 211 insertions, 49 deletions
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index 44d5b631ca..ea1c555201 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -2,11 +2,13 @@
;;; Copyright © 2014 Mark H Weaver <[email protected]>
;;; Copyright © 2015, 2016 Eric Bavier <[email protected]>
;;; Copyright © 2017 Thomas Danckaert <[email protected]>
-;;; Copyright © 2017 Ricardo Wurmus <[email protected]>
+;;; Copyright © 2017, 2021 Ricardo Wurmus <[email protected]>
;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <[email protected]>
;;; Copyright © 2018 Adam Massmann <[email protected]>
;;; Copyright © 2020 Hartmut Goebel <[email protected]>
;;; Copyright © 2021 Vinicius Monego <[email protected]>
+;;; Copyright © 2021 Alexandr Vityazev <[email protected]>
+;;; Copyright © 2021, 2022 Nicolas Goaziou <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -33,25 +35,39 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
+ #:use-module (guix build-system meson)
#:use-module (gnu packages)
+ #:use-module (gnu packages aspell)
+ #:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages ebook)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gawk)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages groff)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages icu4c)
#:use-module (gnu packages less)
#:use-module (gnu packages linux)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pdf)
+ #:use-module (gnu packages photo)
#:use-module (gnu packages python)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages qt)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages time)
#:use-module (gnu packages web)
#:use-module (gnu packages xdisorg)
- #:use-module (gnu packages xml))
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages pkg-config))
(define-public xapian
(package
@@ -65,8 +81,8 @@
(sha256
(base32 "0xsb4ihf3p767f0zx9p4janwni6r9sg5j6lry0002i8hmnsdnv8r"))))
(build-system gnu-build-system)
- (inputs `(("zlib" ,zlib)
- ("util-linux" ,util-linux "lib")))
+ (inputs (list zlib
+ `(,util-linux "lib")))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -112,11 +128,9 @@ rich set of boolean query operators.")
(package-version python))
"/site-packages/xapian"))))
(native-inputs
- `(("python-sphinx" ,python-sphinx))) ;for documentation
+ (list python-sphinx)) ;for documentation
(inputs
- `(("python" ,python)
- ("xapian" ,xapian)
- ("zlib" ,zlib)))
+ (list python xapian zlib))
(synopsis "Python bindings for the Xapian search engine library")
(license gpl2+)))
@@ -133,9 +147,9 @@ rich set of boolean query operators.")
(base32 "1pbl8pbgmbs3i8yik4p63g4pd9bhn0dp3d7l667dkvw0kccl66c7"))))
(build-system perl-build-system)
(native-inputs
- `(("perl-devel-leak" ,perl-devel-leak)))
+ (list perl-devel-leak))
(inputs
- `(("xapian" ,xapian)))
+ (list xapian))
(home-page "https://metacpan.org/release/Search-Xapian")
(synopsis "Perl XS frontend to the Xapian C++ search library")
(description
@@ -157,8 +171,8 @@ simplified, more 'perlish' interface to some common operations.")
(base32
"1kd2jd74m8ksc8s7hh0haz0q0c3n0mr39bbky262kk4l58f1g068"))))
(build-system gnu-build-system)
- (native-inputs `(("catch" ,catch-framework)))
- (inputs `(("unqlite" ,unqlite)))
+ (native-inputs (list catch-framework))
+ (inputs (list unqlite))
(arguments
`(#:phases (modify-phases %standard-phases
(add-before 'configure 'chdir-source
@@ -195,8 +209,7 @@ files and directories.")
(source (package-source libtocc))
(build-system gnu-build-system)
(inputs
- `(("libtocc" ,libtocc)
- ("unqlite" ,unqlite)))
+ (list libtocc unqlite))
(arguments
`(#:tests? #f ;No tests
#:phases (modify-phases %standard-phases
@@ -241,18 +254,18 @@ command line tool for interacting with libtocc.")
(("requests\\[socks\\]==2.25.1") "requests>=2.25")
(("==") ">=")))))))
(propagated-inputs
- `(("python-babel" ,python-babel)
- ("python-certifi" ,python-certifi)
- ("python-dateutil" ,python-dateutil)
- ("python-flask" ,python-flask)
- ("python-flask-babel" ,python-flask-babel)
- ("python-idna" ,python-idna)
- ("python-jinja2" ,python-jinja2)
- ("python-langdetect" ,python-langdetect)
- ("python-lxml" ,python-lxml)
- ("python-pygments" ,python-pygments)
- ("python-pyyaml" ,python-pyyaml)
- ("python-requests" ,python-requests)))
+ (list python-babel
+ python-certifi
+ python-dateutil
+ python-flask
+ python-flask-babel
+ python-idna
+ python-jinja2
+ python-langdetect
+ python-lxml
+ python-pygments
+ python-pyyaml
+ python-requests))
(home-page "https://searx.github.io/searx/")
(synopsis "Privacy-respecting metasearch engine")
(description "Searx is a privacy-respecting, hackable metasearch engine.")
@@ -283,6 +296,133 @@ accounting for new lines and paragraph changes. It also has robust support
for parsing HTML files.")
(license gpl3+)))
+(define-public fsearch
+ (package
+ (name "fsearch")
+ (version "0.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cboxdoerfer/fsearch")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0vfwnx83zs0jymmzjww1k597sj3wvc9xq0nbslwci58rjpk3d0lg"))))
+ (build-system meson-build-system)
+ (native-inputs
+ (list autoconf
+ automake
+ gettext-minimal
+ `(,glib "bin") ;for glib-compile-resources
+ intltool
+ libtool
+ pkg-config))
+ (inputs
+ (list gtk+ icu4c pcre))
+ (home-page "https://github.com/cboxdoerfer/fsearch")
+ (synopsis "Fast file search utility")
+ (description
+ "FSearch is a fast file search utility, inspired by Everything
+Search Engine. It is written in C and based on GTK3.")
+ (license gpl2+)))
+
+(define-public recoll
+ (package
+ (name "recoll")
+ (version "1.31.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.lesbonscomptes.com/recoll/"
+ "recoll-" version ".tar.gz"))
+ (sha256
+ (base32 "0m1w5hf2n09lbzmzvlrm2lks4lci9vvjxy2mcmgb2avgly7v5vfk"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--disable-webkit"
+ "--disable-python-module"
+ "--without-systemd"
+ (string-append "QMAKEPATH=" (assoc-ref %build-inputs "qtbase")
+ "/bin/qmake"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-default-data-dir
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "python/recoll/recoll/rclconfig.py"
+ (("/opt/local")
+ (assoc-ref outputs "out")))))
+ (add-after 'install 'wrap-filters
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (mapping
+ '(("rclps"
+ "poppler")
+ ("rclpdf.py"
+ "poppler")
+ ("rclpurple"
+ "gawk")
+ ("rcllyx"
+ "libiconv")
+ ("rcltex"
+ "libiconv")
+ ("rclkwd"
+ "unzip" "gzip" "tar" "libxslt")
+ ("rclman"
+ "groff")
+ ("rclgaim"
+ "gawk" "libiconv")
+ ("rclaptosidman"
+ "sed")
+ ("rclscribus"
+ "grep" "gawk" "sed"))))
+ (for-each
+ (lambda (program packages)
+ (wrap-program (string-append out "/share/recoll/filters/" program)
+ `("PATH" ":" prefix
+ ,(map (lambda (i)
+ (string-append (assoc-ref inputs i) "/bin"))
+ packages))))
+ (map car mapping)
+ (map cdr mapping))
+
+ (wrap-program (string-append out "/share/recoll/filters/rclimg")
+ `("PERL5LIB" ":" prefix
+ (,(getenv "PERL5LIB"))))))))))
+ (inputs
+ (list aspell
+ chmlib
+ inotify-tools
+ libxslt
+ libxml2
+ python
+ qtbase-5
+ unzip
+ xapian
+ zlib
+ ;; For filters
+ gawk
+ grep
+ groff
+ gzip
+ libiconv
+ perl
+ perl-image-exiftool
+ poppler
+ sed
+ tar))
+ (native-inputs
+ (list pkg-config which))
+ (home-page "https://www.lesbonscomptes.com/recoll/")
+ (synopsis "Find documents based on their contents or file names")
+ (description "Recoll finds documents based on their contents as well as
+their file names. It can search most document formats, but you may need
+external applications for text extraction. It can reach any storage place:
+files, archive members, email attachments, transparently handling
+decompression.")
+ (license gpl2+)))
+
(define-public hyperestraier
(package
(name "hyperestraier")
@@ -296,8 +436,7 @@ for parsing HTML files.")
(base32
"1qk3pxgzyrpcz5qfyd5xs2hw9q1cbb7j5zd4kp1diq501wcj2vs9"))))
(inputs
- `(("qdbm" ,qdbm)
- ("zlib" ,zlib)))
+ (list qdbm zlib))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
@@ -333,6 +472,35 @@ with slocate, and attempts to be compatible to GNU locate when it does not
conflict with slocate compatibility.")
(license gpl2)))
+(define-public plocate
+ (package
+ (name "plocate")
+ (version "1.1.13")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://plocate.sesse.net/download/"
+ "plocate-" version ".tar.gz"))
+ (sha256
+ (base32 "16lpiirjmj4mrdj5kkjv7rikkgjx3i64ac0sl3lz1rshflhxgqww"))))
+ (build-system meson-build-system)
+ (arguments
+ `(#:configure-flags
+ (list
+ (string-append
+ "--sharedstatedir=" (assoc-ref %outputs "out") "/var"))))
+ (inputs
+ (list liburing
+ `(,zstd "lib")))
+ (native-inputs
+ (list pkg-config))
+ (home-page "https://plocate.sesse.net/")
+ (synopsis "Faster locate")
+ (description "Plocate is a @code{locate} based on posting lists,
+completely replacing @command{mlocate} with a faster and smaller index. It is
+suitable as a default locate on your system.")
+ (license gpl2)))
+
(define-public swish-e
(package
(name "swish-e")
@@ -358,11 +526,8 @@ conflict with slocate compatibility.")
;; building: xpdf, catdoc, MP3::Tag, Spreadsheet::ParseExcel,
;; HTML::Entities.
(inputs
- `(("perl" ,perl)
- ("perl-uri" ,perl-uri)
- ("perl-html-parser" ,perl-html-parser)
- ("perl-html-tagset" ,perl-html-tagset)
- ("perl-mime-types" ,perl-mime-types)))
+ (list perl perl-uri perl-html-parser perl-html-tagset
+ perl-mime-types))
(arguments
`(;; XXX: This fails to build with zlib (API mismatch) and tests fail
;; with libxml2, so disable both.
@@ -412,17 +577,14 @@ search the generated indexes.")
"0ykz6hn3qj46w3c99d6q0pi5ncq2894simcl7vapv047zm3cylmd"))))
(build-system python-build-system)
(propagated-inputs
- `(("poppler" ,poppler)
- ("python-urwid" ,python-urwid)
- ("xclip" ,xclip)
- ("xdg-utils" ,xdg-utils)))
+ (list poppler python-urwid xclip xdg-utils))
(inputs
- `(("python-latexcodec" ,python-latexcodec)
- ("python-pybtex" ,python-pybtex)
- ("python-pycurl" ,python-pycurl)
- ("python-pyyaml" ,python-pyyaml)
- ("python-six" ,python-six)
- ("python-xapian-bindings" ,python-xapian-bindings)))
+ (list python-latexcodec
+ python-pybtex
+ python-pycurl
+ python-pyyaml
+ python-six
+ python-xapian-bindings))
(arguments
`(#:modules ((ice-9 rdelim)
(guix build python-build-system)
@@ -490,12 +652,12 @@ bibliographic data and simple document and bibtex retrieval.")
#t))))
(build-system gnu-build-system)
(inputs
- `(("bzip2" ,bzip2)
- ("less" ,less)
- ("lz4" ,lz4)
- ("lzip" ,lzip) ;; lzma
- ("pcre2" ,pcre2)
- ("zlib" ,zlib)))
+ (list bzip2
+ less
+ lz4
+ lzip ;; lzma
+ pcre2
+ zlib))
(arguments
`(#:tests? #f ; no way to rebuild the binary input files
#:test-target "test"