Start storing channel instance derivations

These are the ones that relate to Guix pull.
This commit is contained in:
Christopher Baines 2020-02-11 08:56:24 +00:00
parent 406aa5e160
commit 9be7dbac0b
8 changed files with 110 additions and 11 deletions

View file

@ -35,6 +35,7 @@
#:use-module (guix-data-service config)
#:use-module (guix-data-service database)
#:use-module (guix-data-service model build)
#:use-module (guix-data-service model channel-instance)
#:use-module (guix-data-service model channel-news)
#:use-module (guix-data-service model package)
#:use-module (guix-data-service model package-derivation-by-guix-revision-range)
@ -1206,6 +1207,17 @@ ORDER BY packages.name, packages.version"
guix-revision-id
(extract-information-from conn guix-revision-id
commit store-item)
(insert-channel-instances conn
guix-revision-id
(filter-map
(match-lambda
((system . derivations)
(and=>
(assoc-ref derivations
'manifest-entry-item)
(lambda (drv)
(cons system drv)))))
channel-derivations-by-system))
(if (defined? 'channel-news-for-commit
(resolve-module '(guix channels)))
(log-time

View file

@ -0,0 +1,52 @@
;;; Guix Data Service -- Information about Guix over time
;;; Copyright © 2020 Christopher Baines <mail@cbaines.net>
;;;
;;; This program is free software: you can redistribute it and/or
;;; modify it under the terms of the GNU Affero General Public License
;;; as published by the Free Software Foundation, either version 3 of
;;; the License, or (at your option) any later version.
;;;
;;; This program 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
;;; Affero General Public License for more details.
;;;
;;; You should have received a copy of the GNU Affero General Public
;;; License along with this program. If not, see
;;; <http://www.gnu.org/licenses/>.
(define-module (guix-data-service model channel-instance)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:use-module (squee)
#:use-module (json)
#:use-module (guix utils)
#:use-module (guix-data-service model utils)
#:use-module (guix-data-service model derivation)
#:export (insert-channel-instances))
(define (insert-channel-instances conn
guix-revision-id
derivations-by-system)
(let ((derivation-ids
(derivation-file-names->derivation-ids
conn
(map cdr derivations-by-system))))
(exec-query
conn
(string-append
"
INSERT INTO channel_instances
(guix_revision_id, system, derivation_id)
VALUES "
(string-join
(map (lambda (system derivation-id)
(simple-format #f "(~A, '~A', ~A)"
guix-revision-id
system
derivation-id))
(map car derivations-by-system)
derivation-ids)
", "))))
#t)