summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-09-26 00:20:11 +0200
committerLudovic Courtès <ludo@gnu.org>2013-09-26 00:20:11 +0200
commit7facbf2b58f80afffedbb9230ec7ab9b61232dfe (patch)
tree7ab3870f77f596e548ccd0e50f5ea16d1c32f434
parent1fa49a2c4636c0f35972c16f6bd2d28a4424b821 (diff)
parent834b5c80763eba42018606a674bcc53bfeca10eb (diff)
Merge branch 'master' into core-updates
-rw-r--r--NEWS88
-rwxr-xr-xbuild-aux/list-packages.scm130
-rw-r--r--doc/guix.texi8
-rw-r--r--gnu/packages/fontutils.scm10
-rw-r--r--gnu/packages/gnupg.scm16
-rw-r--r--gnu/packages/mail.scm5
-rw-r--r--gnu/packages/maths.scm4
-rw-r--r--gnu/packages/package-management.scm22
-rw-r--r--gnu/packages/scheme.scm20
-rw-r--r--gnu/packages/xorg.scm46
-rw-r--r--gnu/packages/zile.scm34
-rw-r--r--gnu/system/dmd.scm67
-rw-r--r--gnu/system/linux.scm13
-rw-r--r--gnu/system/vm.scm202
-rw-r--r--guix/packages.scm4
-rw-r--r--guix/scripts/package.scm27
-rw-r--r--nix/guix-register/guix-register.cc28
-rw-r--r--po/eo.po346
-rw-r--r--tests/guix-package.sh12
-rw-r--r--tests/guix-register.sh26
20 files changed, 829 insertions, 279 deletions
diff --git a/NEWS b/NEWS
index e7cb112bec9..1e816d98f5f 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,94 @@ Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
10 10
11Please send Guix bug reports to bug-guix@gnu.org. 11Please 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
19The ‘guix package’ command has these two new options, which make it easier to
20deal with a profile’s generation. See “Invoking guix package” in the manual.
21
22*** New ‘guix-register’ program
23
24This program allows the meta-data of a new store to be initialized, by
25copying 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
31The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a
32package object and source directory, and returns a new package object that
33runs ‘./bootstrap && make dist’ or anything similar.
34
35*** ‘derivation’ and related procedures have a #:references-graphs parameter
36
37This parameter instructs the build daemon to populate the derivation’s build
38tree with files containing the list of references of the given store files.
39This is useful to write code that copies a packages and all its dependencies
40to another storage device, such as a QEMU disk image.
41
42*** Extended API to build a GNU system virtual machine image
43
44The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’
45procedure 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
47system, has ‘login’ running on several consoles, has a set of installed
48packages, and where Guix can be used.
49
50New (gnu system …) modules have been added to handle the configuration of the
51various parts of a GNU/Linux system. For instance, (gnu system dmd) provides
52support for instantiating dmd services; (gnu system linux) helps with Linux
53PAM 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
59a <derivation> object. The <derivation> object embeds the corresponding .drv
60file 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
70Fontconfig, the library used by many graphical applications, such as those
71based on GTK+, now knows where to find the default set of fonts. Additional
72fonts installed in the user profile are automatically picked up.
73
74*** More GUI applications
75
76The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+
77applications have been added (see above.)
78
79*** Packaging guidelines
80
81The documentation of packaging guidelines has been augmented. See the manual
82under “GNU Distribution”.
83
84*** Support for Python 3 along with Python 2
85
86Python 3 has been added to the distribution, and Python packages that support
87it are now built for both Python 2 and Python 3. See the “Python Modules”
88section of the manual for details.
89
90** Internationalization
91
92Updated 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
54collected package output in PREVIOUS, a list of DESCRIPTION-IDS and the number
55of packages still to be processed in REMAINING. Also Introduces a call to the
56JavaScript prep_pkg_descs function as part of the output of PACKAGE, every
57time the length of DESCRIPTION-IDS, increasing, is 15 or when REMAINING,
58decreasing, 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
104description-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
240function show_hide(idThing) 275function 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 */
294function 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. */
308function 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
583before any other actions. 583before any other actions.
584 584
585When rolling back from the first generation that actually contains 585When rolling back from the first generation that actually contains
586installed packages, the profile is made to point to the @dfn{empty 586installed packages, the profile is made to point to the @dfn{zeroth
587profile}, also known as @dfn{profile zero}---i.e., it contains no files 587generation}, which contains no files apart from its own meta-data.
588apart from its own meta-data.
589 588
590Installing, removing, or upgrading packages from a generation that has 589Installing, removing, or upgrading packages from a generation that has
591been rolled back to overwrites previous future generations. Thus, the 590been 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}]
684Return a list of generations along with their creation dates; for each 683Return a list of generations along with their creation dates; for each
685generation, show the installed packages, with the most recently 684generation, show the installed packages, with the most recently
686installed packages shown last. 685installed packages shown last. Note that the zeroth generation is never
686shown.
687 687
688For each installed package, print the following items, separated by 688For each installed package, print the following items, separated by
689tabs: the name of a package, its version string, the part of the package 689tabs: 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
101Guix is based on the Nix package manager.") 104Guix 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
130ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords." 130ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When MOTD is true, it
131should 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
199configuration file. 208configuration file.
200 209
201INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied 210INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied
202into the image being built. 211into the image being built. When INITIALIZE-STORE? is true, initialize the
212store database in the image so that Guix can be used in the image.
203 213
204When POPULATE is true, it must be the store file name of a Guile script to run 214POPULATE is a list of directives stating directories or symlinks to be created
205in the disk image partition once it has been populated with INPUTS-TO-COPY. 215in the disk image partition. It is evaluated once the image has been
206It can be used to provide additional files, such as /etc files." 216populated with INPUTS-TO-COPY. It can be used to provide additional files,
217such 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
405input 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" "
437Happy 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 "
502export PS1='\\u@\\h\\$ '
503export PATH=$HOME/.guix-profile/bin:" profile "/bin:" profile "/sbin
504export CPATH=$HOME/.guix-profile/include:" profile "/include
505export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
506alias ls='ls -p --color'
507alias ll='ls -l'
508")))
509
510 (issue (add-text-to-store store "issue" "
511This is an alpha preview of the GNU system. Welcome.
512
513This image features the GNU Guix package manager, which was used to
514build it (http://www.gnu.org/software/guix/). The init system is
515GNU dmd (http://www.gnu.org/software/dmd/).
516
517You 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
468symbolic output name, such as \"out\". Note that this procedure calls 468symbolic 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. */
67static std::string prefix;
68
65/* Parse a single option. */ 69/* Parse a single option. */
66static error_t 70static error_t
67parse_opt (int key, char *arg, struct argp_state *state) 71parse_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)
diff --git a/po/eo.po b/po/eo.po
index b5f56f2cd42..ab1d82ff15b 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -5,16 +5,17 @@
5# 5#
6msgid "" 6msgid ""
7msgstr "" 7msgstr ""
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."
58msgstr "" 58msgstr ""
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)."
83msgstr "" 81msgstr ""
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
90msgid "" 88msgid ""
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."
95msgstr "" 92msgstr ""
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"
139msgid "" 132msgid ""
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."
180msgstr "" 170msgstr ""
181 171
@@ -197,12 +187,10 @@ msgstr "La Biblioteko GNU C"
197#: gnu/packages/base.scm:502 187#: gnu/packages/base.scm:502
198msgid "" 188msgid ""
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."
207msgstr "" 195msgstr ""
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."
221msgstr "" 208msgstr ""
222 209
@@ -227,8 +214,7 @@ msgstr "La ligila ĉirkaŭanto"
227#: gnu/packages/base.scm:992 214#: gnu/packages/base.scm:992
228msgid "" 215msgid ""
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."
233msgstr "" 219msgstr ""
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
281msgid "" 266msgid ""
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."
287msgstr "" 271msgstr ""
@@ -293,33 +277,39 @@ msgstr "Lanĉi taskoj je antaŭplanitaj horoj"
293#: gnu/packages/guile.scm:294 277#: gnu/packages/guile.scm:294
294msgid "" 278msgid ""
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."
302msgstr "" 284msgstr ""
303 285
286#: gnu/packages/guile.scm:323
287msgid "Collection of useful Guile Scheme modules"
288msgstr "Aro da utilaj moduloj de Guile Scheme"
289
290#: gnu/packages/guile.scm:325
291msgid ""
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\"."
296msgstr ""
297
304#: gnu/packages/lout.scm:109 298#: gnu/packages/lout.scm:109
305msgid "Lout, a document layout system similar in style to LaTeX" 299msgid "Lout, a document layout system similar in style to LaTeX"
306msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo" 300msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo"
307 301
308#: gnu/packages/lout.scm:111 302#: gnu/packages/lout.scm:111
309msgid "" 303msgid ""
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
412msgid "" 402msgid ""
413"\n" 403"\n"
414" --fallback fall back to building when the substituter fails" 404" --fallback fall back to building when the substituter fails"
415msgstr "" 405msgstr ""
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
421msgid "" 410msgid ""
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"
424msgstr "" 413msgstr ""
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
430msgid "" 418msgid ""
431"\n" 419"\n"
432" --max-silent-time=SECONDS\n" 420" --max-silent-time=SECONDS\n"
@@ -434,8 +422,7 @@ msgid ""
434msgstr "" 422msgstr ""
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
441msgid "" 428msgid ""
@@ -452,8 +439,7 @@ msgid ""
452" as a garbage collector root" 439" as a garbage collector root"
453msgstr "" 440msgstr ""
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
470msgid "" 457msgid ""
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
480msgid "" 468msgid ""
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~%"
490msgstr "~a: ne estas numero~%" 478msgstr "~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
496msgid "~A: unrecognized option~%" 484msgid "~A: unrecognized option~%"
497msgstr "~A: nerekonata modifilo~%" 485msgstr "~A: nerekonata modifilo~%"
@@ -501,12 +489,12 @@ msgstr "~A: nerekonata modifilo~%"
501msgid "failed to create GC root `~a': ~a~%" 489msgid "failed to create GC root `~a': ~a~%"
502msgstr "fiasko dum kreo de radiko GC '~a': ~a~%" 490msgstr "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
506msgid "ambiguous package specification `~a'~%" 494msgid "ambiguous package specification `~a'~%"
507msgstr "plursenca pak-specifigo '~a'~%" 495msgstr "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
511msgid "choosing ~a from ~a~%" 499msgid "choosing ~a from ~a~%"
512msgstr "ni elektas ~a el ~a~%" 500msgstr "ni elektas ~a el ~a~%"
@@ -560,42 +548,42 @@ msgstr "~a: analizo de URI fiaskis~%"
560msgid "~a: download failed~%" 548msgid "~a: download failed~%"
561msgstr "~a: elŝuto fiaskis~%" 549msgstr "~a: elŝuto fiaskis~%"
562 550
563#: guix/scripts/package.scm:225 551#: guix/scripts/package.scm:227
564#, scheme-format 552#, scheme-format
565msgid "switching from generation ~a to ~a~%" 553msgid "switching from generation ~a to ~a~%"
566msgstr "alterno el generacio ~a al ~a~%" 554msgstr "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
570msgid "profile `~a' does not exist~%" 558msgid "profile `~a' does not exist~%"
571msgstr "profilo '~a' ne ekzistas~%" 559msgstr "profilo '~a' ne ekzistas~%"
572 560
573#: guix/scripts/package.scm:234 561#: guix/scripts/package.scm:236
574#, scheme-format 562#, scheme-format
575msgid "nothing to do: already at the empty profile~%" 563msgid "nothing to do: already at the empty profile~%"
576msgstr "nenio por fari: jam estas ĉe la malplena profilo~%" 564msgstr "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
580msgid "failed to build the empty profile~%" 568msgid "failed to build the empty profile~%"
581msgstr "fiasko dum konstruo de malplena profilo~%" 569msgstr "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
585msgid "looking for the latest release of GNU ~a..." 573msgid "looking for the latest release of GNU ~a..."
586msgstr "ni serĉas la lastan eldonon de GNU ~a..." 574msgstr "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
590msgid "~a: note: using ~a but ~a is available upstream~%" 578msgid "~a: note: using ~a but ~a is available upstream~%"
591msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%" 579msgstr "~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
595msgid "The following environment variable definitions may be needed:~%" 583msgid "The following environment variable definitions may be needed:~%"
596msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%" 584msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%"
597 585
598#: guix/scripts/package.scm:429 586#: guix/scripts/package.scm:496
599msgid "" 587msgid ""
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
607msgid "" 595msgid ""
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
615msgid "" 603msgid ""
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
625msgid "" 613msgid ""
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
633msgid "" 621msgid ""
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"
636msgstr "" 624msgstr ""
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
642msgid "" 629msgid ""
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
650msgid "" 637msgid ""
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
645msgid ""
646"\n"
647" -l, --list-generations[=PATTERN]\n"
648" list generations matching PATTERN"
649msgstr ""
650"\n"
651" -I, --list-generations[=ŜABLONO]\n"
652" listigi generaciojn kongruantajn al ŜABLONO"
653
654#: guix/scripts/package.scm:515
658msgid "" 655msgid ""
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"
661msgstr "" 658msgstr ""
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
667msgid "" 663msgid ""
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
675msgid "" 671msgid ""
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
683msgid "" 679msgid ""
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
691msgid "" 687msgid ""
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
699msgid "" 695msgid ""
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
709msgid "" 705msgid ""
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
720msgid "~A: extraneous argument~%" 716msgid "~A: extraneous argument~%"
721msgstr "~A: fremda argumento~%" 717msgstr "~A: fremda argumento~%"
722 718
723#: guix/scripts/package.scm:584 719#: guix/scripts/package.scm:658
724#, scheme-format 720#, scheme-format
725msgid "package `~a' lacks output `~a'~%" 721msgid "package `~a' lacks output `~a'~%"
726msgstr "pako '~a' malhavas eligon '~a'~%" 722msgstr "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
730msgid "~a: package not found~%" 726msgid "~a: package not found~%"
731msgstr "~a: pako ne trovita~%" 727msgstr "~a: pako ne trovita~%"
732 728
733#: guix/scripts/package.scm:631 729#: guix/scripts/package.scm:705
734#, scheme-format 730#, scheme-format
735msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" 731msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
736msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%" 732msgstr "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
740msgid "error: while creating directory `~a': ~a~%" 736msgid "error: while creating directory `~a': ~a~%"
741msgstr "eraro: dum kreo de dosierujo '~a': ~a~%" 737msgstr "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
745msgid "Please create the `~a' directory, with you as the owner.~%" 741msgid "Please create the `~a' directory, with you as the owner.~%"
746msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%" 742msgstr "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
750msgid "error: directory `~a' is not owned by you~%" 746msgid "error: directory `~a' is not owned by you~%"
751msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%" 747msgstr "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
755msgid "Please change the owner of `~a' to user ~s.~%" 751msgid "Please change the owner of `~a' to user ~s.~%"
756msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%" 752msgstr "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
760msgid "The following package would be removed:~% ~{~a~%~}~%" 756msgid "The following package would be removed:~% ~{~a~%~}~%"
761msgstr "La jena pako devos esti forigata:~% ~{~a~%~}~%" 757msgstr "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
765msgid "The following package will be removed:~% ~{~a~%~}~%" 761msgid "The following package will be removed:~% ~{~a~%~}~%"
766msgstr "La jena pako estos forigata:~% ~{~a~%~}~%" 762msgstr "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
770msgid "The following package would be installed:~%~{~a~%~}~%" 766msgid "The following package would be installed:~%~{~a~%~}~%"
771msgstr "La jena pako estus instalata:~% ~{~a~%~}~%" 767msgstr "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
775msgid "The following package will be installed:~%~{~a~%~}~%" 771msgid "The following package will be installed:~%~{~a~%~}~%"
776msgstr "La jena pako estos instalata:~% ~{~a~%~}~%" 772msgstr "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
780msgid "nothing to be done~%" 776msgid "nothing to be done~%"
781msgstr "nenio por fari~%" 777msgstr "nenio por fari~%"
782 778
783#: guix/scripts/package.scm:870 779#: guix/scripts/package.scm:944
784#, scheme-format 780#, scheme-format
785msgid "~a package in profile~%" 781msgid "~a package in profile~%"
786msgstr "pako ~a en profilo~%" 782msgstr "pako ~a en profilo~%"
787 783
784#: guix/scripts/package.scm:959
785#, scheme-format
786msgid "Generation ~a\t~a~%"
787msgstr "Generacio ~a\t~a~%"
788
789#: guix/scripts/package.scm:977
790#, scheme-format
791msgid "profile '~a' does not exist~%"
792msgstr "profilo '~a' ne ekzistas~%"
793
794#: guix/scripts/package.scm:986
795#, scheme-format
796msgid "invalid syntax: ~a~%"
797msgstr "malvalida sintakso: ~a~%"
798
788#: guix/scripts/gc.scm:39 799#: guix/scripts/gc.scm:39
789msgid "" 800msgid ""
790"Usage: guix gc [OPTION]... PATHS...\n" 801"Usage: guix gc [OPTION]... PATHS...\n"
@@ -885,7 +896,7 @@ msgstr ""
885msgid "unrecognized option: ~a~%" 896msgid "unrecognized option: ~a~%"
886msgstr "nerekonata modifilo: ~a~%" 897msgstr "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
890msgid "~a~%" 901msgid "~a~%"
891msgstr "~a~%" 902msgstr "~a~%"
@@ -895,7 +906,7 @@ msgstr "~a~%"
895msgid "wrong number of arguments~%" 906msgid "wrong number of arguments~%"
896msgstr "malĝusta nombro da argumentoj~%" 907msgstr "malĝusta nombro da argumentoj~%"
897 908
898#: guix/scripts/pull.scm:142 909#: guix/scripts/pull.scm:145
899msgid "" 910msgid ""
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
907msgid "" 918msgid ""
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
916msgid "~A: unexpected argument~%" 927msgid "~A: unexpected argument~%"
917msgstr "~A: neatendita argumento~%" 928msgstr "~A: neatendita argumento~%"
918 929
919#: guix/scripts/pull.scm:189 930#: guix/scripts/pull.scm:192
920msgid "failed to download up-to-date source, exiting\n" 931msgid "failed to download up-to-date source, exiting\n"
921msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n" 932msgstr "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
925msgid "updated ~a successfully deployed under `~a'~%" 936msgid "updated ~a successfully deployed under `~a'~%"
926msgstr "ni ĝisdatigis ~a sukcese, liverita sur '~a'~%" 937msgstr "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
930msgid "failed to update Guix, check the build log~%" 941msgid "failed to update Guix, check the build log~%"
931msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%" 942msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%"
932 943
933#: guix/scripts/pull.scm:217 944#: guix/scripts/pull.scm:216
934msgid "Guix already up to date\n" 945msgid "Guix already up to date\n"
935msgstr "Guix jam estas ĝisdata\n" 946msgstr "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
939msgid "while fetching ~a: server is unresponsive~%" 950msgid "while fetching ~a: server is unresponsive~%"
940msgstr "dum havigo de ~a: servilo ne respondas~%" 951msgstr "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
944msgid "try `--no-substitutes' if the problem persists~%" 955msgid "try `--no-substitutes' if the problem persists~%"
945msgstr "provu '--no-substituse' se la problemo persistos~%" 956msgstr "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
960msgid "Downloading, please wait...~%"
961msgstr "Ni elŝutas, bonvolu atendi...~%"
962
963#: guix/scripts/substitute-binary.scm:427
964#, scheme-format
965msgid "(Please consider upgrading Guile to get proper progress report.)~%"
966msgstr "(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
949msgid "host name lookup error: ~a~%" 970msgid "host name lookup error: ~a~%"
950msgstr "eraro en serĉado de gastigant-nomo: ~a~%" 971msgstr "eraro en serĉado de gastigant-nomo: ~a~%"
951 972
973#: guix/scripts/substitute-binary.scm:453
974msgid ""
975"Usage: guix substitute-binary [OPTION]...\n"
976"Internal tool to substitute a pre-built binary to a local build.\n"
977msgstr ""
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
982msgid ""
983"\n"
984" --query report on the availability of substitutes for the\n"
985" store file names passed on the standard input"
986msgstr ""
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
992msgid ""
993"\n"
994" --substitute STORE-FILE DESTINATION\n"
995" download STORE-FILE and store it as a Nar in file\n"
996" DESTINATION"
997msgstr ""
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
1005msgid "~a: unrecognized options~%"
1006msgstr "~a: nerekonata modifiloj~%"
1007
952#: guix/gnu-maintenance.scm:344 1008#: guix/gnu-maintenance.scm:344
953#, scheme-format 1009#, scheme-format
954msgid "signature verification failed for `~a'~%" 1010msgid "signature verification failed for `~a'~%"
@@ -969,12 +1025,12 @@ msgstr "~a: ne eblis trovi fontan dosieron"
969msgid "~a: ~a: no `version' field in source; skipping~%" 1025msgid "~a: ~a: no `version' field in source; skipping~%"
970msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%" 1026msgstr "~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
974msgid "failed to install locale: ~a~%" 1030msgid "failed to install locale: ~a~%"
975msgstr "fiasko dum instalo de lokaĵaro: ~a~%" 1031msgstr "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
979msgid "" 1035msgid ""
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
988msgid "" 1044msgid ""
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
996msgid "" 1052msgid ""
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
1005msgid "~a: invalid number~%" 1061msgid "~a: invalid number~%"
1006msgstr "~a: nevalida numero~%" 1062msgstr "~a: nevalida numero~%"
1007 1063
1008#: guix/ui.scm:160 1064#: guix/ui.scm:164
1009#, scheme-format 1065#, scheme-format
1010msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" 1066msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
1011msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%" 1067msgstr "~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
1015msgid "~a: ~a: build system `~a' does not support cross builds~%" 1071msgid "~a: ~a: build system `~a' does not support cross builds~%"
1016msgstr "~a: ~a: konstrui sistemon '~a' ne subtenas crucajn konstruojn~%" 1072msgstr "~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
1020msgid "failed to connect to `~a': ~a~%" 1076msgid "failed to connect to `~a': ~a~%"
1021msgstr "fiasko dum konekto al '~a': ~a~%" 1077msgstr "fiasko dum konekto al '~a': ~a~%"
1022 1078
1023#: guix/ui.scm:177 1079#: guix/ui.scm:181
1024#, scheme-format 1080#, scheme-format
1025msgid "build failed: ~a~%" 1081msgid "build failed: ~a~%"
1026msgstr "konstruo fiakis: ~a~%" 1082msgstr "konstruo fiakis: ~a~%"
1027 1083
1028#: guix/ui.scm:193 1084#: guix/ui.scm:197
1029#, scheme-format 1085#, scheme-format
1030msgid "failed to read expression ~s: ~s~%" 1086msgid "failed to read expression ~s: ~s~%"
1031msgstr "fiasko dum lego de esprimo ~s: ~s~%" 1087msgstr "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
1035msgid "failed to evaluate expression `~a': ~s~%" 1091msgid "failed to evaluate expression `~a': ~s~%"
1036msgstr "fiasko dum analizo de esprimo '~a': ~a~%" 1092msgstr "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
1040msgid "expression `~s' does not evaluate to a package~%" 1096msgid "expression `~s' does not evaluate to a package~%"
1041msgstr "la esprimo '~s' ne rezultas pakon~%" 1097msgstr "la esprimo '~s' ne rezultas pakon~%"
1042 1098
1043#: guix/ui.scm:248 1099#: guix/ui.scm:253
1044#, scheme-format 1100#, scheme-format
1045msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" 1101msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]"
1046msgstr "~:[La jena derivo povus esti konstruata:~%~{ ~a~%~}~;~]" 1102msgstr "~:[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
1050msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" 1106msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]"
1051msgstr "~:[La jena derivo povus esti elŝutata:~%~{ ~a~%~}~;~]" 1107msgstr "~:[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
1055msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" 1111msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]"
1056msgstr "~:[La jena derivo estos esti konstruata:~%~{ ~a~%~}~;~]" 1112msgstr "~:[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
1060msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" 1116msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]"
1061msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]" 1117msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]"
1062 1118
1063#: guix/ui.scm:281 1119#: guix/ui.scm:286
1064msgid "<unknown location>" 1120msgid "<unknown location>"
1065msgstr "<nekonata loko>" 1121msgstr "<nekonata loko>"
1066 1122
1067#: guix/ui.scm:309 1123#: guix/ui.scm:314
1068#, scheme-format 1124#, scheme-format
1069msgid "failed to create configuration directory `~a': ~a~%" 1125msgid "failed to create configuration directory `~a': ~a~%"
1070msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%" 1126msgstr "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
1073msgid "unknown" 1129msgid "unknown"
1074msgstr "nekonata" 1130msgstr "nekonata"
1075 1131
1076#: guix/ui.scm:415 1132#: guix/ui.scm:484
1077#, scheme-format 1133#, scheme-format
1078msgid "invalid argument: ~a~%" 1134msgid "invalid argument: ~a~%"
1079msgstr "malvalida argumento: ~a~%" 1135msgstr "malvalida argumento: ~a~%"
1080 1136
1081#: guix/ui.scm:420 1137#: guix/ui.scm:489
1082#, scheme-format 1138#, scheme-format
1083msgid "Try `guix --help' for more information.~%" 1139msgid "Try `guix --help' for more information.~%"
1084msgstr "Provu 'guix --help' por pli da informo.~%" 1140msgstr "Provu 'guix --help' por pli da informo.~%"
1085 1141
1086#: guix/ui.scm:447 1142#: guix/ui.scm:516
1087msgid "" 1143msgid ""
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
1095msgid "COMMAND must be one of the sub-commands listed below:\n" 1151msgid "COMMAND must be one of the sub-commands listed below:\n"
1096msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n" 1152msgstr "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
1100msgid "guix: ~a: command not found~%" 1156msgid "guix: ~a: command not found~%"
1101msgstr "guix: ~a: komando ne trovita~%" 1157msgstr "guix: ~a: komando ne trovita~%"
1102 1158
1103#: guix/ui.scm:487 1159#: guix/ui.scm:556
1104#, scheme-format 1160#, scheme-format
1105msgid "guix: missing command name~%" 1161msgid "guix: missing command name~%"
1106msgstr "guix: mankas komanda nomo~%" 1162msgstr "guix: mankas komanda nomo~%"
1107 1163
1108#: guix/ui.scm:495 1164#: guix/ui.scm:564
1109#, scheme-format 1165#, scheme-format
1110msgid "guix: unrecognized option '~a'~%" 1166msgid "guix: unrecognized option '~a'~%"
1111msgstr "guix: nerekonata modifilo: '~a'~%" 1167msgstr "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"
38copied="$new_store_dir/`basename $to_copy`" 38copied="$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.
42cat >> "$closure" <<EOF 43cat >> "$closure" <<EOF
43$copied 44$to_copy
44 45
450 460
46EOF 47EOF
@@ -49,26 +50,37 @@ EOF
49guix-register -p "$new_store" < "$closure" 50guix-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.
52guix-register -p "$new_store" "$closure" 53guix-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
56NIX_IGNORE_SYMLINK_STORE=1 57NIX_IGNORE_SYMLINK_STORE=1
57NIX_STORE_DIR="$new_store_dir" 58NIX_STORE_DIR="$new_store_dir"
58NIX_LOCALSTATE_DIR="$new_store$localstatedir" 59NIX_STATE_DIR="$new_store$localstatedir"
59NIX_LOG_DIR="$new_store$localstatedir/log/nix" 60NIX_LOG_DIR="$new_store$localstatedir/log/nix"
60NIX_DB_DIR="$new_store$localstatedir/nix/db" 61NIX_DB_DIR="$new_store$localstatedir/nix/db"
61 62
62export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR NIX_LOCALSTATE_DIR \ 63export 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
65guix-daemon --disable-chroot & 66guix-daemon --disable-chroot &
66subdaemon_pid=$! 67subdaemon_pid=$!
67exit_hook="kill $subdaemon_pid" 68exit_hook="kill $subdaemon_pid"
68 69
70final_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.
70guile -c " 76guile -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.
82if type -P sqlite3
83then
84 echo "select * from ValidPaths where path=\"$final_name\";" | \
85 sqlite3 $NIX_DB_DIR/db.sqlite
86fi