Start storing channel instance derivations
These are the ones that relate to Guix pull.
This commit is contained in:
parent
406aa5e160
commit
9be7dbac0b
8 changed files with 110 additions and 11 deletions
|
|
@ -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
|
||||
|
|
|
|||
52
guix-data-service/model/channel-instance.scm
Normal file
52
guix-data-service/model/channel-instance.scm
Normal 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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue