From patchwork Tue Jan 5 12:05:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hartmut Goebel X-Patchwork-Id: 26230 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 3D8AC27BC0D; Tue, 5 Jan 2021 12:06:19 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 40EB027BC0C for ; Tue, 5 Jan 2021 12:06:18 +0000 (GMT) Received: from localhost ([::1]:33184 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kwl6P-0007UV-8s for patchwork@mira.cbaines.net; Tue, 05 Jan 2021 07:06:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46464) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kwl6A-0007Tp-Cp for guix-patches@gnu.org; Tue, 05 Jan 2021 07:06:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:57662) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kwl6A-0001Eu-5I for guix-patches@gnu.org; Tue, 05 Jan 2021 07:06:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kwl69-00056d-VZ for guix-patches@gnu.org; Tue, 05 Jan 2021 07:06:01 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#45672] [PATCH v2] gnu: Add ugrep. Resent-From: Hartmut Goebel Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 05 Jan 2021 12:06:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 45672 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 45614@debbugs.gnu.org, 45672@debbugs.gnu.org X-Debbugs-Original-To: 45614@debbugs.gnu.org, guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.160984835019608 (code B ref -1); Tue, 05 Jan 2021 12:06:01 +0000 Received: (at submit) by debbugs.gnu.org; 5 Jan 2021 12:05:50 +0000 Received: from localhost ([127.0.0.1]:40975 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwl5y-00056A-6L for submit@debbugs.gnu.org; Tue, 05 Jan 2021 07:05:50 -0500 Received: from lists.gnu.org ([209.51.188.17]:55548) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kwl5x-000563-0z for submit@debbugs.gnu.org; Tue, 05 Jan 2021 07:05:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46396) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kwl5w-0007Qd-Sz for guix-patches@gnu.org; Tue, 05 Jan 2021 07:05:48 -0500 Received: from mail-out.m-online.net ([212.18.0.9]:53825) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kwl5u-00017B-3d for guix-patches@gnu.org; Tue, 05 Jan 2021 07:05:48 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4D9B5x6HDCz1qsZn; Tue, 5 Jan 2021 13:05:41 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4D9B5x4bV3z1sFWF; Tue, 5 Jan 2021 13:05:41 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id fYTV9beHUMNU; Tue, 5 Jan 2021 13:05:40 +0100 (CET) Received: from hermia.goebel-consult.de (ppp-188-174-58-71.dynamic.mnet-online.de [188.174.58.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPS; Tue, 5 Jan 2021 13:05:40 +0100 (CET) Received: from lenashee.fritz.box (lenashee.goebel-consult.de [192.168.110.2]) by hermia.goebel-consult.de (Postfix) with ESMTP id EB8FC60200; Tue, 5 Jan 2021 13:05:37 +0100 (CET) From: Hartmut Goebel Date: Tue, 5 Jan 2021 13:05:37 +0100 Message-Id: <48feb5af1c746731bd9623b01977fb6e6c9724b5.1609848284.git.h.goebel@crazy-compilers.com> X-Mailer: git-send-email 2.21.3 MIME-Version: 1.0 Received-SPF: none client-ip=212.18.0.9; envelope-from=h.goebel@crazy-compilers.com; helo=mail-out.m-online.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * 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 ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2018 Adam Massmann +;;; Copyright © 2020 Hartmut Goebel ;;; ;;; 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