summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-05-04 22:11:37 +0200
committerLudovic Courtès <ludo@gnu.org>2015-05-04 23:30:51 +0200
commite89431bf016830a919ec2430889f6c2679aab408 (patch)
tree70c2e186a551fd1b2654d99275c4bb558a38f9ee
parent934d37069436b3f8e65478f0a5329ef0d72fdb15 (diff)
downloadguix-e89431bf016830a919ec2430889f6c2679aab408.tar.gz
Move search path specifications to (guix search-paths).
* guix/packages.scm (<search-path-specification>,
  search-path-specification->sexp, sexp->search-path-specification):
  Move to...
* guix/search-paths.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* guix/build-system/cmake.scm, guix/build-system/glib-or-gtk.scm,
  guix/build-system/gnu.scm, guix/build-system/haskell.scm,
  guix/build-system/perl.scm, guix/build-system/python.scm,
  guix/build-system/ruby.scm, guix/build-system/waf.scm,
  guix/profiles.scm, guix/scripts/package.scm: Use it.
-rw-r--r--Makefile.am1
-rw-r--r--guix/build-system/cmake.scm1
-rw-r--r--guix/build-system/glib-or-gtk.scm1
-rw-r--r--guix/build-system/gnu.scm1
-rw-r--r--guix/build-system/haskell.scm1
-rw-r--r--guix/build-system/perl.scm1
-rw-r--r--guix/build-system/python.scm1
-rw-r--r--guix/build-system/ruby.scm1
-rw-r--r--guix/build-system/waf.scm1
-rw-r--r--guix/packages.scm44
-rw-r--r--guix/profiles.scm3
-rw-r--r--guix/scripts/package.scm1
-rw-r--r--guix/search-paths.scm77
13 files changed, 92 insertions, 42 deletions
diff --git a/Makefile.am b/Makefile.am
index aa412bda2b..ae694eb0e7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -87,6 +87,7 @@ MODULES =					\
   guix/build/gremlin.scm			\
   guix/build/emacs-utils.scm			\
   guix/build/graft.scm				\
+  guix/search-paths.scm				\
   guix/packages.scm				\
   guix/import/utils.scm				\
   guix/import/gnu.scm				\
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index 1bc1879be5..25ac262d5d 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -21,6 +21,7 @@
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (guix packages)
diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm
index 954c716893..a1f0a9b8a4 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -22,6 +22,7 @@
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (guix packages)
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 2520224931..da664e5422 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -20,6 +20,7 @@
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix packages)
   #:use-module (srfi srfi-1)
diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm
index 0fbf0b8e75..1cb734631c 100644
--- a/guix/build-system/haskell.scm
+++ b/guix/build-system/haskell.scm
@@ -21,6 +21,7 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (ice-9 match)
diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm
index 7833153676..06af1dd20e 100644
--- a/guix/build-system/perl.scm
+++ b/guix/build-system/perl.scm
@@ -20,6 +20,7 @@
   #:use-module (guix store)
   #:use-module (guix utils)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (guix packages)
diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm
index d498cf618b..e9fffcc62f 100644
--- a/guix/build-system/python.scm
+++ b/guix/build-system/python.scm
@@ -23,6 +23,7 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (ice-9 match)
diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm
index 83bc93d901..e4fda30cf3 100644
--- a/guix/build-system/ruby.scm
+++ b/guix/build-system/ruby.scm
@@ -22,6 +22,7 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module (ice-9 match)
diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm
index c67f649fa7..044d2a0829 100644
--- a/guix/build-system/waf.scm
+++ b/guix/build-system/waf.scm
@@ -21,6 +21,7 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix build-system)
   #:use-module (guix build-system gnu)
   #:use-module ((guix build-system python)
diff --git a/guix/packages.scm b/guix/packages.scm
index d7fced8384..c955b35155 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -26,6 +26,7 @@
   #:use-module (guix base32)
   #:use-module (guix derivations)
   #:use-module (guix build-system)
+  #:use-module (guix search-paths)
   #:use-module (guix gexp)
   #:use-module (ice-9 match)
   #:use-module (ice-9 vlist)
@@ -36,7 +37,8 @@
   #:use-module (srfi srfi-34)
   #:use-module (srfi srfi-35)
   #:re-export (%current-system
-               %current-target-system)
+               %current-target-system
+               search-path-specification)         ;for convenience
   #:export (origin
             origin?
             origin-uri
@@ -52,12 +54,6 @@
             origin-imported-modules
             base32
 
-            <search-path-specification>
-            search-path-specification
-            search-path-specification?
-            search-path-specification->sexp
-            sexp->search-path-specification
-
             package
             package?
             package-name
@@ -189,40 +185,6 @@ representation."
       ((_ str)
        #'(nix-base32-string->bytevector str)))))
 
-;; The specification of a search path.
-(define-record-type* <search-path-specification>
-  search-path-specification make-search-path-specification
-  search-path-specification?
-  (variable     search-path-specification-variable) ;string
-  (files        search-path-specification-files)    ;list of strings
-  (separator    search-path-specification-separator ;string
-                (default ":"))
-  (file-type    search-path-specification-file-type ;symbol
-                (default 'directory))
-  (file-pattern search-path-specification-file-pattern ;#f | string
-                (default #f)))
-
-(define (search-path-specification->sexp spec)
-  "Return an sexp representing SPEC, a <search-path-specification>.  The sexp
-corresponds to the arguments expected by `set-path-environment-variable'."
-  ;; Note that this sexp format is used both by build systems and in
-  ;; (guix profiles), so think twice before you change it.
-  (match spec
-    (($ <search-path-specification> variable files separator type pattern)
-     `(,variable ,files ,separator ,type ,pattern))))
-
-(define (sexp->search-path-specification sexp)
-  "Convert SEXP, which is as returned by 'search-path-specification->sexp', to
-a <search-path-specification> object."
-  (match sexp
-    ((variable files separator type pattern)
-     (search-path-specification
-      (variable variable)
-      (files files)
-      (separator separator)
-      (file-type type)
-      (file-pattern pattern)))))
-
 (define %supported-systems
   ;; This is the list of system types that are supported.  By default, we
   ;; expect all packages to build successfully here.
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 2e515d5490..fd2afc05a3 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -22,8 +22,9 @@
 (define-module (guix profiles)
   #:use-module (guix utils)
   #:use-module (guix records)
-  #:use-module (guix derivations)
   #:use-module (guix packages)
+  #:use-module (guix derivations)
+  #:use-module (guix search-paths)
   #:use-module (guix gexp)
   #:use-module (guix monads)
   #:use-module (guix store)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 003f6958ef..44cacdca8b 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -25,6 +25,7 @@
   #:use-module (guix derivations)
   #:use-module (guix packages)
   #:use-module (guix profiles)
+  #:use-module (guix search-paths)
   #:use-module (guix monads)
   #:use-module (guix utils)
   #:use-module (guix config)
diff --git a/guix/search-paths.scm b/guix/search-paths.scm
new file mode 100644
index 0000000000..147bfcae8c
--- /dev/null
+++ b/guix/search-paths.scm
@@ -0,0 +1,77 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 search-paths)
+  #:use-module (guix records)
+  #:use-module (ice-9 match)
+  #:export (<search-path-specification>
+            search-path-specification
+            search-path-specification?
+            search-path-specification-variable
+            search-path-specification-files
+            search-path-specification-separator
+            search-path-specification-file-type
+            search-path-specification-file-pattern
+
+            search-path-specification->sexp
+            sexp->search-path-specification))
+
+;;; Commentary:
+;;;
+;;; This module defines "search path specifications", which allow packages to
+;;; declare environment variables that they use to define search paths.  For
+;;; instance, GCC has the 'CPATH' variable, Guile has the 'GUILE_LOAD_PATH'
+;;; variable, etc.
+;;;
+;;; Code:
+
+;; The specification of a search path.
+(define-record-type* <search-path-specification>
+  search-path-specification make-search-path-specification
+  search-path-specification?
+  (variable     search-path-specification-variable) ;string
+  (files        search-path-specification-files)    ;list of strings
+  (separator    search-path-specification-separator ;string
+                (default ":"))
+  (file-type    search-path-specification-file-type ;symbol
+                (default 'directory))
+  (file-pattern search-path-specification-file-pattern ;#f | string
+                (default #f)))
+
+(define (search-path-specification->sexp spec)
+  "Return an sexp representing SPEC, a <search-path-specification>.  The sexp
+corresponds to the arguments expected by `set-path-environment-variable'."
+  ;; Note that this sexp format is used both by build systems and in
+  ;; (guix profiles), so think twice before you change it.
+  (match spec
+    (($ <search-path-specification> variable files separator type pattern)
+     `(,variable ,files ,separator ,type ,pattern))))
+
+(define (sexp->search-path-specification sexp)
+  "Convert SEXP, which is as returned by 'search-path-specification->sexp', to
+a <search-path-specification> object."
+  (match sexp
+    ((variable files separator type pattern)
+     (search-path-specification
+      (variable variable)
+      (files files)
+      (separator separator)
+      (file-type type)
+      (file-pattern pattern)))))
+
+;;; search-paths.scm ends here