From 59a43334a98babd6c776648967e48d7c44723639 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 18 Jan 2013 01:06:47 +0100 Subject: distro: Rename (distro) to (gnu packages). * distro.scm: Rename to... * gnu/packages.scm: ... this. Update all users accordingly. * Makefile.am (MODULES): Adjust accordingly. * po/POTFILES.in: Likewise. --- distro.scm | 138 ------------------------------------------------------------- 1 file changed, 138 deletions(-) delete mode 100644 distro.scm (limited to 'distro.scm') diff --git a/distro.scm b/distro.scm deleted file mode 100644 index 3973584815..0000000000 --- a/distro.scm +++ /dev/null @@ -1,138 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013 Ludovic Courtès -;;; -;;; 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 (distro) - #:use-module (guix packages) - #:use-module (guix utils) - #:use-module (ice-9 ftw) - #:use-module (srfi srfi-1) - #:use-module (srfi srfi-26) - #:use-module (srfi srfi-39) - #:export (search-patch - search-bootstrap-binary - %patch-directory - %bootstrap-binaries-path - fold-packages - find-packages-by-name)) - -;;; Commentary: -;;; -;;; General utilities for the software distribution---i.e., the modules under -;;; (distro ...). -;;; -;;; Code: - -(define _ (cut gettext <> "guix")) - -;; By default, we store patches and bootstrap binaries alongside Guile -;; modules. This is so that these extra files can be found without -;; requiring a special setup, such as a specific installation directory -;; and an extra environment variable. One advantage of this setup is -;; that everything just works in an auto-compilation setting. - -(define %patch-path - (make-parameter - (map (cut string-append <> "/gnu/packages/patches") - %load-path))) - -(define %bootstrap-binaries-path - (make-parameter - (map (cut string-append <> "/gnu/packages/bootstrap") - %load-path))) - -(define (search-patch file-name) - "Search the patch FILE-NAME." - (search-path (%patch-path) file-name)) - -(define (search-bootstrap-binary file-name system) - "Search the bootstrap binary FILE-NAME for SYSTEM." - (search-path (%bootstrap-binaries-path) - (string-append system "/" file-name))) - -(define %distro-module-directory - ;; Absolute path of the (gnu packages ...) module root. - (string-append (dirname (search-path %load-path "distro.scm")) - "/gnu/packages")) - -(define (package-files) - "Return the list of files that implement distro modules." - (define prefix-len - (string-length (dirname (search-path %load-path "distro.scm")))) - - (file-system-fold (const #t) ; enter? - (lambda (path stat result) ; leaf - (if (string-suffix? ".scm" path) - (cons (substring path prefix-len) result) - result)) - (lambda (path stat result) ; down - result) - (lambda (path stat result) ; up - result) - (const #f) ; skip - (lambda (path stat errno result) - (format (current-error-port) - (_ "warning: cannot access `~a': ~a~%") - path (strerror errno)) - result) - '() - %distro-module-directory - stat)) - -(define (package-modules) - "Return the list of modules that provide packages for the distribution." - (define not-slash - (char-set-complement (char-set #\/))) - - (filter-map (lambda (path) - (let ((name (map string->symbol - (string-tokenize (string-drop-right path 4) - not-slash)))) - (false-if-exception (resolve-interface name)))) - (package-files))) - -(define (fold-packages proc init) - "Call (PROC PACKAGE RESULT) for each available package, using INIT as -the initial value of RESULT." - (fold (lambda (module result) - (fold (lambda (var result) - (if (package? var) - (proc var result) - result)) - result - (module-map (lambda (sym var) - (false-if-exception (variable-ref var))) - module))) - init - (package-modules))) - -(define* (find-packages-by-name name #:optional version) - "Return the list of packages with the given NAME. If VERSION is not #f, -then only return packages whose version is equal to VERSION." - (define right-package? - (if version - (lambda (p) - (and (string=? (package-name p) name) - (string=? (package-version p) version))) - (lambda (p) - (string=? (package-name p) name)))) - - (fold-packages (lambda (package result) - (if (right-package? package) - (cons package result) - result)) - '())) -- cgit v1.2.3