Move <location> to (guix utils).

* guix/packages.scm (<location>, location): Move to...
* guix/utils.scm: ... here.
This commit is contained in:
Ludovic Courtès 2012-09-01 19:21:06 +02:00
parent ea52a52d7c
commit ff352cfb97
2 changed files with 38 additions and 33 deletions

View file

@ -22,17 +22,10 @@ (define-module (guix packages)
#:use-module (guix build-system)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:export (location
location?
location-file
location-line
location-column
origin
#:export (origin
origin?
origin-uri
origin-method
@ -78,31 +71,6 @@ (define-module (guix packages)
;;;
;;; Code:
;; A source location.
(define-record-type <location>
(make-location file line column)
location?
(file location-file) ; file name
(line location-line) ; 1-indexed line
(column location-column)) ; 0-indexed column
(define location
(memoize
(lambda (file line column)
"Return the <location> object for the given FILE, LINE, and COLUMN."
(and line column file
(make-location file line column)))))
(define (source-properties->location loc)
"Return a location object based on the info in LOC, an alist as returned
by Guile's `source-properties', `frame-source', `current-source-location',
etc."
(let ((file (assq-ref loc 'filename))
(line (assq-ref loc 'line))
(col (assq-ref loc 'column)))
(location file (and line (+ line 1)) col)))
;; The source of a package, such as a tarball URL and fetcher---called
;; "origin" to avoid name clash with `package-source', `source', etc.
(define-record-type* <origin>

View file

@ -48,6 +48,14 @@ (define-module (guix utils)
define-record-type*
compile-time-value
memoize
location
location?
location-file
location-line
location-column
source-properties->location
gnu-triplet->nix-system
%current-system))
@ -605,3 +613,32 @@ (define (gnu-triplet->nix-system triplet)
(define %current-system
;; System type as expected by Nix, usually ARCHITECTURE-KERNEL.
(make-parameter (gnu-triplet->nix-system %host-type)))
;;;
;;; Source location.
;;;
;; A source location.
(define-record-type <location>
(make-location file line column)
location?
(file location-file) ; file name
(line location-line) ; 1-indexed line
(column location-column)) ; 0-indexed column
(define location
(memoize
(lambda (file line column)
"Return the <location> object for the given FILE, LINE, and COLUMN."
(and line column file
(make-location file line column)))))
(define (source-properties->location loc)
"Return a location object based on the info in LOC, an alist as returned
by Guile's `source-properties', `frame-source', `current-source-location',
etc."
(let ((file (assq-ref loc 'filename))
(line (assq-ref loc 'line))
(col (assq-ref loc 'column)))
(location file (and line (+ line 1)) col)))