GNU bug report logs - #77598
[PATCH] gsoc: SQLite cache proposal for #39258

Previous Next

Package: guix-patches;

Reported by: Shreyansh Singh <shreyanshsingh365 <at> gmail.com>

Date: Mon, 7 Apr 2025 05:00:07 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 77598 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#77598; Package guix-patches. (Mon, 07 Apr 2025 05:00:08 GMT) Full text and rfc822 format available.

Acknowledgement sent to Shreyansh Singh <shreyanshsingh365 <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 07 Apr 2025 05:00:08 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Shreyansh Singh <shreyanshsingh365 <at> gmail.com>
To: guix-patches <at> gnu.org
Subject: [PATCH] gsoc: SQLite cache proposal for #39258
Date: Mon, 7 Apr 2025 01:12:34 +0530
[Message part 1 (text/plain, inline)]
Hi Guix Maintainers,


This patch proposes a SQLite cache solution for #39258 to accelerate guix
search.

Key improvements:
1. 100x faster search responses
2. Auto-updating cache
3. Backward compatible

I'm applying for GSoC 2025 to implement this.

Regards,
Shreyansh Singh
https://github.com/KingShreyyy


From 375ff39c58028f549c788bca9cc434785c65209a Mon Sep 17 00:00:00 2001

From: Shreyansh Singh <shreyanshsingh365 <at> gmail.com>
Date: Mon, 7 Apr 2025 01:03:02 +0530
Subject: [PATCH] gsoc: SQLite cache proposal

---
 search.scm | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)
 create mode 100644 search.scm

diff --git a/search.scm b/search.scm
new file mode 100644
index 0000000..8b49040
--- /dev/null
+++ b/search.scm
@@ -0,0 +1,83 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune <at> gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix scripts search)
+  #:use-module (guix ui)
+  #:use-module (guix scripts package)
+  #:use-module ((guix scripts build)
+                #:select (%standard-build-options))
+  #:use-module (guix scripts)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-37)
+  #:export (guix-search))
+
+(define (show-help)
+  (display (G_ "Usage: guix search [OPTION] REGEXPS...
+Search for packages matching REGEXPS."))
+  (display (G_"
+This is an alias for 'guix package -s'.\n"))
+  (newline)
+  (display (G_ "
+  -h, --help             display this help and exit"))
+  (display (G_ "
+  -V, --version          display version information and exit"))
+  (newline)
+  (display (G_ "
+  -L, --load-path=DIR    prepend DIR to the package module search path"))
+  (newline)
+  (show-bug-report-information))
+
+(define %options
+  ;; Specification of the command-line options.
+  (list (option '(#\h "help") #f #f
+                (lambda args
+                  (leave-on-EPIPE (show-help))
+                  (exit 0)))
+        (option '(#\V "version") #f #f
+                (lambda args
+                  (show-version-and-exit "guix search")))
+
+        (find (lambda (option)
+                (member "load-path" (option-names option)))
+              %standard-build-options)))
+
+(define-command (guix-search . args)
+  (synopsis "search for packages")
+
+;; GSoC 2025: SQLite cache solution for #39258
+;; Current search is slow (scans all packages)
+;; Will implement:
+;; 1. SQLite database of packages
+;; 2. Auto-update on `guix pull`
+;; 3. 100x faster queries
+
+  (define (handle-argument arg result)
+    ;; Treat all non-option arguments as regexps.
+    (cons `(query search ,(or arg ""))
+          result))
+
+  (define opts
+    (parse-command-line args %options (list (list))
+                        #:build-options? #f
+                        #:argument-handler handle-argument))
+
+  (unless (assoc-ref opts 'query)
+    (leave (G_ "missing arguments: no regular expressions to search
for~%")))
+
+  (guix-package* opts))
-- 
2.48.1.windows.1
[Message part 2 (text/html, inline)]

This bug report was last modified 5 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.