Merge branch 'master' into core-updates
commit
7facbf2b58
88
NEWS
88
NEWS
|
@ -10,6 +10,94 @@ Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
|
||||||
Please send Guix bug reports to bug-guix@gnu.org.
|
Please send Guix bug reports to bug-guix@gnu.org.
|
||||||
|
|
||||||
|
* Changes in 0.4 (since 0.3)
|
||||||
|
|
||||||
|
** Package management
|
||||||
|
|
||||||
|
*** New ‘--list-generations’ and ‘--delete-generations’ options
|
||||||
|
|
||||||
|
The ‘guix package’ command has these two new options, which make it easier to
|
||||||
|
deal with a profile’s generation. See “Invoking guix package” in the manual.
|
||||||
|
|
||||||
|
*** New ‘guix-register’ program
|
||||||
|
|
||||||
|
This program allows the meta-data of a new store to be initialized, by
|
||||||
|
copying info from an existing store. It is mostly an internal tool.
|
||||||
|
|
||||||
|
** Programming interfaces
|
||||||
|
|
||||||
|
*** New API to bootstrap Autotools-based packages
|
||||||
|
|
||||||
|
The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a
|
||||||
|
package object and source directory, and returns a new package object that
|
||||||
|
runs ‘./bootstrap && make dist’ or anything similar.
|
||||||
|
|
||||||
|
*** ‘derivation’ and related procedures have a #:references-graphs parameter
|
||||||
|
|
||||||
|
This parameter instructs the build daemon to populate the derivation’s build
|
||||||
|
tree with files containing the list of references of the given store files.
|
||||||
|
This is useful to write code that copies a packages and all its dependencies
|
||||||
|
to another storage device, such as a QEMU disk image.
|
||||||
|
|
||||||
|
*** Extended API to build a GNU system virtual machine image
|
||||||
|
|
||||||
|
The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’
|
||||||
|
procedure can now populate and initialize the image’s store; the new
|
||||||
|
‘system-qemu-image’ procedure returns a QEMU image that runs dmd as its init
|
||||||
|
system, has ‘login’ running on several consoles, has a set of installed
|
||||||
|
packages, and where Guix can be used.
|
||||||
|
|
||||||
|
New (gnu system …) modules have been added to handle the configuration of the
|
||||||
|
various parts of a GNU/Linux system. For instance, (gnu system dmd) provides
|
||||||
|
support for instantiating dmd services; (gnu system linux) helps with Linux
|
||||||
|
PAM configuration; and so on.
|
||||||
|
|
||||||
|
*** <derivation> objects supersede .drv file names in the API
|
||||||
|
|
||||||
|
‘derivation’ and similar procedures no longer return two values (a
|
||||||
|
<derivation> and a .drv file name); they now return a single value, which is
|
||||||
|
a <derivation> object. The <derivation> object embeds the corresponding .drv
|
||||||
|
file name. See “Derivations” in the manual for details.
|
||||||
|
|
||||||
|
** GNU distribution
|
||||||
|
|
||||||
|
*** XXX new packages
|
||||||
|
|
||||||
|
*** XXX package updates
|
||||||
|
|
||||||
|
*** Fontconfig font search path made more convenient
|
||||||
|
|
||||||
|
Fontconfig, the library used by many graphical applications, such as those
|
||||||
|
based on GTK+, now knows where to find the default set of fonts. Additional
|
||||||
|
fonts installed in the user profile are automatically picked up.
|
||||||
|
|
||||||
|
*** More GUI applications
|
||||||
|
|
||||||
|
The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+
|
||||||
|
applications have been added (see above.)
|
||||||
|
|
||||||
|
*** Packaging guidelines
|
||||||
|
|
||||||
|
The documentation of packaging guidelines has been augmented. See the manual
|
||||||
|
under “GNU Distribution”.
|
||||||
|
|
||||||
|
*** Support for Python 3 along with Python 2
|
||||||
|
|
||||||
|
Python 3 has been added to the distribution, and Python packages that support
|
||||||
|
it are now built for both Python 2 and Python 3. See the “Python Modules”
|
||||||
|
section of the manual for details.
|
||||||
|
|
||||||
|
** Internationalization
|
||||||
|
|
||||||
|
Updated translations: eo.
|
||||||
|
|
||||||
|
** Bugs fixed
|
||||||
|
|
||||||
|
*** The dependency graph image has correct size in PDF output
|
||||||
|
*** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
|
||||||
|
*** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
|
||||||
|
*** Workarounds for Guile 2.0.5 now work on Debian derivatives
|
||||||
|
|
||||||
|
|
||||||
* Changes in 0.3 (since 0.2)
|
* Changes in 0.3 (since 0.2)
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ exec guile -l "$0" \
|
||||||
#:use-module (guix gnu-maintenance)
|
#:use-module (guix gnu-maintenance)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (sxml simple)
|
#:use-module (sxml simple)
|
||||||
|
#:use-module (sxml fold)
|
||||||
#:use-module (web uri)
|
#:use-module (web uri)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
|
@ -48,8 +49,13 @@ exec guile -l "$0" \
|
||||||
(equal? (gnu-package-name package) name))
|
(equal? (gnu-package-name package) name))
|
||||||
gnu))))
|
gnu))))
|
||||||
|
|
||||||
(define (package->sxml package)
|
(define (package->sxml package previous description-ids remaining)
|
||||||
"Return HTML-as-SXML representing PACKAGE."
|
"Return 3 values: the HTML-as-SXML for PACKAGE added to all previously
|
||||||
|
collected package output in PREVIOUS, a list of DESCRIPTION-IDS and the number
|
||||||
|
of packages still to be processed in REMAINING. Also Introduces a call to the
|
||||||
|
JavaScript prep_pkg_descs function as part of the output of PACKAGE, every
|
||||||
|
time the length of DESCRIPTION-IDS, increasing, is 15 or when REMAINING,
|
||||||
|
decreasing, is 1."
|
||||||
(define (source-url package)
|
(define (source-url package)
|
||||||
(let ((loc (package-location package)))
|
(let ((loc (package-location package)))
|
||||||
(and loc
|
(and loc
|
||||||
|
@ -92,37 +98,66 @@ exec guile -l "$0" \
|
||||||
(and=> (lookup-gnu-package name)
|
(and=> (lookup-gnu-package name)
|
||||||
gnu-package-logo))
|
gnu-package-logo))
|
||||||
|
|
||||||
|
(define (insert-tr description-id js?)
|
||||||
|
(define (insert-js-call description-ids)
|
||||||
|
"Return an sxml call to prep_pkg_descs, with up to 15 elements of
|
||||||
|
description-ids as formal parameters."
|
||||||
|
`(script (@ (type "text/javascript"))
|
||||||
|
,(format #f "prep_pkg_descs(~a)"
|
||||||
|
(string-append "'"
|
||||||
|
(string-join description-ids "', '")
|
||||||
|
"'"))))
|
||||||
|
|
||||||
|
(let ((description-ids (cons description-id description-ids)))
|
||||||
|
`(tr (td ,(if (gnu-package? package)
|
||||||
|
`(img (@ (src "/graphics/gnu-head-mini.png")
|
||||||
|
(alt "Part of GNU")
|
||||||
|
(title "Part of GNU")))
|
||||||
|
""))
|
||||||
|
(td (a (@ (href ,(source-url package))
|
||||||
|
(title "Link to the Guix package source code"))
|
||||||
|
,(package-name package) " "
|
||||||
|
,(package-version package)))
|
||||||
|
(td (span ,(package-synopsis package))
|
||||||
|
(div (@ (id ,description-id))
|
||||||
|
,(match (package-logo (package-name package))
|
||||||
|
((? string? url)
|
||||||
|
`(img (@ (src ,url)
|
||||||
|
(height "35")
|
||||||
|
(class "package-logo")
|
||||||
|
(alt ("Logo of " ,(package-name package))))))
|
||||||
|
(_ #f))
|
||||||
|
(p ,(package-description package))
|
||||||
|
,(license package)
|
||||||
|
(a (@ (href ,(package-home-page package))
|
||||||
|
(title "Link to the package's website"))
|
||||||
|
,(package-home-page package))
|
||||||
|
,(status package)
|
||||||
|
,(if js?
|
||||||
|
(insert-js-call description-ids)
|
||||||
|
""))))))
|
||||||
|
|
||||||
(let ((description-id (symbol->string
|
(let ((description-id (symbol->string
|
||||||
(gensym (package-name package)))))
|
(gensym (package-name package)))))
|
||||||
`(tr (td ,(if (gnu-package? package)
|
(cond ((= remaining 1) ; Last package in packages
|
||||||
`(img (@ (src "/graphics/gnu-head-mini.png")
|
(values
|
||||||
(alt "Part of GNU")
|
(reverse ; Fold has reversed packages
|
||||||
(title "Part of GNU")))
|
(cons (insert-tr description-id 'js) ; Prefix final sxml
|
||||||
""))
|
previous))
|
||||||
(td (a (@ (href ,(source-url package))
|
'() ; No more work to do
|
||||||
(title "Link to the Guix package source code"))
|
0)) ; End of the line
|
||||||
,(package-name package) " "
|
((= (length description-ids) 15) ; Time for a JS call
|
||||||
,(package-version package)))
|
(values
|
||||||
(td (a (@ (href "javascript:void(0)")
|
(cons (insert-tr description-id 'js)
|
||||||
(title "show/hide package description")
|
previous) ; Prefix new sxml
|
||||||
(onClick ,(format #f "javascript:show_hide('~a')"
|
'() ; Reset description-ids
|
||||||
description-id)))
|
(1- remaining))) ; Reduce remaining
|
||||||
,(package-synopsis package))
|
(else ; Insert another row, and build description-ids
|
||||||
(div (@ (id ,description-id)
|
(values
|
||||||
(style "display: none;"))
|
(cons (insert-tr description-id #f)
|
||||||
,(match (package-logo (package-name package))
|
previous) ; Prefix new sxml
|
||||||
((? string? url)
|
(cons description-id description-ids) ; Update description-ids
|
||||||
`(img (@ (src ,url)
|
(1- remaining)))))) ; Reduce remaining
|
||||||
(height "35")
|
|
||||||
(class "package-logo")
|
|
||||||
(alt ("Logo of " ,(package-name package))))))
|
|
||||||
(_ #f))
|
|
||||||
(p ,(package-description package))
|
|
||||||
,(license package)
|
|
||||||
(a (@ (href ,(package-home-page package))
|
|
||||||
(title "Link to the package's website"))
|
|
||||||
,(package-home-page package))
|
|
||||||
,(status package))))))
|
|
||||||
|
|
||||||
(define (packages->sxml packages)
|
(define (packages->sxml packages)
|
||||||
"Return an HTML page as SXML describing PACKAGES."
|
"Return an HTML page as SXML describing PACKAGES."
|
||||||
|
@ -145,7 +180,7 @@ exec guile -l "$0" \
|
||||||
(tr (th "GNU?")
|
(tr (th "GNU?")
|
||||||
(th "Package version")
|
(th "Package version")
|
||||||
(th "Package details"))
|
(th "Package details"))
|
||||||
,@(map package->sxml packages))
|
,@(fold-values package->sxml packages '() '() (length packages)))
|
||||||
(a (@ (href "#intro")
|
(a (@ (href "#intro")
|
||||||
(title "Back to top.")
|
(title "Back to top.")
|
||||||
(id "top"))
|
(id "top"))
|
||||||
|
@ -239,14 +274,45 @@ a#top:hover, a#top:focus {
|
||||||
// license: CC0
|
// license: CC0
|
||||||
function show_hide(idThing)
|
function show_hide(idThing)
|
||||||
{
|
{
|
||||||
|
if(document.getElementById && document.createTextNode) {
|
||||||
var thing = document.getElementById(idThing);
|
var thing = document.getElementById(idThing);
|
||||||
|
/* Used to change the link text, depending on whether description is
|
||||||
|
collapsed or expanded */
|
||||||
|
var thingLink = thing.previousSibling.lastChild.firstChild;
|
||||||
if (thing) {
|
if (thing) {
|
||||||
if (thing.style.display == \"none\") {
|
if (thing.style.display == \"none\") {
|
||||||
thing.style.display = \"\";
|
thing.style.display = \"\";
|
||||||
|
thingLink.data = 'Collapse';
|
||||||
} else {
|
} else {
|
||||||
thing.style.display = \"none\";
|
thing.style.display = \"none\";
|
||||||
|
thingLink.data = 'Expand';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Add controllers used for collapse/expansion of package descriptions */
|
||||||
|
function prep(idThing)
|
||||||
|
{
|
||||||
|
var tdThing = document.getElementById(idThing).parentNode;
|
||||||
|
if (tdThing) {
|
||||||
|
var aThing = tdThing.firstChild.appendChild(document.createElement('a'));
|
||||||
|
aThing.setAttribute('href', 'javascript:void(0)');
|
||||||
|
aThing.setAttribute('title', 'show/hide package description');
|
||||||
|
aThing.appendChild(document.createTextNode('Expand'));
|
||||||
|
aThing.onclick=function(){show_hide(idThing);};
|
||||||
|
/* aThing.onkeypress=function(){show_hide(idThing);}; */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Take n element IDs, prepare them for javascript enhanced
|
||||||
|
display and hide the IDs by default. */
|
||||||
|
function prep_pkg_descs()
|
||||||
|
{
|
||||||
|
if(document.getElementById && document.createTextNode) {
|
||||||
|
for(var i=0; i<arguments.length; i++) {
|
||||||
|
prep(arguments[i])
|
||||||
|
show_hide(arguments[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>"))
|
</script>"))
|
||||||
|
|
||||||
|
|
|
@ -583,9 +583,8 @@ When combined with options such as @code{--install}, roll back occurs
|
||||||
before any other actions.
|
before any other actions.
|
||||||
|
|
||||||
When rolling back from the first generation that actually contains
|
When rolling back from the first generation that actually contains
|
||||||
installed packages, the profile is made to point to the @dfn{empty
|
installed packages, the profile is made to point to the @dfn{zeroth
|
||||||
profile}, also known as @dfn{profile zero}---i.e., it contains no files
|
generation}, which contains no files apart from its own meta-data.
|
||||||
apart from its own meta-data.
|
|
||||||
|
|
||||||
Installing, removing, or upgrading packages from a generation that has
|
Installing, removing, or upgrading packages from a generation that has
|
||||||
been rolled back to overwrites previous future generations. Thus, the
|
been rolled back to overwrites previous future generations. Thus, the
|
||||||
|
@ -683,7 +682,8 @@ Multiple Outputs}), and the source location of its definition.
|
||||||
@itemx -l [@var{pattern}]
|
@itemx -l [@var{pattern}]
|
||||||
Return a list of generations along with their creation dates; for each
|
Return a list of generations along with their creation dates; for each
|
||||||
generation, show the installed packages, with the most recently
|
generation, show the installed packages, with the most recently
|
||||||
installed packages shown last.
|
installed packages shown last. Note that the zeroth generation is never
|
||||||
|
shown.
|
||||||
|
|
||||||
For each installed package, print the following items, separated by
|
For each installed package, print the following items, separated by
|
||||||
tabs: the name of a package, its version string, the part of the package
|
tabs: the name of a package, its version string, the part of the package
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
(define-module (gnu packages fontutils)
|
(define-module (gnu packages fontutils)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
|
#:use-module (gnu packages ghostscript)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:))
|
#:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:))
|
||||||
|
@ -75,11 +76,16 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs `(("expat" ,expat)
|
(inputs `(("expat" ,expat)
|
||||||
("freetype" ,freetype)
|
("freetype" ,freetype)
|
||||||
|
("gs-fonts" ,gs-fonts)
|
||||||
("pkg-config" ,pkg-config)))
|
("pkg-config" ,pkg-config)))
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags
|
`(#:configure-flags
|
||||||
;; point to user profile instead of /usr/share/fonts in /etc/fonts.conf
|
;; point to user profile instead of /usr/share/fonts in /etc/fonts.conf
|
||||||
`("--with-default-fonts=~/.guix-profile/share/fonts")))
|
(list "--with-default-fonts=~/.guix-profile/share/fonts"
|
||||||
|
;; register gs-fonts
|
||||||
|
(string-append "--with-add-fonts="
|
||||||
|
(assoc-ref %build-inputs "gs-fonts")
|
||||||
|
"/share/fonts"))))
|
||||||
(synopsis "Fontconfig, a library for configuring and customising font access.")
|
(synopsis "Fontconfig, a library for configuring and customising font access.")
|
||||||
(description
|
(description
|
||||||
"Fontconfig can discover new fonts when installed automatically;
|
"Fontconfig can discover new fonts when installed automatically;
|
||||||
|
|
|
@ -57,14 +57,14 @@ Daemon and possibly more in the future.")
|
||||||
(define-public libgcrypt
|
(define-public libgcrypt
|
||||||
(package
|
(package
|
||||||
(name "libgcrypt")
|
(name "libgcrypt")
|
||||||
(version "1.5.2")
|
(version "1.5.3")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
|
(uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
|
||||||
version ".tar.bz2"))
|
version ".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0gwnzqd64cpwdmk93nll54nidsr74jpimxzj4p4z7502ylwl66p4"))))
|
"1lar8y3lh61zl5flljpz540d78g99h4d5idfwrfw8lm3gm737xdw"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(propagated-inputs
|
(propagated-inputs
|
||||||
`(("libgpg-error" ,libgpg-error)))
|
`(("libgpg-error" ,libgpg-error)))
|
||||||
|
@ -106,7 +106,7 @@ provided.")
|
||||||
(define-public libksba
|
(define-public libksba
|
||||||
(package
|
(package
|
||||||
(name "libksba")
|
(name "libksba")
|
||||||
(version "1.2.0")
|
(version "1.3.0")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -115,7 +115,7 @@ provided.")
|
||||||
version ".tar.bz2"))
|
version ".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0jwk7hm3x3g4hd7l12z3d79dy7359x7lc88dq6z7q0ixn1jwxbq9"))))
|
"0w8rfb6yhcwkwzvjafrashcygy4hd9xwwmvlnkfd1m2h0paywqas"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(propagated-inputs
|
(propagated-inputs
|
||||||
`(("libgpg-error" ,libgpg-error)))
|
`(("libgpg-error" ,libgpg-error)))
|
||||||
|
@ -131,7 +131,7 @@ specifications are building blocks of S/MIME and TLS.")
|
||||||
(define-public gnupg
|
(define-public gnupg
|
||||||
(package
|
(package
|
||||||
(name "gnupg")
|
(name "gnupg")
|
||||||
(version "2.0.20")
|
(version "2.0.21")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -139,12 +139,10 @@ specifications are building blocks of S/MIME and TLS.")
|
||||||
".tar.bz2"))
|
".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"16mp0j5inrcqcb3fxbn0b3aamascy3n923wiy0y8marc0rzrp53f"))))
|
"1xgf1q1phdawk6y66haaqcvfnlsqk12jmjin1m2d5x6fqw18kpq0"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(;; TODO: Add missing optional dep libusb.
|
`(("bzip2" ,guix:bzip2)
|
||||||
;; ("libusb" ,libusb)
|
|
||||||
("bzip2" ,guix:bzip2)
|
|
||||||
("curl" ,curl)
|
("curl" ,curl)
|
||||||
("libassuan" ,libassuan)
|
("libassuan" ,libassuan)
|
||||||
("libgcrypt" ,libgcrypt)
|
("libgcrypt" ,libgcrypt)
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
(define-module (gnu packages mail)
|
(define-module (gnu packages mail)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
|
#:use-module (gnu packages cyrus-sasl)
|
||||||
#:use-module (gnu packages dejagnu)
|
#:use-module (gnu packages dejagnu)
|
||||||
#:use-module (gnu packages gdbm)
|
#:use-module (gnu packages gdbm)
|
||||||
#:use-module (gnu packages gnutls)
|
#:use-module (gnu packages gnutls)
|
||||||
|
@ -154,7 +155,8 @@ aliasing facilities to work just as they would on normal mail.")
|
||||||
"1864cwz240gh0zy56fb47qqzwyf6ghg01037rb4p2kqgimpg6h91"))))
|
"1864cwz240gh0zy56fb47qqzwyf6ghg01037rb4p2kqgimpg6h91"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("ncurses" ,ncurses)
|
`(("cyrus-sasl" ,cyrus-sasl)
|
||||||
|
("ncurses" ,ncurses)
|
||||||
("openssl" ,openssl)
|
("openssl" ,openssl)
|
||||||
("perl" ,perl)))
|
("perl" ,perl)))
|
||||||
(arguments
|
(arguments
|
||||||
|
@ -162,6 +164,7 @@ aliasing facilities to work just as they would on normal mail.")
|
||||||
"--enable-imap"
|
"--enable-imap"
|
||||||
"--enable-pop"
|
"--enable-pop"
|
||||||
"--with-ssl"
|
"--with-ssl"
|
||||||
|
"--with-sasl"
|
||||||
;; so that mutt does not check whether the path
|
;; so that mutt does not check whether the path
|
||||||
;; exists, which it does not in the chroot
|
;; exists, which it does not in the chroot
|
||||||
"--with-mailpath=/var/mail")))
|
"--with-mailpath=/var/mail")))
|
||||||
|
|
|
@ -108,7 +108,7 @@ extensive test suite.")
|
||||||
(define-public pspp
|
(define-public pspp
|
||||||
(package
|
(package
|
||||||
(name "pspp")
|
(name "pspp")
|
||||||
(version "0.8.0a")
|
(version "0.8.1")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
|
@ -116,7 +116,7 @@ extensive test suite.")
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1pgkb3z8b4wk4gymnafclhkrqq7n05wq83mra3v53jdl6bnllmyq"))))
|
"0qhxsdbwxd3cn1shc13wxvx2lg32lp4z6sz24kv3jz7p5xfi8j7x"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("gettext" ,gnu:gettext)
|
`(("gettext" ,gnu:gettext)
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module ((guix licenses) #:select (gpl3+))
|
#:use-module ((guix licenses) #:select (gpl3+))
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
#:use-module ((gnu packages compression) #:select (bzip2))
|
#:use-module ((gnu packages compression) #:select (bzip2 gzip))
|
||||||
#:use-module (gnu packages gnupg)
|
#:use-module (gnu packages gnupg)
|
||||||
#:use-module (gnu packages sqlite)
|
#:use-module (gnu packages sqlite)
|
||||||
#:use-module (gnu packages pkg-config))
|
#:use-module (gnu packages pkg-config))
|
||||||
|
@ -41,6 +41,7 @@
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags (list
|
`(#:configure-flags (list
|
||||||
|
"--localstatedir=/var"
|
||||||
(string-append "--with-libgcrypt-prefix="
|
(string-append "--with-libgcrypt-prefix="
|
||||||
(assoc-ref %build-inputs
|
(assoc-ref %build-inputs
|
||||||
"libgcrypt")))
|
"libgcrypt")))
|
||||||
|
@ -70,6 +71,8 @@
|
||||||
"/20130105/guile-2.0.7.tar.xz"))
|
"/20130105/guile-2.0.7.tar.xz"))
|
||||||
(sha256 hash)))))
|
(sha256 hash)))))
|
||||||
`(("bzip2" ,bzip2)
|
`(("bzip2" ,bzip2)
|
||||||
|
("gzip" ,gzip)
|
||||||
|
|
||||||
("sqlite" ,sqlite)
|
("sqlite" ,sqlite)
|
||||||
("libgcrypt" ,libgcrypt)
|
("libgcrypt" ,libgcrypt)
|
||||||
("guile" ,guile-2.0)
|
("guile" ,guile-2.0)
|
||||||
|
@ -100,3 +103,20 @@ A user-land free software distribution for GNU/Linux comes as part of Guix.
|
||||||
|
|
||||||
Guix is based on the Nix package manager.")
|
Guix is based on the Nix package manager.")
|
||||||
(license gpl3+)))
|
(license gpl3+)))
|
||||||
|
|
||||||
|
(define-public guix-0.4
|
||||||
|
;; XXX: Hack to allow the use of a 0.4ish tarball. This assumes that you
|
||||||
|
;; have run 'make dist' in your build tree. Remove when 0.4 is out.
|
||||||
|
(let* ((builddir (dirname
|
||||||
|
(canonicalize-path
|
||||||
|
(dirname (search-path %load-path
|
||||||
|
"guix/config.scm")))))
|
||||||
|
(tarball (string-append builddir "/guix-0.4.tar.gz")))
|
||||||
|
(package (inherit guix)
|
||||||
|
(version "0.4rc")
|
||||||
|
(source (if (file-exists? tarball)
|
||||||
|
tarball
|
||||||
|
(begin
|
||||||
|
(format (current-error-port)
|
||||||
|
"warning: 'guix-0.4.tar.gz' not found~%")
|
||||||
|
(package-source guix)))))))
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#:use-module (gnu packages avahi)
|
#:use-module (gnu packages avahi)
|
||||||
#:use-module (gnu packages libphidget)
|
#:use-module (gnu packages libphidget)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
|
#:use-module (gnu packages gtk)
|
||||||
#:use-module (gnu packages libffi)
|
#:use-module (gnu packages libffi)
|
||||||
#:use-module (gnu packages libjpeg)
|
#:use-module (gnu packages libjpeg)
|
||||||
#:use-module ((gnu packages gtk) #:select (cairo pango))
|
#:use-module ((gnu packages gtk) #:select (cairo pango))
|
||||||
|
@ -358,12 +359,15 @@ implementation techniques and as an expository tool.")
|
||||||
'(#:phases
|
'(#:phases
|
||||||
(let* ((gui-libs
|
(let* ((gui-libs
|
||||||
(lambda (inputs)
|
(lambda (inputs)
|
||||||
;; FIXME: Add GTK+ and GDK for DrRacket.
|
(define (lib input)
|
||||||
(let ((glib (string-append (assoc-ref inputs "glib") "/lib"))
|
(string-append (assoc-ref inputs input) "/lib"))
|
||||||
(cairo (string-append (assoc-ref inputs "cairo") "/lib"))
|
|
||||||
(pango (string-append (assoc-ref inputs "pango") "/lib"))
|
(list (lib "glib")
|
||||||
(libjpeg (string-append (assoc-ref inputs "libjpeg") "/lib")))
|
(lib "cairo")
|
||||||
(list glib cairo pango libjpeg)))))
|
(lib "pango")
|
||||||
|
(lib "libjpeg")
|
||||||
|
(lib "gtk")
|
||||||
|
(lib "gdk-pixbuf")))))
|
||||||
(alist-cons-before
|
(alist-cons-before
|
||||||
'configure 'pre-configure
|
'configure 'pre-configure
|
||||||
(lambda* (#:key inputs #:allow-other-keys)
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
@ -397,7 +401,9 @@ implementation techniques and as an expository tool.")
|
||||||
("glib" ,glib) ; for DrRacket
|
("glib" ,glib) ; for DrRacket
|
||||||
("cairo" ,cairo)
|
("cairo" ,cairo)
|
||||||
("pango" ,pango)
|
("pango" ,pango)
|
||||||
("libjpeg" ,libjpeg-8)))
|
("libjpeg" ,libjpeg-8)
|
||||||
|
("gdk-pixbuf" ,gdk-pixbuf)
|
||||||
|
("gtk" ,gtk+)))
|
||||||
(home-page "http://racket-lang.org")
|
(home-page "http://racket-lang.org")
|
||||||
(synopsis "Implementation of Scheme and related languages")
|
(synopsis "Implementation of Scheme and related languages")
|
||||||
(description
|
(description
|
||||||
|
|
|
@ -29,11 +29,11 @@
|
||||||
#:use-module ((gnu packages gettext)
|
#:use-module ((gnu packages gettext)
|
||||||
#:renamer (symbol-prefix-proc 'gnu:))
|
#:renamer (symbol-prefix-proc 'gnu:))
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
|
#:use-module (gnu packages gnupg)
|
||||||
#:use-module (gnu packages gperf)
|
#:use-module (gnu packages gperf)
|
||||||
#:use-module (gnu packages libpng)
|
#:use-module (gnu packages libpng)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
#:use-module (gnu packages m4)
|
#:use-module (gnu packages m4)
|
||||||
#:use-module (gnu packages openssl)
|
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
|
@ -3114,9 +3114,9 @@ tracking.")
|
||||||
(license license:x11)))
|
(license license:x11)))
|
||||||
|
|
||||||
|
|
||||||
(define-public xkbcomp
|
(define xkbcomp-intermediate ; used as input for xkeyboard-config
|
||||||
(package
|
(package
|
||||||
(name "xkbcomp")
|
(name "xkbcomp-intermediate")
|
||||||
(version "1.2.4")
|
(version "1.2.4")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
|
@ -3139,6 +3139,18 @@ tracking.")
|
||||||
(description "X.org provides an implementation of the X Window System")
|
(description "X.org provides an implementation of the X Window System")
|
||||||
(license license:x11)))
|
(license license:x11)))
|
||||||
|
|
||||||
|
(define-public xkbcomp ; using xkeyboard-config as input
|
||||||
|
(package (inherit xkbcomp-intermediate)
|
||||||
|
(name "xkbcomp")
|
||||||
|
(inputs
|
||||||
|
`(,@(package-inputs xkbcomp-intermediate)
|
||||||
|
("xkeyboard-config" ,xkeyboard-config)))
|
||||||
|
(arguments
|
||||||
|
`(#:configure-flags
|
||||||
|
(list (string-append "--with-xkb-config-root="
|
||||||
|
(assoc-ref %build-inputs "xkeyboard-config")
|
||||||
|
"/share/X11/xkb"))))))
|
||||||
|
|
||||||
|
|
||||||
(define-public xkbevd
|
(define-public xkbevd
|
||||||
(package
|
(package
|
||||||
|
@ -3212,7 +3224,7 @@ tracking.")
|
||||||
("intltool" ,intltool)
|
("intltool" ,intltool)
|
||||||
("libx11" ,libx11)
|
("libx11" ,libx11)
|
||||||
("pkg-config" ,pkg-config)
|
("pkg-config" ,pkg-config)
|
||||||
("xkbcomp" ,xkbcomp)))
|
("xkbcomp-intermediate" ,xkbcomp-intermediate)))
|
||||||
(home-page "http://www.x.org/wiki/")
|
(home-page "http://www.x.org/wiki/")
|
||||||
(synopsis "xorg implementation of the X Window System")
|
(synopsis "xorg implementation of the X Window System")
|
||||||
(description "X.org provides an implementation of the X Window System")
|
(description "X.org provides an implementation of the X Window System")
|
||||||
|
@ -4262,6 +4274,7 @@ emulation to complete hardware acceleration for modern GPUs.")
|
||||||
("dbus" ,dbus)
|
("dbus" ,dbus)
|
||||||
("dmxproto" ,dmxproto)
|
("dmxproto" ,dmxproto)
|
||||||
("libdmx" ,libdmx)
|
("libdmx" ,libdmx)
|
||||||
|
("libgcrypt" ,libgcrypt)
|
||||||
("libxau" ,libxau)
|
("libxau" ,libxau)
|
||||||
("libxaw" ,libxaw)
|
("libxaw" ,libxaw)
|
||||||
("libxdmcp" ,libxdmcp)
|
("libxdmcp" ,libxdmcp)
|
||||||
|
@ -4273,7 +4286,6 @@ emulation to complete hardware acceleration for modern GPUs.")
|
||||||
("libxt" ,libxt)
|
("libxt" ,libxt)
|
||||||
("libxv" ,libxv)
|
("libxv" ,libxv)
|
||||||
("mesa" ,mesa)
|
("mesa" ,mesa)
|
||||||
("openssl" ,openssl)
|
|
||||||
("pkg-config" ,pkg-config)
|
("pkg-config" ,pkg-config)
|
||||||
("python" ,python-wrapper)
|
("python" ,python-wrapper)
|
||||||
("recordproto" ,recordproto)
|
("recordproto" ,recordproto)
|
||||||
|
@ -4284,10 +4296,30 @@ emulation to complete hardware acceleration for modern GPUs.")
|
||||||
("xf86dgaproto" ,xf86dgaproto)
|
("xf86dgaproto" ,xf86dgaproto)
|
||||||
("xf86driproto" ,xf86driproto)
|
("xf86driproto" ,xf86driproto)
|
||||||
("xf86vidmodeproto" ,xf86vidmodeproto)
|
("xf86vidmodeproto" ,xf86vidmodeproto)
|
||||||
;; ("xkbutils" ,xkbutils)
|
("xkbcomp" ,xkbcomp)
|
||||||
;; ("xkeyboard-config" ,xkeyboard-config)
|
("xkeyboard-config" ,xkeyboard-config)
|
||||||
("xtrans" ,xtrans)
|
("xtrans" ,xtrans)
|
||||||
("zlib" ,zlib)))
|
("zlib" ,zlib)))
|
||||||
|
(arguments
|
||||||
|
`(#:configure-flags
|
||||||
|
(list (string-append "--with-xkb-path="
|
||||||
|
(assoc-ref %build-inputs "xkeyboard-config")
|
||||||
|
"/share/X11/xkb")
|
||||||
|
(string-append "--with-xkb-output="
|
||||||
|
"/tmp") ; FIXME: This is a bit doubtful; where should
|
||||||
|
; the compiled keyboard maps go?
|
||||||
|
(string-append "--with-xkb-bin-directory="
|
||||||
|
(assoc-ref %build-inputs "xkbcomp")
|
||||||
|
"/bin"))
|
||||||
|
#:phases
|
||||||
|
(alist-replace
|
||||||
|
'configure
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys #:rest args)
|
||||||
|
(let ((configure (assoc-ref %standard-phases 'configure)))
|
||||||
|
(substitute* (find-files "." "\\.c$")
|
||||||
|
(("/bin/sh") (which "sh")))
|
||||||
|
(apply configure args)))
|
||||||
|
%standard-phases)))
|
||||||
(home-page "http://www.x.org/wiki/")
|
(home-page "http://www.x.org/wiki/")
|
||||||
(synopsis "xorg implementation of the X Window System")
|
(synopsis "xorg implementation of the X Window System")
|
||||||
(description "X.org provides an implementation of the X Window System")
|
(description "X.org provides an implementation of the X Window System")
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -24,25 +24,37 @@
|
||||||
#:use-module (gnu packages bdw-gc)
|
#:use-module (gnu packages bdw-gc)
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages help2man)
|
#:use-module (gnu packages help2man)
|
||||||
#:use-module (gnu packages ncurses))
|
#:use-module (gnu packages ncurses)
|
||||||
|
#:use-module (gnu packages bash))
|
||||||
|
|
||||||
(define-public zile
|
(define-public zile
|
||||||
(package
|
(package
|
||||||
(name "zile")
|
(name "zile")
|
||||||
(version "2.4.9")
|
(version "2.4.9")
|
||||||
(source
|
(source (origin
|
||||||
(origin
|
(method url-fetch)
|
||||||
(method url-fetch)
|
(uri (string-append "mirror://gnu/zile/zile-"
|
||||||
(uri (string-append "mirror://gnu/zile/zile-"
|
version ".tar.gz"))
|
||||||
version ".tar.gz"))
|
(sha256
|
||||||
(sha256
|
(base32
|
||||||
(base32
|
"0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7"))))
|
||||||
"0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7"))))
|
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
|
(arguments
|
||||||
|
'(#:phases (alist-cons-before
|
||||||
|
'configure 'patch-/bin/sh
|
||||||
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
(let ((bash (assoc-ref inputs "bash")))
|
||||||
|
;; Refer to the actual shell.
|
||||||
|
(substitute* '("lib/spawni.c" "src/funcs.c")
|
||||||
|
(("/bin/sh")
|
||||||
|
(string-append bash "/bin/sh")))))
|
||||||
|
%standard-phases)))
|
||||||
(inputs
|
(inputs
|
||||||
`(("boehm-gc" ,libgc)
|
`(("boehm-gc" ,libgc)
|
||||||
("ncurses" ,ncurses)
|
("ncurses" ,ncurses)
|
||||||
("perl" ,perl)
|
("bash" ,bash)))
|
||||||
|
(native-inputs
|
||||||
|
`(("perl" ,perl)
|
||||||
("help2man" ,help2man)))
|
("help2man" ,help2man)))
|
||||||
(home-page "http://www.gnu.org/software/zile/")
|
(home-page "http://www.gnu.org/software/zile/")
|
||||||
(synopsis "Zile is lossy Emacs, a lightweight Emacs clone")
|
(synopsis "Zile is lossy Emacs, a lightweight Emacs clone")
|
||||||
|
|
|
@ -21,8 +21,12 @@
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix derivations)
|
#:use-module (guix derivations)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
|
#:use-module ((gnu packages base)
|
||||||
|
#:select (glibc-final))
|
||||||
#:use-module ((gnu packages system)
|
#:use-module ((gnu packages system)
|
||||||
#:select (mingetty inetutils))
|
#:select (mingetty inetutils))
|
||||||
|
#:use-module ((gnu packages package-management)
|
||||||
|
#:select (guix))
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:export (service?
|
#:export (service?
|
||||||
|
@ -34,8 +38,13 @@
|
||||||
service-stop
|
service-stop
|
||||||
service-inputs
|
service-inputs
|
||||||
|
|
||||||
|
host-name-service
|
||||||
syslog-service
|
syslog-service
|
||||||
mingetty-service
|
mingetty-service
|
||||||
|
nscd-service
|
||||||
|
guix-service
|
||||||
|
static-networking-service
|
||||||
|
|
||||||
dmd-configuration-file))
|
dmd-configuration-file))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
|
@ -58,6 +67,14 @@
|
||||||
(inputs service-inputs ; list of inputs
|
(inputs service-inputs ; list of inputs
|
||||||
(default '())))
|
(default '())))
|
||||||
|
|
||||||
|
(define (host-name-service store name)
|
||||||
|
"Return a service that sets the host name to NAME."
|
||||||
|
(service
|
||||||
|
(provision '(host-name))
|
||||||
|
(start `(lambda _
|
||||||
|
(sethostname ,name)))
|
||||||
|
(respawn? #f)))
|
||||||
|
|
||||||
(define (mingetty-service store tty)
|
(define (mingetty-service store tty)
|
||||||
"Return a service to run mingetty on TTY."
|
"Return a service to run mingetty on TTY."
|
||||||
(let* ((mingetty-drv (package-derivation store mingetty))
|
(let* ((mingetty-drv (package-derivation store mingetty))
|
||||||
|
@ -65,9 +82,32 @@
|
||||||
"/sbin/mingetty")))
|
"/sbin/mingetty")))
|
||||||
(service
|
(service
|
||||||
(provision (list (symbol-append 'term- (string->symbol tty))))
|
(provision (list (symbol-append 'term- (string->symbol tty))))
|
||||||
|
|
||||||
|
;; Since the login prompt shows the host name, wait for the 'host-name'
|
||||||
|
;; service to be done.
|
||||||
|
(requirement '(host-name))
|
||||||
|
|
||||||
(start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty))
|
(start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty))
|
||||||
(inputs `(("mingetty" ,mingetty))))))
|
(inputs `(("mingetty" ,mingetty))))))
|
||||||
|
|
||||||
|
(define* (nscd-service store
|
||||||
|
#:key (glibc glibc-final))
|
||||||
|
"Return a service that runs libc's name service cache daemon (nscd)."
|
||||||
|
(let ((nscd (string-append (package-output store glibc) "/sbin/nscd")))
|
||||||
|
(service
|
||||||
|
(provision '(nscd))
|
||||||
|
(start `(make-forkexec-constructor ,nscd "-f" "/dev/null"))
|
||||||
|
|
||||||
|
;; XXX: Local copy of 'make-kill-destructor' because the one upstream
|
||||||
|
;; uses the broken 'opt-lambda' macro.
|
||||||
|
(stop `(lambda* (#:optional (signal SIGTERM))
|
||||||
|
(lambda (pid . args)
|
||||||
|
(kill pid signal)
|
||||||
|
#f)))
|
||||||
|
|
||||||
|
(respawn? #f)
|
||||||
|
(inputs `(("glibc" ,glibc))))))
|
||||||
|
|
||||||
(define (syslog-service store)
|
(define (syslog-service store)
|
||||||
"Return a service that runs 'syslogd' with reasonable default settings."
|
"Return a service that runs 'syslogd' with reasonable default settings."
|
||||||
|
|
||||||
|
@ -104,6 +144,33 @@
|
||||||
(inputs `(("inetutils" ,inetutils)
|
(inputs `(("inetutils" ,inetutils)
|
||||||
("syslog.conf" ,syslog.conf))))))
|
("syslog.conf" ,syslog.conf))))))
|
||||||
|
|
||||||
|
(define* (guix-service store #:key (guix guix))
|
||||||
|
"Return a service that runs the build daemon from GUIX."
|
||||||
|
(let* ((drv (package-derivation store guix))
|
||||||
|
(daemon (string-append (derivation->output-path drv)
|
||||||
|
"/bin/guix-daemon")))
|
||||||
|
(service
|
||||||
|
(provision '(guix-daemon))
|
||||||
|
(start `(make-forkexec-constructor ,daemon))
|
||||||
|
(inputs `(("guix" ,guix))))))
|
||||||
|
|
||||||
|
(define* (static-networking-service store interface ip
|
||||||
|
#:key (inetutils inetutils))
|
||||||
|
"Return a service that starts INTERFACE with address IP."
|
||||||
|
|
||||||
|
;; TODO: Eventually we should do this using Guile's networking procedures,
|
||||||
|
;; like 'configure-qemu-networking' does, but the patch that does this is
|
||||||
|
;; not yet in stock Guile.
|
||||||
|
(let ((ifconfig (string-append (package-output store inetutils)
|
||||||
|
"/bin/ifconfig")))
|
||||||
|
(service
|
||||||
|
(provision '(networking))
|
||||||
|
(start `(make-forkexec-constructor ,ifconfig ,interface ,ip "up"))
|
||||||
|
(stop `(make-forkexec-constructor ,ifconfig ,interface "down"))
|
||||||
|
(respawn? #f)
|
||||||
|
(inputs `(("inetutils" ,inetutils))))))
|
||||||
|
|
||||||
|
|
||||||
(define (dmd-configuration-file store services)
|
(define (dmd-configuration-file store services)
|
||||||
"Return the dmd configuration file for SERVICES."
|
"Return the dmd configuration file for SERVICES."
|
||||||
(define config
|
(define config
|
||||||
|
|
|
@ -125,9 +125,10 @@
|
||||||
(let ((unix (pam-entry
|
(let ((unix (pam-entry
|
||||||
(control "required")
|
(control "required")
|
||||||
(module "pam_unix.so"))))
|
(module "pam_unix.so"))))
|
||||||
(lambda* (name #:key allow-empty-passwords?)
|
(lambda* (name #:key allow-empty-passwords? motd)
|
||||||
"Return a standard Unix-style PAM service for NAME. When
|
"Return a standard Unix-style PAM service for NAME. When
|
||||||
ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords."
|
ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When MOTD is true, it
|
||||||
|
should be the name of a file used as the message-of-the-day."
|
||||||
;; See <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>.
|
;; See <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>.
|
||||||
(let ((name* name))
|
(let ((name* name))
|
||||||
(pam-service
|
(pam-service
|
||||||
|
@ -140,6 +141,12 @@ ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords."
|
||||||
(arguments '("nullok")))
|
(arguments '("nullok")))
|
||||||
unix)))
|
unix)))
|
||||||
(password (list unix))
|
(password (list unix))
|
||||||
(session (list unix)))))))
|
(session (if motd
|
||||||
|
(list unix
|
||||||
|
(pam-entry
|
||||||
|
(control "optional")
|
||||||
|
(module "pam_motd.so")
|
||||||
|
(arguments (list (string-append "motd=" motd)))))
|
||||||
|
(list unix))))))))
|
||||||
|
|
||||||
;;; linux.scm ends here
|
;;; linux.scm ends here
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module ((gnu packages base) #:select (%final-inputs
|
#:use-module ((gnu packages base) #:select (%final-inputs
|
||||||
guile-final
|
guile-final
|
||||||
|
gcc-final
|
||||||
|
glibc-final
|
||||||
coreutils))
|
coreutils))
|
||||||
#:use-module (gnu packages guile)
|
#:use-module (gnu packages guile)
|
||||||
#:use-module (gnu packages bash)
|
#:use-module (gnu packages bash)
|
||||||
|
@ -31,6 +33,7 @@
|
||||||
#:use-module (gnu packages grub)
|
#:use-module (gnu packages grub)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
#:use-module (gnu packages linux-initrd)
|
#:use-module (gnu packages linux-initrd)
|
||||||
|
#:use-module (gnu packages package-management)
|
||||||
#:use-module ((gnu packages make-bootstrap)
|
#:use-module ((gnu packages make-bootstrap)
|
||||||
#:select (%guile-static-stripped))
|
#:select (%guile-static-stripped))
|
||||||
#:use-module (gnu packages system)
|
#:use-module (gnu packages system)
|
||||||
|
@ -91,6 +94,10 @@ made available under the /xchg CIFS share."
|
||||||
`(,input . ,(package-output store package "out" system)))
|
`(,input . ,(package-output store package "out" system)))
|
||||||
((input (? package? package) sub-drv)
|
((input (? package? package) sub-drv)
|
||||||
`(,input . ,(package-output store package sub-drv system)))
|
`(,input . ,(package-output store package sub-drv system)))
|
||||||
|
((input (? derivation? drv))
|
||||||
|
`(,input . ,(derivation->output-path drv)))
|
||||||
|
((input (? derivation? drv) sub-drv)
|
||||||
|
`(,input . ,(derivation->output-path drv sub-drv)))
|
||||||
((input (and (? string?) (? store-path?) file))
|
((input (and (? string?) (? store-path?) file))
|
||||||
`(,input . ,file)))
|
`(,input . ,file)))
|
||||||
inputs))
|
inputs))
|
||||||
|
@ -177,7 +184,8 @@ made available under the /xchg CIFS share."
|
||||||
`(,name ,(->drv package)
|
`(,name ,(->drv package)
|
||||||
,@sub-drv))
|
,@sub-drv))
|
||||||
((name (? string? file))
|
((name (? string? file))
|
||||||
`(,name ,file)))
|
`(,name ,file))
|
||||||
|
(tuple tuple))
|
||||||
inputs))
|
inputs))
|
||||||
#:env-vars env-vars
|
#:env-vars env-vars
|
||||||
#:modules (delete-duplicates
|
#:modules (delete-duplicates
|
||||||
|
@ -191,6 +199,7 @@ made available under the /xchg CIFS share."
|
||||||
(system (%current-system))
|
(system (%current-system))
|
||||||
(disk-image-size (* 100 (expt 2 20)))
|
(disk-image-size (* 100 (expt 2 20)))
|
||||||
grub-configuration
|
grub-configuration
|
||||||
|
(initialize-store? #f)
|
||||||
(populate #f)
|
(populate #f)
|
||||||
(inputs '())
|
(inputs '())
|
||||||
(inputs-to-copy '()))
|
(inputs-to-copy '()))
|
||||||
|
@ -199,11 +208,13 @@ disk image, with a GRUB installation that uses GRUB-CONFIGURATION as its
|
||||||
configuration file.
|
configuration file.
|
||||||
|
|
||||||
INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied
|
INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied
|
||||||
into the image being built.
|
into the image being built. When INITIALIZE-STORE? is true, initialize the
|
||||||
|
store database in the image so that Guix can be used in the image.
|
||||||
|
|
||||||
When POPULATE is true, it must be the store file name of a Guile script to run
|
POPULATE is a list of directives stating directories or symlinks to be created
|
||||||
in the disk image partition once it has been populated with INPUTS-TO-COPY.
|
in the disk image partition. It is evaluated once the image has been
|
||||||
It can be used to provide additional files, such as /etc files."
|
populated with INPUTS-TO-COPY. It can be used to provide additional files,
|
||||||
|
such as /etc files."
|
||||||
(define input->name+derivation
|
(define input->name+derivation
|
||||||
(match-lambda
|
(match-lambda
|
||||||
((name (? package? package))
|
((name (? package? package))
|
||||||
|
@ -213,6 +224,10 @@ It can be used to provide additional files, such as /etc files."
|
||||||
`(,name . ,(derivation->output-path
|
`(,name . ,(derivation->output-path
|
||||||
(package-derivation store package system)
|
(package-derivation store package system)
|
||||||
sub-drv)))
|
sub-drv)))
|
||||||
|
((name (? derivation? drv))
|
||||||
|
`(,name . ,(derivation->output-path drv)))
|
||||||
|
((name (? derivation? drv) sub-drv)
|
||||||
|
`(,name . ,(derivation->output-path drv sub-drv)))
|
||||||
((input (and (? string?) (? store-path?) file))
|
((input (and (? string?) (? store-path?) file))
|
||||||
`(,input . ,file))))
|
`(,input . ,file))))
|
||||||
|
|
||||||
|
@ -298,6 +313,36 @@ It can be used to provide additional files, such as /etc files."
|
||||||
;; Populate /dev.
|
;; Populate /dev.
|
||||||
(make-essential-device-nodes #:root "/fs")
|
(make-essential-device-nodes #:root "/fs")
|
||||||
|
|
||||||
|
;; Optionally, register the inputs in the image's store.
|
||||||
|
(let* ((guix (assoc-ref %build-inputs "guix"))
|
||||||
|
(register (string-append guix
|
||||||
|
"/sbin/guix-register")))
|
||||||
|
,@(if initialize-store?
|
||||||
|
(match inputs-to-copy
|
||||||
|
(((graph-files . _) ...)
|
||||||
|
(map (lambda (closure)
|
||||||
|
`(system* register "--prefix" "/fs"
|
||||||
|
,(string-append "/xchg/"
|
||||||
|
closure)))
|
||||||
|
graph-files)))
|
||||||
|
'(#f)))
|
||||||
|
|
||||||
|
;; Evaluate the POPULATE directives.
|
||||||
|
,@(let loop ((directives populate)
|
||||||
|
(statements '()))
|
||||||
|
(match directives
|
||||||
|
(()
|
||||||
|
(reverse statements))
|
||||||
|
((('directory name) rest ...)
|
||||||
|
(loop rest
|
||||||
|
(cons `(mkdir-p ,(string-append "/fs" name))
|
||||||
|
statements)))
|
||||||
|
(((new '-> old) rest ...)
|
||||||
|
(loop rest
|
||||||
|
(cons `(symlink ,old
|
||||||
|
,(string-append "/fs" new))
|
||||||
|
statements)))))
|
||||||
|
|
||||||
(and=> (assoc-ref %build-inputs "populate")
|
(and=> (assoc-ref %build-inputs "populate")
|
||||||
(lambda (populate)
|
(lambda (populate)
|
||||||
(chdir "/fs")
|
(chdir "/fs")
|
||||||
|
@ -337,8 +382,8 @@ It can be used to provide additional files, such as /etc files."
|
||||||
("gawk" ,(car (assoc-ref %final-inputs "gawk")))
|
("gawk" ,(car (assoc-ref %final-inputs "gawk")))
|
||||||
("util-linux" ,util-linux)
|
("util-linux" ,util-linux)
|
||||||
|
|
||||||
,@(if populate
|
,@(if initialize-store?
|
||||||
`(("populate" ,populate))
|
`(("guix" ,guix-0.4))
|
||||||
'())
|
'())
|
||||||
|
|
||||||
,@inputs-to-copy)
|
,@inputs-to-copy)
|
||||||
|
@ -353,19 +398,73 @@ It can be used to provide additional files, such as /etc files."
|
||||||
;;; Stand-alone VM image.
|
;;; Stand-alone VM image.
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
|
(define* (union store inputs
|
||||||
|
#:key (guile (%guile-for-build)) (system (%current-system))
|
||||||
|
(name "union"))
|
||||||
|
"Return a derivation that builds the union of INPUTS. INPUTS is a list of
|
||||||
|
input tuples."
|
||||||
|
(define builder
|
||||||
|
`(begin
|
||||||
|
(use-modules (guix build union))
|
||||||
|
|
||||||
|
(setvbuf (current-output-port) _IOLBF)
|
||||||
|
(setvbuf (current-error-port) _IOLBF)
|
||||||
|
|
||||||
|
(let ((output (assoc-ref %outputs "out"))
|
||||||
|
(inputs (map cdr %build-inputs)))
|
||||||
|
(format #t "building union `~a' with ~a packages...~%"
|
||||||
|
output (length inputs))
|
||||||
|
(union-build output inputs))))
|
||||||
|
|
||||||
|
(build-expression->derivation store name system builder
|
||||||
|
(map (match-lambda
|
||||||
|
((name (? package? p))
|
||||||
|
`(,name ,(package-derivation store p
|
||||||
|
system)))
|
||||||
|
((name (? package? p) output)
|
||||||
|
`(,name ,(package-derivation store p
|
||||||
|
system)
|
||||||
|
,output))
|
||||||
|
(x x))
|
||||||
|
inputs)
|
||||||
|
#:modules '((guix build union))
|
||||||
|
#:guile-for-build guile))
|
||||||
|
|
||||||
(define (system-qemu-image store)
|
(define (system-qemu-image store)
|
||||||
"Return the derivation of a QEMU image of the GNU system."
|
"Return the derivation of a QEMU image of the GNU system."
|
||||||
|
(define motd
|
||||||
|
(add-text-to-store store "motd" "
|
||||||
|
Happy birthday, GNU! http://www.gnu.org/gnu30
|
||||||
|
|
||||||
|
"))
|
||||||
|
|
||||||
(define %pam-services
|
(define %pam-services
|
||||||
;; Services known to PAM.
|
;; Services known to PAM.
|
||||||
(list %pam-other-services
|
(list %pam-other-services
|
||||||
(unix-pam-service "login" #:allow-empty-passwords? #t)))
|
(unix-pam-service "login"
|
||||||
|
#:allow-empty-passwords? #t
|
||||||
|
#:motd motd)))
|
||||||
|
|
||||||
(define %dmd-services
|
(define %dmd-services
|
||||||
;; Services run by dmd.
|
;; Services run by dmd.
|
||||||
(list (mingetty-service store "tty1")
|
(list (host-name-service store "gnu")
|
||||||
|
(mingetty-service store "tty1")
|
||||||
(mingetty-service store "tty2")
|
(mingetty-service store "tty2")
|
||||||
(mingetty-service store "tty3")
|
(mingetty-service store "tty3")
|
||||||
(syslog-service store)))
|
(mingetty-service store "tty4")
|
||||||
|
(mingetty-service store "tty5")
|
||||||
|
(mingetty-service store "tty6")
|
||||||
|
(syslog-service store)
|
||||||
|
(guix-service store #:guix guix-0.4)
|
||||||
|
(nscd-service store)
|
||||||
|
|
||||||
|
;; QEMU networking settings.
|
||||||
|
(static-networking-service store "eth0" "10.0.2.10")))
|
||||||
|
|
||||||
|
(define resolv.conf
|
||||||
|
;; Name resolution for default QEMU settings.
|
||||||
|
(add-text-to-store store "resolv.conf"
|
||||||
|
"nameserver 10.0.2.3\n"))
|
||||||
|
|
||||||
(parameterize ((%guile-for-build (package-derivation store guile-final)))
|
(parameterize ((%guile-for-build (package-derivation store guile-final)))
|
||||||
(let* ((bash-drv (package-derivation store bash))
|
(let* ((bash-drv (package-derivation store bash))
|
||||||
|
@ -383,20 +482,53 @@ It can be used to provide additional files, such as /etc files."
|
||||||
"root:x:0:\n"))
|
"root:x:0:\n"))
|
||||||
(pam.d-drv (pam-services->directory store %pam-services))
|
(pam.d-drv (pam-services->directory store %pam-services))
|
||||||
(pam.d (derivation->output-path pam.d-drv))
|
(pam.d (derivation->output-path pam.d-drv))
|
||||||
(populate
|
|
||||||
(add-text-to-store store "populate-qemu-image"
|
(packages `(("coreutils" ,coreutils)
|
||||||
(object->string
|
("bash" ,bash)
|
||||||
`(begin
|
("guile" ,guile-2.0)
|
||||||
(mkdir-p "etc")
|
("dmd" ,dmd)
|
||||||
(mkdir-p "var/log") ; for dmd
|
("gcc" ,gcc-final)
|
||||||
(symlink ,shadow "etc/shadow")
|
("libc" ,glibc-final)
|
||||||
(symlink ,passwd "etc/passwd")
|
("inetutils" ,inetutils)
|
||||||
(symlink ,group "etc/group")
|
("guix" ,guix-0.4)))
|
||||||
(symlink "/dev/null"
|
|
||||||
"etc/login.defs")
|
;; TODO: Replace with a real profile with a manifest.
|
||||||
(symlink ,pam.d "etc/pam.d")
|
;; TODO: Generate bashrc from packages' search-paths.
|
||||||
(mkdir-p "var/run")))
|
(profile-drv (union store packages
|
||||||
(list passwd)))
|
#:name "default-profile"))
|
||||||
|
(profile (derivation->output-path profile-drv))
|
||||||
|
(bashrc (add-text-to-store store "bashrc"
|
||||||
|
(string-append "
|
||||||
|
export PS1='\\u@\\h\\$ '
|
||||||
|
export PATH=$HOME/.guix-profile/bin:" profile "/bin:" profile "/sbin
|
||||||
|
export CPATH=$HOME/.guix-profile/include:" profile "/include
|
||||||
|
export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
|
||||||
|
alias ls='ls -p --color'
|
||||||
|
alias ll='ls -l'
|
||||||
|
")))
|
||||||
|
|
||||||
|
(issue (add-text-to-store store "issue" "
|
||||||
|
This is an alpha preview of the GNU system. Welcome.
|
||||||
|
|
||||||
|
This image features the GNU Guix package manager, which was used to
|
||||||
|
build it (http://www.gnu.org/software/guix/). The init system is
|
||||||
|
GNU dmd (http://www.gnu.org/software/dmd/).
|
||||||
|
|
||||||
|
You can log in as 'root' with no password.
|
||||||
|
"))
|
||||||
|
|
||||||
|
(populate `((directory "/etc")
|
||||||
|
(directory "/var/log") ; for dmd
|
||||||
|
(directory "/var/run/nscd")
|
||||||
|
("/etc/shadow" -> ,shadow)
|
||||||
|
("/etc/passwd" -> ,passwd)
|
||||||
|
("/etc/login.defs" -> "/dev/null")
|
||||||
|
("/etc/pam.d" -> ,pam.d)
|
||||||
|
("/etc/resolv.conf" -> ,resolv.conf)
|
||||||
|
("/etc/profile" -> ,bashrc)
|
||||||
|
("/etc/issue" -> ,issue)
|
||||||
|
(directory "/var/nix/gcroots")
|
||||||
|
("/var/nix/gcroots/default-profile" -> ,profile)))
|
||||||
(out (derivation->output-path
|
(out (derivation->output-path
|
||||||
(package-derivation store mingetty)))
|
(package-derivation store mingetty)))
|
||||||
(boot (add-text-to-store store "boot"
|
(boot (add-text-to-store store "boot"
|
||||||
|
@ -405,32 +537,36 @@ It can be used to provide additional files, such as /etc files."
|
||||||
"--config" ,dmd-conf))
|
"--config" ,dmd-conf))
|
||||||
(list out)))
|
(list out)))
|
||||||
(entries (list (menu-entry
|
(entries (list (menu-entry
|
||||||
(label "Boot-to-Guile! (GNU System technology preview)")
|
(label (string-append
|
||||||
|
"GNU System with Linux-Libre "
|
||||||
|
(package-version linux-libre)
|
||||||
|
" (technology preview)"))
|
||||||
(linux linux-libre)
|
(linux linux-libre)
|
||||||
(linux-arguments `("--root=/dev/vda1"
|
(linux-arguments `("--root=/dev/vda1"
|
||||||
,(string-append "--load=" boot)))
|
,(string-append "--load=" boot)))
|
||||||
(initrd gnu-system-initrd))))
|
(initrd gnu-system-initrd))))
|
||||||
(grub.cfg (grub-configuration-file store entries)))
|
(grub.cfg (grub-configuration-file store entries)))
|
||||||
(build-derivations store (list pam.d-drv))
|
|
||||||
(qemu-image store
|
(qemu-image store
|
||||||
#:grub-configuration grub.cfg
|
#:grub-configuration grub.cfg
|
||||||
#:populate populate
|
#:populate populate
|
||||||
#:disk-image-size (* 400 (expt 2 20))
|
#:disk-image-size (* 500 (expt 2 20))
|
||||||
|
#:initialize-store? #t
|
||||||
#:inputs-to-copy `(("boot" ,boot)
|
#:inputs-to-copy `(("boot" ,boot)
|
||||||
("linux" ,linux-libre)
|
("linux" ,linux-libre)
|
||||||
("initrd" ,gnu-system-initrd)
|
("initrd" ,gnu-system-initrd)
|
||||||
("coreutils" ,coreutils)
|
("pam.d" ,pam.d-drv)
|
||||||
("bash" ,bash)
|
("profile" ,profile-drv)
|
||||||
("guile" ,guile-2.0)
|
|
||||||
("mingetty" ,mingetty)
|
|
||||||
("dmd" ,dmd)
|
|
||||||
|
|
||||||
;; Configuration.
|
;; Configuration.
|
||||||
("dmd.conf" ,dmd-conf)
|
("dmd.conf" ,dmd-conf)
|
||||||
("etc-pam.d" ,pam.d)
|
("etc-pam.d" ,pam.d-drv)
|
||||||
("etc-passwd" ,passwd)
|
("etc-passwd" ,passwd)
|
||||||
("etc-shadow" ,shadow)
|
("etc-shadow" ,shadow)
|
||||||
("etc-group" ,group)
|
("etc-group" ,group)
|
||||||
|
("etc-resolv.conf" ,resolv.conf)
|
||||||
|
("etc-bashrc" ,bashrc)
|
||||||
|
("etc-issue" ,issue)
|
||||||
|
("etc-motd" ,motd)
|
||||||
,@(append-map service-inputs
|
,@(append-map service-inputs
|
||||||
%dmd-services))))))
|
%dmd-services))))))
|
||||||
|
|
||||||
|
|
|
@ -462,8 +462,8 @@ system identifying string)."
|
||||||
#:outputs outputs #:system system
|
#:outputs outputs #:system system
|
||||||
(args))))))))
|
(args))))))))
|
||||||
|
|
||||||
(define* (package-output store package output
|
(define* (package-output store package
|
||||||
#:optional (system (%current-system)))
|
#:optional (output "out") (system (%current-system)))
|
||||||
"Return the output path of PACKAGE's OUTPUT for SYSTEM---where OUTPUT is the
|
"Return the output path of PACKAGE's OUTPUT for SYSTEM---where OUTPUT is the
|
||||||
symbolic output name, such as \"out\". Note that this procedure calls
|
symbolic output name, such as \"out\". Note that this procedure calls
|
||||||
`package-derivation', which is costly."
|
`package-derivation', which is costly."
|
||||||
|
|
|
@ -955,12 +955,16 @@ more information.~%"))
|
||||||
(match (assoc-ref opts 'query)
|
(match (assoc-ref opts 'query)
|
||||||
(('list-generations pattern)
|
(('list-generations pattern)
|
||||||
(define (list-generation number)
|
(define (list-generation number)
|
||||||
(begin
|
(unless (zero? number)
|
||||||
(format #t (_ "Generation ~a\t~a~%") number
|
(let ((header (format #f (_ "Generation ~a\t~a") number
|
||||||
(date->string
|
(date->string
|
||||||
(time-utc->date
|
(time-utc->date
|
||||||
(generation-time profile number))
|
(generation-time profile number))
|
||||||
"~b ~d ~Y ~T"))
|
"~b ~d ~Y ~T")))
|
||||||
|
(current (generation-number profile)))
|
||||||
|
(if (= number current)
|
||||||
|
(format #t (_ "~a\t(current)~%") header)
|
||||||
|
(format #t "~a~%" header)))
|
||||||
(for-each (match-lambda
|
(for-each (match-lambda
|
||||||
((name version output location _)
|
((name version output location _)
|
||||||
(format #t " ~a\t~a\t~a\t~a~%"
|
(format #t " ~a\t~a\t~a\t~a~%"
|
||||||
|
@ -977,11 +981,16 @@ more information.~%"))
|
||||||
(leave (_ "profile '~a' does not exist~%")
|
(leave (_ "profile '~a' does not exist~%")
|
||||||
profile))
|
profile))
|
||||||
((string-null? pattern)
|
((string-null? pattern)
|
||||||
(for-each list-generation
|
(let ((numbers (generation-numbers profile)))
|
||||||
(generation-numbers profile)))
|
(if (equal? numbers '(0))
|
||||||
|
(exit 1)
|
||||||
|
(for-each list-generation numbers))))
|
||||||
((matching-generations pattern profile)
|
((matching-generations pattern profile)
|
||||||
=>
|
=>
|
||||||
(cut for-each list-generation <>))
|
(lambda (numbers)
|
||||||
|
(if (null-list? numbers)
|
||||||
|
(exit 1)
|
||||||
|
(for-each list-generation numbers))))
|
||||||
(else
|
(else
|
||||||
(leave (_ "invalid syntax: ~a~%")
|
(leave (_ "invalid syntax: ~a~%")
|
||||||
pattern)))
|
pattern)))
|
||||||
|
|
|
@ -62,6 +62,10 @@ static const struct argp_option options[] =
|
||||||
{ 0, 0, 0, 0, 0 }
|
{ 0, 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Prefix of the store being populated. */
|
||||||
|
static std::string prefix;
|
||||||
|
|
||||||
/* Parse a single option. */
|
/* Parse a single option. */
|
||||||
static error_t
|
static error_t
|
||||||
parse_opt (int key, char *arg, struct argp_state *state)
|
parse_opt (int key, char *arg, struct argp_state *state)
|
||||||
|
@ -70,7 +74,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
|
||||||
{
|
{
|
||||||
case 'p':
|
case 'p':
|
||||||
{
|
{
|
||||||
string prefix = canonPath (arg);
|
prefix = canonPath (arg);
|
||||||
settings.nixStore = prefix + NIX_STORE_DIR;
|
settings.nixStore = prefix + NIX_STORE_DIR;
|
||||||
settings.nixDataDir = prefix + NIX_DATA_DIR;
|
settings.nixDataDir = prefix + NIX_DATA_DIR;
|
||||||
settings.nixLogDir = prefix + NIX_LOG_DIR;
|
settings.nixLogDir = prefix + NIX_LOG_DIR;
|
||||||
|
@ -128,15 +132,25 @@ register_validity (LocalStore *store, std::istream &input,
|
||||||
ValidPathInfo info = decodeValidPathInfo (input, hashGiven);
|
ValidPathInfo info = decodeValidPathInfo (input, hashGiven);
|
||||||
if (info.path == "")
|
if (info.path == "")
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* Rewrite the input to refer final name, as if we were in a chroot
|
||||||
|
under PREFIX. */
|
||||||
|
std::string final_prefix (NIX_STORE_DIR "/");
|
||||||
|
info.path = final_prefix + baseNameOf (info.path);
|
||||||
|
|
||||||
|
/* Keep its real path to canonicalize it and compute its hash. */
|
||||||
|
std::string real_path;
|
||||||
|
real_path = prefix + "/" + settings.nixStore + "/" + baseNameOf (info.path);
|
||||||
|
|
||||||
if (!store->isValidPath (info.path) || reregister)
|
if (!store->isValidPath (info.path) || reregister)
|
||||||
{
|
{
|
||||||
/* !!! races */
|
/* !!! races */
|
||||||
if (canonicalise)
|
if (canonicalise)
|
||||||
canonicalisePathMetaData (info.path, -1);
|
canonicalisePathMetaData (real_path, -1);
|
||||||
|
|
||||||
if (!hashGiven)
|
if (!hashGiven)
|
||||||
{
|
{
|
||||||
HashResult hash = hashPath (htSHA256, info.path);
|
HashResult hash = hashPath (htSHA256, real_path);
|
||||||
info.hash = hash.first;
|
info.hash = hash.first;
|
||||||
info.narSize = hash.second;
|
info.narSize = hash.second;
|
||||||
}
|
}
|
||||||
|
@ -155,7 +169,15 @@ main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
argp_parse (&argp, argc, argv, 0, 0, 0);
|
argp_parse (&argp, argc, argv, 0, 0, 0);
|
||||||
|
|
||||||
|
/* Instantiate the store. This creates any missing directories among
|
||||||
|
'settings.nixStore', 'settings.nixDBPath', etc. */
|
||||||
LocalStore store;
|
LocalStore store;
|
||||||
|
|
||||||
|
/* Under the --prefix tree, the final name of the store will be
|
||||||
|
NIX_STORE_DIR. Set it here so that the database uses file names
|
||||||
|
prefixed by NIX_STORE_DIR and not PREFIX + NIX_STORE_DIR. */
|
||||||
|
settings.nixStore = NIX_STORE_DIR;
|
||||||
|
|
||||||
register_validity (&store, *input);
|
register_validity (&store, *input);
|
||||||
}
|
}
|
||||||
catch (std::exception &e)
|
catch (std::exception &e)
|
||||||
|
|
346
po/eo.po
346
po/eo.po
|
@ -5,16 +5,17 @@
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: guix 0.3-pre3\n"
|
"Project-Id-Version: guix 0.4-pre2\n"
|
||||||
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
|
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
|
||||||
"POT-Creation-Date: 2013-08-15 11:44+0200\n"
|
"POT-Creation-Date: 2013-09-25 16:04+0200\n"
|
||||||
"PO-Revision-Date: 2013-07-25 09:25-0300\n"
|
"PO-Revision-Date: 2013-09-25 15:53-0300\n"
|
||||||
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
|
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
|
||||||
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
|
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
|
||||||
"Language: eo\n"
|
"Language: Esperanto\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 1.5.4\n"
|
||||||
|
|
||||||
#: gnu/packages.scm:94
|
#: gnu/packages.scm:94
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
|
@ -52,15 +53,13 @@ msgid ""
|
||||||
"Sed (stream editor) isn't really a true text editor or text processor.\n"
|
"Sed (stream editor) isn't really a true text editor or text processor.\n"
|
||||||
"Instead, it is used to filter text, i.e., it takes text input and performs\n"
|
"Instead, it is used to filter text, i.e., it takes text input and performs\n"
|
||||||
"some operation (or set of operations) on it and outputs the modified text.\n"
|
"some operation (or set of operations) on it and outputs the modified text.\n"
|
||||||
"Sed is typically used for extracting part of a file using pattern matching "
|
"Sed is typically used for extracting part of a file using pattern matching or\n"
|
||||||
"or\n"
|
|
||||||
"substituting multiple occurrences of a string within a file."
|
"substituting multiple occurrences of a string within a file."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sed (flu-redaktilo) ne estas fakte vera tekst-redaktilo aŭ tekst-procezilo.\n"
|
"Sed (flu-redaktilo) ne estas fakte vera tekst-redaktilo aŭ tekst-procezilo.\n"
|
||||||
"Anstataŭe, ĝi estas uzata por filtri tekston, t.e., ĝi prenas tekston kaj\n"
|
"Anstataŭe, ĝi estas uzata por filtri tekston, t.e., ĝi prenas tekston kaj\n"
|
||||||
"aplikas iun operacion (aŭ aron) al ĝi kaj eligas la modifitan tekston.\n"
|
"aplikas iun operacion (aŭ aron) al ĝi kaj eligas la modifitan tekston.\n"
|
||||||
"Sed ordinare estas uzata por eltiri parton de dosiero per ŝablon-kongruon "
|
"Sed ordinare estas uzata por eltiri parton de dosiero per ŝablon-kongruon aŭ\n"
|
||||||
"aŭ\n"
|
|
||||||
"por anstataŭigi multoblajn aperojn de ĉeno interne de dosiero."
|
"por anstataŭigi multoblajn aperojn de ĉeno interne de dosiero."
|
||||||
|
|
||||||
#: gnu/packages/base.scm:140
|
#: gnu/packages/base.scm:140
|
||||||
|
@ -77,8 +76,7 @@ msgid ""
|
||||||
"Initially, tar archives were used to store files conveniently on magnetic\n"
|
"Initially, tar archives were used to store files conveniently on magnetic\n"
|
||||||
"tape. The name \"Tar\" comes from this use; it stands for tape archiver.\n"
|
"tape. The name \"Tar\" comes from this use; it stands for tape archiver.\n"
|
||||||
"Despite the utility's name, Tar can direct its output to available devices,\n"
|
"Despite the utility's name, Tar can direct its output to available devices,\n"
|
||||||
"files, or other programs (using pipes), it can even access remote devices "
|
"files, or other programs (using pipes), it can even access remote devices or\n"
|
||||||
"or\n"
|
|
||||||
"files (as archives)."
|
"files (as archives)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -89,8 +87,7 @@ msgstr "Apliki malsamojn al originaloj, kun nedevigaj savkopioj"
|
||||||
#: gnu/packages/base.scm:175
|
#: gnu/packages/base.scm:175
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNU Patch takes a patch file containing a difference listing produced by\n"
|
"GNU Patch takes a patch file containing a difference listing produced by\n"
|
||||||
"the diff program and applies those differences to one or more original "
|
"the diff program and applies those differences to one or more original files,\n"
|
||||||
"files,\n"
|
|
||||||
"producing patched versions."
|
"producing patched versions."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -104,25 +101,21 @@ msgid ""
|
||||||
"differences between files.\n"
|
"differences between files.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Computer users often find occasion to ask how two files differ. Perhaps one\n"
|
"Computer users often find occasion to ask how two files differ. Perhaps one\n"
|
||||||
"file is a newer version of the other file. Or maybe the two files started "
|
"file is a newer version of the other file. Or maybe the two files started out\n"
|
||||||
"out\n"
|
|
||||||
"as identical copies but were changed by different people.\n"
|
"as identical copies but were changed by different people.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"You can use the diff command to show differences between two files, or each\n"
|
"You can use the diff command to show differences between two files, or each\n"
|
||||||
"corresponding file in two directories. diff outputs differences between "
|
"corresponding file in two directories. diff outputs differences between files\n"
|
||||||
"files\n"
|
|
||||||
"line by line in any of several formats, selectable by command line\n"
|
"line by line in any of several formats, selectable by command line\n"
|
||||||
"options. This set of differences is often called a ‘diff’ or ‘patch’. For\n"
|
"options. This set of differences is often called a ‘diff’ or ‘patch’. For\n"
|
||||||
"files that are identical, diff normally produces no output; for\n"
|
"files that are identical, diff normally produces no output; for\n"
|
||||||
"binary (non-text) files, diff normally reports only that they are "
|
"binary (non-text) files, diff normally reports only that they are different.\n"
|
||||||
"different.\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
"You can use the cmp command to show the offsets and line numbers where two\n"
|
"You can use the cmp command to show the offsets and line numbers where two\n"
|
||||||
"files differ. cmp can also show all the characters that differ between the\n"
|
"files differ. cmp can also show all the characters that differ between the\n"
|
||||||
"two files, side by side.\n"
|
"two files, side by side.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"You can use the diff3 command to show differences among three files. When "
|
"You can use the diff3 command to show differences among three files. When two\n"
|
||||||
"two\n"
|
|
||||||
"people have made independent changes to a common original, diff3 can report\n"
|
"people have made independent changes to a common original, diff3 can report\n"
|
||||||
"the differences between the original and the two changed versions, and can\n"
|
"the differences between the original and the two changed versions, and can\n"
|
||||||
"produce a merged file that contains both persons' changes together with\n"
|
"produce a merged file that contains both persons' changes together with\n"
|
||||||
|
@ -139,8 +132,7 @@ msgstr "Operacio sur dosieroj kongruantaj al indikia kriterio"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The GNU Find Utilities are the basic directory searching utilities of\n"
|
"The GNU Find Utilities are the basic directory searching utilities of\n"
|
||||||
"the GNU operating system. These programs are typically used in conjunction\n"
|
"the GNU operating system. These programs are typically used in conjunction\n"
|
||||||
"with other programs to provide modular and powerful directory search and "
|
"with other programs to provide modular and powerful directory search and file\n"
|
||||||
"file\n"
|
|
||||||
"locating capabilities to other commands.\n"
|
"locating capabilities to other commands.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"The tools supplied with this package are:\n"
|
"The tools supplied with this package are:\n"
|
||||||
|
@ -172,10 +164,8 @@ msgid ""
|
||||||
"non-source files of a program from the program's source files.\n"
|
"non-source files of a program from the program's source files.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Make gets its knowledge of how to build your program from a file called the\n"
|
"Make gets its knowledge of how to build your program from a file called the\n"
|
||||||
"makefile, which lists each of the non-source files and how to compute it "
|
"makefile, which lists each of the non-source files and how to compute it from\n"
|
||||||
"from\n"
|
"other files. When you write a program, you should write a makefile for it, so\n"
|
||||||
"other files. When you write a program, you should write a makefile for it, "
|
|
||||||
"so\n"
|
|
||||||
"that it is possible to use Make to build and install the program."
|
"that it is possible to use Make to build and install the program."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -197,12 +187,10 @@ msgstr "La Biblioteko GNU C"
|
||||||
#: gnu/packages/base.scm:502
|
#: gnu/packages/base.scm:502
|
||||||
msgid ""
|
msgid ""
|
||||||
"Any Unix-like operating system needs a C library: the library which\n"
|
"Any Unix-like operating system needs a C library: the library which\n"
|
||||||
"defines the \"system calls\" and other basic facilities such as open, "
|
"defines the \"system calls\" and other basic facilities such as open, malloc,\n"
|
||||||
"malloc,\n"
|
|
||||||
"printf, exit...\n"
|
"printf, exit...\n"
|
||||||
"\n"
|
"\n"
|
||||||
"The GNU C library is used as the C library in the GNU system and most "
|
"The GNU C library is used as the C library in the GNU system and most systems\n"
|
||||||
"systems\n"
|
|
||||||
"with the Linux kernel."
|
"with the Linux kernel."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -215,8 +203,7 @@ msgid ""
|
||||||
"The Time Zone Database (often called tz or zoneinfo)\n"
|
"The Time Zone Database (often called tz or zoneinfo)\n"
|
||||||
"contains code and data that represent the history of local time for many\n"
|
"contains code and data that represent the history of local time for many\n"
|
||||||
"representative locations around the globe. It is updated periodically to\n"
|
"representative locations around the globe. It is updated periodically to\n"
|
||||||
"reflect changes made by political bodies to time zone boundaries, UTC "
|
"reflect changes made by political bodies to time zone boundaries, UTC offsets,\n"
|
||||||
"offsets,\n"
|
|
||||||
"and daylight-saving rules."
|
"and daylight-saving rules."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -227,8 +214,7 @@ msgstr "La ligila ĉirkaŭanto"
|
||||||
#: gnu/packages/base.scm:992
|
#: gnu/packages/base.scm:992
|
||||||
msgid ""
|
msgid ""
|
||||||
"The linker wrapper (or `ld-wrapper') wraps the linker to add any\n"
|
"The linker wrapper (or `ld-wrapper') wraps the linker to add any\n"
|
||||||
"missing `-rpath' flags, and to detect any misuse of libraries outside of "
|
"missing `-rpath' flags, and to detect any misuse of libraries outside of the\n"
|
||||||
"the\n"
|
|
||||||
"store."
|
"store."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -262,8 +248,7 @@ msgid ""
|
||||||
"Guile-Reader is a simple framework for building readers for GNU Guile.\n"
|
"Guile-Reader is a simple framework for building readers for GNU Guile.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"The idea is to make it easy to build procedures that extend Guile’s read\n"
|
"The idea is to make it easy to build procedures that extend Guile’s read\n"
|
||||||
"procedure. Readers supporting various syntax variants can easily be "
|
"procedure. Readers supporting various syntax variants can easily be written,\n"
|
||||||
"written,\n"
|
|
||||||
"possibly by re-using existing “token readers” of a standard Scheme\n"
|
"possibly by re-using existing “token readers” of a standard Scheme\n"
|
||||||
"readers. For example, it is used to implement Skribilo’s R5RS-derived\n"
|
"readers. For example, it is used to implement Skribilo’s R5RS-derived\n"
|
||||||
"document syntax.\n"
|
"document syntax.\n"
|
||||||
|
@ -280,8 +265,7 @@ msgstr "Bindoj de Guile por ncurses"
|
||||||
#: gnu/packages/guile.scm:268
|
#: gnu/packages/guile.scm:268
|
||||||
msgid ""
|
msgid ""
|
||||||
"GNU Guile-Ncurses is a library for the Guile Scheme interpreter that\n"
|
"GNU Guile-Ncurses is a library for the Guile Scheme interpreter that\n"
|
||||||
"provides functions for creating text user interfaces. The text user "
|
"provides functions for creating text user interfaces. The text user interface\n"
|
||||||
"interface\n"
|
|
||||||
"functionality is built on the ncurses libraries: curses, form, panel, and\n"
|
"functionality is built on the ncurses libraries: curses, form, panel, and\n"
|
||||||
"menu."
|
"menu."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -293,33 +277,39 @@ msgstr "Lanĉi taskoj je antaŭplanitaj horoj"
|
||||||
#: gnu/packages/guile.scm:294
|
#: gnu/packages/guile.scm:294
|
||||||
msgid ""
|
msgid ""
|
||||||
"The GNU package mcron (Mellor's cron) is a 100% compatible replacement\n"
|
"The GNU package mcron (Mellor's cron) is a 100% compatible replacement\n"
|
||||||
"for Vixie cron. It is written in pure Guile, and allows configuration "
|
"for Vixie cron. It is written in pure Guile, and allows configuration files\n"
|
||||||
"files\n"
|
|
||||||
"to be written in scheme (as well as Vixie's original format) for infinite\n"
|
"to be written in scheme (as well as Vixie's original format) for infinite\n"
|
||||||
"flexibility in specifying when jobs should be run. Mcron was written by "
|
"flexibility in specifying when jobs should be run. Mcron was written by Dale\n"
|
||||||
"Dale\n"
|
|
||||||
"Mellor."
|
"Mellor."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: gnu/packages/guile.scm:323
|
||||||
|
msgid "Collection of useful Guile Scheme modules"
|
||||||
|
msgstr "Aro da utilaj moduloj de Guile Scheme"
|
||||||
|
|
||||||
|
#: gnu/packages/guile.scm:325
|
||||||
|
msgid ""
|
||||||
|
"guile-lib is intended as an accumulation place for pure-scheme Guile\n"
|
||||||
|
"modules, allowing for people to cooperate integrating their generic Guile\n"
|
||||||
|
"modules into a coherent library. Think \"a down-scaled, limited-scope CPAN\n"
|
||||||
|
"for Guile\"."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: gnu/packages/lout.scm:109
|
#: gnu/packages/lout.scm:109
|
||||||
msgid "Lout, a document layout system similar in style to LaTeX"
|
msgid "Lout, a document layout system similar in style to LaTeX"
|
||||||
msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo"
|
msgstr "Lout, dokument-aranĝa sistemo simila al LaTeX, laŭ stilo"
|
||||||
|
|
||||||
#: gnu/packages/lout.scm:111
|
#: gnu/packages/lout.scm:111
|
||||||
msgid ""
|
msgid ""
|
||||||
"The Lout document formatting system is now reads a high-level description "
|
"The Lout document formatting system is now reads a high-level description of\n"
|
||||||
"of\n"
|
"a document similar in style to LaTeX and produces a PostScript or plain text\n"
|
||||||
"a document similar in style to LaTeX and produces a PostScript or plain "
|
|
||||||
"text\n"
|
|
||||||
"output file.\n"
|
"output file.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Lout offers an unprecedented range of advanced features, including optimal\n"
|
"Lout offers an unprecedented range of advanced features, including optimal\n"
|
||||||
"paragraph and page breaking, automatic hyphenation, PostScript EPS file\n"
|
"paragraph and page breaking, automatic hyphenation, PostScript EPS file\n"
|
||||||
"inclusion and generation, equation formatting, tables, diagrams, rotation "
|
"inclusion and generation, equation formatting, tables, diagrams, rotation and\n"
|
||||||
"and\n"
|
|
||||||
"scaling, sorted indexes, bibliographic databases, running headers and\n"
|
"scaling, sorted indexes, bibliographic databases, running headers and\n"
|
||||||
"odd-even pages, automatic cross referencing, multilingual documents "
|
"odd-even pages, automatic cross referencing, multilingual documents including\n"
|
||||||
"including\n"
|
|
||||||
"hyphenation (most European languages are supported), formatting of computer\n"
|
"hyphenation (most European languages are supported), formatting of computer\n"
|
||||||
"programs, and much more, all ready to use. Furthermore, Lout is easily\n"
|
"programs, and much more, all ready to use. Furthermore, Lout is easily\n"
|
||||||
"extended with definitions which are very much easier to write than troff of\n"
|
"extended with definitions which are very much easier to write than troff of\n"
|
||||||
|
@ -408,25 +398,23 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -n, --dry-run ne konstrui derivaĵojn"
|
" -n, --dry-run ne konstrui derivaĵojn"
|
||||||
|
|
||||||
#: guix/scripts/build.scm:84 guix/scripts/package.scm:449
|
#: guix/scripts/build.scm:84 guix/scripts/package.scm:519
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --fallback fall back to building when the substituter fails"
|
" --fallback fall back to building when the substituter fails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --fallback retropaŝi al konstruado kiam la anstataŭiganto "
|
" --fallback retropaŝi al konstruado kiam la anstataŭiganto fiaskas"
|
||||||
"fiaskas"
|
|
||||||
|
|
||||||
#: guix/scripts/build.scm:86 guix/scripts/package.scm:451
|
#: guix/scripts/build.scm:86 guix/scripts/package.scm:521
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --no-substitutes build instead of resorting to pre-built substitutes"
|
" --no-substitutes build instead of resorting to pre-built substitutes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --no-substitutes konstrui anstataŭ provi jam-konstruitajn "
|
" --no-substitutes konstrui anstataŭ provi jam-konstruitajn anstataŭigantojn"
|
||||||
"anstataŭigantojn"
|
|
||||||
|
|
||||||
#: guix/scripts/build.scm:88 guix/scripts/package.scm:453
|
#: guix/scripts/build.scm:88 guix/scripts/package.scm:523
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --max-silent-time=SECONDS\n"
|
" --max-silent-time=SECONDS\n"
|
||||||
|
@ -434,8 +422,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --max-silent-time=SEKUNDOJ\n"
|
" --max-silent-time=SEKUNDOJ\n"
|
||||||
" marki la konstruo kiel fiaskinta post SEKUNDOJ da "
|
" marki la konstruo kiel fiaskinta post SEKUNDOJ da silento"
|
||||||
"silento"
|
|
||||||
|
|
||||||
#: guix/scripts/build.scm:91
|
#: guix/scripts/build.scm:91
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -452,8 +439,7 @@ msgid ""
|
||||||
" as a garbage collector root"
|
" as a garbage collector root"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -r, --root=DOSIERO igi DOSIEROn simbola ligo al la rezulto, kaj "
|
" -r, --root=DOSIERO igi DOSIEROn simbola ligo al la rezulto, kaj registri\n"
|
||||||
"registri\n"
|
|
||||||
" ĝin kiel radikon de rubaĵ-kolektanto"
|
" ĝin kiel radikon de rubaĵ-kolektanto"
|
||||||
|
|
||||||
#: guix/scripts/build.scm:96
|
#: guix/scripts/build.scm:96
|
||||||
|
@ -465,8 +451,9 @@ msgstr ""
|
||||||
" --verbosity=NIVELO uzi la indikitan detaligan NIVELOn"
|
" --verbosity=NIVELO uzi la indikitan detaligan NIVELOn"
|
||||||
|
|
||||||
#: guix/scripts/build.scm:99 guix/scripts/download.scm:53
|
#: guix/scripts/build.scm:99 guix/scripts/download.scm:53
|
||||||
#: guix/scripts/package.scm:470 guix/scripts/gc.scm:58
|
#: guix/scripts/package.scm:540 guix/scripts/gc.scm:58
|
||||||
#: guix/scripts/hash.scm:51 guix/scripts/pull.scm:149
|
#: guix/scripts/hash.scm:51 guix/scripts/pull.scm:152
|
||||||
|
#: guix/scripts/substitute-binary.scm:463
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -h, --help display this help and exit"
|
" -h, --help display this help and exit"
|
||||||
|
@ -475,8 +462,9 @@ msgstr ""
|
||||||
" -h, --help montri ĉi tiun helpon kaj eliri"
|
" -h, --help montri ĉi tiun helpon kaj eliri"
|
||||||
|
|
||||||
#: guix/scripts/build.scm:101 guix/scripts/download.scm:55
|
#: guix/scripts/build.scm:101 guix/scripts/download.scm:55
|
||||||
#: guix/scripts/package.scm:472 guix/scripts/gc.scm:60
|
#: guix/scripts/package.scm:542 guix/scripts/gc.scm:60
|
||||||
#: guix/scripts/hash.scm:53 guix/scripts/pull.scm:151
|
#: guix/scripts/hash.scm:53 guix/scripts/pull.scm:154
|
||||||
|
#: guix/scripts/substitute-binary.scm:465
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -V, --version display version information and exit"
|
" -V, --version display version information and exit"
|
||||||
|
@ -490,8 +478,8 @@ msgid "~a: not a number~%"
|
||||||
msgstr "~a: ne estas numero~%"
|
msgstr "~a: ne estas numero~%"
|
||||||
|
|
||||||
#: guix/scripts/build.scm:176 guix/scripts/download.scm:96
|
#: guix/scripts/build.scm:176 guix/scripts/download.scm:96
|
||||||
#: guix/scripts/package.scm:554 guix/scripts/gc.scm:152
|
#: guix/scripts/package.scm:628 guix/scripts/gc.scm:152
|
||||||
#: guix/scripts/pull.scm:178
|
#: guix/scripts/pull.scm:181
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~A: unrecognized option~%"
|
msgid "~A: unrecognized option~%"
|
||||||
msgstr "~A: nerekonata modifilo~%"
|
msgstr "~A: nerekonata modifilo~%"
|
||||||
|
@ -501,12 +489,12 @@ msgstr "~A: nerekonata modifilo~%"
|
||||||
msgid "failed to create GC root `~a': ~a~%"
|
msgid "failed to create GC root `~a': ~a~%"
|
||||||
msgstr "fiasko dum kreo de radiko GC '~a': ~a~%"
|
msgstr "fiasko dum kreo de radiko GC '~a': ~a~%"
|
||||||
|
|
||||||
#: guix/scripts/build.scm:226 guix/scripts/package.scm:600
|
#: guix/scripts/build.scm:226 guix/scripts/package.scm:674
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "ambiguous package specification `~a'~%"
|
msgid "ambiguous package specification `~a'~%"
|
||||||
msgstr "plursenca pak-specifigo '~a'~%"
|
msgstr "plursenca pak-specifigo '~a'~%"
|
||||||
|
|
||||||
#: guix/scripts/build.scm:227 guix/scripts/package.scm:602
|
#: guix/scripts/build.scm:227 guix/scripts/package.scm:676
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "choosing ~a from ~a~%"
|
msgid "choosing ~a from ~a~%"
|
||||||
msgstr "ni elektas ~a el ~a~%"
|
msgstr "ni elektas ~a el ~a~%"
|
||||||
|
@ -560,42 +548,42 @@ msgstr "~a: analizo de URI fiaskis~%"
|
||||||
msgid "~a: download failed~%"
|
msgid "~a: download failed~%"
|
||||||
msgstr "~a: elŝuto fiaskis~%"
|
msgstr "~a: elŝuto fiaskis~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:225
|
#: guix/scripts/package.scm:227
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "switching from generation ~a to ~a~%"
|
msgid "switching from generation ~a to ~a~%"
|
||||||
msgstr "alterno el generacio ~a al ~a~%"
|
msgstr "alterno el generacio ~a al ~a~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:230
|
#: guix/scripts/package.scm:232
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "profile `~a' does not exist~%"
|
msgid "profile `~a' does not exist~%"
|
||||||
msgstr "profilo '~a' ne ekzistas~%"
|
msgstr "profilo '~a' ne ekzistas~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:234
|
#: guix/scripts/package.scm:236
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "nothing to do: already at the empty profile~%"
|
msgid "nothing to do: already at the empty profile~%"
|
||||||
msgstr "nenio por fari: jam estas ĉe la malplena profilo~%"
|
msgstr "nenio por fari: jam estas ĉe la malplena profilo~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:243
|
#: guix/scripts/package.scm:242
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "failed to build the empty profile~%"
|
msgid "failed to build the empty profile~%"
|
||||||
msgstr "fiasko dum konstruo de malplena profilo~%"
|
msgstr "fiasko dum konstruo de malplena profilo~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:346
|
#: guix/scripts/package.scm:413
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "looking for the latest release of GNU ~a..."
|
msgid "looking for the latest release of GNU ~a..."
|
||||||
msgstr "ni serĉas la lastan eldonon de GNU ~a..."
|
msgstr "ni serĉas la lastan eldonon de GNU ~a..."
|
||||||
|
|
||||||
#: guix/scripts/package.scm:350
|
#: guix/scripts/package.scm:417
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~a: note: using ~a but ~a is available upstream~%"
|
msgid "~a: note: using ~a but ~a is available upstream~%"
|
||||||
msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%"
|
msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:414
|
#: guix/scripts/package.scm:481
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "The following environment variable definitions may be needed:~%"
|
msgid "The following environment variable definitions may be needed:~%"
|
||||||
msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%"
|
msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:429
|
#: guix/scripts/package.scm:496
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: guix package [OPTION]... PACKAGES...\n"
|
"Usage: guix package [OPTION]... PACKAGES...\n"
|
||||||
"Install, remove, or upgrade PACKAGES in a single transaction.\n"
|
"Install, remove, or upgrade PACKAGES in a single transaction.\n"
|
||||||
|
@ -603,7 +591,7 @@ msgstr ""
|
||||||
"Uzmaniero: guix package [MODIFILO]... PAKOJ...\n"
|
"Uzmaniero: guix package [MODIFILO]... PAKOJ...\n"
|
||||||
"Instalas, forigas, aŭ ĝisdatigas PAKOJn en ununura ago.\n"
|
"Instalas, forigas, aŭ ĝisdatigas PAKOJn en ununura ago.\n"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:431
|
#: guix/scripts/package.scm:498
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -i, --install=PACKAGE install PACKAGE"
|
" -i, --install=PACKAGE install PACKAGE"
|
||||||
|
@ -611,7 +599,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -i, --install=PAKO instali PAKOn"
|
" -i, --install=PAKO instali PAKOn"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:433
|
#: guix/scripts/package.scm:500
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -e, --install-from-expression=EXP\n"
|
" -e, --install-from-expression=EXP\n"
|
||||||
|
@ -621,7 +609,7 @@ msgstr ""
|
||||||
" -e, --install-from-expression=ESP\n"
|
" -e, --install-from-expression=ESP\n"
|
||||||
" instali la pakon ESP rezultas al"
|
" instali la pakon ESP rezultas al"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:436
|
#: guix/scripts/package.scm:503
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -r, --remove=PACKAGE remove PACKAGE"
|
" -r, --remove=PACKAGE remove PACKAGE"
|
||||||
|
@ -629,16 +617,15 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -r, --remove=PAKO forigi PAKOn"
|
" -r, --remove=PAKO forigi PAKOn"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:438
|
#: guix/scripts/package.scm:505
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
|
" -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -u, --upgrade[=REGESP] ĝisdatigi ĉiujn instalitajn pakojn kongruantajn al "
|
" -u, --upgrade[=REGESP] ĝisdatigi ĉiujn instalitajn pakojn kongruantajn al REGESP"
|
||||||
"REGESP"
|
|
||||||
|
|
||||||
#: guix/scripts/package.scm:440
|
#: guix/scripts/package.scm:507
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --roll-back roll back to the previous generation"
|
" --roll-back roll back to the previous generation"
|
||||||
|
@ -646,7 +633,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --roll-back retropaŝi al la antaŭa generacio"
|
" --roll-back retropaŝi al la antaŭa generacio"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:442
|
#: guix/scripts/package.scm:509
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --search-paths display needed environment variable definitions"
|
" --search-paths display needed environment variable definitions"
|
||||||
|
@ -654,16 +641,25 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --search-paths montri necesajn medi-variablajn difinojn"
|
" --search-paths montri necesajn medi-variablajn difinojn"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:445
|
#: guix/scripts/package.scm:511
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" -l, --list-generations[=PATTERN]\n"
|
||||||
|
" list generations matching PATTERN"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" -I, --list-generations[=ŜABLONO]\n"
|
||||||
|
" listigi generaciojn kongruantajn al ŜABLONO"
|
||||||
|
|
||||||
|
#: guix/scripts/package.scm:515
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -p, --profile=PROFILE use PROFILE instead of the user's default profile"
|
" -p, --profile=PROFILE use PROFILE instead of the user's default profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -p, --profile=PROFILO uzi PROFILOn anstataŭ la apriora profilo de la "
|
" -p, --profile=PROFILO uzi PROFILOn anstataŭ la apriora profilo de la uzanto"
|
||||||
"uzanto"
|
|
||||||
|
|
||||||
#: guix/scripts/package.scm:447
|
#: guix/scripts/package.scm:517
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -n, --dry-run show what would be done without actually doing it"
|
" -n, --dry-run show what would be done without actually doing it"
|
||||||
|
@ -671,7 +667,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -n, --dry-run montri kion estus farita sen fakte fari ĝin"
|
" -n, --dry-run montri kion estus farita sen fakte fari ĝin"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:456
|
#: guix/scripts/package.scm:526
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --bootstrap use the bootstrap Guile to build the profile"
|
" --bootstrap use the bootstrap Guile to build the profile"
|
||||||
|
@ -679,7 +675,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --bootstrap uzi la praŝargilon Guile por konstrui la profilon"
|
" --bootstrap uzi la praŝargilon Guile por konstrui la profilon"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:458 guix/scripts/pull.scm:144
|
#: guix/scripts/package.scm:528 guix/scripts/pull.scm:147
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --verbose produce verbose output"
|
" --verbose produce verbose output"
|
||||||
|
@ -687,7 +683,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --verbose produkti detalplenan eligon"
|
" --verbose produkti detalplenan eligon"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:461
|
#: guix/scripts/package.scm:531
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -s, --search=REGEXP search in synopsis and description using REGEXP"
|
" -s, --search=REGEXP search in synopsis and description using REGEXP"
|
||||||
|
@ -695,7 +691,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" -s, --search=REGESP serĉi en resumo kaj priskribo uzante REGESP"
|
" -s, --search=REGESP serĉi en resumo kaj priskribo uzante REGESP"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:463
|
#: guix/scripts/package.scm:533
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -I, --list-installed[=REGEXP]\n"
|
" -I, --list-installed[=REGEXP]\n"
|
||||||
|
@ -705,7 +701,7 @@ msgstr ""
|
||||||
" -I, --list-installed[=REGESP]\n"
|
" -I, --list-installed[=REGESP]\n"
|
||||||
" listigi instalitajn pakojn kongruantajn al REGESP"
|
" listigi instalitajn pakojn kongruantajn al REGESP"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:466
|
#: guix/scripts/package.scm:536
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" -A, --list-available[=REGEXP]\n"
|
" -A, --list-available[=REGEXP]\n"
|
||||||
|
@ -715,76 +711,91 @@ msgstr ""
|
||||||
" -A, --list-available[=REGESP]\n"
|
" -A, --list-available[=REGESP]\n"
|
||||||
" listigi disponeblajn pakojn kongruantajn al REGESP"
|
" listigi disponeblajn pakojn kongruantajn al REGESP"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:556
|
#: guix/scripts/package.scm:630
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~A: extraneous argument~%"
|
msgid "~A: extraneous argument~%"
|
||||||
msgstr "~A: fremda argumento~%"
|
msgstr "~A: fremda argumento~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:584
|
#: guix/scripts/package.scm:658
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "package `~a' lacks output `~a'~%"
|
msgid "package `~a' lacks output `~a'~%"
|
||||||
msgstr "pako '~a' malhavas eligon '~a'~%"
|
msgstr "pako '~a' malhavas eligon '~a'~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:608
|
#: guix/scripts/package.scm:682
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~a: package not found~%"
|
msgid "~a: package not found~%"
|
||||||
msgstr "~a: pako ne trovita~%"
|
msgstr "~a: pako ne trovita~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:631
|
#: guix/scripts/package.scm:705
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
|
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
|
||||||
msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%"
|
msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:653
|
#: guix/scripts/package.scm:727
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "error: while creating directory `~a': ~a~%"
|
msgid "error: while creating directory `~a': ~a~%"
|
||||||
msgstr "eraro: dum kreo de dosierujo '~a': ~a~%"
|
msgstr "eraro: dum kreo de dosierujo '~a': ~a~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:657
|
#: guix/scripts/package.scm:731
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "Please create the `~a' directory, with you as the owner.~%"
|
msgid "Please create the `~a' directory, with you as the owner.~%"
|
||||||
msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%"
|
msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:664
|
#: guix/scripts/package.scm:738
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "error: directory `~a' is not owned by you~%"
|
msgid "error: directory `~a' is not owned by you~%"
|
||||||
msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%"
|
msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:667
|
#: guix/scripts/package.scm:741
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "Please change the owner of `~a' to user ~s.~%"
|
msgid "Please change the owner of `~a' to user ~s.~%"
|
||||||
msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%"
|
msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:725
|
#: guix/scripts/package.scm:799
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "The following package would be removed:~% ~{~a~%~}~%"
|
msgid "The following package would be removed:~% ~{~a~%~}~%"
|
||||||
msgstr "La jena pako devos esti forigata:~% ~{~a~%~}~%"
|
msgstr "La jena pako devos esti forigata:~% ~{~a~%~}~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:730
|
#: guix/scripts/package.scm:804
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "The following package will be removed:~% ~{~a~%~}~%"
|
msgid "The following package will be removed:~% ~{~a~%~}~%"
|
||||||
msgstr "La jena pako estos forigata:~% ~{~a~%~}~%"
|
msgstr "La jena pako estos forigata:~% ~{~a~%~}~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:742
|
#: guix/scripts/package.scm:816
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "The following package would be installed:~%~{~a~%~}~%"
|
msgid "The following package would be installed:~%~{~a~%~}~%"
|
||||||
msgstr "La jena pako estus instalata:~% ~{~a~%~}~%"
|
msgstr "La jena pako estus instalata:~% ~{~a~%~}~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:747
|
#: guix/scripts/package.scm:821
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "The following package will be installed:~%~{~a~%~}~%"
|
msgid "The following package will be installed:~%~{~a~%~}~%"
|
||||||
msgstr "La jena pako estos instalata:~% ~{~a~%~}~%"
|
msgstr "La jena pako estos instalata:~% ~{~a~%~}~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:859
|
#: guix/scripts/package.scm:933
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "nothing to be done~%"
|
msgid "nothing to be done~%"
|
||||||
msgstr "nenio por fari~%"
|
msgstr "nenio por fari~%"
|
||||||
|
|
||||||
#: guix/scripts/package.scm:870
|
#: guix/scripts/package.scm:944
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~a package in profile~%"
|
msgid "~a package in profile~%"
|
||||||
msgstr "pako ~a en profilo~%"
|
msgstr "pako ~a en profilo~%"
|
||||||
|
|
||||||
|
#: guix/scripts/package.scm:959
|
||||||
|
#, scheme-format
|
||||||
|
msgid "Generation ~a\t~a~%"
|
||||||
|
msgstr "Generacio ~a\t~a~%"
|
||||||
|
|
||||||
|
#: guix/scripts/package.scm:977
|
||||||
|
#, scheme-format
|
||||||
|
msgid "profile '~a' does not exist~%"
|
||||||
|
msgstr "profilo '~a' ne ekzistas~%"
|
||||||
|
|
||||||
|
#: guix/scripts/package.scm:986
|
||||||
|
#, scheme-format
|
||||||
|
msgid "invalid syntax: ~a~%"
|
||||||
|
msgstr "malvalida sintakso: ~a~%"
|
||||||
|
|
||||||
#: guix/scripts/gc.scm:39
|
#: guix/scripts/gc.scm:39
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: guix gc [OPTION]... PATHS...\n"
|
"Usage: guix gc [OPTION]... PATHS...\n"
|
||||||
|
@ -885,7 +896,7 @@ msgstr ""
|
||||||
msgid "unrecognized option: ~a~%"
|
msgid "unrecognized option: ~a~%"
|
||||||
msgstr "nerekonata modifilo: ~a~%"
|
msgstr "nerekonata modifilo: ~a~%"
|
||||||
|
|
||||||
#: guix/scripts/hash.scm:123 guix/ui.scm:183
|
#: guix/scripts/hash.scm:123 guix/ui.scm:187
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~a~%"
|
msgid "~a~%"
|
||||||
msgstr "~a~%"
|
msgstr "~a~%"
|
||||||
|
@ -895,7 +906,7 @@ msgstr "~a~%"
|
||||||
msgid "wrong number of arguments~%"
|
msgid "wrong number of arguments~%"
|
||||||
msgstr "malĝusta nombro da argumentoj~%"
|
msgstr "malĝusta nombro da argumentoj~%"
|
||||||
|
|
||||||
#: guix/scripts/pull.scm:142
|
#: guix/scripts/pull.scm:145
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: guix pull [OPTION]...\n"
|
"Usage: guix pull [OPTION]...\n"
|
||||||
"Download and deploy the latest version of Guix.\n"
|
"Download and deploy the latest version of Guix.\n"
|
||||||
|
@ -903,7 +914,7 @@ msgstr ""
|
||||||
"Uzmaniero: guix pull [MODIFILO]...\n"
|
"Uzmaniero: guix pull [MODIFILO]...\n"
|
||||||
"Elŝuti kaj liveri la lastan version de Guix.\n"
|
"Elŝuti kaj liveri la lastan version de Guix.\n"
|
||||||
|
|
||||||
#: guix/scripts/pull.scm:146
|
#: guix/scripts/pull.scm:149
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
" --bootstrap use the bootstrap Guile to build the new Guix"
|
" --bootstrap use the bootstrap Guile to build the new Guix"
|
||||||
|
@ -911,44 +922,89 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
" --bootstrap uzi la 'bootstrap' Guile por konstrui novan Guix"
|
" --bootstrap uzi la 'bootstrap' Guile por konstrui novan Guix"
|
||||||
|
|
||||||
#: guix/scripts/pull.scm:180
|
#: guix/scripts/pull.scm:183
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~A: unexpected argument~%"
|
msgid "~A: unexpected argument~%"
|
||||||
msgstr "~A: neatendita argumento~%"
|
msgstr "~A: neatendita argumento~%"
|
||||||
|
|
||||||
#: guix/scripts/pull.scm:189
|
#: guix/scripts/pull.scm:192
|
||||||
msgid "failed to download up-to-date source, exiting\n"
|
msgid "failed to download up-to-date source, exiting\n"
|
||||||
msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n"
|
msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n"
|
||||||
|
|
||||||
#: guix/scripts/pull.scm:212
|
#: guix/scripts/pull.scm:211
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "updated ~a successfully deployed under `~a'~%"
|
msgid "updated ~a successfully deployed under `~a'~%"
|
||||||
msgstr "ni ĝisdatigis ~a sukcese, liverita sur '~a'~%"
|
msgstr "ni ĝisdatigis ~a sukcese, liverita sur '~a'~%"
|
||||||
|
|
||||||
#: guix/scripts/pull.scm:215
|
#: guix/scripts/pull.scm:214
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "failed to update Guix, check the build log~%"
|
msgid "failed to update Guix, check the build log~%"
|
||||||
msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%"
|
msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%"
|
||||||
|
|
||||||
#: guix/scripts/pull.scm:217
|
#: guix/scripts/pull.scm:216
|
||||||
msgid "Guix already up to date\n"
|
msgid "Guix already up to date\n"
|
||||||
msgstr "Guix jam estas ĝisdata\n"
|
msgstr "Guix jam estas ĝisdata\n"
|
||||||
|
|
||||||
#: guix/scripts/substitute-binary.scm:163
|
#: guix/scripts/substitute-binary.scm:162
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "while fetching ~a: server is unresponsive~%"
|
msgid "while fetching ~a: server is unresponsive~%"
|
||||||
msgstr "dum havigo de ~a: servilo ne respondas~%"
|
msgstr "dum havigo de ~a: servilo ne respondas~%"
|
||||||
|
|
||||||
#: guix/scripts/substitute-binary.scm:165
|
#: guix/scripts/substitute-binary.scm:164
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "try `--no-substitutes' if the problem persists~%"
|
msgid "try `--no-substitutes' if the problem persists~%"
|
||||||
msgstr "provu '--no-substituse' se la problemo persistos~%"
|
msgstr "provu '--no-substituse' se la problemo persistos~%"
|
||||||
|
|
||||||
#: guix/scripts/substitute-binary.scm:437
|
#: guix/scripts/substitute-binary.scm:425
|
||||||
|
#, scheme-format
|
||||||
|
msgid "Downloading, please wait...~%"
|
||||||
|
msgstr "Ni elŝutas, bonvolu atendi...~%"
|
||||||
|
|
||||||
|
#: guix/scripts/substitute-binary.scm:427
|
||||||
|
#, scheme-format
|
||||||
|
msgid "(Please consider upgrading Guile to get proper progress report.)~%"
|
||||||
|
msgstr "(Bonvolu konsideri pri ĝisdatigo de Guile por havigi ĝustan progres-raporton.)~%"
|
||||||
|
|
||||||
|
#: guix/scripts/substitute-binary.scm:444
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "host name lookup error: ~a~%"
|
msgid "host name lookup error: ~a~%"
|
||||||
msgstr "eraro en serĉado de gastigant-nomo: ~a~%"
|
msgstr "eraro en serĉado de gastigant-nomo: ~a~%"
|
||||||
|
|
||||||
|
#: guix/scripts/substitute-binary.scm:453
|
||||||
|
msgid ""
|
||||||
|
"Usage: guix substitute-binary [OPTION]...\n"
|
||||||
|
"Internal tool to substitute a pre-built binary to a local build.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Uzmaniero: guix substitute-binary [MODIFILO]...\n"
|
||||||
|
"Interna ilo por anstataŭigi antaŭ-konstruitan duumaĵon al loka kompilaĵo.\n"
|
||||||
|
|
||||||
|
#: guix/scripts/substitute-binary.scm:455
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" --query report on the availability of substitutes for the\n"
|
||||||
|
" store file names passed on the standard input"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" --query raporti pri la disponebleco de anstataŭigoj por la\n"
|
||||||
|
" konservaj dosier-nomoj indikitaj per la ĉefenigujo"
|
||||||
|
|
||||||
|
#: guix/scripts/substitute-binary.scm:458
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" --substitute STORE-FILE DESTINATION\n"
|
||||||
|
" download STORE-FILE and store it as a Nar in file\n"
|
||||||
|
" DESTINATION"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" --substitute KONSERV-DOSIERO CELO\n"
|
||||||
|
" elŝuti KONSERV-DOSIEROn kaj konservi ĝin kiel Nar en la\n"
|
||||||
|
" dosiero CELO"
|
||||||
|
|
||||||
|
#: guix/scripts/substitute-binary.scm:567
|
||||||
|
#, scheme-format
|
||||||
|
msgid "~a: unrecognized options~%"
|
||||||
|
msgstr "~a: nerekonata modifiloj~%"
|
||||||
|
|
||||||
#: guix/gnu-maintenance.scm:344
|
#: guix/gnu-maintenance.scm:344
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "signature verification failed for `~a'~%"
|
msgid "signature verification failed for `~a'~%"
|
||||||
|
@ -969,12 +1025,12 @@ msgstr "~a: ne eblis trovi fontan dosieron"
|
||||||
msgid "~a: ~a: no `version' field in source; skipping~%"
|
msgid "~a: ~a: no `version' field in source; skipping~%"
|
||||||
msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%"
|
msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%"
|
||||||
|
|
||||||
#: guix/ui.scm:116
|
#: guix/ui.scm:120
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "failed to install locale: ~a~%"
|
msgid "failed to install locale: ~a~%"
|
||||||
msgstr "fiasko dum instalo de lokaĵaro: ~a~%"
|
msgstr "fiasko dum instalo de lokaĵaro: ~a~%"
|
||||||
|
|
||||||
#: guix/ui.scm:138
|
#: guix/ui.scm:142
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -983,7 +1039,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"Raportu program-misojn al: ~a."
|
"Raportu program-misojn al: ~a."
|
||||||
|
|
||||||
#: guix/ui.scm:140
|
#: guix/ui.scm:144
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -992,7 +1048,7 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"hejm-paĝo de ~a: <~a>"
|
"hejm-paĝo de ~a: <~a>"
|
||||||
|
|
||||||
#: guix/ui.scm:142
|
#: guix/ui.scm:146
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
"General help using GNU software: <http://www.gnu.org/gethelp/>"
|
"General help using GNU software: <http://www.gnu.org/gethelp/>"
|
||||||
|
@ -1000,90 +1056,90 @@ msgstr ""
|
||||||
"\n"
|
"\n"
|
||||||
"Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>"
|
"Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>"
|
||||||
|
|
||||||
#: guix/ui.scm:149
|
#: guix/ui.scm:153
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~a: invalid number~%"
|
msgid "~a: invalid number~%"
|
||||||
msgstr "~a: nevalida numero~%"
|
msgstr "~a: nevalida numero~%"
|
||||||
|
|
||||||
#: guix/ui.scm:160
|
#: guix/ui.scm:164
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
|
msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
|
||||||
msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%"
|
msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%"
|
||||||
|
|
||||||
#: guix/ui.scm:167
|
#: guix/ui.scm:171
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~a: ~a: build system `~a' does not support cross builds~%"
|
msgid "~a: ~a: build system `~a' does not support cross builds~%"
|
||||||
msgstr "~a: ~a: konstrui sistemon '~a' ne subtenas crucajn konstruojn~%"
|
msgstr "~a: ~a: konstrui sistemon '~a' ne subtenas crucajn konstruojn~%"
|
||||||
|
|
||||||
#: guix/ui.scm:172
|
#: guix/ui.scm:176
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "failed to connect to `~a': ~a~%"
|
msgid "failed to connect to `~a': ~a~%"
|
||||||
msgstr "fiasko dum konekto al '~a': ~a~%"
|
msgstr "fiasko dum konekto al '~a': ~a~%"
|
||||||
|
|
||||||
#: guix/ui.scm:177
|
#: guix/ui.scm:181
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "build failed: ~a~%"
|
msgid "build failed: ~a~%"
|
||||||
msgstr "konstruo fiakis: ~a~%"
|
msgstr "konstruo fiakis: ~a~%"
|
||||||
|
|
||||||
#: guix/ui.scm:193
|
#: guix/ui.scm:197
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "failed to read expression ~s: ~s~%"
|
msgid "failed to read expression ~s: ~s~%"
|
||||||
msgstr "fiasko dum lego de esprimo ~s: ~s~%"
|
msgstr "fiasko dum lego de esprimo ~s: ~s~%"
|
||||||
|
|
||||||
#: guix/ui.scm:199
|
#: guix/ui.scm:203
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "failed to evaluate expression `~a': ~s~%"
|
msgid "failed to evaluate expression `~a': ~s~%"
|
||||||
msgstr "fiasko dum analizo de esprimo '~a': ~a~%"
|
msgstr "fiasko dum analizo de esprimo '~a': ~a~%"
|
||||||
|
|
||||||
#: guix/ui.scm:203
|
#: guix/ui.scm:207
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "expression `~s' does not evaluate to a package~%"
|
msgid "expression `~s' does not evaluate to a package~%"
|
||||||
msgstr "la esprimo '~s' ne rezultas pakon~%"
|
msgstr "la esprimo '~s' ne rezultas pakon~%"
|
||||||
|
|
||||||
#: guix/ui.scm:248
|
#: guix/ui.scm:253
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]"
|
msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]"
|
||||||
msgstr "~:[La jena derivo povus esti konstruata:~%~{ ~a~%~}~;~]"
|
msgstr "~:[La jena derivo povus esti konstruata:~%~{ ~a~%~}~;~]"
|
||||||
|
|
||||||
#: guix/ui.scm:253
|
#: guix/ui.scm:258
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]"
|
msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]"
|
||||||
msgstr "~:[La jena derivo povus esti elŝutata:~%~{ ~a~%~}~;~]"
|
msgstr "~:[La jena derivo povus esti elŝutata:~%~{ ~a~%~}~;~]"
|
||||||
|
|
||||||
#: guix/ui.scm:259
|
#: guix/ui.scm:264
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]"
|
msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]"
|
||||||
msgstr "~:[La jena derivo estos esti konstruata:~%~{ ~a~%~}~;~]"
|
msgstr "~:[La jena derivo estos esti konstruata:~%~{ ~a~%~}~;~]"
|
||||||
|
|
||||||
#: guix/ui.scm:264
|
#: guix/ui.scm:269
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]"
|
msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]"
|
||||||
msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]"
|
msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]"
|
||||||
|
|
||||||
#: guix/ui.scm:281
|
#: guix/ui.scm:286
|
||||||
msgid "<unknown location>"
|
msgid "<unknown location>"
|
||||||
msgstr "<nekonata loko>"
|
msgstr "<nekonata loko>"
|
||||||
|
|
||||||
#: guix/ui.scm:309
|
#: guix/ui.scm:314
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "failed to create configuration directory `~a': ~a~%"
|
msgid "failed to create configuration directory `~a': ~a~%"
|
||||||
msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%"
|
msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%"
|
||||||
|
|
||||||
#: guix/ui.scm:385 guix/ui.scm:395
|
#: guix/ui.scm:390 guix/ui.scm:400
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr "nekonata"
|
msgstr "nekonata"
|
||||||
|
|
||||||
#: guix/ui.scm:415
|
#: guix/ui.scm:484
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "invalid argument: ~a~%"
|
msgid "invalid argument: ~a~%"
|
||||||
msgstr "malvalida argumento: ~a~%"
|
msgstr "malvalida argumento: ~a~%"
|
||||||
|
|
||||||
#: guix/ui.scm:420
|
#: guix/ui.scm:489
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "Try `guix --help' for more information.~%"
|
msgid "Try `guix --help' for more information.~%"
|
||||||
msgstr "Provu 'guix --help' por pli da informo.~%"
|
msgstr "Provu 'guix --help' por pli da informo.~%"
|
||||||
|
|
||||||
#: guix/ui.scm:447
|
#: guix/ui.scm:516
|
||||||
msgid ""
|
msgid ""
|
||||||
"Usage: guix COMMAND ARGS...\n"
|
"Usage: guix COMMAND ARGS...\n"
|
||||||
"Run COMMAND with ARGS.\n"
|
"Run COMMAND with ARGS.\n"
|
||||||
|
@ -1091,21 +1147,21 @@ msgstr ""
|
||||||
"Uzmaniero: guix KOMANDO ARGj...\n"
|
"Uzmaniero: guix KOMANDO ARGj...\n"
|
||||||
"Lanĉas KOMANDOn kun ARGj.\n"
|
"Lanĉas KOMANDOn kun ARGj.\n"
|
||||||
|
|
||||||
#: guix/ui.scm:450
|
#: guix/ui.scm:519
|
||||||
msgid "COMMAND must be one of the sub-commands listed below:\n"
|
msgid "COMMAND must be one of the sub-commands listed below:\n"
|
||||||
msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n"
|
msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n"
|
||||||
|
|
||||||
#: guix/ui.scm:469
|
#: guix/ui.scm:538
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "guix: ~a: command not found~%"
|
msgid "guix: ~a: command not found~%"
|
||||||
msgstr "guix: ~a: komando ne trovita~%"
|
msgstr "guix: ~a: komando ne trovita~%"
|
||||||
|
|
||||||
#: guix/ui.scm:487
|
#: guix/ui.scm:556
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "guix: missing command name~%"
|
msgid "guix: missing command name~%"
|
||||||
msgstr "guix: mankas komanda nomo~%"
|
msgstr "guix: mankas komanda nomo~%"
|
||||||
|
|
||||||
#: guix/ui.scm:495
|
#: guix/ui.scm:564
|
||||||
#, scheme-format
|
#, scheme-format
|
||||||
msgid "guix: unrecognized option '~a'~%"
|
msgid "guix: unrecognized option '~a'~%"
|
||||||
msgstr "guix: nerekonata modifilo: '~a'~%"
|
msgstr "guix: nerekonata modifilo: '~a'~%"
|
||||||
|
|
|
@ -79,12 +79,16 @@ then
|
||||||
# Search.
|
# Search.
|
||||||
test "`guix package -s "An example GNU package" | grep ^name:`" = \
|
test "`guix package -s "An example GNU package" | grep ^name:`" = \
|
||||||
"name: hello"
|
"name: hello"
|
||||||
test "`guix package -s "n0t4r341p4ck4g3"`" = ""
|
test -z "`guix package -s "n0t4r341p4ck4g3"`"
|
||||||
|
|
||||||
# List generations.
|
# List generations.
|
||||||
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
|
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
|
||||||
= " guile-bootstrap"
|
= " guile-bootstrap"
|
||||||
|
|
||||||
|
# Exit with 1 when a generation does not exist.
|
||||||
|
if guix package -p "$profile" --list-generations=42;
|
||||||
|
then false; else true; fi
|
||||||
|
|
||||||
# Remove a package.
|
# Remove a package.
|
||||||
guix package --bootstrap -p "$profile" -r "guile-bootstrap"
|
guix package --bootstrap -p "$profile" -r "guile-bootstrap"
|
||||||
test -L "$profile-3-link"
|
test -L "$profile-3-link"
|
||||||
|
@ -107,11 +111,17 @@ then
|
||||||
test "`readlink_base "$profile"`" = "$profile-0-link"
|
test "`readlink_base "$profile"`" = "$profile-0-link"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Test that '--list-generations' does not output the zeroth generation.
|
||||||
|
test -z "`guix package -p "$profile" -l 0`"
|
||||||
|
|
||||||
# Reinstall after roll-back to the empty profile.
|
# Reinstall after roll-back to the empty profile.
|
||||||
guix package --bootstrap -p "$profile" -e "$boot_make"
|
guix package --bootstrap -p "$profile" -e "$boot_make"
|
||||||
test "`readlink_base "$profile"`" = "$profile-1-link"
|
test "`readlink_base "$profile"`" = "$profile-1-link"
|
||||||
test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
|
test -x "$profile/bin/guile" && ! test -x "$profile/bin/make"
|
||||||
|
|
||||||
|
# Check that the first generation is the current one.
|
||||||
|
test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)"
|
||||||
|
|
||||||
# Roll-back to generation 0, and install---all at once.
|
# Roll-back to generation 0, and install---all at once.
|
||||||
guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap
|
guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap
|
||||||
test "`readlink_base "$profile"`" = "$profile-1-link"
|
test "`readlink_base "$profile"`" = "$profile-1-link"
|
||||||
|
|
|
@ -38,9 +38,10 @@ cp -r "$to_copy" "$new_store_dir"
|
||||||
copied="$new_store_dir/`basename $to_copy`"
|
copied="$new_store_dir/`basename $to_copy`"
|
||||||
|
|
||||||
# Create a file representing a closure with zero references, and with an empty
|
# Create a file representing a closure with zero references, and with an empty
|
||||||
# "deriver" field.
|
# "deriver" field. Note that we give the file name as it appears in the
|
||||||
|
# original store, and 'guix-register' translates it to match the prefix.
|
||||||
cat >> "$closure" <<EOF
|
cat >> "$closure" <<EOF
|
||||||
$copied
|
$to_copy
|
||||||
|
|
||||||
0
|
0
|
||||||
EOF
|
EOF
|
||||||
|
@ -49,26 +50,37 @@ EOF
|
||||||
guix-register -p "$new_store" < "$closure"
|
guix-register -p "$new_store" < "$closure"
|
||||||
|
|
||||||
# Doing it a second time shouldn't hurt.
|
# Doing it a second time shouldn't hurt.
|
||||||
guix-register -p "$new_store" "$closure"
|
guix-register --prefix "$new_store" "$closure"
|
||||||
|
|
||||||
# Now make sure this is recognized as valid.
|
# Now make sure this is recognized as valid.
|
||||||
|
|
||||||
NIX_IGNORE_SYMLINK_STORE=1
|
NIX_IGNORE_SYMLINK_STORE=1
|
||||||
NIX_STORE_DIR="$new_store_dir"
|
NIX_STORE_DIR="$new_store_dir"
|
||||||
NIX_LOCALSTATE_DIR="$new_store$localstatedir"
|
NIX_STATE_DIR="$new_store$localstatedir"
|
||||||
NIX_LOG_DIR="$new_store$localstatedir/log/nix"
|
NIX_LOG_DIR="$new_store$localstatedir/log/nix"
|
||||||
NIX_DB_DIR="$new_store$localstatedir/nix/db"
|
NIX_DB_DIR="$new_store$localstatedir/nix/db"
|
||||||
|
|
||||||
export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR NIX_LOCALSTATE_DIR \
|
export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR NIX_STATE_DIR \
|
||||||
NIX_LOG_DIR NIX_DB_DIR
|
NIX_LOG_DIR NIX_DB_DIR
|
||||||
|
|
||||||
guix-daemon --disable-chroot &
|
guix-daemon --disable-chroot &
|
||||||
subdaemon_pid=$!
|
subdaemon_pid=$!
|
||||||
exit_hook="kill $subdaemon_pid"
|
exit_hook="kill $subdaemon_pid"
|
||||||
|
|
||||||
|
final_name="$storedir/`basename $to_copy`"
|
||||||
|
|
||||||
# At this point the copy in $new_store must be valid, and unreferenced.
|
# At this point the copy in $new_store must be valid, and unreferenced.
|
||||||
|
# The database under $new_store uses the $final_name, but we can't use
|
||||||
|
# that name in a 'valid-path?' query because 'assertStorePath' would kill
|
||||||
|
# us because of the wrong prefix. So we just list dead paths instead.
|
||||||
guile -c "
|
guile -c "
|
||||||
(use-modules (guix store))
|
(use-modules (guix store))
|
||||||
(define s (open-connection))
|
(define s (open-connection))
|
||||||
(exit (and (valid-path? s \"$copied\")
|
(exit (equal? (list \"$copied\") (dead-paths s)))"
|
||||||
(equal? (list \"$copied\") (dead-paths s))))"
|
|
||||||
|
# When 'sqlite3' is available, check the name in the database.
|
||||||
|
if type -P sqlite3
|
||||||
|
then
|
||||||
|
echo "select * from ValidPaths where path=\"$final_name\";" | \
|
||||||
|
sqlite3 $NIX_DB_DIR/db.sqlite
|
||||||
|
fi
|
||||||
|
|
Reference in New Issue