;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Mathieu Othacehe ;;; ;;; 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 . (define-module (gnu image) #:use-module (gnu platform) #:use-module (guix records) #:export (partition partition? partition-device partition-size partition-offset partition-file-system partition-file-system-options partition-label partition-uuid partition-flags partition-initializer image image? image-name image-format image-platform image-size image-operating-system image-partitions image-compression? image-volatile-root? image-substitutable? image-type image-type? image-type-name image-type-constructor os->image os+platform->image)) ;;; ;;; Partition record. ;;; (define-record-type* partition make-partition partition? (device partition-device (default #f)) (size partition-size) (offset partition-offset (default 0)) (file-system partition-file-system (default "ext4")) (file-system-options partition-file-system-options (default '())) (label partition-label (default #f)) (uuid partition-uuid (default #f)) (flags partition-flags (default '())) (initializer partition-initializer (default #f))) ;;; ;;; Image record. ;;; (define-record-type* image make-image image? (name image-name ;symbol (default #f)) (format image-format) ;symbol (platform image-platform ; (default #f)) (size image-size ;size in bytes as integer (default 'guess)) (operating-system image-operating-system ; (default #f)) (partitions image-partitions ;list of (default '())) (compression? image-compression? ;boolean (default #t)) (volatile-root? image-volatile-root? ;boolean (default #t)) (substitutable? image-substitutable? ;boolean (default #t))) ;;; ;;; Image type. ;;; (define-record-type* image-type make-image-type image-type? (name image-type-name) ;symbol (constructor image-type-constructor)) ; -> ;;; ;;; Image creation. ;;; (define* (os->image os #:key type) (let ((constructor (image-type-constructor type))) (constructor os))) (define* (os+platform->image os platform #:key type) (image (inherit (os->image os #:type type)) (platform platform))) t/tests/store-database.scm?id=df2f6400b1fbc282ef4d6dd7124ea1c17adc23c2'>store: Remove 'register-path'....* guix/store.scm (register-path): Remove. * guix/nar.scm: Use (guix store database). * guix/scripts/system.scm: Likewise. * tests/store-database.scm: Remove #:hide (register-path). * tests/store.scm ("register-path"): Remove. Ludovic Courtès 2018-06-14database: 'sqlite-register' takes a database, not a file name....* guix/store/database.scm (sqlite-register): Remove #:db-file and add 'db' parameter. Remove #:schema and 'parameterize'. (register-path): Wrap 'sqlite-register' call in 'with-database' and in 'parameterize'. * tests/store-database.scm ("new database") ("register-path with unregistered references"): Adjust accordingly. Ludovic Courtès 2018-06-14database: Fail registration when encountering unregistered references....* guix/store/database.scm (add-reference-sql): Remove nested SELECT. (add-references): Expect REFERENCES to be a list of ids. (sqlite-register): Call 'path-id' for each of REFERENCES and pass it to 'add-references'. * tests/store-database.scm ("register-path with unregistered references"): New test. Ludovic Courtès 2018-06-14database: 'with-database' can now initialize new databases....* nix/libstore/schema.sql: Rename to... * guix/store/schema.sql: ... this. * Makefile.am (nobase_dist_guilemodule_DATA): Add it. * nix/local.mk (%D%/libstore/schema.sql.hh): Adjust accordingly. * guix/store/database.scm (sql-schema): New variable. (sqlite-exec, initialize-database, call-with-database): New procedures. (with-database): Rewrite in terms of 'call-with-database'. * tests/store-database.scm ("new database"): New test. * guix/self.scm (compiled-guix)[*core-modules*]: Add 'schema.sql' to #:extra-files. Ludovic Courtès 2018-06-01Add (gnu store database)....* guix/config.scm.in (%store-database-directory): New variable. * guix/store/database.scm: New file. * tests/store-database.scm: New file. * Makefile.am (STORE_MODULES): New variable. (MODULES, MODULES_NOT_COMPILED): Adjust accordingly. (SCM_TESTS) [HAVE_GUILE_SQLITE3]: Add tests/store-database.scm. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Caleb Ristvedt