diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2013-09-26 00:20:11 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2013-09-26 00:20:11 +0200 |
| commit | 7facbf2b58f80afffedbb9230ec7ab9b61232dfe (patch) | |
| tree | 7ab3870f77f596e548ccd0e50f5ea16d1c32f434 | |
| parent | 1fa49a2c4636c0f35972c16f6bd2d28a4424b821 (diff) | |
| parent | 834b5c80763eba42018606a674bcc53bfeca10eb (diff) | |
Merge branch 'master' into core-updates
| -rw-r--r-- | NEWS | 88 | ||||
| -rwxr-xr-x | build-aux/list-packages.scm | 130 | ||||
| -rw-r--r-- | doc/guix.texi | 8 | ||||
| -rw-r--r-- | gnu/packages/fontutils.scm | 10 | ||||
| -rw-r--r-- | gnu/packages/gnupg.scm | 16 | ||||
| -rw-r--r-- | gnu/packages/mail.scm | 5 | ||||
| -rw-r--r-- | gnu/packages/maths.scm | 4 | ||||
| -rw-r--r-- | gnu/packages/package-management.scm | 22 | ||||
| -rw-r--r-- | gnu/packages/scheme.scm | 20 | ||||
| -rw-r--r-- | gnu/packages/xorg.scm | 46 | ||||
| -rw-r--r-- | gnu/packages/zile.scm | 34 | ||||
| -rw-r--r-- | gnu/system/dmd.scm | 67 | ||||
| -rw-r--r-- | gnu/system/linux.scm | 13 | ||||
| -rw-r--r-- | gnu/system/vm.scm | 202 | ||||
| -rw-r--r-- | guix/packages.scm | 4 | ||||
| -rw-r--r-- | guix/scripts/package.scm | 27 | ||||
| -rw-r--r-- | nix/guix-register/guix-register.cc | 28 | ||||
| -rw-r--r-- | po/eo.po | 346 | ||||
| -rw-r--r-- | tests/guix-package.sh | 12 | ||||
| -rw-r--r-- | tests/guix-register.sh | 26 |
20 files changed, 829 insertions, 279 deletions
| @@ -10,6 +10,94 @@ Copyright © 2013 Ludovic Courtès <ludo@gnu.org> | |||
| 10 | 10 | ||
| 11 | Please send Guix bug reports to bug-guix@gnu.org. | 11 | Please send Guix bug reports to bug-guix@gnu.org. |
| 12 | 12 | ||
| 13 | * Changes in 0.4 (since 0.3) | ||
| 14 | |||
| 15 | ** Package management | ||
| 16 | |||
| 17 | *** New ‘--list-generations’ and ‘--delete-generations’ options | ||
| 18 | |||
| 19 | The ‘guix package’ command has these two new options, which make it easier to | ||
| 20 | deal with a profile’s generation. See “Invoking guix package” in the manual. | ||
| 21 | |||
| 22 | *** New ‘guix-register’ program | ||
| 23 | |||
| 24 | This program allows the meta-data of a new store to be initialized, by | ||
| 25 | copying info from an existing store. It is mostly an internal tool. | ||
| 26 | |||
| 27 | ** Programming interfaces | ||
| 28 | |||
| 29 | *** New API to bootstrap Autotools-based packages | ||
| 30 | |||
| 31 | The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a | ||
| 32 | package object and source directory, and returns a new package object that | ||
| 33 | runs ‘./bootstrap && make dist’ or anything similar. | ||
| 34 | |||
| 35 | *** ‘derivation’ and related procedures have a #:references-graphs parameter | ||
| 36 | |||
| 37 | This parameter instructs the build daemon to populate the derivation’s build | ||
| 38 | tree with files containing the list of references of the given store files. | ||
| 39 | This is useful to write code that copies a packages and all its dependencies | ||
| 40 | to another storage device, such as a QEMU disk image. | ||
| 41 | |||
| 42 | *** Extended API to build a GNU system virtual machine image | ||
| 43 | |||
| 44 | The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’ | ||
| 45 | procedure can now populate and initialize the image’s store; the new | ||
| 46 | ‘system-qemu-image’ procedure returns a QEMU image that runs dmd as its init | ||
| 47 | system, has ‘login’ running on several consoles, has a set of installed | ||
| 48 | packages, and where Guix can be used. | ||
| 49 | |||
| 50 | New (gnu system …) modules have been added to handle the configuration of the | ||
| 51 | various parts of a GNU/Linux system. For instance, (gnu system dmd) provides | ||
| 52 | support for instantiating dmd services; (gnu system linux) helps with Linux | ||
| 53 | PAM configuration; and so on. | ||
| 54 | |||
| 55 | *** <derivation> objects supersede .drv file names in the API | ||
| 56 | |||
| 57 | ‘derivation’ and similar procedures no longer return two values (a | ||
| 58 | <derivation> and a .drv file name); they now return a single value, which is | ||
| 59 | a <derivation> object. The <derivation> object embeds the corresponding .drv | ||
| 60 | file name. See “Derivations” in the manual for details. | ||
| 61 | |||
| 62 | ** GNU distribution | ||
| 63 | |||
| 64 | *** XXX new packages | ||
| 65 | |||
| 66 | *** XXX package updates | ||
| 67 | |||
| 68 | *** Fontconfig font search path made more convenient | ||
| 69 | |||
| 70 | Fontconfig, the library used by many graphical applications, such as those | ||
| 71 | based on GTK+, now knows where to find the default set of fonts. Additional | ||
| 72 | fonts installed in the user profile are automatically picked up. | ||
| 73 | |||
| 74 | *** More GUI applications | ||
| 75 | |||
| 76 | The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+ | ||
| 77 | applications have been added (see above.) | ||
| 78 | |||
| 79 | *** Packaging guidelines | ||
| 80 | |||
| 81 | The documentation of packaging guidelines has been augmented. See the manual | ||
| 82 | under “GNU Distribution”. | ||
| 83 | |||
| 84 | *** Support for Python 3 along with Python 2 | ||
| 85 | |||
| 86 | Python 3 has been added to the distribution, and Python packages that support | ||
| 87 | it are now built for both Python 2 and Python 3. See the “Python Modules” | ||
| 88 | section of the manual for details. | ||
| 89 | |||
| 90 | ** Internationalization | ||
| 91 | |||
| 92 | Updated translations: eo. | ||
| 93 | |||
| 94 | ** Bugs fixed | ||
| 95 | |||
| 96 | *** The dependency graph image has correct size in PDF output | ||
| 97 | *** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194) | ||
| 98 | *** Xorg server test suite no longer fails (http://bugs.gnu.org/15392) | ||
| 99 | *** Workarounds for Guile 2.0.5 now work on Debian derivatives | ||
| 100 | |||
| 13 | 101 | ||
| 14 | * Changes in 0.3 (since 0.2) | 102 | * Changes in 0.3 (since 0.2) |
| 15 | 103 | ||
diff --git a/build-aux/list-packages.scm b/build-aux/list-packages.scm index 3e798fc6d1b..60c9bc39da9 100755 --- a/build-aux/list-packages.scm +++ b/build-aux/list-packages.scm | |||
| @@ -29,6 +29,7 @@ exec guile -l "$0" \ | |||
| 29 | #:use-module (guix gnu-maintenance) | 29 | #:use-module (guix gnu-maintenance) |
| 30 | #:use-module (gnu packages) | 30 | #:use-module (gnu packages) |
| 31 | #:use-module (sxml simple) | 31 | #:use-module (sxml simple) |
| 32 | #:use-module (sxml fold) | ||
| 32 | #:use-module (web uri) | 33 | #:use-module (web uri) |
| 33 | #:use-module (ice-9 match) | 34 | #:use-module (ice-9 match) |
| 34 | #:use-module (srfi srfi-1) | 35 | #:use-module (srfi srfi-1) |
| @@ -48,8 +49,13 @@ exec guile -l "$0" \ | |||
| 48 | (equal? (gnu-package-name package) name)) | 49 | (equal? (gnu-package-name package) name)) |
| 49 | gnu)))) | 50 | gnu)))) |
| 50 | 51 | ||
| 51 | (define (package->sxml package) | 52 | (define (package->sxml package previous description-ids remaining) |
| 52 | "Return HTML-as-SXML representing PACKAGE." | 53 | "Return 3 values: the HTML-as-SXML for PACKAGE added to all previously |
| 54 | collected package output in PREVIOUS, a list of DESCRIPTION-IDS and the number | ||
| 55 | of packages still to be processed in REMAINING. Also Introduces a call to the | ||
| 56 | JavaScript prep_pkg_descs function as part of the output of PACKAGE, every | ||
| 57 | time the length of DESCRIPTION-IDS, increasing, is 15 or when REMAINING, | ||
| 58 | decreasing, is 1." | ||
| 53 | (define (source-url package) | 59 | (define (source-url package) |
| 54 | (let ((loc (package-location package))) | 60 | (let ((loc (package-location package))) |
| 55 | (and loc | 61 | (and loc |
| @@ -92,37 +98,66 @@ exec guile -l "$0" \ | |||
| 92 | (and=> (lookup-gnu-package name) | 98 | (and=> (lookup-gnu-package name) |
| 93 | gnu-package-logo)) | 99 | gnu-package-logo)) |
| 94 | 100 | ||
| 101 | (define (insert-tr description-id js?) | ||
| 102 | (define (insert-js-call description-ids) | ||
| 103 | "Return an sxml call to prep_pkg_descs, with up to 15 elements of | ||
| 104 | description-ids as formal parameters." | ||
| 105 | `(script (@ (type "text/javascript")) | ||
| 106 | ,(format #f "prep_pkg_descs(~a)" | ||
| 107 | (string-append "'" | ||
| 108 | (string-join description-ids "', '") | ||
| 109 | "'")))) | ||
| 110 | |||
| 111 | (let ((description-ids (cons description-id description-ids))) | ||
| 112 | `(tr (td ,(if (gnu-package? package) | ||
| 113 | `(img (@ (src "/graphics/gnu-head-mini.png") | ||
| 114 | (alt "Part of GNU") | ||
| 115 | (title "Part of GNU"))) | ||
| 116 | "")) | ||
| 117 | (td (a (@ (href ,(source-url package)) | ||
| 118 | (title "Link to the Guix package source code")) | ||
| 119 | ,(package-name package) " " | ||
| 120 | ,(package-version package))) | ||
| 121 | (td (span ,(package-synopsis package)) | ||
| 122 | (div (@ (id ,description-id)) | ||
| 123 | ,(match (package-logo (package-name package)) | ||
| 124 | ((? string? url) | ||
| 125 | `(img (@ (src ,url) | ||
| 126 | (height "35") | ||
| 127 | (class "package-logo") | ||
| 128 | (alt ("Logo of " ,(package-name package)))))) | ||
| 129 | (_ #f)) | ||
| 130 | (p ,(package-description package)) | ||
| 131 | ,(license package) | ||
| 132 | (a (@ (href ,(package-home-page package)) | ||
| 133 | (title "Link to the package's website")) | ||
| 134 | ,(package-home-page package)) | ||
| 135 | ,(status package) | ||
| 136 | ,(if js? | ||
| 137 | (insert-js-call description-ids) | ||
| 138 | "")))))) | ||
| 139 | |||
| 95 | (let ((description-id (symbol->string | 140 | (let ((description-id (symbol->string |
| 96 | (gensym (package-name package))))) | 141 | (gensym (package-name package))))) |
| 97 | `(tr (td ,(if (gnu-package? package) | 142 | (cond ((= remaining 1) ; Last package in packages |
| 98 | `(img (@ (src "/graphics/gnu-head-mini.png") | 143 | (values |
| 99 | (alt "Part of GNU") | 144 | (reverse ; Fold has reversed packages |
| 100 | (title "Part of GNU"))) | 145 | (cons (insert-tr description-id 'js) ; Prefix final sxml |
| 101 | "")) | 146 | previous)) |
| 102 | (td (a (@ (href ,(source-url package)) | 147 | '() ; No more work to do |
| 103 | (title "Link to the Guix package source code")) | 148 | 0)) ; End of the line |
| 104 | ,(package-name package) " " | 149 | ((= (length description-ids) 15) ; Time for a JS call |
| 105 | ,(package-version package))) | 150 | (values |
| 106 | (td (a (@ (href "javascript:void(0)") | 151 | (cons (insert-tr description-id 'js) |
| 107 | (title "show/hide package description") | 152 | previous) ; Prefix new sxml |
| 108 | (onClick ,(format #f "javascript:show_hide('~a')" | 153 | '() ; Reset description-ids |
| 109 | description-id))) | 154 | (1- remaining))) ; Reduce remaining |
| 110 | ,(package-synopsis package)) | 155 | (else ; Insert another row, and build description-ids |
| 111 | (div (@ (id ,description-id) | 156 | (values |
| 112 | (style "display: none;")) | 157 | (cons (insert-tr description-id #f) |
| 113 | ,(match (package-logo (package-name package)) | 158 | previous) ; Prefix new sxml |
| 114 | ((? string? url) | 159 | (cons description-id description-ids) ; Update description-ids |
| 115 | `(img (@ (src ,url) | 160 | (1- remaining)))))) ; Reduce remaining |
| 116 | (height "35") | ||
| 117 | (class "package-logo") | ||
| 118 | (alt ("Logo of " ,(package-name package)))))) | ||
| 119 | (_ #f)) | ||
| 120 | (p ,(package-description package)) | ||
| 121 | ,(license package) | ||
| 122 | (a (@ (href ,(package-home-page package)) | ||
| 123 | (title "Link to the package's website")) | ||
| 124 | ,(package-home-page package)) | ||
| 125 | ,(status package)))))) | ||
| 126 | 161 | ||
| 127 | (define (packages->sxml packages) | 162 | (define (packages->sxml packages) |
| 128 | "Return an HTML page as SXML describing PACKAGES." | 163 | "Return an HTML page as SXML describing PACKAGES." |
| @@ -145,7 +180,7 @@ exec guile -l "$0" \ | |||
| 145 | (tr (th "GNU?") | 180 | (tr (th "GNU?") |
| 146 | (th "Package version") | 181 | (th "Package version") |
| 147 | (th "Package details")) | 182 | (th "Package details")) |
| 148 | ,@(map package->sxml packages)) | 183 | ,@(fold-values package->sxml packages '() '() (length packages))) |
| 149 | (a (@ (href "#intro") | 184 | (a (@ (href "#intro") |
| 150 | (title "Back to top.") | 185 | (title "Back to top.") |
| 151 | (id "top")) | 186 | (id "top")) |
| @@ -239,14 +274,45 @@ a#top:hover, a#top:focus { | |||
| 239 | // license: CC0 | 274 | // license: CC0 |
| 240 | function show_hide(idThing) | 275 | function show_hide(idThing) |
| 241 | { | 276 | { |
| 277 | if(document.getElementById && document.createTextNode) { | ||
| 242 | var thing = document.getElementById(idThing); | 278 | var thing = document.getElementById(idThing); |
| 279 | /* Used to change the link text, depending on whether description is | ||
| 280 | collapsed or expanded */ | ||
| 281 | var thingLink = thing.previousSibling.lastChild.firstChild; | ||
| 243 | if (thing) { | 282 | if (thing) { |
| 244 | if (thing.style.display == \"none\") { | 283 | if (thing.style.display == \"none\") { |
| 245 | thing.style.display = \"\"; | 284 | thing.style.display = \"\"; |
| 285 | thingLink.data = 'Collapse'; | ||
| 246 | } else { | 286 | } else { |
| 247 | thing.style.display = \"none\"; | 287 | thing.style.display = \"none\"; |
| 288 | thingLink.data = 'Expand'; | ||
| 248 | } | 289 | } |
| 249 | } | 290 | } |
| 291 | } | ||
| 292 | } | ||
| 293 | /* Add controllers used for collapse/expansion of package descriptions */ | ||
| 294 | function prep(idThing) | ||
| 295 | { | ||
| 296 | var tdThing = document.getElementById(idThing).parentNode; | ||
| 297 | if (tdThing) { | ||
| 298 | var aThing = tdThing.firstChild.appendChild(document.createElement('a')); | ||
| 299 | aThing.setAttribute('href', 'javascript:void(0)'); | ||
| 300 | aThing.setAttribute('title', 'show/hide package description'); | ||
| 301 | aThing.appendChild(document.createTextNode('Expand')); | ||
| 302 | aThing.onclick=function(){show_hide(idThing);}; | ||
| 303 | /* aThing.onkeypress=function(){show_hide(idThing);}; */ | ||
| 304 | } | ||
| 305 | } | ||
| 306 | /* Take n element IDs, prepare them for javascript enhanced | ||
| 307 | display and hide the IDs by default. */ | ||
| 308 | function prep_pkg_descs() | ||
| 309 | { | ||
| 310 | if(document.getElementById && document.createTextNode) { | ||
| 311 | for(var i=0; i<arguments.length; i++) { | ||
| 312 | prep(arguments[i]) | ||
| 313 | show_hide(arguments[i]); | ||
| 314 | } | ||
| 315 | } | ||
| 250 | } | 316 | } |
| 251 | </script>")) | 317 | </script>")) |
| 252 | 318 | ||
diff --git a/doc/guix.texi b/doc/guix.texi index 90016a44963..442cef26da1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi | |||
| @@ -583,9 +583,8 @@ When combined with options such as @code{--install}, roll back occurs | |||
| 583 | before any other actions. | 583 | before any other actions. |
| 584 | 584 | ||
| 585 | When rolling back from the first generation that actually contains | 585 | When rolling back from the first generation that actually contains |
| 586 | installed packages, the profile is made to point to the @dfn{empty | 586 | installed packages, the profile is made to point to the @dfn{zeroth |
| 587 | profile}, also known as @dfn{profile zero}---i.e., it contains no files | 587 | generation}, which contains no files apart from its own meta-data. |
| 588 | apart from its own meta-data. | ||
| 589 | 588 | ||
| 590 | Installing, removing, or upgrading packages from a generation that has | 589 | Installing, removing, or upgrading packages from a generation that has |
| 591 | been rolled back to overwrites previous future generations. Thus, the | 590 | been rolled back to overwrites previous future generations. Thus, the |
| @@ -683,7 +682,8 @@ Multiple Outputs}), and the source location of its definition. | |||
| 683 | @itemx -l [@var{pattern}] | 682 | @itemx -l [@var{pattern}] |
| 684 | Return a list of generations along with their creation dates; for each | 683 | Return a list of generations along with their creation dates; for each |
| 685 | generation, show the installed packages, with the most recently | 684 | generation, show the installed packages, with the most recently |
| 686 | installed packages shown last. | 685 | installed packages shown last. Note that the zeroth generation is never |
| 686 | shown. | ||
| 687 | 687 | ||
| 688 | For each installed package, print the following items, separated by | 688 | For each installed package, print the following items, separated by |
| 689 | tabs: the name of a package, its version string, the part of the package | 689 | tabs: the name of a package, its version string, the part of the package |
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 8b5e9c582a8..ac0dbdf9d53 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | (define-module (gnu packages fontutils) | 19 | (define-module (gnu packages fontutils) |
| 20 | #:use-module (gnu packages) | 20 | #:use-module (gnu packages) |
| 21 | #:use-module (gnu packages compression) | 21 | #:use-module (gnu packages compression) |
| 22 | #:use-module (gnu packages ghostscript) | ||
| 22 | #:use-module (gnu packages pkg-config) | 23 | #:use-module (gnu packages pkg-config) |
| 23 | #:use-module (gnu packages xml) | 24 | #:use-module (gnu packages xml) |
| 24 | #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:)) | 25 | #:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:)) |
| @@ -75,11 +76,16 @@ anti-aliased glyph bitmap generation with 256 gray levels.") | |||
| 75 | (build-system gnu-build-system) | 76 | (build-system gnu-build-system) |
| 76 | (inputs `(("expat" ,expat) | 77 | (inputs `(("expat" ,expat) |
| 77 | ("freetype" ,freetype) | 78 | ("freetype" ,freetype) |
| 79 | ("gs-fonts" ,gs-fonts) | ||
| 78 | ("pkg-config" ,pkg-config))) | 80 | ("pkg-config" ,pkg-config))) |
| 79 | (arguments | 81 | (arguments |
| 80 | `(#:configure-flags | 82 | `(#:configure-flags |
| 81 | ;; point to user profile instead of /usr/share/fonts in /etc/fonts.conf | 83 | ;; point to user profile instead of /usr/share/fonts in /etc/fonts.conf |
| 82 | `("--with-default-fonts=~/.guix-profile/share/fonts"))) | 84 | (list "--with-default-fonts=~/.guix-profile/share/fonts" |
| 85 | ;; register gs-fonts | ||
| 86 | (string-append "--with-add-fonts=" | ||
| 87 | (assoc-ref %build-inputs "gs-fonts") | ||
| 88 | "/share/fonts")))) | ||
| 83 | (synopsis "Fontconfig, a library for configuring and customising font access.") | 89 | (synopsis "Fontconfig, a library for configuring and customising font access.") |
| 84 | (description | 90 | (description |
| 85 | "Fontconfig can discover new fonts when installed automatically; | 91 | "Fontconfig can discover new fonts when installed automatically; |
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 7c0f50900ab..c098db3315b 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm | |||
| @@ -57,14 +57,14 @@ Daemon and possibly more in the future.") | |||
| 57 | (define-public libgcrypt | 57 | (define-public libgcrypt |
| 58 | (package | 58 | (package |
| 59 | (name "libgcrypt") | 59 | (name "libgcrypt") |
| 60 | (version "1.5.2") | 60 | (version "1.5.3") |
| 61 | (source (origin | 61 | (source (origin |
| 62 | (method url-fetch) | 62 | (method url-fetch) |
| 63 | (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" | 63 | (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" |
| 64 | version ".tar.bz2")) | 64 | version ".tar.bz2")) |
| 65 | (sha256 | 65 | (sha256 |
| 66 | (base32 | 66 | (base32 |
| 67 | "0gwnzqd64cpwdmk93nll54nidsr74jpimxzj4p4z7502ylwl66p4")))) | 67 | "1lar8y3lh61zl5flljpz540d78g99h4d5idfwrfw8lm3gm737xdw")))) |
| 68 | (build-system gnu-build-system) | 68 | (build-system gnu-build-system) |
| 69 | (propagated-inputs | 69 | (propagated-inputs |
| 70 | `(("libgpg-error" ,libgpg-error))) | 70 | `(("libgpg-error" ,libgpg-error))) |
| @@ -106,7 +106,7 @@ provided.") | |||
| 106 | (define-public libksba | 106 | (define-public libksba |
| 107 | (package | 107 | (package |
| 108 | (name "libksba") | 108 | (name "libksba") |
| 109 | (version "1.2.0") | 109 | (version "1.3.0") |
| 110 | (source | 110 | (source |
| 111 | (origin | 111 | (origin |
| 112 | (method url-fetch) | 112 | (method url-fetch) |
| @@ -115,7 +115,7 @@ provided.") | |||
| 115 | version ".tar.bz2")) | 115 | version ".tar.bz2")) |
| 116 | (sha256 | 116 | (sha256 |
| 117 | (base32 | 117 | (base32 |
| 118 | "0jwk7hm3x3g4hd7l12z3d79dy7359x7lc88dq6z7q0ixn1jwxbq9")))) | 118 | "0w8rfb6yhcwkwzvjafrashcygy4hd9xwwmvlnkfd1m2h0paywqas")))) |
| 119 | (build-system gnu-build-system) | 119 | (build-system gnu-build-system) |
| 120 | (propagated-inputs | 120 | (propagated-inputs |
| 121 | `(("libgpg-error" ,libgpg-error))) | 121 | `(("libgpg-error" ,libgpg-error))) |
| @@ -131,7 +131,7 @@ specifications are building blocks of S/MIME and TLS.") | |||
| 131 | (define-public gnupg | 131 | (define-public gnupg |
| 132 | (package | 132 | (package |
| 133 | (name "gnupg") | 133 | (name "gnupg") |
| 134 | (version "2.0.20") | 134 | (version "2.0.21") |
| 135 | (source | 135 | (source |
| 136 | (origin | 136 | (origin |
| 137 | (method url-fetch) | 137 | (method url-fetch) |
| @@ -139,12 +139,10 @@ specifications are building blocks of S/MIME and TLS.") | |||
| 139 | ".tar.bz2")) | 139 | ".tar.bz2")) |
| 140 | (sha256 | 140 | (sha256 |
| 141 | (base32 | 141 | (base32 |
| 142 | "16mp0j5inrcqcb3fxbn0b3aamascy3n923wiy0y8marc0rzrp53f")))) | 142 | "1xgf1q1phdawk6y66haaqcvfnlsqk12jmjin1m2d5x6fqw18kpq0")))) |
| 143 | (build-system gnu-build-system) | 143 | (build-system gnu-build-system) |
| 144 | (inputs | 144 | (inputs |
| 145 | `(;; TODO: Add missing optional dep libusb. | 145 | `(("bzip2" ,guix:bzip2) |
| 146 | ;; ("libusb" ,libusb) | ||
| 147 | ("bzip2" ,guix:bzip2) | ||
| 148 | ("curl" ,curl) | 146 | ("curl" ,curl) |
| 149 | ("libassuan" ,libassuan) | 147 | ("libassuan" ,libassuan) |
| 150 | ("libgcrypt" ,libgcrypt) | 148 | ("libgcrypt" ,libgcrypt) |
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index b8ddcd71e16..a6236e76989 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | (define-module (gnu packages mail) | 19 | (define-module (gnu packages mail) |
| 20 | #:use-module (gnu packages) | 20 | #:use-module (gnu packages) |
| 21 | #:use-module (gnu packages autotools) | 21 | #:use-module (gnu packages autotools) |
| 22 | #:use-module (gnu packages cyrus-sasl) | ||
| 22 | #:use-module (gnu packages dejagnu) | 23 | #:use-module (gnu packages dejagnu) |
| 23 | #:use-module (gnu packages gdbm) | 24 | #:use-module (gnu packages gdbm) |
| 24 | #:use-module (gnu packages gnutls) | 25 | #:use-module (gnu packages gnutls) |
| @@ -154,7 +155,8 @@ aliasing facilities to work just as they would on normal mail.") | |||
| 154 | "1864cwz240gh0zy56fb47qqzwyf6ghg01037rb4p2kqgimpg6h91")))) | 155 | "1864cwz240gh0zy56fb47qqzwyf6ghg01037rb4p2kqgimpg6h91")))) |
| 155 | (build-system gnu-build-system) | 156 | (build-system gnu-build-system) |
| 156 | (inputs | 157 | (inputs |
| 157 | `(("ncurses" ,ncurses) | 158 | `(("cyrus-sasl" ,cyrus-sasl) |
| 159 | ("ncurses" ,ncurses) | ||
| 158 | ("openssl" ,openssl) | 160 | ("openssl" ,openssl) |
| 159 | ("perl" ,perl))) | 161 | ("perl" ,perl))) |
| 160 | (arguments | 162 | (arguments |
| @@ -162,6 +164,7 @@ aliasing facilities to work just as they would on normal mail.") | |||
| 162 | "--enable-imap" | 164 | "--enable-imap" |
| 163 | "--enable-pop" | 165 | "--enable-pop" |
| 164 | "--with-ssl" | 166 | "--with-ssl" |
| 167 | "--with-sasl" | ||
| 165 | ;; so that mutt does not check whether the path | 168 | ;; so that mutt does not check whether the path |
| 166 | ;; exists, which it does not in the chroot | 169 | ;; exists, which it does not in the chroot |
| 167 | "--with-mailpath=/var/mail"))) | 170 | "--with-mailpath=/var/mail"))) |
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 75354122b5c..c72d6074ab8 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm | |||
| @@ -108,7 +108,7 @@ extensive test suite.") | |||
| 108 | (define-public pspp | 108 | (define-public pspp |
| 109 | (package | 109 | (package |
| 110 | (name "pspp") | 110 | (name "pspp") |
| 111 | (version "0.8.0a") | 111 | (version "0.8.1") |
| 112 | (source | 112 | (source |
| 113 | (origin | 113 | (origin |
| 114 | (method url-fetch) | 114 | (method url-fetch) |
| @@ -116,7 +116,7 @@ extensive test suite.") | |||
| 116 | version ".tar.gz")) | 116 | version ".tar.gz")) |
| 117 | (sha256 | 117 | (sha256 |
| 118 | (base32 | 118 | (base32 |
| 119 | "1pgkb3z8b4wk4gymnafclhkrqq7n05wq83mra3v53jdl6bnllmyq")))) | 119 | "0qhxsdbwxd3cn1shc13wxvx2lg32lp4z6sz24kv3jz7p5xfi8j7x")))) |
| 120 | (build-system gnu-build-system) | 120 | (build-system gnu-build-system) |
| 121 | (inputs | 121 | (inputs |
| 122 | `(("gettext" ,gnu:gettext) | 122 | `(("gettext" ,gnu:gettext) |
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index e4eb0822307..ccd15cef6f7 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #:use-module (guix build-system gnu) | 22 | #:use-module (guix build-system gnu) |
| 23 | #:use-module ((guix licenses) #:select (gpl3+)) | 23 | #:use-module ((guix licenses) #:select (gpl3+)) |
| 24 | #:use-module (gnu packages guile) | 24 | #:use-module (gnu packages guile) |
| 25 | #:use-module ((gnu packages compression) #:select (bzip2)) | 25 | #:use-module ((gnu packages compression) #:select (bzip2 gzip)) |
| 26 | #:use-module (gnu packages gnupg) | 26 | #:use-module (gnu packages gnupg) |
| 27 | #:use-module (gnu packages sqlite) | 27 | #:use-module (gnu packages sqlite) |
| 28 | #:use-module (gnu packages pkg-config)) | 28 | #:use-module (gnu packages pkg-config)) |
| @@ -41,6 +41,7 @@ | |||
| 41 | (build-system gnu-build-system) | 41 | (build-system gnu-build-system) |
| 42 | (arguments | 42 | (arguments |
| 43 | `(#:configure-flags (list | 43 | `(#:configure-flags (list |
| 44 | "--localstatedir=/var" | ||
| 44 | (string-append "--with-libgcrypt-prefix=" | 45 | (string-append "--with-libgcrypt-prefix=" |
| 45 | (assoc-ref %build-inputs | 46 | (assoc-ref %build-inputs |
| 46 | "libgcrypt"))) | 47 | "libgcrypt"))) |
| @@ -70,6 +71,8 @@ | |||
| 70 | "/20130105/guile-2.0.7.tar.xz")) | 71 | "/20130105/guile-2.0.7.tar.xz")) |
| 71 | (sha256 hash))))) | 72 | (sha256 hash))))) |
| 72 | `(("bzip2" ,bzip2) | 73 | `(("bzip2" ,bzip2) |
| 74 | ("gzip" ,gzip) | ||
| 75 | |||
| 73 | ("sqlite" ,sqlite) | 76 | ("sqlite" ,sqlite) |
| 74 | ("libgcrypt" ,libgcrypt) | 77 | ("libgcrypt" ,libgcrypt) |
| 75 | ("guile" ,guile-2.0) | 78 | ("guile" ,guile-2.0) |
| @@ -100,3 +103,20 @@ A user-land free software distribution for GNU/Linux comes as part of Guix. | |||
| 100 | 103 | ||
| 101 | Guix is based on the Nix package manager.") | 104 | Guix is based on the Nix package manager.") |
| 102 | (license gpl3+))) | 105 | (license gpl3+))) |
| 106 | |||
| 107 | (define-public guix-0.4 | ||
| 108 | ;; XXX: Hack to allow the use of a 0.4ish tarball. This assumes that you | ||
| 109 | ;; have run 'make dist' in your build tree. Remove when 0.4 is out. | ||
| 110 | (let* ((builddir (dirname | ||
| 111 | (canonicalize-path | ||
| 112 | (dirname (search-path %load-path | ||
| 113 | "guix/config.scm"))))) | ||
| 114 | (tarball (string-append builddir "/guix-0.4.tar.gz"))) | ||
| 115 | (package (inherit guix) | ||
| 116 | (version "0.4rc") | ||
| 117 | (source (if (file-exists? tarball) | ||
| 118 | tarball | ||
| 119 | (begin | ||
| 120 | (format (current-error-port) | ||
| 121 | "warning: 'guix-0.4.tar.gz' not found~%") | ||
| 122 | (package-source guix))))))) | ||
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 43853fa08ca..b7df902136a 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm | |||
| @@ -32,6 +32,7 @@ | |||
| 32 | #:use-module (gnu packages avahi) | 32 | #:use-module (gnu packages avahi) |
| 33 | #:use-module (gnu packages libphidget) | 33 | #:use-module (gnu packages libphidget) |
| 34 | #:use-module (gnu packages glib) | 34 | #:use-module (gnu packages glib) |
| 35 | #:use-module (gnu packages gtk) | ||
| 35 | #:use-module (gnu packages libffi) | 36 | #:use-module (gnu packages libffi) |
| 36 | #:use-module (gnu packages libjpeg) | 37 | #:use-module (gnu packages libjpeg) |
| 37 | #:use-module ((gnu packages gtk) #:select (cairo pango)) | 38 | #:use-module ((gnu packages gtk) #:select (cairo pango)) |
| @@ -358,12 +359,15 @@ implementation techniques and as an expository tool.") | |||
| 358 | '(#:phases | 359 | '(#:phases |
| 359 | (let* ((gui-libs | 360 | (let* ((gui-libs |
| 360 | (lambda (inputs) | 361 | (lambda (inputs) |
| 361 | ;; FIXME: Add GTK+ and GDK for DrRacket. | 362 | (define (lib input) |
| 362 | (let ((glib (string-append (assoc-ref inputs "glib") "/lib")) | 363 | (string-append (assoc-ref inputs input) "/lib")) |
| 363 | (cairo (string-append (assoc-ref inputs "cairo") "/lib")) | 364 | |
| 364 | (pango (string-append (assoc-ref inputs "pango") "/lib")) | 365 | (list (lib "glib") |
| 365 | (libjpeg (string-append (assoc-ref inputs "libjpeg") "/lib"))) | 366 | (lib "cairo") |
| 366 | (list glib cairo pango libjpeg))))) | 367 | (lib "pango") |
| 368 | (lib "libjpeg") | ||
| 369 | (lib "gtk") | ||
| 370 | (lib "gdk-pixbuf"))))) | ||
| 367 | (alist-cons-before | 371 | (alist-cons-before |
| 368 | 'configure 'pre-configure | 372 | 'configure 'pre-configure |
| 369 | (lambda* (#:key inputs #:allow-other-keys) | 373 | (lambda* (#:key inputs #:allow-other-keys) |
| @@ -397,7 +401,9 @@ implementation techniques and as an expository tool.") | |||
| 397 | ("glib" ,glib) ; for DrRacket | 401 | ("glib" ,glib) ; for DrRacket |
| 398 | ("cairo" ,cairo) | 402 | ("cairo" ,cairo) |
| 399 | ("pango" ,pango) | 403 | ("pango" ,pango) |
| 400 | ("libjpeg" ,libjpeg-8))) | 404 | ("libjpeg" ,libjpeg-8) |
| 405 | ("gdk-pixbuf" ,gdk-pixbuf) | ||
| 406 | ("gtk" ,gtk+))) | ||
| 401 | (home-page "http://racket-lang.org") | 407 | (home-page "http://racket-lang.org") |
| 402 | (synopsis "Implementation of Scheme and related languages") | 408 | (synopsis "Implementation of Scheme and related languages") |
| 403 | (description | 409 | (description |
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 0659c8d10c0..613e2c5f0e4 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm | |||
| @@ -29,11 +29,11 @@ | |||
| 29 | #:use-module ((gnu packages gettext) | 29 | #:use-module ((gnu packages gettext) |
| 30 | #:renamer (symbol-prefix-proc 'gnu:)) | 30 | #:renamer (symbol-prefix-proc 'gnu:)) |
| 31 | #:use-module (gnu packages glib) | 31 | #:use-module (gnu packages glib) |
| 32 | #:use-module (gnu packages gnupg) | ||
| 32 | #:use-module (gnu packages gperf) | 33 | #:use-module (gnu packages gperf) |
| 33 | #:use-module (gnu packages libpng) | 34 | #:use-module (gnu packages libpng) |
| 34 | #:use-module (gnu packages linux) | 35 | #:use-module (gnu packages linux) |
| 35 | #:use-module (gnu packages m4) | 36 | #:use-module (gnu packages m4) |
| 36 | #:use-module (gnu packages openssl) | ||
| 37 | #:use-module (gnu packages perl) | 37 | #:use-module (gnu packages perl) |
| 38 | #:use-module (gnu packages pkg-config) | 38 | #:use-module (gnu packages pkg-config) |
| 39 | #:use-module (gnu packages python) | 39 | #:use-module (gnu packages python) |
| @@ -3114,9 +3114,9 @@ tracking.") | |||
| 3114 | (license license:x11))) | 3114 | (license license:x11))) |
| 3115 | 3115 | ||
| 3116 | 3116 | ||
| 3117 | (define-public xkbcomp | 3117 | (define xkbcomp-intermediate ; used as input for xkeyboard-config |
| 3118 | (package | 3118 | (package |
| 3119 | (name "xkbcomp") | 3119 | (name "xkbcomp-intermediate") |
| 3120 | (version "1.2.4") | 3120 | (version "1.2.4") |
| 3121 | (source | 3121 | (source |
| 3122 | (origin | 3122 | (origin |
| @@ -3139,6 +3139,18 @@ tracking.") | |||
| 3139 | (description "X.org provides an implementation of the X Window System") | 3139 | (description "X.org provides an implementation of the X Window System") |
| 3140 | (license license:x11))) | 3140 | (license license:x11))) |
| 3141 | 3141 | ||
| 3142 | (define-public xkbcomp ; using xkeyboard-config as input | ||
| 3143 | (package (inherit xkbcomp-intermediate) | ||
| 3144 | (name "xkbcomp") | ||
| 3145 | (inputs | ||
| 3146 | `(,@(package-inputs xkbcomp-intermediate) | ||
| 3147 | ("xkeyboard-config" ,xkeyboard-config))) | ||
| 3148 | (arguments | ||
| 3149 | `(#:configure-flags | ||
| 3150 | (list (string-append "--with-xkb-config-root=" | ||
| 3151 | (assoc-ref %build-inputs "xkeyboard-config") | ||
| 3152 | "/share/X11/xkb")))))) | ||
| 3153 | |||
| 3142 | 3154 | ||
| 3143 | (define-public xkbevd | 3155 | (define-public xkbevd |
| 3144 | (package | 3156 | (package |
| @@ -3212,7 +3224,7 @@ tracking.") | |||
| 3212 | ("intltool" ,intltool) | 3224 | ("intltool" ,intltool) |
| 3213 | ("libx11" ,libx11) | 3225 | ("libx11" ,libx11) |
| 3214 | ("pkg-config" ,pkg-config) | 3226 | ("pkg-config" ,pkg-config) |
| 3215 | ("xkbcomp" ,xkbcomp))) | 3227 | ("xkbcomp-intermediate" ,xkbcomp-intermediate))) |
| 3216 | (home-page "http://www.x.org/wiki/") | 3228 | (home-page "http://www.x.org/wiki/") |
| 3217 | (synopsis "xorg implementation of the X Window System") | 3229 | (synopsis "xorg implementation of the X Window System") |
| 3218 | (description "X.org provides an implementation of the X Window System") | 3230 | (description "X.org provides an implementation of the X Window System") |
| @@ -4262,6 +4274,7 @@ emulation to complete hardware acceleration for modern GPUs.") | |||
| 4262 | ("dbus" ,dbus) | 4274 | ("dbus" ,dbus) |
| 4263 | ("dmxproto" ,dmxproto) | 4275 | ("dmxproto" ,dmxproto) |
| 4264 | ("libdmx" ,libdmx) | 4276 | ("libdmx" ,libdmx) |
| 4277 | ("libgcrypt" ,libgcrypt) | ||
| 4265 | ("libxau" ,libxau) | 4278 | ("libxau" ,libxau) |
| 4266 | ("libxaw" ,libxaw) | 4279 | ("libxaw" ,libxaw) |
| 4267 | ("libxdmcp" ,libxdmcp) | 4280 | ("libxdmcp" ,libxdmcp) |
| @@ -4273,7 +4286,6 @@ emulation to complete hardware acceleration for modern GPUs.") | |||
| 4273 | ("libxt" ,libxt) | 4286 | ("libxt" ,libxt) |
| 4274 | ("libxv" ,libxv) | 4287 | ("libxv" ,libxv) |
| 4275 | ("mesa" ,mesa) | 4288 | ("mesa" ,mesa) |
| 4276 | ("openssl" ,openssl) | ||
| 4277 | ("pkg-config" ,pkg-config) | 4289 | ("pkg-config" ,pkg-config) |
| 4278 | ("python" ,python-wrapper) | 4290 | ("python" ,python-wrapper) |
| 4279 | ("recordproto" ,recordproto) | 4291 | ("recordproto" ,recordproto) |
| @@ -4284,10 +4296,30 @@ emulation to complete hardware acceleration for modern GPUs.") | |||
| 4284 | ("xf86dgaproto" ,xf86dgaproto) | 4296 | ("xf86dgaproto" ,xf86dgaproto) |
| 4285 | ("xf86driproto" ,xf86driproto) | 4297 | ("xf86driproto" ,xf86driproto) |
| 4286 | ("xf86vidmodeproto" ,xf86vidmodeproto) | 4298 | ("xf86vidmodeproto" ,xf86vidmodeproto) |
| 4287 | ;; ("xkbutils" ,xkbutils) | 4299 | ("xkbcomp" ,xkbcomp) |
| 4288 | ;; ("xkeyboard-config" ,xkeyboard-config) | 4300 | ("xkeyboard-config" ,xkeyboard-config) |
| 4289 | ("xtrans" ,xtrans) | 4301 | ("xtrans" ,xtrans) |
| 4290 | ("zlib" ,zlib))) | 4302 | ("zlib" ,zlib))) |
| 4303 | (arguments | ||
| 4304 | `(#:configure-flags | ||
| 4305 | (list (string-append "--with-xkb-path=" | ||
| 4306 | (assoc-ref %build-inputs "xkeyboard-config") | ||
| 4307 | "/share/X11/xkb") | ||
| 4308 | (string-append "--with-xkb-output=" | ||
| 4309 | "/tmp") ; FIXME: This is a bit doubtful; where should | ||
| 4310 | ; the compiled keyboard maps go? | ||
| 4311 | (string-append "--with-xkb-bin-directory=" | ||
| 4312 | (assoc-ref %build-inputs "xkbcomp") | ||
| 4313 | "/bin")) | ||
| 4314 | #:phases | ||
| 4315 | (alist-replace | ||
| 4316 | 'configure | ||
| 4317 | (lambda* (#:key outputs #:allow-other-keys #:rest args) | ||
| 4318 | (let ((configure (assoc-ref %standard-phases 'configure))) | ||
| 4319 | (substitute* (find-files "." "\\.c$") | ||
| 4320 | (("/bin/sh") (which "sh"))) | ||
| 4321 | (apply configure args))) | ||
| 4322 | %standard-phases))) | ||
| 4291 | (home-page "http://www.x.org/wiki/") | 4323 | (home-page "http://www.x.org/wiki/") |
| 4292 | (synopsis "xorg implementation of the X Window System") | 4324 | (synopsis "xorg implementation of the X Window System") |
| 4293 | (description "X.org provides an implementation of the X Window System") | 4325 | (description "X.org provides an implementation of the X Window System") |
diff --git a/gnu/packages/zile.scm b/gnu/packages/zile.scm index 6e540ccfab8..4907031c897 100644 --- a/gnu/packages/zile.scm +++ b/gnu/packages/zile.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; | 3 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 4 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 5 | ;;; |
| @@ -24,25 +24,37 @@ | |||
| 24 | #:use-module (gnu packages bdw-gc) | 24 | #:use-module (gnu packages bdw-gc) |
| 25 | #:use-module (gnu packages perl) | 25 | #:use-module (gnu packages perl) |
| 26 | #:use-module (gnu packages help2man) | 26 | #:use-module (gnu packages help2man) |
| 27 | #:use-module (gnu packages ncurses)) | 27 | #:use-module (gnu packages ncurses) |
| 28 | #:use-module (gnu packages bash)) | ||
| 28 | 29 | ||
| 29 | (define-public zile | 30 | (define-public zile |
| 30 | (package | 31 | (package |
| 31 | (name "zile") | 32 | (name "zile") |
| 32 | (version "2.4.9") | 33 | (version "2.4.9") |
| 33 | (source | 34 | (source (origin |
| 34 | (origin | 35 | (method url-fetch) |
| 35 | (method url-fetch) | 36 | (uri (string-append "mirror://gnu/zile/zile-" |
| 36 | (uri (string-append "mirror://gnu/zile/zile-" | 37 | version ".tar.gz")) |
| 37 | version ".tar.gz")) | 38 | (sha256 |
| 38 | (sha256 | 39 | (base32 |
| 39 | (base32 | 40 | "0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7")))) |
| 40 | "0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7")))) | ||
| 41 | (build-system gnu-build-system) | 41 | (build-system gnu-build-system) |
| 42 | (arguments | ||
| 43 | '(#:phases (alist-cons-before | ||
| 44 | 'configure 'patch-/bin/sh | ||
| 45 | (lambda* (#:key inputs #:allow-other-keys) | ||
| 46 | (let ((bash (assoc-ref inputs "bash"))) | ||
| 47 | ;; Refer to the actual shell. | ||
| 48 | (substitute* '("lib/spawni.c" "src/funcs.c") | ||
| 49 | (("/bin/sh") | ||
| 50 | (string-append bash "/bin/sh"))))) | ||
| 51 | %standard-phases))) | ||
| 42 | (inputs | 52 | (inputs |
| 43 | `(("boehm-gc" ,libgc) | 53 | `(("boehm-gc" ,libgc) |
| 44 | ("ncurses" ,ncurses) | 54 | ("ncurses" ,ncurses) |
| 45 | ("perl" ,perl) | 55 | ("bash" ,bash))) |
| 56 | (native-inputs | ||
| 57 | `(("perl" ,perl) | ||
| 46 | ("help2man" ,help2man))) | 58 | ("help2man" ,help2man))) |
| 47 | (home-page "http://www.gnu.org/software/zile/") | 59 | (home-page "http://www.gnu.org/software/zile/") |
| 48 | (synopsis "Zile is lossy Emacs, a lightweight Emacs clone") | 60 | (synopsis "Zile is lossy Emacs, a lightweight Emacs clone") |
diff --git a/gnu/system/dmd.scm b/gnu/system/dmd.scm index 1e8767e3572..b248d9f0c5e 100644 --- a/gnu/system/dmd.scm +++ b/gnu/system/dmd.scm | |||
| @@ -21,8 +21,12 @@ | |||
| 21 | #:use-module (guix packages) | 21 | #:use-module (guix packages) |
| 22 | #:use-module (guix derivations) | 22 | #:use-module (guix derivations) |
| 23 | #:use-module (guix records) | 23 | #:use-module (guix records) |
| 24 | #:use-module ((gnu packages base) | ||
| 25 | #:select (glibc-final)) | ||
| 24 | #:use-module ((gnu packages system) | 26 | #:use-module ((gnu packages system) |
| 25 | #:select (mingetty inetutils)) | 27 | #:select (mingetty inetutils)) |
| 28 | #:use-module ((gnu packages package-management) | ||
| 29 | #:select (guix)) | ||
| 26 | #:use-module (ice-9 match) | 30 | #:use-module (ice-9 match) |
| 27 | #:use-module (srfi srfi-1) | 31 | #:use-module (srfi srfi-1) |
| 28 | #:export (service? | 32 | #:export (service? |
| @@ -34,8 +38,13 @@ | |||
| 34 | service-stop | 38 | service-stop |
| 35 | service-inputs | 39 | service-inputs |
| 36 | 40 | ||
| 41 | host-name-service | ||
| 37 | syslog-service | 42 | syslog-service |
| 38 | mingetty-service | 43 | mingetty-service |
| 44 | nscd-service | ||
| 45 | guix-service | ||
| 46 | static-networking-service | ||
| 47 | |||
| 39 | dmd-configuration-file)) | 48 | dmd-configuration-file)) |
| 40 | 49 | ||
| 41 | ;;; Commentary: | 50 | ;;; Commentary: |
| @@ -58,6 +67,14 @@ | |||
| 58 | (inputs service-inputs ; list of inputs | 67 | (inputs service-inputs ; list of inputs |
| 59 | (default '()))) | 68 | (default '()))) |
| 60 | 69 | ||
| 70 | (define (host-name-service store name) | ||
| 71 | "Return a service that sets the host name to NAME." | ||
| 72 | (service | ||
| 73 | (provision '(host-name)) | ||
| 74 | (start `(lambda _ | ||
| 75 | (sethostname ,name))) | ||
| 76 | (respawn? #f))) | ||
| 77 | |||
| 61 | (define (mingetty-service store tty) | 78 | (define (mingetty-service store tty) |
| 62 | "Return a service to run mingetty on TTY." | 79 | "Return a service to run mingetty on TTY." |
| 63 | (let* ((mingetty-drv (package-derivation store mingetty)) | 80 | (let* ((mingetty-drv (package-derivation store mingetty)) |
| @@ -65,9 +82,32 @@ | |||
| 65 | "/sbin/mingetty"))) | 82 | "/sbin/mingetty"))) |
| 66 | (service | 83 | (service |
| 67 | (provision (list (symbol-append 'term- (string->symbol tty)))) | 84 | (provision (list (symbol-append 'term- (string->symbol tty)))) |
| 85 | |||
| 86 | ;; Since the login prompt shows the host name, wait for the 'host-name' | ||
| 87 | ;; service to be done. | ||
| 88 | (requirement '(host-name)) | ||
| 89 | |||
| 68 | (start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty)) | 90 | (start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty)) |
| 69 | (inputs `(("mingetty" ,mingetty)))))) | 91 | (inputs `(("mingetty" ,mingetty)))))) |
| 70 | 92 | ||
| 93 | (define* (nscd-service store | ||
| 94 | #:key (glibc glibc-final)) | ||
| 95 | "Return a service that runs libc's name service cache daemon (nscd)." | ||
| 96 | (let ((nscd (string-append (package-output store glibc) "/sbin/nscd"))) | ||
| 97 | (service | ||
| 98 | (provision '(nscd)) | ||
| 99 | (start `(make-forkexec-constructor ,nscd "-f" "/dev/null")) | ||
| 100 | |||
| 101 | ;; XXX: Local copy of 'make-kill-destructor' because the one upstream | ||
| 102 | ;; uses the broken 'opt-lambda' macro. | ||
| 103 | (stop `(lambda* (#:optional (signal SIGTERM)) | ||
| 104 | (lambda (pid . args) | ||
| 105 | (kill pid signal) | ||
| 106 | #f))) | ||
| 107 | |||
| 108 | (respawn? #f) | ||
| 109 | (inputs `(("glibc" ,glibc)))))) | ||
| 110 | |||
| 71 | (define (syslog-service store) | 111 | (define (syslog-service store) |
| 72 | "Return a service that runs 'syslogd' with reasonable default settings." | 112 | "Return a service that runs 'syslogd' with reasonable default settings." |
| 73 | 113 | ||
| @@ -104,6 +144,33 @@ | |||
| 104 | (inputs `(("inetutils" ,inetutils) | 144 | (inputs `(("inetutils" ,inetutils) |
| 105 | ("syslog.conf" ,syslog.conf)))))) | 145 | ("syslog.conf" ,syslog.conf)))))) |
| 106 | 146 | ||
| 147 | (define* (guix-service store #:key (guix guix)) | ||
| 148 | "Return a service that runs the build daemon from GUIX." | ||
| 149 | (let* ((drv (package-derivation store guix)) | ||
| 150 | (daemon (string-append (derivation->output-path drv) | ||
| 151 | "/bin/guix-daemon"))) | ||
| 152 | (service | ||
| 153 | (provision '(guix-daemon)) | ||
| 154 | (start `(make-forkexec-constructor ,daemon)) | ||
| 155 | (inputs `(("guix" ,guix)))))) | ||
| 156 | |||
| 157 | (define* (static-networking-service store interface ip | ||
| 158 | #:key (inetutils inetutils)) | ||
| 159 | "Return a service that starts INTERFACE with address IP." | ||
| 160 | |||
| 161 | ;; TODO: Eventually we should do this using Guile's networking procedures, | ||
| 162 | ;; like 'configure-qemu-networking' does, but the patch that does this is | ||
| 163 | ;; not yet in stock Guile. | ||
| 164 | (let ((ifconfig (string-append (package-output store inetutils) | ||
| 165 | "/bin/ifconfig"))) | ||
| 166 | (service | ||
| 167 | (provision '(networking)) | ||
| 168 | (start `(make-forkexec-constructor ,ifconfig ,interface ,ip "up")) | ||
| 169 | (stop `(make-forkexec-constructor ,ifconfig ,interface "down")) | ||
| 170 | (respawn? #f) | ||
| 171 | (inputs `(("inetutils" ,inetutils)))))) | ||
| 172 | |||
| 173 | |||
| 107 | (define (dmd-configuration-file store services) | 174 | (define (dmd-configuration-file store services) |
| 108 | "Return the dmd configuration file for SERVICES." | 175 | "Return the dmd configuration file for SERVICES." |
| 109 | (define config | 176 | (define config |
diff --git a/gnu/system/linux.scm b/gnu/system/linux.scm index b2daa13e066..6aebe159ba8 100644 --- a/gnu/system/linux.scm +++ b/gnu/system/linux.scm | |||
| @@ -125,9 +125,10 @@ | |||
| 125 | (let ((unix (pam-entry | 125 | (let ((unix (pam-entry |
| 126 | (control "required") | 126 | (control "required") |
| 127 | (module "pam_unix.so")))) | 127 | (module "pam_unix.so")))) |
| 128 | (lambda* (name #:key allow-empty-passwords?) | 128 | (lambda* (name #:key allow-empty-passwords? motd) |
| 129 | "Return a standard Unix-style PAM service for NAME. When | 129 | "Return a standard Unix-style PAM service for NAME. When |
| 130 | ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords." | 130 | ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When MOTD is true, it |
| 131 | should be the name of a file used as the message-of-the-day." | ||
| 131 | ;; See <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>. | 132 | ;; See <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>. |
| 132 | (let ((name* name)) | 133 | (let ((name* name)) |
| 133 | (pam-service | 134 | (pam-service |
| @@ -140,6 +141,12 @@ ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords." | |||
| 140 | (arguments '("nullok"))) | 141 | (arguments '("nullok"))) |
| 141 | unix))) | 142 | unix))) |
| 142 | (password (list unix)) | 143 | (password (list unix)) |
| 143 | (session (list unix))))))) | 144 | (session (if motd |
| 145 | (list unix | ||
| 146 | (pam-entry | ||
| 147 | (control "optional") | ||
| 148 | (module "pam_motd.so") | ||
| 149 | (arguments (list (string-append "motd=" motd))))) | ||
| 150 | (list unix)))))))) | ||
| 144 | 151 | ||
| 145 | ;;; linux.scm ends here | 152 | ;;; linux.scm ends here |
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index df55f7c94e8..0ed805510a4 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm | |||
| @@ -23,6 +23,8 @@ | |||
| 23 | #:use-module (guix packages) | 23 | #:use-module (guix packages) |
| 24 | #:use-module ((gnu packages base) #:select (%final-inputs | 24 | #:use-module ((gnu packages base) #:select (%final-inputs |
| 25 | guile-final | 25 | guile-final |
| 26 | gcc-final | ||
| 27 | glibc-final | ||
| 26 | coreutils)) | 28 | coreutils)) |
| 27 | #:use-module (gnu packages guile) | 29 | #:use-module (gnu packages guile) |
| 28 | #:use-module (gnu packages bash) | 30 | #:use-module (gnu packages bash) |
| @@ -31,6 +33,7 @@ | |||
| 31 | #:use-module (gnu packages grub) | 33 | #:use-module (gnu packages grub) |
| 32 | #:use-module (gnu packages linux) | 34 | #:use-module (gnu packages linux) |
| 33 | #:use-module (gnu packages linux-initrd) | 35 | #:use-module (gnu packages linux-initrd) |
| 36 | #:use-module (gnu packages package-management) | ||
| 34 | #:use-module ((gnu packages make-bootstrap) | 37 | #:use-module ((gnu packages make-bootstrap) |
| 35 | #:select (%guile-static-stripped)) | 38 | #:select (%guile-static-stripped)) |
| 36 | #:use-module (gnu packages system) | 39 | #:use-module (gnu packages system) |
| @@ -91,6 +94,10 @@ made available under the /xchg CIFS share." | |||
| 91 | `(,input . ,(package-output store package "out" system))) | 94 | `(,input . ,(package-output store package "out" system))) |
| 92 | ((input (? package? package) sub-drv) | 95 | ((input (? package? package) sub-drv) |
| 93 | `(,input . ,(package-output store package sub-drv system))) | 96 | `(,input . ,(package-output store package sub-drv system))) |
| 97 | ((input (? derivation? drv)) | ||
| 98 | `(,input . ,(derivation->output-path drv))) | ||
| 99 | ((input (? derivation? drv) sub-drv) | ||
| 100 | `(,input . ,(derivation->output-path drv sub-drv))) | ||
| 94 | ((input (and (? string?) (? store-path?) file)) | 101 | ((input (and (? string?) (? store-path?) file)) |
| 95 | `(,input . ,file))) | 102 | `(,input . ,file))) |
| 96 | inputs)) | 103 | inputs)) |
| @@ -177,7 +184,8 @@ made available under the /xchg CIFS share." | |||
| 177 | `(,name ,(->drv package) | 184 | `(,name ,(->drv package) |
| 178 | ,@sub-drv)) | 185 | ,@sub-drv)) |
| 179 | ((name (? string? file)) | 186 | ((name (? string? file)) |
| 180 | `(,name ,file))) | 187 | `(,name ,file)) |
| 188 | (tuple tuple)) | ||
| 181 | inputs)) | 189 | inputs)) |
| 182 | #:env-vars env-vars | 190 | #:env-vars env-vars |
| 183 | #:modules (delete-duplicates | 191 | #:modules (delete-duplicates |
| @@ -191,6 +199,7 @@ made available under the /xchg CIFS share." | |||
| 191 | (system (%current-system)) | 199 | (system (%current-system)) |
| 192 | (disk-image-size (* 100 (expt 2 20))) | 200 | (disk-image-size (* 100 (expt 2 20))) |
| 193 | grub-configuration | 201 | grub-configuration |
| 202 | (initialize-store? #f) | ||
| 194 | (populate #f) | 203 | (populate #f) |
| 195 | (inputs '()) | 204 | (inputs '()) |
| 196 | (inputs-to-copy '())) | 205 | (inputs-to-copy '())) |
| @@ -199,11 +208,13 @@ disk image, with a GRUB installation that uses GRUB-CONFIGURATION as its | |||
| 199 | configuration file. | 208 | configuration file. |
| 200 | 209 | ||
| 201 | INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied | 210 | INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied |
| 202 | into the image being built. | 211 | into the image being built. When INITIALIZE-STORE? is true, initialize the |
| 212 | store database in the image so that Guix can be used in the image. | ||
| 203 | 213 | ||
| 204 | When POPULATE is true, it must be the store file name of a Guile script to run | 214 | POPULATE is a list of directives stating directories or symlinks to be created |
| 205 | in the disk image partition once it has been populated with INPUTS-TO-COPY. | 215 | in the disk image partition. It is evaluated once the image has been |
| 206 | It can be used to provide additional files, such as /etc files." | 216 | populated with INPUTS-TO-COPY. It can be used to provide additional files, |
| 217 | such as /etc files." | ||
| 207 | (define input->name+derivation | 218 | (define input->name+derivation |
| 208 | (match-lambda | 219 | (match-lambda |
| 209 | ((name (? package? package)) | 220 | ((name (? package? package)) |
| @@ -213,6 +224,10 @@ It can be used to provide additional files, such as /etc files." | |||
| 213 | `(,name . ,(derivation->output-path | 224 | `(,name . ,(derivation->output-path |
| 214 | (package-derivation store package system) | 225 | (package-derivation store package system) |
| 215 | sub-drv))) | 226 | sub-drv))) |
| 227 | ((name (? derivation? drv)) | ||
| 228 | `(,name . ,(derivation->output-path drv))) | ||
| 229 | ((name (? derivation? drv) sub-drv) | ||
| 230 | `(,name . ,(derivation->output-path drv sub-drv))) | ||
| 216 | ((input (and (? string?) (? store-path?) file)) | 231 | ((input (and (? string?) (? store-path?) file)) |
| 217 | `(,input . ,file)))) | 232 | `(,input . ,file)))) |
| 218 | 233 | ||
| @@ -298,6 +313,36 @@ It can be used to provide additional files, such as /etc files." | |||
| 298 | ;; Populate /dev. | 313 | ;; Populate /dev. |
| 299 | (make-essential-device-nodes #:root "/fs") | 314 | (make-essential-device-nodes #:root "/fs") |
| 300 | 315 | ||
| 316 | ;; Optionally, register the inputs in the image's store. | ||
| 317 | (let* ((guix (assoc-ref %build-inputs "guix")) | ||
| 318 | (register (string-append guix | ||
| 319 | "/sbin/guix-register"))) | ||
| 320 | ,@(if initialize-store? | ||
| 321 | (match inputs-to-copy | ||
| 322 | (((graph-files . _) ...) | ||
| 323 | (map (lambda (closure) | ||
| 324 | `(system* register "--prefix" "/fs" | ||
| 325 | ,(string-append "/xchg/" | ||
| 326 | closure))) | ||
| 327 | graph-files))) | ||
| 328 | '(#f))) | ||
| 329 | |||
| 330 | ;; Evaluate the POPULATE directives. | ||
| 331 | ,@(let loop ((directives populate) | ||
| 332 | (statements '())) | ||
| 333 | (match directives | ||
| 334 | (() | ||
| 335 | (reverse statements)) | ||
| 336 | ((('directory name) rest ...) | ||
| 337 | (loop rest | ||
| 338 | (cons `(mkdir-p ,(string-append "/fs" name)) | ||
| 339 | statements))) | ||
| 340 | (((new '-> old) rest ...) | ||
| 341 | (loop rest | ||
| 342 | (cons `(symlink ,old | ||
| 343 | ,(string-append "/fs" new)) | ||
| 344 | statements))))) | ||
| 345 | |||
| 301 | (and=> (assoc-ref %build-inputs "populate") | 346 | (and=> (assoc-ref %build-inputs "populate") |
| 302 | (lambda (populate) | 347 | (lambda (populate) |
| 303 | (chdir "/fs") | 348 | (chdir "/fs") |
| @@ -337,8 +382,8 @@ It can be used to provide additional files, such as /etc files." | |||
| 337 | ("gawk" ,(car (assoc-ref %final-inputs "gawk"))) | 382 | ("gawk" ,(car (assoc-ref %final-inputs "gawk"))) |
| 338 | ("util-linux" ,util-linux) | 383 | ("util-linux" ,util-linux) |
| 339 | 384 | ||
| 340 | ,@(if populate | 385 | ,@(if initialize-store? |
| 341 | `(("populate" ,populate)) | 386 | `(("guix" ,guix-0.4)) |
| 342 | '()) | 387 | '()) |
| 343 | 388 | ||
| 344 | ,@inputs-to-copy) | 389 | ,@inputs-to-copy) |
| @@ -353,19 +398,73 @@ It can be used to provide additional files, such as /etc files." | |||
| 353 | ;;; Stand-alone VM image. | 398 | ;;; Stand-alone VM image. |
| 354 | ;;; | 399 | ;;; |
| 355 | 400 | ||
| 401 | (define* (union store inputs | ||
| 402 | #:key (guile (%guile-for-build)) (system (%current-system)) | ||
| 403 | (name "union")) | ||
| 404 | "Return a derivation that builds the union of INPUTS. INPUTS is a list of | ||
| 405 | input tuples." | ||
| 406 | (define builder | ||
| 407 | `(begin | ||
| 408 | (use-modules (guix build union)) | ||
| 409 | |||
| 410 | (setvbuf (current-output-port) _IOLBF) | ||
| 411 | (setvbuf (current-error-port) _IOLBF) | ||
| 412 | |||
| 413 | (let ((output (assoc-ref %outputs "out")) | ||
| 414 | (inputs (map cdr %build-inputs))) | ||
| 415 | (format #t "building union `~a' with ~a packages...~%" | ||
| 416 | output (length inputs)) | ||
| 417 | (union-build output inputs)))) | ||
| 418 | |||
| 419 | (build-expression->derivation store name system builder | ||
| 420 | (map (match-lambda | ||
| 421 | ((name (? package? p)) | ||
| 422 | `(,name ,(package-derivation store p | ||
| 423 | system))) | ||
| 424 | ((name (? package? p) output) | ||
| 425 | `(,name ,(package-derivation store p | ||
| 426 | system) | ||
| 427 | ,output)) | ||
| 428 | (x x)) | ||
| 429 | inputs) | ||
| 430 | #:modules '((guix build union)) | ||
| 431 | #:guile-for-build guile)) | ||
| 432 | |||
| 356 | (define (system-qemu-image store) | 433 | (define (system-qemu-image store) |
| 357 | "Return the derivation of a QEMU image of the GNU system." | 434 | "Return the derivation of a QEMU image of the GNU system." |
| 435 | (define motd | ||
| 436 | (add-text-to-store store "motd" " | ||
| 437 | Happy birthday, GNU! http://www.gnu.org/gnu30 | ||
| 438 | |||
| 439 | ")) | ||
| 440 | |||
| 358 | (define %pam-services | 441 | (define %pam-services |
| 359 | ;; Services known to PAM. | 442 | ;; Services known to PAM. |
| 360 | (list %pam-other-services | 443 | (list %pam-other-services |
| 361 | (unix-pam-service "login" #:allow-empty-passwords? #t))) | 444 | (unix-pam-service "login" |
| 445 | #:allow-empty-passwords? #t | ||
| 446 | #:motd motd))) | ||
| 362 | 447 | ||
| 363 | (define %dmd-services | 448 | (define %dmd-services |
| 364 | ;; Services run by dmd. | 449 | ;; Services run by dmd. |
| 365 | (list (mingetty-service store "tty1") | 450 | (list (host-name-service store "gnu") |
| 451 | (mingetty-service store "tty1") | ||
| 366 | (mingetty-service store "tty2") | 452 | (mingetty-service store "tty2") |
| 367 | (mingetty-service store "tty3") | 453 | (mingetty-service store "tty3") |
| 368 | (syslog-service store))) | 454 | (mingetty-service store "tty4") |
| 455 | (mingetty-service store "tty5") | ||
| 456 | (mingetty-service store "tty6") | ||
| 457 | (syslog-service store) | ||
| 458 | (guix-service store #:guix guix-0.4) | ||
| 459 | (nscd-service store) | ||
| 460 | |||
| 461 | ;; QEMU networking settings. | ||
| 462 | (static-networking-service store "eth0" "10.0.2.10"))) | ||
| 463 | |||
| 464 | (define resolv.conf | ||
| 465 | ;; Name resolution for default QEMU settings. | ||
| 466 | (add-text-to-store store "resolv.conf" | ||
| 467 | "nameserver 10.0.2.3\n")) | ||
| 369 | 468 | ||
| 370 | (parameterize ((%guile-for-build (package-derivation store guile-final))) | 469 | (parameterize ((%guile-for-build (package-derivation store guile-final))) |
| 371 | (let* ((bash-drv (package-derivation store bash)) | 470 | (let* ((bash-drv (package-derivation store bash)) |
| @@ -383,20 +482,53 @@ It can be used to provide additional files, such as /etc files." | |||
| 383 | "root:x:0:\n")) | 482 | "root:x:0:\n")) |
| 384 | (pam.d-drv (pam-services->directory store %pam-services)) | 483 | (pam.d-drv (pam-services->directory store %pam-services)) |
| 385 | (pam.d (derivation->output-path pam.d-drv)) | 484 | (pam.d (derivation->output-path pam.d-drv)) |
| 386 | (populate | 485 | |
| 387 | (add-text-to-store store "populate-qemu-image" | 486 | (packages `(("coreutils" ,coreutils) |
| 388 | (object->string | 487 | ("bash" ,bash) |
| 389 | `(begin | 488 | ("guile" ,guile-2.0) |
| 390 | (mkdir-p "etc") | 489 | ("dmd" ,dmd) |
| 391 | (mkdir-p "var/log") ; for dmd | 490 | ("gcc" ,gcc-final) |
| 392 | (symlink ,shadow "etc/shadow") | 491 | ("libc" ,glibc-final) |
| 393 | (symlink ,passwd "etc/passwd") | 492 | ("inetutils" ,inetutils) |
| 394 | (symlink ,group "etc/group") | 493 | ("guix" ,guix-0.4))) |
| 395 | (symlink "/dev/null" | 494 | |
| 396 | "etc/login.defs") | 495 | ;; TODO: Replace with a real profile with a manifest. |
| 397 | (symlink ,pam.d "etc/pam.d") | 496 | ;; TODO: Generate bashrc from packages' search-paths. |
| 398 | (mkdir-p "var/run"))) | 497 | (profile-drv (union store packages |
| 399 | (list passwd))) | 498 | #:name "default-profile")) |
| 499 | (profile (derivation->output-path profile-drv)) | ||
| 500 | (bashrc (add-text-to-store store "bashrc" | ||
| 501 | (string-append " | ||
| 502 | export PS1='\\u@\\h\\$ ' | ||
| 503 | export PATH=$HOME/.guix-profile/bin:" profile "/bin:" profile "/sbin | ||
| 504 | export CPATH=$HOME/.guix-profile/include:" profile "/include | ||
| 505 | export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib | ||
| 506 | alias ls='ls -p --color' | ||
| 507 | alias ll='ls -l' | ||
| 508 | "))) | ||
| 509 | |||
| 510 | (issue (add-text-to-store store "issue" " | ||
| 511 | This is an alpha preview of the GNU system. Welcome. | ||
| 512 | |||
| 513 | This image features the GNU Guix package manager, which was used to | ||
| 514 | build it (http://www.gnu.org/software/guix/). The init system is | ||
| 515 | GNU dmd (http://www.gnu.org/software/dmd/). | ||
| 516 | |||
| 517 | You can log in as 'root' with no password. | ||
| 518 | ")) | ||
| 519 | |||
| 520 | (populate `((directory "/etc") | ||
| 521 | (directory "/var/log") ; for dmd | ||
| 522 | (directory "/var/run/nscd") | ||
| 523 | ("/etc/shadow" -> ,shadow) | ||
| 524 | ("/etc/passwd" -> ,passwd) | ||
| 525 | ("/etc/login.defs" -> "/dev/null") | ||
| 526 | ("/etc/pam.d" -> ,pam.d) | ||
| 527 | ("/etc/resolv.conf" -> ,resolv.conf) | ||
| 528 | ("/etc/profile" -> ,bashrc) | ||
| 529 | ("/etc/issue" -> ,issue) | ||
| 530 | (directory "/var/nix/gcroots") | ||
| 531 | ("/var/nix/gcroots/default-profile" -> ,profile))) | ||
| 400 | (out (derivation->output-path | 532 | (out (derivation->output-path |
| 401 | (package-derivation store mingetty))) | 533 | (package-derivation store mingetty))) |
| 402 | (boot (add-text-to-store store "boot" | 534 | (boot (add-text-to-store store "boot" |
| @@ -405,32 +537,36 @@ It can be used to provide additional files, such as /etc files." | |||
| 405 | "--config" ,dmd-conf)) | 537 | "--config" ,dmd-conf)) |
| 406 | (list out))) | 538 | (list out))) |
| 407 | (entries (list (menu-entry | 539 | (entries (list (menu-entry |
| 408 | (label "Boot-to-Guile! (GNU System technology preview)") | 540 | (label (string-append |
| 541 | "GNU System with Linux-Libre " | ||
| 542 | (package-version linux-libre) | ||
| 543 | " (technology preview)")) | ||
| 409 | (linux linux-libre) | 544 | (linux linux-libre) |
| 410 | (linux-arguments `("--root=/dev/vda1" | 545 | (linux-arguments `("--root=/dev/vda1" |
| 411 | ,(string-append "--load=" boot))) | 546 | ,(string-append "--load=" boot))) |
| 412 | (initrd gnu-system-initrd)))) | 547 | (initrd gnu-system-initrd)))) |
| 413 | (grub.cfg (grub-configuration-file store entries))) | 548 | (grub.cfg (grub-configuration-file store entries))) |
| 414 | (build-derivations store (list pam.d-drv)) | ||
| 415 | (qemu-image store | 549 | (qemu-image store |
| 416 | #:grub-configuration grub.cfg | 550 | #:grub-configuration grub.cfg |
| 417 | #:populate populate | 551 | #:populate populate |
| 418 | #:disk-image-size (* 400 (expt 2 20)) | 552 | #:disk-image-size (* 500 (expt 2 20)) |
| 553 | #:initialize-store? #t | ||
| 419 | #:inputs-to-copy `(("boot" ,boot) | 554 | #:inputs-to-copy `(("boot" ,boot) |
| 420 | ("linux" ,linux-libre) | 555 | ("linux" ,linux-libre) |
| 421 | ("initrd" ,gnu-system-initrd) | 556 | ("initrd" ,gnu-system-initrd) |
| 422 | ("coreutils" ,coreutils) | 557 | ("pam.d" ,pam.d-drv) |
| 423 | ("bash" ,bash) | 558 | ("profile" ,profile-drv) |
| 424 | ("guile" ,guile-2.0) | ||
| 425 | ("mingetty" ,mingetty) | ||
| 426 | ("dmd" ,dmd) | ||
| 427 | 559 | ||
| 428 | ;; Configuration. | 560 | ;; Configuration. |
| 429 | ("dmd.conf" ,dmd-conf) | 561 | ("dmd.conf" ,dmd-conf) |
| 430 | ("etc-pam.d" ,pam.d) | 562 | ("etc-pam.d" ,pam.d-drv) |
| 431 | ("etc-passwd" ,passwd) | 563 | ("etc-passwd" ,passwd) |
| 432 | ("etc-shadow" ,shadow) | 564 | ("etc-shadow" ,shadow) |
| 433 | ("etc-group" ,group) | 565 | ("etc-group" ,group) |
| 566 | ("etc-resolv.conf" ,resolv.conf) | ||
| 567 | ("etc-bashrc" ,bashrc) | ||
| 568 | ("etc-issue" ,issue) | ||
| 569 | ("etc-motd" ,motd) | ||
| 434 | ,@(append-map service-inputs | 570 | ,@(append-map service-inputs |
| 435 | %dmd-services)))))) | 571 | %dmd-services)))))) |
| 436 | 572 | ||
diff --git a/guix/packages.scm b/guix/packages.scm index efec4146753..9433fe9586a 100644 --- a/guix/packages.scm +++ b/guix/packages.scm | |||
| @@ -462,8 +462,8 @@ system identifying string)." | |||
| 462 | #:outputs outputs #:system system | 462 | #:outputs outputs #:system system |
| 463 | (args)))))))) | 463 | (args)))))))) |
| 464 | 464 | ||
| 465 | (define* (package-output store package output | 465 | (define* (package-output store package |
| 466 | #:optional (system (%current-system))) | 466 | #:optional (output "out") (system (%current-system))) |
| 467 | "Return the output path of PACKAGE's OUTPUT for SYSTEM---where OUTPUT is the | 467 | "Return the output path of PACKAGE's OUTPUT for SYSTEM---where OUTPUT is the |
| 468 | symbolic output name, such as \"out\". Note that this procedure calls | 468 | symbolic output name, such as \"out\". Note that this procedure calls |
| 469 | `package-derivation', which is costly." | 469 | `package-derivation', which is costly." |
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 1d00e395404..66505f172f4 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm | |||
| @@ -955,12 +955,16 @@ more information.~%")) | |||
| 955 | (match (assoc-ref opts 'query) | 955 | (match (assoc-ref opts 'query) |
| 956 | (('list-generations pattern) | 956 | (('list-generations pattern) |
| 957 | (define (list-generation number) | 957 | (define (list-generation number) |
| 958 | (begin | 958 | (unless (zero? number) |
| 959 | (format #t (_ "Generation ~a\t~a~%") number | 959 | (let ((header (format #f (_ "Generation ~a\t~a") number |
| 960 | (date->string | 960 | (date->string |
| 961 | (time-utc->date | 961 | (time-utc->date |
| 962 | (generation-time profile number)) | 962 | (generation-time profile number)) |
| 963 | "~b ~d ~Y ~T")) | 963 | "~b ~d ~Y ~T"))) |
| 964 | (current (generation-number profile))) | ||
| 965 | (if (= number current) | ||
| 966 | (format #t (_ "~a\t(current)~%") header) | ||
| 967 | (format #t "~a~%" header))) | ||
| 964 | (for-each (match-lambda | 968 | (for-each (match-lambda |
| 965 | ((name version output location _) | 969 | ((name version output location _) |
| 966 | (format #t " ~a\t~a\t~a\t~a~%" | 970 | (format #t " ~a\t~a\t~a\t~a~%" |
| @@ -977,11 +981,16 @@ more information.~%")) | |||
| 977 | (leave (_ "profile '~a' does not exist~%") | 981 | (leave (_ "profile '~a' does not exist~%") |
| 978 | profile)) | 982 | profile)) |
| 979 | ((string-null? pattern) | 983 | ((string-null? pattern) |
| 980 | (for-each list-generation | 984 | (let ((numbers (generation-numbers profile))) |
| 981 | (generation-numbers profile))) | 985 | (if (equal? numbers '(0)) |
| 986 | (exit 1) | ||
| 987 | (for-each list-generation numbers)))) | ||
| 982 | ((matching-generations pattern profile) | 988 | ((matching-generations pattern profile) |
| 983 | => | 989 | => |
| 984 | (cut for-each list-generation <>)) | 990 | (lambda (numbers) |
| 991 | (if (null-list? numbers) | ||
| 992 | (exit 1) | ||
| 993 | (for-each list-generation numbers)))) | ||
| 985 | (else | 994 | (else |
| 986 | (leave (_ "invalid syntax: ~a~%") | 995 | (leave (_ "invalid syntax: ~a~%") |
| 987 | pattern))) | 996 | pattern))) |
diff --git a/nix/guix-register/guix-register.cc b/nix/guix-register/guix-register.cc index 0a028f0cfed..14478f6a130 100644 --- a/nix/guix-register/guix-register.cc +++ b/nix/guix-register/guix-register.cc | |||
| @@ -62,6 +62,10 @@ static const struct argp_option options[] = | |||
| 62 | { 0, 0, 0, 0, 0 } | 62 | { 0, 0, 0, 0, 0 } |
| 63 | }; | 63 | }; |
| 64 | 64 | ||
| 65 | |||
| 66 | /* Prefix of the store being populated. */ | ||
| 67 | static std::string prefix; | ||
| 68 | |||
| 65 | /* Parse a single option. */ | 69 | /* Parse a single option. */ |
| 66 | static error_t | 70 | static error_t |
| 67 | parse_opt (int key, char *arg, struct argp_state *state) | 71 | parse_opt (int key, char *arg, struct argp_state *state) |
| @@ -70,7 +74,7 @@ parse_opt (int key, char *arg, struct argp_state *state) | |||
| 70 | { | 74 | { |
| 71 | case 'p': | 75 | case 'p': |
| 72 | { | 76 | { |
| 73 | string prefix = canonPath (arg); | 77 | prefix = canonPath (arg); |
| 74 | settings.nixStore = prefix + NIX_STORE_DIR; | 78 | settings.nixStore = prefix + NIX_STORE_DIR; |
| 75 | settings.nixDataDir = prefix + NIX_DATA_DIR; | 79 | settings.nixDataDir = prefix + NIX_DATA_DIR; |
| 76 | settings.nixLogDir = prefix + NIX_LOG_DIR; | 80 | settings.nixLogDir = prefix + NIX_LOG_DIR; |
| @@ -128,15 +132,25 @@ register_validity (LocalStore *store, std::istream &input, | |||
| 128 | ValidPathInfo info = decodeValidPathInfo (input, hashGiven); | 132 | ValidPathInfo info = decodeValidPathInfo (input, hashGiven); |
| 129 | if (info.path == "") | 133 | if (info.path == "") |
| 130 | break; | 134 | break; |
| 135 | |||
| 136 | /* Rewrite the input to refer final name, as if we were in a chroot | ||
| 137 | under PREFIX. */ | ||
| 138 | std::string final_prefix (NIX_STORE_DIR "/"); | ||
| 139 | info.path = final_prefix + baseNameOf (info.path); | ||
| 140 | |||
| 141 | /* Keep its real path to canonicalize it and compute its hash. */ | ||
| 142 | std::string real_path; | ||
| 143 | real_path = prefix + "/" + settings.nixStore + "/" + baseNameOf (info.path); | ||
| 144 | |||
| 131 | if (!store->isValidPath (info.path) || reregister) | 145 | if (!store->isValidPath (info.path) || reregister) |
| 132 | { | 146 | { |
| 133 | /* !!! races */ | 147 | /* !!! races */ |
| 134 | if (canonicalise) | 148 | if (canonicalise) |
| 135 | canonicalisePathMetaData (info.path, -1); | 149 | canonicalisePathMetaData (real_path, -1); |
| 136 | 150 | ||
| 137 | if (!hashGiven) | 151 | if (!hashGiven) |
| 138 | { | 152 | { |
| 139 | HashResult hash = hashPath (htSHA256, info.path); | 153 | HashResult hash = hashPath (htSHA256, real_path); |
| 140 | info.hash = hash.first; | 154 | info.hash = hash.first; |
| 141 | info.narSize = hash.second; | 155 | info.narSize = hash.second; |
| 142 | } | 156 | } |
| @@ -155,7 +169,15 @@ main (int argc, char *argv[]) | |||
| 155 | { | 169 | { |
| 156 | argp_parse (&argp, argc, argv, 0, 0, 0); | 170 | argp_parse (&argp, argc, argv, 0, 0, 0); |
| 157 | 171 | ||
| 172 | /* Instantiate the store. This creates any missing directories among | ||
| 173 | 'settings.nixStore', 'settings.nixDBPath', etc. */ | ||
| 158 | LocalStore store; | 174 | LocalStore store; |
| 175 | |||
| 176 | /* Under the --prefix tree, the final name of the store will be | ||
| 177 | NIX_STORE_DIR. Set it here so that the database uses file names | ||
| 178 | prefixed by NIX_STORE_DIR and not PREFIX + NIX_STORE_DIR. */ | ||
| 179 | settings.nixStore = NIX_STORE_DIR; | ||
| 180 | |||
| 159 | register_validity (&store, *input); | 181 | register_validity (&store, *input); |
| 160 | } | 182 | } |
| 161 | catch (std::exception &e) | 183 | catch (std::exception &e) |
| @@ -5,16 +5,17 @@ | |||
| 5 | # | 5 | # |
| 6 | msgid "" | 6 | msgid "" |
| 7 | msgstr "" | 7 | msgstr "" |
| 8 | "Project-Id-Version: guix 0.3-pre3\n" | 8 | "Project-Id-Version: guix 0.4-pre2\n" |
| 9 | "Report-Msgid-Bugs-To: ludo@gnu.org\n" | 9 | "Report-Msgid-Bugs-To: ludo@gnu.org\n" |
| 10 | "POT-Creation-Date: 2013-08-15 11:44+0200\n" | 10 | "POT-Creation-Date: 2013-09-25 16:04+0200\n" |
| 11 | "PO-Revision-Date: 2013-07-25 09:25-0300\n" | 11 | "PO-Revision-Date: 2013-09-25 15:53-0300\n" |
| 12 | "Last-Translator: Felipe Castro <fefcas@gmail.com>\n" | 12 | "Last-Translator: Felipe Castro <fefcas@gmail.com>\n" |
| 13 | "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" | 13 | "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" |
| 14 | "Language: eo\n" | 14 | "Language: Esperanto\n" |
| 15 | "MIME-Version: 1.0\n" | 15 | "MIME-Version: 1.0\n" |
| 16 | "Content-Type: text/plain; charset=UTF-8\n" | 16 | "Content-Type: text/plain; charset=UTF-8\n" |
| 17 | "Content-Transfer-Encoding: 8bit\n" | 17 | "Content-Transfer-Encoding: 8bit\n" |
| 18 | "X-Generator: Poedit 1.5.4\n" | ||
| 18 | 19 | ||
| 19 | #: gnu/packages.scm:94 | 20 | #: gnu/packages.scm:94 |
| 20 | #, scheme-format | 21 | #, scheme-format |
| @@ -52,15 +53,13 @@ msgid "" | |||
| 52 | "Sed (stream editor) isn't really a true text editor or text processor.\n" | 53 | "Sed (stream editor) isn't really a true text editor or text processor.\n" |
| 53 | "Instead, it is used to filter text, i.e., it takes text input and performs\n" | 54 | "Instead, it is used to filter text, i.e., it takes text input and performs\n" |
| 54 | "some operation (or set of operations) on it and outputs the modified text.\n" | 55 | "some operation (or set of operations) on it and outputs the modified text.\n" |
| 55 | "Sed is typically used for extracting part of a file using pattern matching " | 56 | "Sed is typically used for extracting part of a file using pattern matching or\n" |
| 56 | "or\n" | ||
| 57 | "substituting multiple occurrences of a string within a file." | 57 | "substituting multiple occurrences of a string within a file." |
| 58 | msgstr "" | 58 | msgstr "" |
| 59 | "Sed (flu-redaktilo) ne estas fakte vera tekst-redaktilo aŭ tekst-procezilo.\n" | 59 | "Sed (flu-redaktilo) ne estas fakte vera tekst-redaktilo aŭ tekst-procezilo.\n" |
| 60 | "Anstataŭe, ĝi estas uzata por filtri tekston, t.e., ĝi prenas tekston kaj\n" | 60 | "Anstataŭe, ĝi estas uzata por filtri tekston, t.e., ĝi prenas tekston kaj\n" |
| 61 | "aplikas iun operacion (aŭ aron) al ĝi kaj eligas la modifitan tekston.\n" | 61 | "aplikas iun operacion (aŭ aron) al ĝi kaj eligas la modifitan tekston.\n" |
| 62 | "Sed ordinare estas uzata por eltiri parton de dosiero per ŝablon-kongruon " | 62 | "Sed ordinare estas uzata por eltiri parton de dosiero per ŝablon-kongruon aŭ\n" |
| 63 | "aŭ\n" | ||
| 64 | "por anstataŭigi multoblajn aperojn de ĉeno interne de dosiero." | 63 | "por anstataŭigi multoblajn aperojn de ĉeno interne de dosiero." |
| 65 | 64 | ||
| 66 | #: gnu/packages/base.scm:140 | 65 | #: gnu/packages/base.scm:140 |
| @@ -77,8 +76,7 @@ msgid "" | |||
| 77 | "Initially, tar archives were used to store files conveniently on magnetic\n" | 76 | "Initially, tar archives were used to store files conveniently on magnetic\n" |
| 78 | "tape. The name \"Tar\" comes from this use; it stands for tape archiver.\n" | 77 | "tape. The name \"Tar\" comes from this use; it stands for tape archiver.\n" |
| 79 | "Despite the utility's name, Tar can direct its output to available devices,\n" | 78 | "Despite the utility's name, Tar can direct its output to available devices,\n" |
| 80 | "files, or other programs (using pipes), it can even access remote devices " | 79 | "files, or other programs (using pipes), it can even access remote devices or\n" |
| 81 | "or\n" | ||
| 82 | "files (as archives)." | 80 | "files (as archives)." |
| 83 | msgstr "" | 81 | msgstr "" |
| 84 | 82 | ||
| @@ -89,8 +87,7 @@ msgstr "Apliki malsamojn al originaloj, kun nedevigaj savkopioj" | |||
| 89 | #: gnu/packages/base.scm:175 | 87 | #: gnu/packages/base.scm:175 |
| 90 | msgid "" | 88 | msgid "" |
| 91 | "GNU Patch takes a patch file containing a difference listing produced by\n" | 89 | "GNU Patch takes a patch file containing a difference listing produced by\n" |
| 92 | "the diff program and applies those differences to one or more original " | 90 | "the diff program and applies those differences to one or more original files,\n" |
| 93 | "files,\n" | ||
| 94 | "producing patched versions." | 91 | "producing patched versions." |
| 95 | msgstr "" | 92 | msgstr "" |
| 96 | 93 | ||
| @@ -104,25 +101,21 @@ msgid "" | |||
| 104 | "differences between files.\n" | 101 | "differences between files.\n" |
| 105 | "\n" | 102 | "\n" |
| 106 | "Computer users often find occasion to ask how two files differ. Perhaps one\n" | 103 | "Computer users often find occasion to ask how two files differ. Perhaps one\n" |
| 107 | "file is a newer version of the other file. Or maybe the two files started " | 104 | "file is a newer version of the other file. Or maybe the two files started out\n" |
| 108 | "out\n" | ||
| 109 | "as identical copies but were changed by different people.\n" | 105 | "as identical copies but were changed by different people.\n" |
| 110 | "\n" | 106 | "\n" |
| 111 | "You can use the diff command to show differences between two files, or each\n" | 107 | "You can use the diff command to show differences between two files, or each\n" |
| 112 | "corresponding file in two directories. diff outputs differences between " | 108 | "corresponding file in two directories. diff outputs differences between files\n" |
| 113 | "files\n" | ||
| 114 | "line by line in any of several formats, selectable by command line\n" | 109 | "line by line in any of several formats, selectable by command line\n" |
| 115 | "options. This set of differences is often called a ‘diff’ or ‘patch’. For\n" | 110 | "options. This set of differences is often called a ‘diff’ or ‘patch’. For\n" |
| 116 | "files that are identical, diff normally produces no output; for\n" | 111 | "files that are identical, diff normally produces no output; for\n" |
| 117 | "binary (non-text) files, diff normally reports only that they are " | 112 | "binary (non-text) files, diff normally reports only that they are different.\n" |
| 118 | "different.\n" | ||
| 119 | "\n" | 113 | "\n" |
| 120 | "You can use the cmp command to show the offsets and line numbers where two\n" | 114 | "You can use the cmp command to show the offsets and line numbers where two\n" |
| 121 | "files differ. cmp can also show all the characters that differ between the\n" | 115 | "files differ. cmp can also show all the characters that differ between the\n" |
| 122 | "two files, side by side.\n" | 116 | "two files, side by side.\n" |
| 123 | "\n" | 117 | "\n" |
| 124 | "You can use the diff3 command to show differences among three files. When " | 118 | "You can use the diff3 command to show differences among three files. When two\n" |
| 125 | "two\n" | ||
| 126 | "people have made independent changes to a common original, diff3 can report\n" | 119 | "people have made independent changes to a common original, diff3 can report\n" |
| 127 | "the differences between the original and the two changed versions, and can\n" | 120 | "the differences between the original and the two changed versions, and can\n" |
| 128 | "produce a merged file that contains both persons' changes together with\n" | 121 | "produce a merged file that contains both persons' changes together with\n" |
| @@ -139,8 +132,7 @@ msgstr "Operacio sur dosieroj kongruantaj al indikia kriterio" | |||
| 139 | msgid "" | 132 | msgid "" |
| 140 | "The GNU Find Utilities are the basic directory searching utilities of\n" | 133 | "The GNU Find Utilities are the basic directory searching utilities of\n" |
| 141 | "the GNU operating system. These programs are typically used in conjunction\n" | 134 | "the GNU operating system. These programs are typically used in conjunction\n" |
| 142 | "with other programs to provide modular and powerful directory search and " | 135 | "with other programs to provide modular and powerful directory search and file\n" |
| 143 | "file\n" | ||
| 144 | "locating capabilities to other commands.\n" | 136 | "locating capabilities to other commands.\n" |
| 145 | "\n" | 137 | "\n" |
| 146 | "The tools supplied with this package are:\n" | 138 | "The tools supplied with this package are:\n" |
| @@ -172,10 +164,8 @@ msgid "" | |||
| 172 | "non-source files of a program from the program's source files.\n" | 164 | "non-source files of a program from the program's source files.\n" |
| 173 | "\n" | 165 | "\n" |
| 174 | "Make gets its knowledge of how to build your program from a file called the\n" | 166 | "Make gets its knowledge of how to build your program from a file called the\n" |
| 175 | "makefile, which lists each of the non-source files and how to compute it " | 167 | "makefile, which lists each of the non-source files and how to compute it from\n" |
| 176 | "from\n" | 168 | "other files. When you write a program, you should write a makefile for it, so\n" |
| 177 | "other files. When you write a program, you should write a makefile for it, " | ||
| 178 | "so\n" | ||
| 179 | "that it is possible to use Make to build and install the program." | 169 | "that it is possible to use Make to build and install the program." |
| 180 | msgstr "" | 170 | msgstr "" |
| 181 | 171 | ||
| @@ -197,12 +187,10 @@ msgstr "La Biblioteko GNU C" | |||
| 197 | #: gnu/packages/base.scm:502 | 187 | #: gnu/packages/base.scm:502 |
| 198 | msgid "" | 188 | msgid "" |
| 199 | "Any Unix-like operating system needs a C library: the library which\n" | 189 | "Any Unix-like operating system needs a C library: the library which\n" |
| 200 | "defines the \"system calls\" and other basic facilities such as open, " | 190 | "defines the \"system calls\" and other basic facilities such as open, malloc,\n" |
| 201 | "malloc,\n" | ||
| 202 | "printf, exit...\n" | 191 | "printf, exit...\n" |
| 203 | "\n" | 192 | "\n" |
| 204 | "The GNU C library is used as the C library in the GNU system and most " | 193 | "The GNU C library is used as the C library in the GNU system and most systems\n" |
| 205 | "systems\n" | ||
| 206 | "with the Linux kernel." | 194 | "with the Linux kernel." |
| 207 | msgstr "" | 195 | msgstr "" |
| 208 | 196 | ||
| @@ -215,8 +203,7 @@ msgid "" | |||
| 215 | "The Time Zone Database (often called tz or zoneinfo)\n" | 203 | "The Time Zone Database (often called tz or zoneinfo)\n" |
| 216 | "contains code and data that represent the history of local time for many\n" | 204 | "contains code and data that represent the history of local time for many\n" |
| 217 | "representative locations around the globe. It is updated periodically to\n" | 205 | "representative locations around the globe. It is updated periodically to\n" |
| 218 | "reflect changes made by political bodies to time zone boundaries, UTC " | 206 | "reflect changes made by political bodies to time zone boundaries, UTC offsets,\n" |
| 219 | "offsets,\n" | ||
| 220 | "and daylight-saving rules." | 207 | "and daylight-saving rules." |
| 221 | msgstr "" | 208 | msgstr "" |
| 222 | 209 | ||
| @@ -227,8 +214,7 @@ msgstr "La ligila ĉirkaŭanto" | |||
| 227 | #: gnu/packages/base.scm:992 | 214 | #: gnu/packages/base.scm:992 |
| 228 | msgid "" | 215 | msgid "" |
| 229 | "The linker wrapper (or `ld-wrapper') wraps the linker to add any\n" | 216 | "The linker wrapper (or `ld-wrapper') wraps the linker to add any\n" |
| 230 | "missing `-rpath' flags, and to detect any misuse of libraries outside of " | 217 | "missing `-rpath' flags, and to detect any misuse of libraries outside of the\n" |
| 231 | "the\n" | ||
| 232 | "store." | 218 | "store." |
| 233 | msgstr "" | 219 | msgstr "" |
| 234 | 220 | ||
| @@ -262,8 +248,7 @@ msgid "" | |||
| 262 | "Guile-Reader is a simple framework for building readers for GNU Guile.\n" | 248 | "Guile-Reader is a simple framework for building readers for GNU Guile.\n" |
| 263 | "\n" | 249 | "\n" |
| 264 | "The idea is to make it easy to build procedures that extend Guile’s read\n" | 250 | "The idea is to make it easy to build procedures that extend Guile’s read\n" |
| 265 | "procedure. Readers supporting various syntax variants can easily be " | 251 | "procedure. Readers supporting various syntax variants can easily be written,\n" |
| 266 | "written,\n" | ||
| 267 | "possibly by re-using existing “token readers” of a standard Scheme\n" | 252 | "possibly by re-using existing “token readers” of a standard Scheme\n" |
| 268 | "readers. For example, it is used to implement Skribilo’s R5RS-derived\n" | 253 | "readers. For example, it is used to implement Skribilo’s R5RS-derived\n" |
| 269 | "document syntax.\n" | 254 | "document syntax.\n" |
| @@ -280,8 +265,7 @@ msgstr "Bindoj de Guile por ncurses" | |||
| 280 | #: gnu/packages/guile.scm:268 | 265 | #: gnu/packages/guile.scm:268 |
| 281 | msgid "" | 266 | msgid "" |
| 282 | "GNU Guile-Ncurses is a library for the Guile Scheme interpreter that\n" | 267 | "GNU Guile-Ncurses is a library for the Guile Scheme interpreter that\n" |
| 283 | "provides functions for creating text user interfaces. The text user " | 268 | "provides functions for creating text user interfaces. The text user interface\n" |
| 284 | "interface\n" | ||
| 285 | "functionality is built on the ncurses libraries: curses, form, panel, and\n" | 269 | "functionality is built on the ncurses libraries: curses, form, panel, and\n" |
| 286 | "menu." | 270 | "menu." |
| 287 | msgstr "" | 271 | msgstr "" |
| @@ -293,33 +277,39 @@ msgstr "Lanĉi taskoj je antaŭplanitaj horoj" | |||
| 293 | #: gnu/packages/guile.scm:294 | 277 | #: gnu/packages/guile.scm:294 |
| 294 | msgid "" | 278 | msgid "" |
| 295 | "The GNU package mcron (Mellor's cron) is a 100% compatible replacement\n" | 279 | "The GNU package mcron (Mellor's cron) is a 100% compatible replacement\n" |
| 296 | "for Vixie cron. It is written in pure Guile, and allows configuration " | 280 | "for Vixie cron. It is written in pure Guile, and allows configuration files\n" |
| 297 | "files\n" | ||
| 298 | "to be written in scheme (as well as Vixie's original format) for infinite\n" | 281 | "to be written in scheme (as well as Vixie's original format) for infinite\n" |
| 299 | "flexibility in specifying when jobs should be run. Mcron was written by " | 282 | "flexibility in specifying when jobs should be run. Mcron was written by Dale\n" |
| 300 | "Dale\n" | ||
| 301 | "Mellor." | 283 | "Mellor." |
| 302 | msgstr "" | 284 | msgstr "" |
| 303 | 285 | ||
| 286 | #: gnu/packages/guile.scm:323 | ||
| 287 | msgid "Collection of useful Guile Scheme modules" | ||
| 288 | msgstr "Aro da utilaj moduloj de Guile Scheme" | ||
| 289 | |||
| 290 | #: gnu/packages/guile.scm:325 | ||
| 291 | msgid "" | ||
| 292 | "guile-lib is intended as an accumulation place for pure-scheme Guile\n" | ||
| 293 | "modules, allowing for people to cooperate integrating their generic Guile\n" | ||
| 294 | "modules into a coherent library. Think \"a down-scaled, limited-scope CPAN\n" | ||
| 295 | "for Guile\"." | ||
| 296 | msgstr "" | ||
| 297 | |||
| 304 | #: gnu/packages/lout.scm:109 | 298 | #: gnu/packages/lout.scm:109 |
| 305 | msgid "Lout, a document layout system similar in style to LaTeX" | 299 | msgid "Lout, a document layout system similar in style to LaTeX" |
| 306 | msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo" | 300 | msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo" |
| 307 | 301 | ||
| 308 | #: gnu/packages/lout.scm:111 | 302 | #: gnu/packages/lout.scm:111 |
| 309 | msgid "" | 303 | msgid "" |
| 310 | "The Lout document formatting system is now reads a high-level description " | 304 | "The Lout document formatting system is now reads a high-level description of\n" |
| 311 | "of\n" | 305 | "a document similar in style to LaTeX and produces a PostScript or plain text\n" |
| 312 | "a document similar in style to LaTeX and produces a PostScript or plain " | ||
| 313 | "text\n" | ||
| 314 | "output file.\n" | 306 | "output file.\n" |
| 315 | "\n" | 307 | "\n" |
| 316 | "Lout offers an unprecedented range of advanced features, including optimal\n" | 308 | "Lout offers an unprecedented range of advanced features, including optimal\n" |
| 317 | "paragraph and page breaking, automatic hyphenation, PostScript EPS file\n" | 309 | "paragraph and page breaking, automatic hyphenation, PostScript EPS file\n" |
| 318 | "inclusion and generation, equation formatting, tables, diagrams, rotation " | 310 | "inclusion and generation, equation formatting, tables, diagrams, rotation and\n" |
| 319 | "and\n" | ||
| 320 | "scaling, sorted indexes, bibliographic databases, running headers and\n" | 311 | "scaling, sorted indexes, bibliographic databases, running headers and\n" |
| 321 | "odd-even pages, automatic cross referencing, multilingual documents " | 312 | "odd-even pages, automatic cross referencing, multilingual documents including\n" |
| 322 | "including\n" | ||
| 323 | "hyphenation (most European languages are supported), formatting of computer\n" | 313 | "hyphenation (most European languages are supported), formatting of computer\n" |
| 324 | "programs, and much more, all ready to use. Furthermore, Lout is easily\n" | 314 | "programs, and much more, all ready to use. Furthermore, Lout is easily\n" |
| 325 | "extended with definitions which are very much easier to write than troff of\n" | 315 | "extended with definitions which are very much easier to write than troff of\n" |
| @@ -408,25 +398,23 @@ msgstr "" | |||
| 408 | "\n" | 398 | "\n" |
| 409 | " -n, --dry-run ne konstrui derivaĵojn" | 399 | " -n, --dry-run ne konstrui derivaĵojn" |
| 410 | 400 | ||
| 411 | #: guix/scripts/build.scm:84 guix/scripts/package.scm:449 | 401 | #: guix/scripts/build.scm:84 guix/scripts/package.scm:519 |
| 412 | msgid "" | 402 | msgid "" |
| 413 | "\n" | 403 | "\n" |
| 414 | " --fallback fall back to building when the substituter fails" | 404 | " --fallback fall back to building when the substituter fails" |
| 415 | msgstr "" | 405 | msgstr "" |
| 416 | "\n" | 406 | "\n" |
| 417 | " --fallback retropaŝi al konstruado kiam la anstataŭiganto " | 407 | " --fallback retropaŝi al konstruado kiam la anstataŭiganto fiaskas" |
| 418 | "fiaskas" | ||
| 419 | 408 | ||
| 420 | #: guix/scripts/build.scm:86 guix/scripts/package.scm:451 | 409 | #: guix/scripts/build.scm:86 guix/scripts/package.scm:521 |
| 421 | msgid "" | 410 | msgid "" |
| 422 | "\n" | 411 | "\n" |
| 423 | " --no-substitutes build instead of resorting to pre-built substitutes" | 412 | " --no-substitutes build instead of resorting to pre-built substitutes" |
| 424 | msgstr "" | 413 | msgstr "" |
| 425 | "\n" | 414 | "\n" |
| 426 | " --no-substitutes konstrui anstataŭ provi jam-konstruitajn " | 415 | " --no-substitutes konstrui anstataŭ provi jam-konstruitajn anstataŭigantojn" |
| 427 | "anstataŭigantojn" | ||
| 428 | 416 | ||
| 429 | #: guix/scripts/build.scm:88 guix/scripts/package.scm:453 | 417 | #: guix/scripts/build.scm:88 guix/scripts/package.scm:523 |
| 430 | msgid "" | 418 | msgid "" |
| 431 | "\n" | 419 | "\n" |
| 432 | " --max-silent-time=SECONDS\n" | 420 | " --max-silent-time=SECONDS\n" |
| @@ -434,8 +422,7 @@ msgid "" | |||
| 434 | msgstr "" | 422 | msgstr "" |
| 435 | "\n" | 423 | "\n" |
| 436 | " --max-silent-time=SEKUNDOJ\n" | 424 | " --max-silent-time=SEKUNDOJ\n" |
| 437 | " marki la konstruo kiel fiaskinta post SEKUNDOJ da " | 425 | " marki la konstruo kiel fiaskinta post SEKUNDOJ da silento" |
| 438 | "silento" | ||
| 439 | 426 | ||
| 440 | #: guix/scripts/build.scm:91 | 427 | #: guix/scripts/build.scm:91 |
| 441 | msgid "" | 428 | msgid "" |
| @@ -452,8 +439,7 @@ msgid "" | |||
| 452 | " as a garbage collector root" | 439 | " as a garbage collector root" |
| 453 | msgstr "" | 440 | msgstr "" |
| 454 | "\n" | 441 | "\n" |
| 455 | " -r, --root=DOSIERO igi DOSIEROn simbola ligo al la rezulto, kaj " | 442 | " -r, --root=DOSIERO igi DOSIEROn simbola ligo al la rezulto, kaj registri\n" |
| 456 | "registri\n" | ||
| 457 | " ĝin kiel radikon de rubaĵ-kolektanto" | 443 | " ĝin kiel radikon de rubaĵ-kolektanto" |
| 458 | 444 | ||
| 459 | #: guix/scripts/build.scm:96 | 445 | #: guix/scripts/build.scm:96 |
| @@ -465,8 +451,9 @@ msgstr "" | |||
| 465 | " --verbosity=NIVELO uzi la indikitan detaligan NIVELOn" | 451 | " --verbosity=NIVELO uzi la indikitan detaligan NIVELOn" |
| 466 | 452 | ||
| 467 | #: guix/scripts/build.scm:99 guix/scripts/download.scm:53 | 453 | #: guix/scripts/build.scm:99 guix/scripts/download.scm:53 |
| 468 | #: guix/scripts/package.scm:470 guix/scripts/gc.scm:58 | 454 | #: guix/scripts/package.scm:540 guix/scripts/gc.scm:58 |
| 469 | #: guix/scripts/hash.scm:51 guix/scripts/pull.scm:149 | 455 | #: guix/scripts/hash.scm:51 guix/scripts/pull.scm:152 |
| 456 | #: guix/scripts/substitute-binary.scm:463 | ||
| 470 | msgid "" | 457 | msgid "" |
| 471 | "\n" | 458 | "\n" |
| 472 | " -h, --help display this help and exit" | 459 | " -h, --help display this help and exit" |
| @@ -475,8 +462,9 @@ msgstr "" | |||
| 475 | " -h, --help montri ĉi tiun helpon kaj eliri" | 462 | " -h, --help montri ĉi tiun helpon kaj eliri" |
| 476 | 463 | ||
| 477 | #: guix/scripts/build.scm:101 guix/scripts/download.scm:55 | 464 | #: guix/scripts/build.scm:101 guix/scripts/download.scm:55 |
| 478 | #: guix/scripts/package.scm:472 guix/scripts/gc.scm:60 | 465 | #: guix/scripts/package.scm:542 guix/scripts/gc.scm:60 |
| 479 | #: guix/scripts/hash.scm:53 guix/scripts/pull.scm:151 | 466 | #: guix/scripts/hash.scm:53 guix/scripts/pull.scm:154 |
| 467 | #: guix/scripts/substitute-binary.scm:465 | ||
| 480 | msgid "" | 468 | msgid "" |
| 481 | "\n" | 469 | "\n" |
| 482 | " -V, --version display version information and exit" | 470 | " -V, --version display version information and exit" |
| @@ -490,8 +478,8 @@ msgid "~a: not a number~%" | |||
| 490 | msgstr "~a: ne estas numero~%" | 478 | msgstr "~a: ne estas numero~%" |
| 491 | 479 | ||
| 492 | #: guix/scripts/build.scm:176 guix/scripts/download.scm:96 | 480 | #: guix/scripts/build.scm:176 guix/scripts/download.scm:96 |
| 493 | #: guix/scripts/package.scm:554 guix/scripts/gc.scm:152 | 481 | #: guix/scripts/package.scm:628 guix/scripts/gc.scm:152 |
| 494 | #: guix/scripts/pull.scm:178 | 482 | #: guix/scripts/pull.scm:181 |
| 495 | #, scheme-format | 483 | #, scheme-format |
| 496 | msgid "~A: unrecognized option~%" | 484 | msgid "~A: unrecognized option~%" |
| 497 | msgstr "~A: nerekonata modifilo~%" | 485 | msgstr "~A: nerekonata modifilo~%" |
| @@ -501,12 +489,12 @@ msgstr "~A: nerekonata modifilo~%" | |||
| 501 | msgid "failed to create GC root `~a': ~a~%" | 489 | msgid "failed to create GC root `~a': ~a~%" |
| 502 | msgstr "fiasko dum kreo de radiko GC '~a': ~a~%" | 490 | msgstr "fiasko dum kreo de radiko GC '~a': ~a~%" |
| 503 | 491 | ||
| 504 | #: guix/scripts/build.scm:226 guix/scripts/package.scm:600 | 492 | #: guix/scripts/build.scm:226 guix/scripts/package.scm:674 |
| 505 | #, scheme-format | 493 | #, scheme-format |
| 506 | msgid "ambiguous package specification `~a'~%" | 494 | msgid "ambiguous package specification `~a'~%" |
| 507 | msgstr "plursenca pak-specifigo '~a'~%" | 495 | msgstr "plursenca pak-specifigo '~a'~%" |
| 508 | 496 | ||
| 509 | #: guix/scripts/build.scm:227 guix/scripts/package.scm:602 | 497 | #: guix/scripts/build.scm:227 guix/scripts/package.scm:676 |
| 510 | #, scheme-format | 498 | #, scheme-format |
| 511 | msgid "choosing ~a from ~a~%" | 499 | msgid "choosing ~a from ~a~%" |
| 512 | msgstr "ni elektas ~a el ~a~%" | 500 | msgstr "ni elektas ~a el ~a~%" |
| @@ -560,42 +548,42 @@ msgstr "~a: analizo de URI fiaskis~%" | |||
| 560 | msgid "~a: download failed~%" | 548 | msgid "~a: download failed~%" |
| 561 | msgstr "~a: elŝuto fiaskis~%" | 549 | msgstr "~a: elŝuto fiaskis~%" |
| 562 | 550 | ||
| 563 | #: guix/scripts/package.scm:225 | 551 | #: guix/scripts/package.scm:227 |
| 564 | #, scheme-format | 552 | #, scheme-format |
| 565 | msgid "switching from generation ~a to ~a~%" | 553 | msgid "switching from generation ~a to ~a~%" |
| 566 | msgstr "alterno el generacio ~a al ~a~%" | 554 | msgstr "alterno el generacio ~a al ~a~%" |
| 567 | 555 | ||
| 568 | #: guix/scripts/package.scm:230 | 556 | #: guix/scripts/package.scm:232 |
| 569 | #, scheme-format | 557 | #, scheme-format |
| 570 | msgid "profile `~a' does not exist~%" | 558 | msgid "profile `~a' does not exist~%" |
| 571 | msgstr "profilo '~a' ne ekzistas~%" | 559 | msgstr "profilo '~a' ne ekzistas~%" |
| 572 | 560 | ||
| 573 | #: guix/scripts/package.scm:234 | 561 | #: guix/scripts/package.scm:236 |
| 574 | #, scheme-format | 562 | #, scheme-format |
| 575 | msgid "nothing to do: already at the empty profile~%" | 563 | msgid "nothing to do: already at the empty profile~%" |
| 576 | msgstr "nenio por fari: jam estas ĉe la malplena profilo~%" | 564 | msgstr "nenio por fari: jam estas ĉe la malplena profilo~%" |
| 577 | 565 | ||
| 578 | #: guix/scripts/package.scm:243 | 566 | #: guix/scripts/package.scm:242 |
| 579 | #, scheme-format | 567 | #, scheme-format |
| 580 | msgid "failed to build the empty profile~%" | 568 | msgid "failed to build the empty profile~%" |
| 581 | msgstr "fiasko dum konstruo de malplena profilo~%" | 569 | msgstr "fiasko dum konstruo de malplena profilo~%" |
| 582 | 570 | ||
| 583 | #: guix/scripts/package.scm:346 | 571 | #: guix/scripts/package.scm:413 |
| 584 | #, scheme-format | 572 | #, scheme-format |
| 585 | msgid "looking for the latest release of GNU ~a..." | 573 | msgid "looking for the latest release of GNU ~a..." |
| 586 | msgstr "ni serĉas la lastan eldonon de GNU ~a..." | 574 | msgstr "ni serĉas la lastan eldonon de GNU ~a..." |
| 587 | 575 | ||
| 588 | #: guix/scripts/package.scm:350 | 576 | #: guix/scripts/package.scm:417 |
| 589 | #, scheme-format | 577 | #, scheme-format |
| 590 | msgid "~a: note: using ~a but ~a is available upstream~%" | 578 | msgid "~a: note: using ~a but ~a is available upstream~%" |
| 591 | msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%" | 579 | msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%" |
| 592 | 580 | ||
| 593 | #: guix/scripts/package.scm:414 | 581 | #: guix/scripts/package.scm:481 |
| 594 | #, scheme-format | 582 | #, scheme-format |
| 595 | msgid "The following environment variable definitions may be needed:~%" | 583 | msgid "The following environment variable definitions may be needed:~%" |
| 596 | msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%" | 584 | msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%" |
| 597 | 585 | ||
| 598 | #: guix/scripts/package.scm:429 | 586 | #: guix/scripts/package.scm:496 |
| 599 | msgid "" | 587 | msgid "" |
| 600 | "Usage: guix package [OPTION]... PACKAGES...\n" | 588 | "Usage: guix package [OPTION]... PACKAGES...\n" |
| 601 | "Install, remove, or upgrade PACKAGES in a single transaction.\n" | 589 | "Install, remove, or upgrade PACKAGES in a single transaction.\n" |
| @@ -603,7 +591,7 @@ msgstr "" | |||
| 603 | "Uzmaniero: guix package [MODIFILO]... PAKOJ...\n" | 591 | "Uzmaniero: guix package [MODIFILO]... PAKOJ...\n" |
| 604 | "Instalas, forigas, aŭ ĝisdatigas PAKOJn en ununura ago.\n" | 592 | "Instalas, forigas, aŭ ĝisdatigas PAKOJn en ununura ago.\n" |
| 605 | 593 | ||
| 606 | #: guix/scripts/package.scm:431 | 594 | #: guix/scripts/package.scm:498 |
| 607 | msgid "" | 595 | msgid "" |
| 608 | "\n" | 596 | "\n" |
| 609 | " -i, --install=PACKAGE install PACKAGE" | 597 | " -i, --install=PACKAGE install PACKAGE" |
| @@ -611,7 +599,7 @@ msgstr "" | |||
| 611 | "\n" | 599 | "\n" |
| 612 | " -i, --install=PAKO instali PAKOn" | 600 | " -i, --install=PAKO instali PAKOn" |
| 613 | 601 | ||
| 614 | #: guix/scripts/package.scm:433 | 602 | #: guix/scripts/package.scm:500 |
| 615 | msgid "" | 603 | msgid "" |
| 616 | "\n" | 604 | "\n" |
| 617 | " -e, --install-from-expression=EXP\n" | 605 | " -e, --install-from-expression=EXP\n" |
| @@ -621,7 +609,7 @@ msgstr "" | |||
| 621 | " -e, --install-from-expression=ESP\n" | 609 | " -e, --install-from-expression=ESP\n" |
| 622 | " instali la pakon ESP rezultas al" | 610 | " instali la pakon ESP rezultas al" |
| 623 | 611 | ||
| 624 | #: guix/scripts/package.scm:436 | 612 | #: guix/scripts/package.scm:503 |
| 625 | msgid "" | 613 | msgid "" |
| 626 | "\n" | 614 | "\n" |
| 627 | " -r, --remove=PACKAGE remove PACKAGE" | 615 | " -r, --remove=PACKAGE remove PACKAGE" |
| @@ -629,16 +617,15 @@ msgstr "" | |||
| 629 | "\n" | 617 | "\n" |
| 630 | " -r, --remove=PAKO forigi PAKOn" | 618 | " -r, --remove=PAKO forigi PAKOn" |
| 631 | 619 | ||
| 632 | #: guix/scripts/package.scm:438 | 620 | #: guix/scripts/package.scm:505 |
| 633 | msgid "" | 621 | msgid "" |
| 634 | "\n" | 622 | "\n" |
| 635 | " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" | 623 | " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" |
| 636 | msgstr "" | 624 | msgstr "" |
| 637 | "\n" | 625 | "\n" |
| 638 | " -u, --upgrade[=REGESP] ĝisdatigi ĉiujn instalitajn pakojn kongruantajn al " | 626 | " -u, --upgrade[=REGESP] ĝisdatigi ĉiujn instalitajn pakojn kongruantajn al REGESP" |
| 639 | "REGESP" | ||
| 640 | 627 | ||
| 641 | #: guix/scripts/package.scm:440 | 628 | #: guix/scripts/package.scm:507 |
| 642 | msgid "" | 629 | msgid "" |
| 643 | "\n" | 630 | "\n" |
| 644 | " --roll-back roll back to the previous generation" | 631 | " --roll-back roll back to the previous generation" |
| @@ -646,7 +633,7 @@ msgstr "" | |||
| 646 | "\n" | 633 | "\n" |
| 647 | " --roll-back retropaŝi al la antaŭa generacio" | 634 | " --roll-back retropaŝi al la antaŭa generacio" |
| 648 | 635 | ||
| 649 | #: guix/scripts/package.scm:442 | 636 | #: guix/scripts/package.scm:509 |
| 650 | msgid "" | 637 | msgid "" |
| 651 | "\n" | 638 | "\n" |
| 652 | " --search-paths display needed environment variable definitions" | 639 | " --search-paths display needed environment variable definitions" |
| @@ -654,16 +641,25 @@ msgstr "" | |||
| 654 | "\n" | 641 | "\n" |
| 655 | " --search-paths montri necesajn medi-variablajn difinojn" | 642 | " --search-paths montri necesajn medi-variablajn difinojn" |
| 656 | 643 | ||
| 657 | #: guix/scripts/package.scm:445 | 644 | #: guix/scripts/package.scm:511 |
| 645 | msgid "" | ||
| 646 | "\n" | ||
| 647 | " -l, --list-generations[=PATTERN]\n" | ||
| 648 | " list generations matching PATTERN" | ||
| 649 | msgstr "" | ||
| 650 | "\n" | ||
| 651 | " -I, --list-generations[=ŜABLONO]\n" | ||
| 652 | " listigi generaciojn kongruantajn al ŜABLONO" | ||
| 653 | |||
| 654 | #: guix/scripts/package.scm:515 | ||
| 658 | msgid "" | 655 | msgid "" |
| 659 | "\n" | 656 | "\n" |
| 660 | " -p, --profile=PROFILE use PROFILE instead of the user's default profile" | 657 | " -p, --profile=PROFILE use PROFILE instead of the user's default profile" |
| 661 | msgstr "" | 658 | msgstr "" |
| 662 | "\n" | 659 | "\n" |
| 663 | " -p, --profile=PROFILO uzi PROFILOn anstataŭ la apriora profilo de la " | 660 | " -p, --profile=PROFILO uzi PROFILOn anstataŭ la apriora profilo de la uzanto" |
| 664 | "uzanto" | ||
| 665 | 661 | ||
| 666 | #: guix/scripts/package.scm:447 | 662 | #: guix/scripts/package.scm:517 |
| 667 | msgid "" | 663 | msgid "" |
| 668 | "\n" | 664 | "\n" |
| 669 | " -n, --dry-run show what would be done without actually doing it" | 665 | " -n, --dry-run show what would be done without actually doing it" |
| @@ -671,7 +667,7 @@ msgstr "" | |||
| 671 | "\n" | 667 | "\n" |
| 672 | " -n, --dry-run montri kion estus farita sen fakte fari ĝin" | 668 | " -n, --dry-run montri kion estus farita sen fakte fari ĝin" |
| 673 | 669 | ||
| 674 | #: guix/scripts/package.scm:456 | 670 | #: guix/scripts/package.scm:526 |
| 675 | msgid "" | 671 | msgid "" |
| 676 | "\n" | 672 | "\n" |
| 677 | " --bootstrap use the bootstrap Guile to build the profile" | 673 | " --bootstrap use the bootstrap Guile to build the profile" |
| @@ -679,7 +675,7 @@ msgstr "" | |||
| 679 | "\n" | 675 | "\n" |
| 680 | " --bootstrap uzi la praŝargilon Guile por konstrui la profilon" | 676 | " --bootstrap uzi la praŝargilon Guile por konstrui la profilon" |
| 681 | 677 | ||
| 682 | #: guix/scripts/package.scm:458 guix/scripts/pull.scm:144 | 678 | #: guix/scripts/package.scm:528 guix/scripts/pull.scm:147 |
| 683 | msgid "" | 679 | msgid "" |
| 684 | "\n" | 680 | "\n" |
| 685 | " --verbose produce verbose output" | 681 | " --verbose produce verbose output" |
| @@ -687,7 +683,7 @@ msgstr "" | |||
| 687 | "\n" | 683 | "\n" |
| 688 | " --verbose produkti detalplenan eligon" | 684 | " --verbose produkti detalplenan eligon" |
| 689 | 685 | ||
| 690 | #: guix/scripts/package.scm:461 | 686 | #: guix/scripts/package.scm:531 |
| 691 | msgid "" | 687 | msgid "" |
| 692 | "\n" | 688 | "\n" |
| 693 | " -s, --search=REGEXP search in synopsis and description using REGEXP" | 689 | " -s, --search=REGEXP search in synopsis and description using REGEXP" |
| @@ -695,7 +691,7 @@ msgstr "" | |||
| 695 | "\n" | 691 | "\n" |
| 696 | " -s, --search=REGESP serĉi en resumo kaj priskribo uzante REGESP" | 692 | " -s, --search=REGESP serĉi en resumo kaj priskribo uzante REGESP" |
| 697 | 693 | ||
| 698 | #: guix/scripts/package.scm:463 | 694 | #: guix/scripts/package.scm:533 |
| 699 | msgid "" | 695 | msgid "" |
| 700 | "\n" | 696 | "\n" |
| 701 | " -I, --list-installed[=REGEXP]\n" | 697 | " -I, --list-installed[=REGEXP]\n" |
| @@ -705,7 +701,7 @@ msgstr "" | |||
| 705 | " -I, --list-installed[=REGESP]\n" | 701 | " -I, --list-installed[=REGESP]\n" |
| 706 | " listigi instalitajn pakojn kongruantajn al REGESP" | 702 | " listigi instalitajn pakojn kongruantajn al REGESP" |
| 707 | 703 | ||
| 708 | #: guix/scripts/package.scm:466 | 704 | #: guix/scripts/package.scm:536 |
| 709 | msgid "" | 705 | msgid "" |
| 710 | "\n" | 706 | "\n" |
| 711 | " -A, --list-available[=REGEXP]\n" | 707 | " -A, --list-available[=REGEXP]\n" |
| @@ -715,76 +711,91 @@ msgstr "" | |||
| 715 | " -A, --list-available[=REGESP]\n" | 711 | " -A, --list-available[=REGESP]\n" |
| 716 | " listigi disponeblajn pakojn kongruantajn al REGESP" | 712 | " listigi disponeblajn pakojn kongruantajn al REGESP" |
| 717 | 713 | ||
| 718 | #: guix/scripts/package.scm:556 | 714 | #: guix/scripts/package.scm:630 |
| 719 | #, scheme-format | 715 | #, scheme-format |
| 720 | msgid "~A: extraneous argument~%" | 716 | msgid "~A: extraneous argument~%" |
| 721 | msgstr "~A: fremda argumento~%" | 717 | msgstr "~A: fremda argumento~%" |
| 722 | 718 | ||
| 723 | #: guix/scripts/package.scm:584 | 719 | #: guix/scripts/package.scm:658 |
| 724 | #, scheme-format | 720 | #, scheme-format |
| 725 | msgid "package `~a' lacks output `~a'~%" | 721 | msgid "package `~a' lacks output `~a'~%" |
| 726 | msgstr "pako '~a' malhavas eligon '~a'~%" | 722 | msgstr "pako '~a' malhavas eligon '~a'~%" |
| 727 | 723 | ||
| 728 | #: guix/scripts/package.scm:608 | 724 | #: guix/scripts/package.scm:682 |
| 729 | #, scheme-format | 725 | #, scheme-format |
| 730 | msgid "~a: package not found~%" | 726 | msgid "~a: package not found~%" |
| 731 | msgstr "~a: pako ne trovita~%" | 727 | msgstr "~a: pako ne trovita~%" |
| 732 | 728 | ||
| 733 | #: guix/scripts/package.scm:631 | 729 | #: guix/scripts/package.scm:705 |
| 734 | #, scheme-format | 730 | #, scheme-format |
| 735 | msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" | 731 | msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" |
| 736 | msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%" | 732 | msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%" |
| 737 | 733 | ||
| 738 | #: guix/scripts/package.scm:653 | 734 | #: guix/scripts/package.scm:727 |
| 739 | #, scheme-format | 735 | #, scheme-format |
| 740 | msgid "error: while creating directory `~a': ~a~%" | 736 | msgid "error: while creating directory `~a': ~a~%" |
| 741 | msgstr "eraro: dum kreo de dosierujo '~a': ~a~%" | 737 | msgstr "eraro: dum kreo de dosierujo '~a': ~a~%" |
| 742 | 738 | ||
| 743 | #: guix/scripts/package.scm:657 | 739 | #: guix/scripts/package.scm:731 |
| 744 | #, scheme-format | 740 | #, scheme-format |
| 745 | msgid "Please create the `~a' directory, with you as the owner.~%" | 741 | msgid "Please create the `~a' directory, with you as the owner.~%" |
| 746 | msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%" | 742 | msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%" |
| 747 | 743 | ||
| 748 | #: guix/scripts/package.scm:664 | 744 | #: guix/scripts/package.scm:738 |
| 749 | #, scheme-format | 745 | #, scheme-format |
| 750 | msgid "error: directory `~a' is not owned by you~%" | 746 | msgid "error: directory `~a' is not owned by you~%" |
| 751 | msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%" | 747 | msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%" |
| 752 | 748 | ||
| 753 | #: guix/scripts/package.scm:667 | 749 | #: guix/scripts/package.scm:741 |
| 754 | #, scheme-format | 750 | #, scheme-format |
| 755 | msgid "Please change the owner of `~a' to user ~s.~%" | 751 | msgid "Please change the owner of `~a' to user ~s.~%" |
| 756 | msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%" | 752 | msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%" |
| 757 | 753 | ||
| 758 | #: guix/scripts/package.scm:725 | 754 | #: guix/scripts/package.scm:799 |
| 759 | #, scheme-format | 755 | #, scheme-format |
| 760 | msgid "The following package would be removed:~% ~{~a~%~}~%" | 756 | msgid "The following package would be removed:~% ~{~a~%~}~%" |
| 761 | msgstr "La jena pako devos esti forigata:~% ~{~a~%~}~%" | 757 | msgstr "La jena pako devos esti forigata:~% ~{~a~%~}~%" |
| 762 | 758 | ||
| 763 | #: guix/scripts/package.scm:730 | 759 | #: guix/scripts/package.scm:804 |
| 764 | #, scheme-format | 760 | #, scheme-format |
| 765 | msgid "The following package will be removed:~% ~{~a~%~}~%" | 761 | msgid "The following package will be removed:~% ~{~a~%~}~%" |
| 766 | msgstr "La jena pako estos forigata:~% ~{~a~%~}~%" | 762 | msgstr "La jena pako estos forigata:~% ~{~a~%~}~%" |
| 767 | 763 | ||
| 768 | #: guix/scripts/package.scm:742 | 764 | #: guix/scripts/package.scm:816 |
| 769 | #, scheme-format | 765 | #, scheme-format |
| 770 | msgid "The following package would be installed:~%~{~a~%~}~%" | 766 | msgid "The following package would be installed:~%~{~a~%~}~%" |
| 771 | msgstr "La jena pako estus instalata:~% ~{~a~%~}~%" | 767 | msgstr "La jena pako estus instalata:~% ~{~a~%~}~%" |
| 772 | 768 | ||
| 773 | #: guix/scripts/package.scm:747 | 769 | #: guix/scripts/package.scm:821 |
| 774 | #, scheme-format | 770 | #, scheme-format |
| 775 | msgid "The following package will be installed:~%~{~a~%~}~%" | 771 | msgid "The following package will be installed:~%~{~a~%~}~%" |
| 776 | msgstr "La jena pako estos instalata:~% ~{~a~%~}~%" | 772 | msgstr "La jena pako estos instalata:~% ~{~a~%~}~%" |
| 777 | 773 | ||
| 778 | #: guix/scripts/package.scm:859 | 774 | #: guix/scripts/package.scm:933 |
| 779 | #, scheme-format | 775 | #, scheme-format |
| 780 | msgid "nothing to be done~%" | 776 | msgid "nothing to be done~%" |
| 781 | msgstr "nenio por fari~%" | 777 | msgstr "nenio por fari~%" |
| 782 | 778 | ||
| 783 | #: guix/scripts/package.scm:870 | 779 | #: guix/scripts/package.scm:944 |
| 784 | #, scheme-format | 780 | #, scheme-format |
| 785 | msgid "~a package in profile~%" | 781 | msgid "~a package in profile~%" |
| 786 | msgstr "pako ~a en profilo~%" | 782 | msgstr "pako ~a en profilo~%" |
| 787 | 783 | ||
| 784 | #: guix/scripts/package.scm:959 | ||
| 785 | #, scheme-format | ||
| 786 | msgid "Generation ~a\t~a~%" | ||
| 787 | msgstr "Generacio ~a\t~a~%" | ||
| 788 | |||
| 789 | #: guix/scripts/package.scm:977 | ||
| 790 | #, scheme-format | ||
| 791 | msgid "profile '~a' does not exist~%" | ||
| 792 | msgstr "profilo '~a' ne ekzistas~%" | ||
| 793 | |||
| 794 | #: guix/scripts/package.scm:986 | ||
| 795 | #, scheme-format | ||
| 796 | msgid "invalid syntax: ~a~%" | ||
| 797 | msgstr "malvalida sintakso: ~a~%" | ||
| 798 | |||
| 788 | #: guix/scripts/gc.scm:39 | 799 | #: guix/scripts/gc.scm:39 |
| 789 | msgid "" | 800 | msgid "" |
| 790 | "Usage: guix gc [OPTION]... PATHS...\n" | 801 | "Usage: guix gc [OPTION]... PATHS...\n" |
| @@ -885,7 +896,7 @@ msgstr "" | |||
| 885 | msgid "unrecognized option: ~a~%" | 896 | msgid "unrecognized option: ~a~%" |
| 886 | msgstr "nerekonata modifilo: ~a~%" | 897 | msgstr "nerekonata modifilo: ~a~%" |
| 887 | 898 | ||
| 888 | #: guix/scripts/hash.scm:123 guix/ui.scm:183 | 899 | #: guix/scripts/hash.scm:123 guix/ui.scm:187 |
| 889 | #, scheme-format | 900 | #, scheme-format |
| 890 | msgid "~a~%" | 901 | msgid "~a~%" |
| 891 | msgstr "~a~%" | 902 | msgstr "~a~%" |
| @@ -895,7 +906,7 @@ msgstr "~a~%" | |||
| 895 | msgid "wrong number of arguments~%" | 906 | msgid "wrong number of arguments~%" |
| 896 | msgstr "malĝusta nombro da argumentoj~%" | 907 | msgstr "malĝusta nombro da argumentoj~%" |
| 897 | 908 | ||
| 898 | #: guix/scripts/pull.scm:142 | 909 | #: guix/scripts/pull.scm:145 |
| 899 | msgid "" | 910 | msgid "" |
| 900 | "Usage: guix pull [OPTION]...\n" | 911 | "Usage: guix pull [OPTION]...\n" |
| 901 | "Download and deploy the latest version of Guix.\n" | 912 | "Download and deploy the latest version of Guix.\n" |
| @@ -903,7 +914,7 @@ msgstr "" | |||
| 903 | "Uzmaniero: guix pull [MODIFILO]...\n" | 914 | "Uzmaniero: guix pull [MODIFILO]...\n" |
| 904 | "Elŝuti kaj liveri la lastan version de Guix.\n" | 915 | "Elŝuti kaj liveri la lastan version de Guix.\n" |
| 905 | 916 | ||
| 906 | #: guix/scripts/pull.scm:146 | 917 | #: guix/scripts/pull.scm:149 |
| 907 | msgid "" | 918 | msgid "" |
| 908 | "\n" | 919 | "\n" |
| 909 | " --bootstrap use the bootstrap Guile to build the new Guix" | 920 | " --bootstrap use the bootstrap Guile to build the new Guix" |
| @@ -911,44 +922,89 @@ msgstr "" | |||
| 911 | "\n" | 922 | "\n" |
| 912 | " --bootstrap uzi la 'bootstrap' Guile por konstrui novan Guix" | 923 | " --bootstrap uzi la 'bootstrap' Guile por konstrui novan Guix" |
| 913 | 924 | ||
| 914 | #: guix/scripts/pull.scm:180 | 925 | #: guix/scripts/pull.scm:183 |
| 915 | #, scheme-format | 926 | #, scheme-format |
| 916 | msgid "~A: unexpected argument~%" | 927 | msgid "~A: unexpected argument~%" |
| 917 | msgstr "~A: neatendita argumento~%" | 928 | msgstr "~A: neatendita argumento~%" |
| 918 | 929 | ||
| 919 | #: guix/scripts/pull.scm:189 | 930 | #: guix/scripts/pull.scm:192 |
| 920 | msgid "failed to download up-to-date source, exiting\n" | 931 | msgid "failed to download up-to-date source, exiting\n" |
| 921 | msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n" | 932 | msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n" |
| 922 | 933 | ||
| 923 | #: guix/scripts/pull.scm:212 | 934 | #: guix/scripts/pull.scm:211 |
| 924 | #, scheme-format | 935 | #, scheme-format |
| 925 | msgid "updated ~a successfully deployed under `~a'~%" | 936 | msgid "updated ~a successfully deployed under `~a'~%" |
| 926 | msgstr "ni ĝisdatigis ~a sukcese, liverita sur '~a'~%" | 937 | msgstr "ni ĝisdatigis ~a sukcese, liverita sur '~a'~%" |
| 927 | 938 | ||
| 928 | #: guix/scripts/pull.scm:215 | 939 | #: guix/scripts/pull.scm:214 |
| 929 | #, scheme-format | 940 | #, scheme-format |
| 930 | msgid "failed to update Guix, check the build log~%" | 941 | msgid "failed to update Guix, check the build log~%" |
| 931 | msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%" | 942 | msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%" |
| 932 | 943 | ||
| 933 | #: guix/scripts/pull.scm:217 | 944 | #: guix/scripts/pull.scm:216 |
| 934 | msgid "Guix already up to date\n" | 945 | msgid "Guix already up to date\n" |
| 935 | msgstr "Guix jam estas ĝisdata\n" | 946 | msgstr "Guix jam estas ĝisdata\n" |
| 936 | 947 | ||
| 937 | #: guix/scripts/substitute-binary.scm:163 | 948 | #: guix/scripts/substitute-binary.scm:162 |
| 938 | #, scheme-format | 949 | #, scheme-format |
| 939 | msgid "while fetching ~a: server is unresponsive~%" | 950 | msgid "while fetching ~a: server is unresponsive~%" |
| 940 | msgstr "dum havigo de ~a: servilo ne respondas~%" | 951 | msgstr "dum havigo de ~a: servilo ne respondas~%" |
| 941 | 952 | ||
| 942 | #: guix/scripts/substitute-binary.scm:165 | 953 | #: guix/scripts/substitute-binary.scm:164 |
| 943 | #, scheme-format | 954 | #, scheme-format |
| 944 | msgid "try `--no-substitutes' if the problem persists~%" | 955 | msgid "try `--no-substitutes' if the problem persists~%" |
| 945 | msgstr "provu '--no-substituse' se la problemo persistos~%" | 956 | msgstr "provu '--no-substituse' se la problemo persistos~%" |
| 946 | 957 | ||
| 947 | #: guix/scripts/substitute-binary.scm:437 | 958 | #: guix/scripts/substitute-binary.scm:425 |
| 959 | #, scheme-format | ||
| 960 | msgid "Downloading, please wait...~%" | ||
| 961 | msgstr "Ni elŝutas, bonvolu atendi...~%" | ||
| 962 | |||
| 963 | #: guix/scripts/substitute-binary.scm:427 | ||
| 964 | #, scheme-format | ||
| 965 | msgid "(Please consider upgrading Guile to get proper progress report.)~%" | ||
| 966 | msgstr "(Bonvolu konsideri pri ĝisdatigo de Guile por havigi ĝustan progres-raporton.)~%" | ||
| 967 | |||
| 968 | #: guix/scripts/substitute-binary.scm:444 | ||
| 948 | #, scheme-format | 969 | #, scheme-format |
| 949 | msgid "host name lookup error: ~a~%" | 970 | msgid "host name lookup error: ~a~%" |
| 950 | msgstr "eraro en serĉado de gastigant-nomo: ~a~%" | 971 | msgstr "eraro en serĉado de gastigant-nomo: ~a~%" |
| 951 | 972 | ||
| 973 | #: guix/scripts/substitute-binary.scm:453 | ||
| 974 | msgid "" | ||
| 975 | "Usage: guix substitute-binary [OPTION]...\n" | ||
| 976 | "Internal tool to substitute a pre-built binary to a local build.\n" | ||
| 977 | msgstr "" | ||
| 978 | "Uzmaniero: guix substitute-binary [MODIFILO]...\n" | ||
| 979 | "Interna ilo por anstataŭigi antaŭ-konstruitan duumaĵon al loka kompilaĵo.\n" | ||
| 980 | |||
| 981 | #: guix/scripts/substitute-binary.scm:455 | ||
| 982 | msgid "" | ||
| 983 | "\n" | ||
| 984 | " --query report on the availability of substitutes for the\n" | ||
| 985 | " store file names passed on the standard input" | ||
| 986 | msgstr "" | ||
| 987 | "\n" | ||
| 988 | " --query raporti pri la disponebleco de anstataŭigoj por la\n" | ||
| 989 | " konservaj dosier-nomoj indikitaj per la ĉefenigujo" | ||
| 990 | |||
| 991 | #: guix/scripts/substitute-binary.scm:458 | ||
| 992 | msgid "" | ||
| 993 | "\n" | ||
| 994 | " --substitute STORE-FILE DESTINATION\n" | ||
| 995 | " download STORE-FILE and store it as a Nar in file\n" | ||
| 996 | " DESTINATION" | ||
| 997 | msgstr "" | ||
| 998 | "\n" | ||
| 999 | " --substitute KONSERV-DOSIERO CELO\n" | ||
| 1000 | " elŝuti KONSERV-DOSIEROn kaj konservi ĝin kiel Nar en la\n" | ||
| 1001 | " dosiero CELO" | ||
| 1002 | |||
| 1003 | #: guix/scripts/substitute-binary.scm:567 | ||
| 1004 | #, scheme-format | ||
| 1005 | msgid "~a: unrecognized options~%" | ||
| 1006 | msgstr "~a: nerekonata modifiloj~%" | ||
| 1007 | |||
| 952 | #: guix/gnu-maintenance.scm:344 | 1008 | #: guix/gnu-maintenance.scm:344 |
| 953 | #, scheme-format | 1009 | #, scheme-format |
| 954 | msgid "signature verification failed for `~a'~%" | 1010 | msgid "signature verification failed for `~a'~%" |
| @@ -969,12 +1025,12 @@ msgstr "~a: ne eblis trovi fontan dosieron" | |||
| 969 | msgid "~a: ~a: no `version' field in source; skipping~%" | 1025 | msgid "~a: ~a: no `version' field in source; skipping~%" |
| 970 | msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%" | 1026 | msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%" |
| 971 | 1027 | ||
| 972 | #: guix/ui.scm:116 | 1028 | #: guix/ui.scm:120 |
| 973 | #, scheme-format | 1029 | #, scheme-format |
| 974 | msgid "failed to install locale: ~a~%" | 1030 | msgid "failed to install locale: ~a~%" |
| 975 | msgstr "fiasko dum instalo de lokaĵaro: ~a~%" | 1031 | msgstr "fiasko dum instalo de lokaĵaro: ~a~%" |
| 976 | 1032 | ||
| 977 | #: guix/ui.scm:138 | 1033 | #: guix/ui.scm:142 |
| 978 | #, scheme-format | 1034 | #, scheme-format |
| 979 | msgid "" | 1035 | msgid "" |
| 980 | "\n" | 1036 | "\n" |
| @@ -983,7 +1039,7 @@ msgstr "" | |||
| 983 | "\n" | 1039 | "\n" |
| 984 | "Raportu program-misojn al: ~a." | 1040 | "Raportu program-misojn al: ~a." |
| 985 | 1041 | ||
| 986 | #: guix/ui.scm:140 | 1042 | #: guix/ui.scm:144 |
| 987 | #, scheme-format | 1043 | #, scheme-format |
| 988 | msgid "" | 1044 | msgid "" |
| 989 | "\n" | 1045 | "\n" |
| @@ -992,7 +1048,7 @@ msgstr "" | |||
| 992 | "\n" | 1048 | "\n" |
| 993 | "hejm-paĝo de ~a: <~a>" | 1049 | "hejm-paĝo de ~a: <~a>" |
| 994 | 1050 | ||
| 995 | #: guix/ui.scm:142 | 1051 | #: guix/ui.scm:146 |
| 996 | msgid "" | 1052 | msgid "" |
| 997 | "\n" | 1053 | "\n" |
| 998 | "General help using GNU software: <http://www.gnu.org/gethelp/>" | 1054 | "General help using GNU software: <http://www.gnu.org/gethelp/>" |
| @@ -1000,90 +1056,90 @@ msgstr "" | |||
| 1000 | "\n" | 1056 | "\n" |
| 1001 | "Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>" | 1057 | "Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>" |
| 1002 | 1058 | ||
| 1003 | #: guix/ui.scm:149 | 1059 | #: guix/ui.scm:153 |
| 1004 | #, scheme-format | 1060 | #, scheme-format |
| 1005 | msgid "~a: invalid number~%" | 1061 | msgid "~a: invalid number~%" |
| 1006 | msgstr "~a: nevalida numero~%" | 1062 | msgstr "~a: nevalida numero~%" |
| 1007 | 1063 | ||
| 1008 | #: guix/ui.scm:160 | 1064 | #: guix/ui.scm:164 |
| 1009 | #, scheme-format | 1065 | #, scheme-format |
| 1010 | msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" | 1066 | msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" |
| 1011 | msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%" | 1067 | msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%" |
| 1012 | 1068 | ||
| 1013 | #: guix/ui.scm:167 | 1069 | #: guix/ui.scm:171 |
| 1014 | #, scheme-format | 1070 | #, scheme-format |
| 1015 | msgid "~a: ~a: build system `~a' does not support cross builds~%" | 1071 | msgid "~a: ~a: build system `~a' does not support cross builds~%" |
| 1016 | msgstr "~a: ~a: konstrui sistemon '~a' ne subtenas crucajn konstruojn~%" | 1072 | msgstr "~a: ~a: konstrui sistemon '~a' ne subtenas crucajn konstruojn~%" |
| 1017 | 1073 | ||
| 1018 | #: guix/ui.scm:172 | 1074 | #: guix/ui.scm:176 |
| 1019 | #, scheme-format | 1075 | #, scheme-format |
| 1020 | msgid "failed to connect to `~a': ~a~%" | 1076 | msgid "failed to connect to `~a': ~a~%" |
| 1021 | msgstr "fiasko dum konekto al '~a': ~a~%" | 1077 | msgstr "fiasko dum konekto al '~a': ~a~%" |
| 1022 | 1078 | ||
| 1023 | #: guix/ui.scm:177 | 1079 | #: guix/ui.scm:181 |
| 1024 | #, scheme-format | 1080 | #, scheme-format |
| 1025 | msgid "build failed: ~a~%" | 1081 | msgid "build failed: ~a~%" |
| 1026 | msgstr "konstruo fiakis: ~a~%" | 1082 | msgstr "konstruo fiakis: ~a~%" |
| 1027 | 1083 | ||
| 1028 | #: guix/ui.scm:193 | 1084 | #: guix/ui.scm:197 |
| 1029 | #, scheme-format | 1085 | #, scheme-format |
| 1030 | msgid "failed to read expression ~s: ~s~%" | 1086 | msgid "failed to read expression ~s: ~s~%" |
| 1031 | msgstr "fiasko dum lego de esprimo ~s: ~s~%" | 1087 | msgstr "fiasko dum lego de esprimo ~s: ~s~%" |
| 1032 | 1088 | ||
| 1033 | #: guix/ui.scm:199 | 1089 | #: guix/ui.scm:203 |
| 1034 | #, scheme-format | 1090 | #, scheme-format |
| 1035 | msgid "failed to evaluate expression `~a': ~s~%" | 1091 | msgid "failed to evaluate expression `~a': ~s~%" |
| 1036 | msgstr "fiasko dum analizo de esprimo '~a': ~a~%" | 1092 | msgstr "fiasko dum analizo de esprimo '~a': ~a~%" |
| 1037 | 1093 | ||
| 1038 | #: guix/ui.scm:203 | 1094 | #: guix/ui.scm:207 |
| 1039 | #, scheme-format | 1095 | #, scheme-format |
| 1040 | msgid "expression `~s' does not evaluate to a package~%" | 1096 | msgid "expression `~s' does not evaluate to a package~%" |
| 1041 | msgstr "la esprimo '~s' ne rezultas pakon~%" | 1097 | msgstr "la esprimo '~s' ne rezultas pakon~%" |
| 1042 | 1098 | ||
| 1043 | #: guix/ui.scm:248 | 1099 | #: guix/ui.scm:253 |
| 1044 | #, scheme-format | 1100 | #, scheme-format |
| 1045 | msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" | 1101 | msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" |
| 1046 | msgstr "~:[La jena derivo povus esti konstruata:~%~{ ~a~%~}~;~]" | 1102 | msgstr "~:[La jena derivo povus esti konstruata:~%~{ ~a~%~}~;~]" |
| 1047 | 1103 | ||
| 1048 | #: guix/ui.scm:253 | 1104 | #: guix/ui.scm:258 |
| 1049 | #, scheme-format | 1105 | #, scheme-format |
| 1050 | msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" | 1106 | msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" |
| 1051 | msgstr "~:[La jena derivo povus esti elŝutata:~%~{ ~a~%~}~;~]" | 1107 | msgstr "~:[La jena derivo povus esti elŝutata:~%~{ ~a~%~}~;~]" |
| 1052 | 1108 | ||
| 1053 | #: guix/ui.scm:259 | 1109 | #: guix/ui.scm:264 |
| 1054 | #, scheme-format | 1110 | #, scheme-format |
| 1055 | msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" | 1111 | msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" |
| 1056 | msgstr "~:[La jena derivo estos esti konstruata:~%~{ ~a~%~}~;~]" | 1112 | msgstr "~:[La jena derivo estos esti konstruata:~%~{ ~a~%~}~;~]" |
| 1057 | 1113 | ||
| 1058 | #: guix/ui.scm:264 | 1114 | #: guix/ui.scm:269 |
| 1059 | #, scheme-format | 1115 | #, scheme-format |
| 1060 | msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" | 1116 | msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" |
| 1061 | msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]" | 1117 | msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]" |
| 1062 | 1118 | ||
| 1063 | #: guix/ui.scm:281 | 1119 | #: guix/ui.scm:286 |
| 1064 | msgid "<unknown location>" | 1120 | msgid "<unknown location>" |
| 1065 | msgstr "<nekonata loko>" | 1121 | msgstr "<nekonata loko>" |
| 1066 | 1122 | ||
| 1067 | #: guix/ui.scm:309 | 1123 | #: guix/ui.scm:314 |
| 1068 | #, scheme-format | 1124 | #, scheme-format |
| 1069 | msgid "failed to create configuration directory `~a': ~a~%" | 1125 | msgid "failed to create configuration directory `~a': ~a~%" |
| 1070 | msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%" | 1126 | msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%" |
| 1071 | 1127 | ||
| 1072 | #: guix/ui.scm:385 guix/ui.scm:395 | 1128 | #: guix/ui.scm:390 guix/ui.scm:400 |
| 1073 | msgid "unknown" | 1129 | msgid "unknown" |
| 1074 | msgstr "nekonata" | 1130 | msgstr "nekonata" |
| 1075 | 1131 | ||
| 1076 | #: guix/ui.scm:415 | 1132 | #: guix/ui.scm:484 |
| 1077 | #, scheme-format | 1133 | #, scheme-format |
| 1078 | msgid "invalid argument: ~a~%" | 1134 | msgid "invalid argument: ~a~%" |
| 1079 | msgstr "malvalida argumento: ~a~%" | 1135 | msgstr "malvalida argumento: ~a~%" |
| 1080 | 1136 | ||
| 1081 | #: guix/ui.scm:420 | 1137 | #: guix/ui.scm:489 |
| 1082 | #, scheme-format | 1138 | #, scheme-format |
| 1083 | msgid "Try `guix --help' for more information.~%" | 1139 | msgid "Try `guix --help' for more information.~%" |
| 1084 | msgstr "Provu 'guix --help' por pli da informo.~%" | 1140 | msgstr "Provu 'guix --help' por pli da informo.~%" |
| 1085 | 1141 | ||
| 1086 | #: guix/ui.scm:447 | 1142 | #: guix/ui.scm:516 |
| 1087 | msgid "" | 1143 | msgid "" |
| 1088 | "Usage: guix COMMAND ARGS...\n" | 1144 | "Usage: guix COMMAND ARGS...\n" |
| 1089 | "Run COMMAND with ARGS.\n" | 1145 | "Run COMMAND with ARGS.\n" |
| @@ -1091,21 +1147,21 @@ msgstr "" | |||
| 1091 | "Uzmaniero: guix KOMANDO ARGj...\n" | 1147 | "Uzmaniero: guix KOMANDO ARGj...\n" |
| 1092 | "Lanĉas KOMANDOn kun ARGj.\n" | 1148 | "Lanĉas KOMANDOn kun ARGj.\n" |
| 1093 | 1149 | ||
| 1094 | #: guix/ui.scm:450 | 1150 | #: guix/ui.scm:519 |
| 1095 | msgid "COMMAND must be one of the sub-commands listed below:\n" | 1151 | msgid "COMMAND must be one of the sub-commands listed below:\n" |
| 1096 | msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n" | 1152 | msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n" |
| 1097 | 1153 | ||
| 1098 | #: guix/ui.scm:469 | 1154 | #: guix/ui.scm:538 |
| 1099 | #, scheme-format | 1155 | #, scheme-format |
| 1100 | msgid "guix: ~a: command not found~%" | 1156 | msgid "guix: ~a: command not found~%" |
| 1101 | msgstr "guix: ~a: komando ne trovita~%" | 1157 | msgstr "guix: ~a: komando ne trovita~%" |
| 1102 | 1158 | ||
| 1103 | #: guix/ui.scm:487 | 1159 | #: guix/ui.scm:556 |
| 1104 | #, scheme-format | 1160 | #, scheme-format |
| 1105 | msgid "guix: missing command name~%" | 1161 | msgid "guix: missing command name~%" |
| 1106 | msgstr "guix: mankas komanda nomo~%" | 1162 | msgstr "guix: mankas komanda nomo~%" |
| 1107 | 1163 | ||
| 1108 | #: guix/ui.scm:495 | 1164 | #: guix/ui.scm:564 |
| 1109 | #, scheme-format | 1165 | #, scheme-format |
| 1110 | msgid "guix: unrecognized option '~a'~%" | 1166 | msgid "guix: unrecognized option '~a'~%" |
| 1111 | msgstr "guix: nerekonata modifilo: '~a'~%" | 1167 | msgstr "guix: nerekonata modifilo: '~a'~%" |
diff --git a/tests/guix-package.sh b/tests/guix-package.sh index b09a9c0173d..5f97aff0260 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh | |||
| @@ -79,12 +79,16 @@ then | |||
| 79 | # Search. | 79 | # Search. |
| 80 | test "`guix package -s "An example GNU package" | grep ^name:`" = \ | 80 | test "`guix package -s "An example GNU package" | grep ^name:`" = \ |
| 81 | "name: hello" | 81 | "name: hello" |
| 82 | test "`guix package -s "n0t4r341p4ck4g3"`" = "" | 82 | test -z "`guix package -s "n0t4r341p4ck4g3"`" |
| 83 | 83 | ||
| 84 | # List generations. | 84 | # List generations. |
| 85 | test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ | 85 | test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ |
| 86 | = " guile-bootstrap" | 86 | = " guile-bootstrap" |
| 87 | 87 | ||
| 88 | # Exit with 1 when a generation does not exist. | ||
| 89 | if guix package -p "$profile" --list-generations=42; | ||
| 90 | then false; else true; fi | ||
| 91 | |||
| 88 | # Remove a package. | 92 | # Remove a package. |
| 89 | guix package --bootstrap -p "$profile" -r "guile-bootstrap" | 93 | guix package --bootstrap -p "$profile" -r "guile-bootstrap" |
| 90 | test -L "$profile-3-link" | 94 | test -L "$profile-3-link" |
| @@ -107,11 +111,17 @@ then | |||
| 107 | test "`readlink_base "$profile"`" = "$profile-0-link" | 111 | test "`readlink_base "$profile"`" = "$profile-0-link" |
| 108 | done | 112 | done |
| 109 | 113 | ||
| 114 | # Test that '--list-generations' does not output the zeroth generation. | ||
| 115 | test -z "`guix package -p "$profile" -l 0`" | ||
| 116 | |||
| 110 | # Reinstall after roll-back to the empty profile. | 117 | # Reinstall after roll-back to the empty profile. |
| 111 | guix package --bootstrap -p "$profile" -e "$boot_make" | 118 | guix package --bootstrap -p "$profile" -e "$boot_make" |
| 112 | test "`readlink_base "$profile"`" = "$profile-1-link" | 119 | test "`readlink_base "$profile"`" = "$profile-1-link" |
| 113 | test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" | 120 | test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" |
| 114 | 121 | ||
| 122 | # Check that the first generation is the current one. | ||
| 123 | test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)" | ||
| 124 | |||
| 115 | # Roll-back to generation 0, and install---all at once. | 125 | # Roll-back to generation 0, and install---all at once. |
| 116 | guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap | 126 | guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap |
| 117 | test "`readlink_base "$profile"`" = "$profile-1-link" | 127 | test "`readlink_base "$profile"`" = "$profile-1-link" |
diff --git a/tests/guix-register.sh b/tests/guix-register.sh index b76a1af54f3..ca28fb0d95f 100644 --- a/tests/guix-register.sh +++ b/tests/guix-register.sh | |||
| @@ -38,9 +38,10 @@ cp -r "$to_copy" "$new_store_dir" | |||
| 38 | copied="$new_store_dir/`basename $to_copy`" | 38 | copied="$new_store_dir/`basename $to_copy`" |
| 39 | 39 | ||
| 40 | # Create a file representing a closure with zero references, and with an empty | 40 | # Create a file representing a closure with zero references, and with an empty |
| 41 | # "deriver" field. | 41 | # "deriver" field. Note that we give the file name as it appears in the |
| 42 | # original store, and 'guix-register' translates it to match the prefix. | ||
| 42 | cat >> "$closure" <<EOF | 43 | cat >> "$closure" <<EOF |
| 43 | $copied | 44 | $to_copy |
| 44 | 45 | ||
| 45 | 0 | 46 | 0 |
| 46 | EOF | 47 | EOF |
| @@ -49,26 +50,37 @@ EOF | |||
| 49 | guix-register -p "$new_store" < "$closure" | 50 | guix-register -p "$new_store" < "$closure" |
| 50 | 51 | ||
| 51 | # Doing it a second time shouldn't hurt. | 52 | # Doing it a second time shouldn't hurt. |
| 52 | guix-register -p "$new_store" "$closure" | 53 | guix-register --prefix "$new_store" "$closure" |
| 53 | 54 | ||
| 54 | # Now make sure this is recognized as valid. | 55 | # Now make sure this is recognized as valid. |
| 55 | 56 | ||
| 56 | NIX_IGNORE_SYMLINK_STORE=1 | 57 | NIX_IGNORE_SYMLINK_STORE=1 |
| 57 | NIX_STORE_DIR="$new_store_dir" | 58 | NIX_STORE_DIR="$new_store_dir" |
| 58 | NIX_LOCALSTATE_DIR="$new_store$localstatedir" | 59 | NIX_STATE_DIR="$new_store$localstatedir" |
| 59 | NIX_LOG_DIR="$new_store$localstatedir/log/nix" | 60 | NIX_LOG_DIR="$new_store$localstatedir/log/nix" |
| 60 | NIX_DB_DIR="$new_store$localstatedir/nix/db" | 61 | NIX_DB_DIR="$new_store$localstatedir/nix/db" |
| 61 | 62 | ||
| 62 | export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR NIX_LOCALSTATE_DIR \ | 63 | export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR NIX_STATE_DIR \ |
| 63 | NIX_LOG_DIR NIX_DB_DIR | 64 | NIX_LOG_DIR NIX_DB_DIR |
| 64 | 65 | ||
| 65 | guix-daemon --disable-chroot & | 66 | guix-daemon --disable-chroot & |
| 66 | subdaemon_pid=$! | 67 | subdaemon_pid=$! |
| 67 | exit_hook="kill $subdaemon_pid" | 68 | exit_hook="kill $subdaemon_pid" |
| 68 | 69 | ||
| 70 | final_name="$storedir/`basename $to_copy`" | ||
| 71 | |||
| 69 | # At this point the copy in $new_store must be valid, and unreferenced. | 72 | # At this point the copy in $new_store must be valid, and unreferenced. |
| 73 | # The database under $new_store uses the $final_name, but we can't use | ||
| 74 | # that name in a 'valid-path?' query because 'assertStorePath' would kill | ||
| 75 | # us because of the wrong prefix. So we just list dead paths instead. | ||
| 70 | guile -c " | 76 | guile -c " |
| 71 | (use-modules (guix store)) | 77 | (use-modules (guix store)) |
| 72 | (define s (open-connection)) | 78 | (define s (open-connection)) |
| 73 | (exit (and (valid-path? s \"$copied\") | 79 | (exit (equal? (list \"$copied\") (dead-paths s)))" |
| 74 | (equal? (list \"$copied\") (dead-paths s))))" | 80 | |
| 81 | # When 'sqlite3' is available, check the name in the database. | ||
| 82 | if type -P sqlite3 | ||
| 83 | then | ||
| 84 | echo "select * from ValidPaths where path=\"$final_name\";" | \ | ||
| 85 | sqlite3 $NIX_DB_DIR/db.sqlite | ||
| 86 | fi | ||
