aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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