* gnu/packages/search.scm (ugrep): New Variable. --- gnu/packages/search.scm | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index 0a5fa38b30..2db7f9c48f 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -26,6 +26,7 @@ #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11 perl-license)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) @@ -36,6 +37,7 @@ #:use-module (gnu packages databases) #:use-module (gnu packages freedesktop) #:use-module (gnu packages linux) + #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pdf) #:use-module (gnu packages python) @@ -414,4 +416,68 @@ online libraries. It provides fast search of document text and bibliographic data and simple document and bibtex retrieval.") (license gpl3+))) +(define-public ugrep + (package + (name "ugrep") + (version "3.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Genivia/ugrep") + (commit (string-append "v" version)))) + (sha256 + (base32 "136pcxb4rykflnvlm1zjj6ksdr0c9bhcvyzixkixmix5s122q6jz")) + (file-name (string-append name "-" version "-checkout")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "bin") ;; pre-build executables + ;; TODO: If there is a script for rebuilding them, remove + ;; archives, pdf and .class in tests/ + #t)))) + (build-system gnu-build-system) + (inputs + `(("bzip2" ,bzip2) + ("lz4" ,lz4) + ("lzip" ,lzip) ;; lzma + ("pcre2" ,pcre2) + ("zlib" ,zlib))) + (arguments + `(#:configure-flags '("--enable-pager"))) + (home-page "https://github.com/Genivia/ugrep/") + (synopsis "Faster grep with an interactive query UI") + (description "Universal grep: ultra fast searcher of file systems, text +and binary files, source code, archives, compressed files, documents, and +more. + +The main features include: + +@itemize +@item Written in clean and efficient C++11, built for speed +@item Ultra fast with new match algorithms beating grep, ripgrep, silver + searcher, hyperscan, etc. +@item Multi-threaded search using high-performance lock-free job queue stealing +@item Multi-threaded task-parallel decompression and search +@item Optimized pattern matching (AVX, SSE2, ARM NEON/AArch64) +@item Optimized asynchronous IO for efficient concurrent searching +@item Thoroughly tested (includes over 1000 test cases) +@item Compatible with the standard GNU/BSD grep command-line options +@item Comprehensive how-to tutorial for beginners to advanced users +@item Interactive query UI to enter search patterns +@item Select files to search by file types, filename suffix, and \"magic bytes\" +@item Search archives (cpio, jar, tar, pax, zip) +@item Search compressed files (zip, gz, Z, bz, bz2, lzma, xz) +@item Search pdf, doc, docx, xls, xlxs, and more using filters +@item Search binary files and display hexdumps with binary pattern matches +@item Search UTF-encoded files with Unicode pattern matches (by default) +@item Search files encoded in ISO-8859-1 thru 16, CP 437, CP 850, MAC, KOI8, etc. +@item Search files excluding files specified by .gitignore etc. +@item Search patterns across newlines, matching multiple lines at once +@item Search patterns excluding negative patterns (\"match this but not that\") +@item Includes predefined regex patterns to search source code, XML, JSON, HTML +@item Output results in CSV, JSON, XML, and user-specified formats +@item Sort matching files by name, size, and time +@end itemize") + (license bsd-3))) + ;;; search.scm ends here -- 2.21.3
* gnu/packages/search.scm (ugrep): New Variable. --- gnu/packages/search.scm | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index 0a5fa38b30..a7b5e1e383 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11 perl-license)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) @@ -35,7 +37,9 @@ #:use-module (gnu packages check) #:use-module (gnu packages databases) #:use-module (gnu packages freedesktop) + #: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 python) @@ -414,4 +418,77 @@ online libraries. It provides fast search of document text and bibliographic data and simple document and bibtex retrieval.") (license gpl3+))) +(define-public ugrep + (package + (name "ugrep") + (version "3.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Genivia/ugrep") + (commit (string-append "v" version)))) + (sha256 + (base32 "136pcxb4rykflnvlm1zjj6ksdr0c9bhcvyzixkixmix5s122q6jz")) + (file-name (string-append name "-" version "-checkout")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "bin") ;; pre-build executables + ;; TODO: If there is a script for rebuilding them, remove + ;; archives, pdf and .class in tests/ + #t)))) + (build-system gnu-build-system) + (inputs + `(("bzip2" ,bzip2) + ("less" ,less) + ("lz4" ,lz4) + ("lzip" ,lzip) ;; lzma + ("pcre2" ,pcre2) + ("zlib" ,zlib))) + (arguments + `(#:configure-flags '("--enable-pager") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-paths-to-binaries + (lambda* (#:key inputs #:allow-other-keys) + (let ((less (assoc-ref inputs "less"))) + (substitute* "src/ugrep.cpp" + (("(#\\s*define +DEFAULT_PAGER_COMMAND +\")(less\\W)" _ a b) + (string-append a less "/bin/" b))))))))) + (home-page "https://github.com/Genivia/ugrep/") + (synopsis "Faster grep with an interactive query UI") + (description "Universal grep: ultra fast searcher of file systems, text +and binary files, source code, archives, compressed files, documents, and +more. + +The main features include: + +@itemize +@item Written in clean and efficient C++11, built for speed +@item Ultra fast with new match algorithms beating grep, ripgrep, silver + searcher, hyperscan, etc. +@item Multi-threaded search using high-performance lock-free job queue stealing +@item Multi-threaded task-parallel decompression and search +@item Optimized pattern matching (AVX, SSE2, ARM NEON/AArch64) +@item Optimized asynchronous IO for efficient concurrent searching +@item Thoroughly tested (includes over 1000 test cases) +@item Compatible with the standard GNU/BSD grep command-line options +@item Comprehensive how-to tutorial for beginners to advanced users +@item Interactive query UI to enter search patterns +@item Select files to search by file types, filename suffix, and \"magic bytes\" +@item Search archives (cpio, jar, tar, pax, zip) +@item Search compressed files (zip, gz, Z, bz, bz2, lzma, xz) +@item Search pdf, doc, docx, xls, xlxs, and more using filters +@item Search binary files and display hexdumps with binary pattern matches +@item Search UTF-encoded files with Unicode pattern matches (by default) +@item Search files encoded in ISO-8859-1 thru 16, CP 437, CP 850, MAC, KOI8, etc. +@item Search files excluding files specified by .gitignore etc. +@item Search patterns across newlines, matching multiple lines at once +@item Search patterns excluding negative patterns (\"match this but not that\") +@item Includes predefined regex patterns to search source code, XML, JSON, HTML +@item Output results in CSV, JSON, XML, and user-specified formats +@item Sort matching files by name, size, and time +@end itemize") + (license bsd-3))) + ;;; search.scm ends here -- 2.21.3
Hi! Hartmut Goebel <h.goebel@crazy-compilers.com> skribis: > * gnu/packages/search.scm (ugrep): New Variable. [...] > + '(begin > + (delete-file-recursively "bin") ;; pre-build executables > + ;; TODO: If there is a script for rebuilding them, remove > + ;; archives, pdf and .class in tests/ Java .class files (is that it?) should definitely be removed. > + (description "Universal grep: ultra fast searcher of file systems, text > +and binary files, source code, archives, compressed files, documents, and > +more. > + > +The main features include: > + > +@itemize > +@item Written in clean and efficient C++11, built for speed > +@item Ultra fast with new match algorithms beating grep, ripgrep, silver > + searcher, hyperscan, etc. > +@item Multi-threaded search using high-performance lock-free job queue stealing > +@item Multi-threaded task-parallel decompression and search > +@item Optimized pattern matching (AVX, SSE2, ARM NEON/AArch64) > +@item Optimized asynchronous IO for efficient concurrent searching > +@item Thoroughly tested (includes over 1000 test cases) > +@item Compatible with the standard GNU/BSD grep command-line options > +@item Comprehensive how-to tutorial for beginners to advanced users > +@item Interactive query UI to enter search patterns > +@item Select files to search by file types, filename suffix, and \"magic bytes\" > +@item Search archives (cpio, jar, tar, pax, zip) > +@item Search compressed files (zip, gz, Z, bz, bz2, lzma, xz) > +@item Search pdf, doc, docx, xls, xlxs, and more using filters > +@item Search binary files and display hexdumps with binary pattern matches > +@item Search UTF-encoded files with Unicode pattern matches (by default) > +@item Search files encoded in ISO-8859-1 thru 16, CP 437, CP 850, MAC, KOI8, etc. > +@item Search files excluding files specified by .gitignore etc. > +@item Search patterns across newlines, matching multiple lines at once > +@item Search patterns excluding negative patterns (\"match this but not that\") > +@item Includes predefined regex patterns to search source code, XML, JSON, HTML > +@item Output results in CSV, JSON, XML, and user-specified formats > +@item Sort matching files by name, size, and time > +@end itemize") That’s too much detail, and it’s also bound to become stale as ugrep changes. Could you (1) start with a full sentence, and (2) give a high-level view of the features in 5–10 lines at most? Thanks, Ludo’.
* gnu/packages/search.scm (ugrep): New Variable. --- gnu/packages/search.scm | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index e261e64a7f..19f029a2bf 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11 perl-license)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) @@ -35,7 +37,9 @@ #:use-module (gnu packages check) #:use-module (gnu packages databases) #:use-module (gnu packages freedesktop) + #: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 python) @@ -413,4 +417,66 @@ online libraries. It provides fast search of document text and bibliographic data and simple document and bibtex retrieval.") (license gpl3+))) +(define-public ugrep + (package + (name "ugrep") + (version "3.1.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Genivia/ugrep") + (commit (string-append "v" version)))) + (sha256 + (base32 "0vywgpa97qw8ird3zcscvbkcjnvrj16sh9p6sm8vaklxp2q49xrz")) + (file-name (string-append name "-" version "-checkout")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "bin") ;; pre-build executables + (for-each delete-file (find-files "tests" "^archive\\..*")) + (for-each delete-file (find-files "tests" "^.*\\.pdf$")) + (for-each delete-file (find-files "tests" "^.*\\.class$")) + #t)))) + (build-system gnu-build-system) + (inputs + `(("bzip2" ,bzip2) + ("less" ,less) + ("lz4" ,lz4) + ("lzip" ,lzip) ;; lzma + ("pcre2" ,pcre2) + ("zlib" ,zlib))) + (arguments + `(#:configure-flags '("--enable-pager") + #:tests? #f ;; No script for re-building the binary test input-files + #:test-target "test" + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-paths-to-binaries + (lambda* (#:key inputs #:allow-other-keys) + (let ((less (assoc-ref inputs "less"))) + (substitute* "src/ugrep.cpp" + (("(#\\s*define +DEFAULT_PAGER_COMMAND +\")(less\\W)" _ a b) + (string-append a less "/bin/" b)))))) + (add-before 'check 'check-setup + (lambda _ + ;; unpatch shepengs in tests + (substitute* '("tests/Hello.bat" + "tests/Hello.sh") + (("#!/gnu/store/.*/bin/sh") "#!/bin/sh"))))))) + (home-page "https://github.com/Genivia/ugrep/") + (synopsis "Faster grep with an interactive query UI") + (description "Ugrep is a ultra fast searcher of file systems, text +and binary files, source code, archives, compressed files, documents, and +more. + +While still being compatible with the standard GNU/BSD grep command-line +options, ugrep supports fuzzy search as well as structured and (adjustable) +colored output, piped through \"less\" for pagination. An interactive query +UI allows refinement and has a built-in help (press F1). Ugrep implements +multi-threaded and other techniques to speed up search, pattern-matching and +decompression. Many pre-defined regexps ease searching e.g. C typdefs or XML +attributes. Results can be output in several structured or self-defined +formats.") + (license bsd-3))) + ;;; search.scm ends here -- 2.21.3
Hi Ludo, thanks for your feedback. You are absolutely right about the ugly list - thanks for pointing to this. I just updated the patch, also removing the blobs and appreciate to learn whether this now suites the Guix Quality ;-) Anyhow commiting this patch will take some time, since the programm currently crashes (https://github.com/Genivia/ugrep/issues/99). -- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible |
* gnu/packages/search.scm (ugrep): New Variable. --- gnu/packages/search.scm | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index e261e64a7f..2667096c44 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ bsd-3 x11 perl-license)) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) @@ -35,7 +37,9 @@ #:use-module (gnu packages check) #:use-module (gnu packages databases) #:use-module (gnu packages freedesktop) + #: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 python) @@ -413,4 +417,66 @@ online libraries. It provides fast search of document text and bibliographic data and simple document and bibtex retrieval.") (license gpl3+))) +(define-public ugrep + (package + (name "ugrep") + (version "3.1.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Genivia/ugrep") + (commit (string-append "v" version)))) + (sha256 + (base32 "1ydnpdhn1mp2pnbqzvwabrp573626k89kbv97fax6y1bz2pamrg4")) + (file-name (string-append name "-" version "-checkout")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "bin") ;; pre-build executables + (for-each delete-file (find-files "tests" "^archive\\..*")) + (for-each delete-file (find-files "tests" "^.*\\.pdf$")) + (for-each delete-file (find-files "tests" "^.*\\.class$")) + #t)))) + (build-system gnu-build-system) + (inputs + `(("bzip2" ,bzip2) + ("less" ,less) + ("lz4" ,lz4) + ("lzip" ,lzip) ;; lzma + ("pcre2" ,pcre2) + ("zlib" ,zlib))) + (arguments + `(#:configure-flags '("--enable-pager") + #:tests? #f ;; No script for re-building the binary test input-files + #:test-target "test" + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-paths-to-binaries + (lambda* (#:key inputs #:allow-other-keys) + (let ((less (assoc-ref inputs "less"))) + (substitute* "src/ugrep.cpp" + (("(#\\s*define +DEFAULT_PAGER_COMMAND +\")(less\\W)" _ a b) + (string-append a less "/bin/" b)))))) + (add-before 'check 'check-setup + (lambda _ + ;; unpatch shepengs in tests + (substitute* '("tests/Hello.bat" + "tests/Hello.sh") + (("#!/gnu/store/.*/bin/sh") "#!/bin/sh"))))))) + (home-page "https://github.com/Genivia/ugrep/") + (synopsis "Faster grep with an interactive query UI") + (description "Ugrep is a ultra fast searcher of file systems, text +and binary files, source code, archives, compressed files, documents, and +more. + +While still being compatible with the standard GNU/BSD grep command-line +options, ugrep supports fuzzy search as well as structured and (adjustable) +colored output, piped through \"less\" for pagination. An interactive query +UI allows refinement and has a built-in help (press F1). Ugrep implements +multi-threaded and other techniques to speed up search, pattern-matching and +decompression. Many pre-defined regexps ease searching e.g. C typdefs or XML +attributes. Results can be output in several structured or self-defined +formats.") + (license bsd-3))) + ;;; search.scm ends here -- 2.21.3
Hi Hartmut, Hartmut Goebel <h.goebel@crazy-compilers.com> skribis: > thanks for your feedback. You are absolutely right about the ugly list - > thanks for pointing to this. > > I just updated the patch, also removing the blobs and appreciate to > learn whether this now suites the Guix Quality ;-) Anyhow, the (guix swh) issue you stumbled upon shouldn’t block package contributions such as this one IMO. > Anyhow commiting this patch will take some time, since the programm > currently crashes (https://github.com/Genivia/ugrep/issues/99). Just to be clear, I haven’t reviewed the ugrep patch, but when you and whoever took a look deem it ready, feel free to push! Thanks, Ludo’.
Pushed as d8aa4444688ce244d2556630c3f7cfe739e01310 Thx for the review. -- Regards Hartmut Goebel | Hartmut Goebel | h.goebel@crazy-compilers.com | | www.crazy-compilers.com | compilers which you thought are impossible |