GNU Guix 0.7 released

2014-07-25 Thread Ludovic Courtès
We are pleased to announce the release of GNU Guix version 0.7,
representing 660 commits by 13 people over 4 months.

This release comes with the first image allowing the GNU operating system
to be installed from a USB stick.


• About

  GNU Guix is the functional package manager for the GNU system
  distribution.

  In addition to standard package management features, Guix supports
  transactional upgrades and roll-backs, unprivileged package
  management, per-user profiles, and garbage collection.  It also offers
  a declarative approach to operating system configuration management.
  Guix uses low-level mechanisms from the Nix package manager, with
  Guile Scheme programming interfaces.

  At this stage the GNU system can be used on an i686 or x86_64 machine.
  It is also possible to use Guix on top of an already installed
  GNU/Linux system, including on mips64el.

  http://www.gnu.org/software/guix/


• Download

  Here are the compressed sources and a GPG detached signature[*]:
ftp://alpha.gnu.org/gnu/guix/guix-0.7.tar.gz
ftp://alpha.gnu.org/gnu/guix/guix-0.7.tar.gz.sig

ftp://alpha.gnu.org/gnu/guix/gnu-usb-install-0.7.x86_64.xz
ftp://alpha.gnu.org/gnu/guix/gnu-usb-install-0.7.x86_64.xz.sig
ftp://alpha.gnu.org/gnu/guix/gnu-usb-install-0.7.i686.xz
ftp://alpha.gnu.org/gnu/guix/gnu-usb-install-0.7.i686.xz.sig

  Use a mirror for higher download bandwidth:
http://www.gnu.org/order/ftp.html

  Here are the SHA1 checksums:

  99413e79bb212c51e6da869496bba42e132cb7e2  guix-0.7.tar.gz
  8704d8d6362832181916eac33f62073b54f5ca14  gnu-usb-install-0.7.x86_64.xz
  a8b19583732d8f2def1213bc06a18bb6065826a2  gnu-usb-install-0.7.i686.xz

  [*] Use a .sig file to verify that the corresponding file (without the
  .sig suffix) is intact.  First, be sure to download both the .sig file
  and the corresponding tarball.  Then, run a command like this:

gpg --verify guix-0.7.tar.gz.sig

  If that command fails because you don't have the required public key,
  then run this command to import it:

gpg --keyserver keys.gnupg.net --recv-keys EA52ECF4

  and rerun the 'gpg --verify' command.

  This release was bootstrapped with the following tools:
Autoconf 2.69
Automake 1.14.1
Makeinfo 5.2

  To install the complete GNU operating system, please see
  “System Installation” in the manual.


• Changes since version 0.6 (excerpt from the NEWS file)

  * Changes in 0.7 (since 0.6)
  ** Package management
  *** Binaries for mips64el-linux now available from hydra.gnu.org

  These come in addition to the x86_64-linux and i686-linux binaries already
  provided, thanks to our generous donor and friendly admins.  See
  “Substitutes” in the manual.

  *** ‘guix package’ has a new ‘--show’ option
  *** ‘guix refresh’ has a new ‘--list-dependent’ option

  ** Programming interfaces
  *** New (guix gexp) module, which implements “G-expressions”

  G-expressions are a new mechanism to embed build-side code in host-side
  code.  See “G-Expressions” in the manual.

  *** (gnu system) and related modules now use G-expressions

  This greatly simplifies code, and guarantees that build code carries
  references to the packages or derivations it uses.

  *** ‘build-expression->derivation’ is deprecated in favor of G-expressions
  *** The (gnu system) module has been largely augmented and factorized
  *** New (guix build vm) module, support for virtual machine images
  *** New (guix build activation) module, for “system activation”
  *** New (guix build syscalls) module
  *** New (guix build install) and module for whole system installation
  *** New (gnu system install) module, for the installation system
  *** New (gnu system file-systems) module, for ‘file-system’ declarations
  *** New (gnu) module, which aggregates common (gnu …) modules
  *** ‘service’ records now have an optional ‘activate’ field

  This allows services to specify code to run at system activation time.

  ** GNU distribution
  *** An image to install the GNU system from a USB stick is provided

  This is the first time an installation image is provided.  See “System
  Installation” in the manual for details.  This is work in progress as noted
  in “Limitations”.  Your feedback and help are welcome!

  *** Support for more parameters in ‘operating-system’ declarations

  Operating system declarations can now provide a list of file systems, a list
  of setuid programs, bootloader options, and more.  See “System Configuration”
  in the manual.

  *** ‘guix system’ supports more actions

  Newly supported actions are ‘init’, ‘build’, ‘reconfigure’, and ‘disk-image’.
  See “Invoking guix system” in the manual.

  *** User accounts and groups are created at system activation time
  *** Virtual machine support uses para-virtualized devices
  *** GCC package now has an additional ‘lib’ output, for run-time support libs
  *** GLib package now has a separate “bin” output ()
  *** 134 new packages

  abbaye, aeg

Re: [PATCH] guix: package: Fix recutils output for non-package inputs.

2014-07-25 Thread Ludovic Courtès
Eric Bavier  skribis:

> From 58f3eec4191b94db440d1689edc58e2d551a4722 Mon Sep 17 00:00:00 2001
> From: Eric Bavier 
> Date: Thu, 24 Jul 2014 23:59:00 -0500
> Subject: [PATCH] guix: package: Fix recutils output for non-package inputs.
>
> * guix/ui.scm (package->recutils)[dependencies]: Ignore non-package inputs.

Argh, good catch.

Can you also add this in tests/guix-package.sh:

  # Make sure the recutils output is valid for all the packages.
  guix package --search "" > /dev/null

Thanks,
Ludo’.



Emacs interface for Guix

2014-07-25 Thread Alex Kost
Hello,

I have questions about installing/deleting packages using guile repl.
I know it is possible to ‘(guix-package "--install" "guile-2.0.11")’,
but is there an easy way to install an output of an exact _package
object_?  I mean not any "guile" but #.

I think ‘(guix-package "--install-from-expression" ...)’ is also not
sufficient as it always (?) installs “out”.

If I understand correctly a lot of stuff should be done to perform
such actions properly: at first the new manifest is created from the
current one by adding/removing entries (created from packages) for
installation/deletion, then the derivations are built and symlinks are
updated.

There is a lot of code in “guix/scripts/package.scm” to do all that
stuff and unfortunately not much is exported from this module
(“package->manifest-entry” from “options->installable” would be very
useful for example), and I think trying to include this code in the
helper scheme file for guix.el is not right (besides my scheme foo is
weak and I'm not sure I can do that successfully) that's why I ask
about an easier way.

Thanks, Alex



Re: Emacs interface for Guix

2014-07-25 Thread Ludovic Courtès
Hi, Alex,

Alex Kost  skribis:

> I have questions about installing/deleting packages using guile repl.
> I know it is possible to ‘(guix-package "--install" "guile-2.0.11")’,
> but is there an easy way to install an output of an exact _package
> object_?  I mean not any "guile" but #.
>
> I think ‘(guix-package "--install-from-expression" ...)’ is also not
> sufficient as it always (?) installs “out”.

This is correct.  (It could be worked around by adding a command-line
option to specify another output, but that just hadn’t seem very useful
so far.)

> There is a lot of code in “guix/scripts/package.scm” to do all that
> stuff and unfortunately not much is exported from this module
> (“package->manifest-entry” from “options->installable” would be very
> useful for example), and I think trying to include this code in the
> helper scheme file for guix.el is not right (besides my scheme foo is
> weak and I'm not sure I can do that successfully) that's why I ask
> about an easier way.

Well, you’ve already understood what needs to be done.  :-)

Namely, (guix scripts package) needs to be made more modular, and the
generic bits must be moved to (guix profiles).  Now that there’s a
second consumer for this API, there’s more of an incentive to do it.

I’m willing to help for that, but I’m happy if you give it a try.
WDYT?

Thanks,
Ludo’.



[PATCH] gnu: Add orpheus.

2014-07-25 Thread Eric Bavier
>From 9ffcb2c959be8187c11e5b9d9f29debba57b2c4a Mon Sep 17 00:00:00 2001
From: Eric Bavier 
Date: Thu, 24 Jul 2014 23:40:44 -0500
Subject: [PATCH] gnu: Add orpheus.

* gnu/packages/orpheus.scm: New file.
* gnu/packages/patches/orpheus-cast-errors-and-includes.patch: New patch.
* gnu-system.am (GNU_SYSTEM_MODULES): Add file.
  (dist_patch_DATA): Add patch.
---
 gnu-system.am  |2 +
 gnu/packages/orpheus.scm   |   96 
 .../patches/orpheus-cast-errors-and-includes.patch |   51 +++
 3 files changed, 149 insertions(+)
 create mode 100644 gnu/packages/orpheus.scm
 create mode 100644 gnu/packages/patches/orpheus-cast-errors-and-includes.patch

diff --git a/gnu-system.am b/gnu-system.am
index 6e1e8af..0dc6d26 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -184,6 +184,7 @@ GNU_SYSTEM_MODULES =\
   gnu/packages/onc-rpc.scm			\
   gnu/packages/openldap.scm			\
   gnu/packages/openssl.scm			\
+  gnu/packages/orpheus.scm			\
   gnu/packages/package-management.scm		\
   gnu/packages/parallel.scm			\
   gnu/packages/patchutils.scm			\
@@ -346,6 +347,7 @@ dist_patch_DATA =		\
   gnu/packages/patches/mit-krb5-init-fix.patch			\
   gnu/packages/patches/mpc123-initialize-ao.patch		\
   gnu/packages/patches/module-init-tools-moduledir.patch	\
+  gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
   gnu/packages/patches/patchelf-page-size.patch			\
   gnu/packages/patches/patchutils-xfail-gendiff-tests.patch	\
   gnu/packages/patches/perl-no-sys-dirs.patch			\
diff --git a/gnu/packages/orpheus.scm b/gnu/packages/orpheus.scm
new file mode 100644
index 000..2bc6a6a
--- /dev/null
+++ b/gnu/packages/orpheus.scm
@@ -0,0 +1,96 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Eric Bavier 
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see .
+
+(define-module (gnu packages orpheus)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages mp3)
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages xml))
+
+(define-public orpheus
+  (package
+(name "orpheus")
+(version "1.6")
+(source
+ (origin
+  (method url-fetch)
+  (uri (string-append "http://thekonst.net/download/orpheus-";
+  version ".tar.gz"))
+  (sha256
+   (base32
+"1xbgxq8fybwhm51nw9hvvrgi873qzkc2qvmy15d2m2hw2yqa99hq"))
+  (patches (list (search-patch "orpheus-cast-errors-and-includes.patch")
+(build-system gnu-build-system)
+(inputs
+ `(("ncurses" ,ncurses)
+   ("libvorbis" ,libvorbis)
+   ("vorbis-tools" ,vorbis-tools)
+   ("mpg321" ,mpg321)
+   ;; TODO: add ghttp
+   ("libxml2" ,libxml2)
+   ("which" ,which)))
+(arguments
+ `(#:phases
+   (alist-replace
+'configure
+(lambda* (#:key outputs #:allow-other-keys)
+  ;; This old `configure' script does not support variables passed as
+  ;; arguments.
+  (let ((out (assoc-ref outputs "out")))
+(setenv "CONFIG_SHELL" (which "bash"))
+(setenv "SHELL" (which "bash"))
+(setenv "LIBS" "-logg") ;doesn't declare its use of libogg
+(zero?
+ (system* "./configure" (string-append "--prefix=" out)
+(alist-cons-after
+ 'configure 'configure-players
+ (lambda* (#:key inputs #:allow-other-keys)
+   ;; To avoid propagating the mpg321 and vorbis-tools inputs, we can
+   ;; make the orpheus application execute the needed players from the
+   ;; store.
+   (let ((ogg123 (string-append (assoc-ref inputs "vorbis-tools")
+"/bin/ogg123"))
+ (mpg321 (string-append (assoc-ref inputs "mpg321")
+"/bin/mpg321"))
+ (which  (string-append (assoc-ref inputs "which")
+"/bin/which")))
+ (substitute* "src/orpheusconf.cc"
+   (("ogg123") ogg123)
+   (("which")  which)
+   (("mpg321

Things to do for 0.8

2014-07-25 Thread Ludovic Courtès
Hi,

Here’s a brain dump listing items that I think should be worked on for
the next release:

  - ‘ungexp-native’ added, like ‘ungexp’, but to allow a gexp to
explicitly refer to a native package (in case of cross-compilation.)

  - Build system implementations converted to use gexps.

  - New package API, like ‘package-derivation’ but using gexps.  Some
packages converted to the new style.

  - guix.el integrated, with necessary refactorings done in (guix
profiles) and (guix scripts package).

  - In ‘operating-system’, support for dm-crypt and swap devices added
(among other things.)

  - Improved ‘slim-service’: users can choose among different kinds of
sessions, which requires .desktop files for slim to know about the
session types.

  - New service definitions, new packages, etc.

Thoughts?

Ludo’.



[PATCH] gnu: Add texi2html.

2014-07-25 Thread Eric Bavier
>From e2a9c7cd9015e0ff09b5b3918797b3a64394fea2 Mon Sep 17 00:00:00 2001
From: Eric Bavier 
Date: Fri, 25 Jul 2014 16:37:44 -0500
Subject: [PATCH] gnu: Add texi2html.

* gnu/packages/texinfo.scm (texi2html): New variable.
* gnu/packages/patches/texi2html-document-encoding.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
---
 gnu-system.am  |1 +
 .../patches/texi2html-document-encoding.patch  |   31 +
 gnu/packages/texinfo.scm   |   35 
 3 files changed, 67 insertions(+)
 create mode 100644 gnu/packages/patches/texi2html-document-encoding.patch

diff --git a/gnu-system.am b/gnu-system.am
index 0423d14..32d0c53 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -371,6 +371,7 @@ dist_patch_DATA =		\
   gnu/packages/patches/superlu-dist-scotchmetis.patch		\
   gnu/packages/patches/tcsh-fix-autotest.patch			\
   gnu/packages/patches/teckit-cstdio.patch			\
+  gnu/packages/patches/texi2html-document-encoding.patch	\
   gnu/packages/patches/udev-gir-libtool.patch			\
   gnu/packages/patches/util-linux-perl.patch			\
   gnu/packages/patches/valgrind-glibc.patch			\
diff --git a/gnu/packages/patches/texi2html-document-encoding.patch b/gnu/packages/patches/texi2html-document-encoding.patch
new file mode 100644
index 000..1469b67
--- /dev/null
+++ b/gnu/packages/patches/texi2html-document-encoding.patch
@@ -0,0 +1,31 @@
+Patch derived from discussion at https://savannah.nongnu.org/bugs/?37503
+
+--- texi2html-5.0/texi2html.pl	2010-06-30 17:01:27.0 -0500
 texi2html-5.0/texi2html.pl	2014-07-09 01:17:57.062990582 -0500
+@@ -2589,7 +2589,12 @@
+ my $state = shift;
+ 
+ # FIXME this should be done only once, for @documentencoding
+-my $encoding = lc(Texi2HTML::Config::get_conf('DOCUMENT_ENCODING'));
++my $encoding;
++my $input_encoding = Texi2HTML::Config::get_conf('documentencoding');
++if (defined($input_encoding))
++{
++  $encoding = lc($input_encoding);
++}
+ if (defined($encoding) and $encoding ne '' and exists($Texi2HTML::Config::t2h_encoding_aliases{$encoding}))
+ {
+$encoding = $Texi2HTML::Config::t2h_encoding_aliases{$encoding};
+
+Fix failures in test/encodings.
+
+--- texi2html-5.0/texi2html.pl	2014-07-09 01:22:06.0 -0500
 texi2html-5.0/texi2html.pl	2014-07-10 23:23:47.182097602 -0500
+@@ -53,6 +53,7 @@
+ # for translations
+ #use encoding 'utf8';
+ #use utf8;
++binmode STDERR, ':encoding(utf8)';
+ 
+ #
+ # According to
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index 0f21ec3..9388979 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013 Ludovic Courtès 
+;;; Copyright © 2014 Eric Bavier 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,7 +22,9 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages ncurses))
 
@@ -64,3 +67,35 @@ is on expressing the content semantically, avoiding physical markup commands.")
(base32
 "1rf9ckpqwixj65bw469i634897xwlgkm5i9g2hv3avl6mv7b0a3d"
 (inputs `(("ncurses" ,ncurses) ("xz" ,xz)
+
+(define-public texi2html
+  (package
+(name "texi2html")
+(version "5.0")
+(source (origin
+  (method url-fetch)
+  (uri (string-append "mirror://savannah/" name "/" name "-"
+  version ".tar.bz2"))
+  (sha256
+   (base32
+"1yprv64vrlcbksqv25asplnjg07mbq38lfclp1m5lj8cw878pag8"))
+  (patches (list (search-patch "texi2html-document-encoding.patch")
+(build-system gnu-build-system)
+(native-inputs `(("gettext" ,gnu-gettext)))
+(inputs `(("perl" ,perl)))
+(home-page "http://www.nongnu.org/texi2html/";)
+(synopsis "Convert Texinfo to HTML")
+(description
+ "Texi2HTML is a Perl script which converts Texinfo source files to HTML
+output.  It now supports many advanced features, such as internationalization
+and extremely configurable output formats.
+
+Development of Texi2HTML moved to the GNU Texinfo repository in 2010, since it
+was meant to replace the makeinfo implementation in GNU Texinfo.  The route
+forward for authors is, in most cases, to alter manuals and build processes as
+necessary to use the new features of the makeinfo/texi2any implementation of
+GNU Texinfo.  The Texi2HTML maintainers (one of whom is the principal author
+of the GNU Texinfo implementation) do not intend to make further releases of
+Texi2HTML.")
+;; Files in /lib under lgpl2.1+ and x11
+(license gpl2+)))
-- 
1.7.9.5


-- 
Eric Bavier