[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/09: guix: register-path: use new %store-database-directory
From: |
Caleb Ristvedt |
Subject: |
05/09: guix: register-path: use new %store-database-directory |
Date: |
Mon, 12 Jun 2017 03:05:05 -0400 (EDT) |
reepca pushed a commit to branch guile-daemon
in repository guix.
commit b6d9b2675ccc7436109f5359cfacd49425c67b73
Author: Caleb Ristvedt <address@hidden>
Date: Mon Jun 5 22:34:59 2017 -0500
guix: register-path: use new %store-database-directory
* guix/config.scm.in (%store-database-directory): new variable.
* guix/store.scm (register-path): use variables from (guix config) instead
of
using environment variables directly.
---
guix/config.scm.in | 6 ++++++
guix/store.scm | 41 ++++++++++++++++++++++-------------------
2 files changed, 28 insertions(+), 19 deletions(-)
diff --git a/guix/config.scm.in b/guix/config.scm.in
index 8f2c4ab..dfe5fe0 100644
--- a/guix/config.scm.in
+++ b/guix/config.scm.in
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <address@hidden>
+;;; Copyright © 2017 Caleb Ristvedt <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -29,6 +30,7 @@
%store-directory
%state-directory
+ %store-database-directory
%config-directory
%guix-register-program
@@ -80,6 +82,10 @@
(or (getenv "NIX_STATE_DIR")
(string-append %localstatedir "/guix")))
+(define %store-database-directory
+ (or (and=> (getenv "NIX_DB_DIR") canonicalize-path)
+ (string-append %state-directory "/db")))
+
(define %config-directory
;; This must match `GUIX_CONFIGURATION_DIRECTORY' as defined in
`nix/local.mk'.
(or (getenv "GUIX_CONFIGURATION_DIRECTORY")
diff --git a/guix/store.scm b/guix/store.scm
index f32cdc6..77fd5b5 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1257,7 +1257,10 @@ makes a wrapper around a port which implements
GET-POSITION."
#:key (references '()) deriver prefix
state-directory)
;; Priority for options: first what is given, then environment variables,
- ;; then defaults.
+ ;; then defaults. %state-directory, %store-directory, and
+ ;; %store-database-directory already handle the "environment variables /
+ ;; defaults" question, so we only need to choose between what is given and
+ ;; those.
"Register PATH as a valid store file, with REFERENCES as its list of
references, and DERIVER as its deriver (.drv that led to it.) If PREFIX is
given, it must be the name of the directory containing the new store to
@@ -1271,28 +1274,28 @@ be used internally by the daemon's build hook."
(state-directory
(string-append state-directory "/db"))
(prefix
- (string-append prefix %state-directory "/db"))
- ((getenv "NIX_DB_DIR")
- (getenv "NIX_DB_DIR"))
- ((getenv "NIX_STATE_DIR")
- (string-append (getenv "NIX_STATE_DIR") "/db"))
+ ;; If prefix is specified, the value of NIX_STATE_DIR
+ ;; (which affects %state-directory) isn't supposed to
+ ;; affect db-dir, only the compile-time-customized
+ ;; default should.
+ (string-append prefix %localstatedir "/guix/db"))
(else
- (string-append %state-directory "/db"))))
+ %store-database-directory)))
(store-dir (if prefix
- (string-append prefix %store-directory)
- (or
- (getenv "NIX_STORE_DIR")
- (getenv "NIX_STORE")
- %store-directory)))
+ ;; same situation as above
+ (string-append prefix %storedir)
+ %store-directory))
(to-register (if prefix
- ;; note: we assume here that if path is, for example,
- ;; /foo/bar/gnu/store/thing.txt, then an environment
- ;; variable has been used to change the store
- ;; directory to /foo/bar/gnu/store.
- (string-append %store-directory "/" (basename path))
+ (string-append %storedir "/" (basename path))
+ ;; note: we assume here that if path is, for
+ ;; example, /foo/bar/gnu/store/thing.txt and prefix
+ ;; isn't given, then an environment variable has
+ ;; been used to change the store directory to
+ ;; /foo/bar/gnu/store, since otherwise real-path
+ ;; would end up being /gnu/store/thing.txt, which is
+ ;; probably not the right file in this case.
path))
- (real-path (string-append store-dir "/"
- (basename path))))
+ (real-path (string-append store-dir "/" (basename path))))
(let-values (((hash nar-size)
(nar-sha256 real-path)))
(sqlite-register
- branch guile-daemon created (now a647f6e), Caleb Ristvedt, 2017/06/12
- 04/09: guix: sql.scm: split into generic and store-specific parts., Caleb Ristvedt, 2017/06/12
- 08/09: guix: register-path: return #t on success., Caleb Ristvedt, 2017/06/12
- 06/09: guix: register-path: reset timestamps after registering., Caleb Ristvedt, 2017/06/12
- 01/09: guix: register-path: Implement prototype in scheme., Caleb Ristvedt, 2017/06/12
- 05/09: guix: register-path: use new %store-database-directory,
Caleb Ristvedt <=
- 03/09: .dir-locals.el: properly indent sql macros., Caleb Ristvedt, 2017/06/12
- 07/09: guix: register-path: do deduplication., Caleb Ristvedt, 2017/06/12
- 09/09: deduplication: new module., Caleb Ristvedt, 2017/06/12
- 02/09: guix: register-path: Honor environment variables., Caleb Ristvedt, 2017/06/12