Re: New CLI syntax for package version

2016-01-10 Thread Christopher Allan Webber
Ricardo Wurmus writes:

>>   2. underscore, 
>>
>>  emacs_24.5:out
>
> I do not like this one.

Just joining in the chorus, the underscore one really bothers me.

The other options seem fine!



Re: Update R

2016-01-10 Thread Ricardo Wurmus

Andreas Enge  writes:

> I just tried to update R to the latest version 3.2.3 (with the trivial
> patch), which works without problem. I also checked that a few dependent
> packages still build. Is it okay to push to master?

Sounds good to me!  I originally wanted to do this before the weekend
anyway, but didn’t get around to it.

> My main motivation is that R-3.2.2 does not compile on arm (nor on mips),
> which causes a large amount of failed package builds on hydra. Before
> investigating further, it makes sense to move to the latest version.

This has been bugging me too.  I hope things look different with
R-3.2.3.

Thanks!

~~ Ricardo




Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
l...@gnu.org (Ludovic Courtès) writes:

> I have one concern: while running it peaked at 300 MiB resident in
> ‘top’, which is OK on many machines but still quite a lot.  I realize we
> have the same problem with ‘guix pull’ now, but that’s not great.  Part
> of the problem may be that modules are not GC’d.  But anyway, that’s a
> scalability problem.
>
> What do people think?

Well, my observation while testing guix pull was that before, one would
get several Guile processes each taking up about 100 MB memory if I
remember correctly.  (As many processes as one has cores.)  So for dual-
or quad-core devices we're not making things (much) worse, but maybe
some single-core devices with little memory will now have problems.

If it becomes urgent, we could partition the files to be compiled into
subsets and use a few Guile processes to compile them.  Could actually
speed things up on multi-core devices, and would still be much faster
than one-process-per-file on single-core.

> A lesser concern is the long command-line passed to compile-all.scm,
> notably because Emacs’ compilation-mode runs regexps on each line, and
> that takes time proportional to the length of the line, so that leads
> Emacs to hang for a second when it sees that line.  Silly.  ;-)

I use M-x shell so I didn't have the slowness, but it still annoyed me
actually, if only because it's ugly.  (It's also output every time one
runs 'make', even if all .go files are up to date.)

What about silencing it, like:

make-go: $(MODULES) guix/config.scm guix/tests.scm
@echo "Compiling Scheme modules..." ;   \
unset GUILE_LOAD_COMPILED_PATH ;\
...

> Thanks!
> Ludo’.



Re: New CLI syntax for package version

2016-01-10 Thread Ricardo Wurmus

Ludovic Courtès  writes:

> In , we came to the conclusion that we need a
> new syntax to denote a specific package version on the command line.
>
> The current syntax is described in the manual (info "(guix) Invoking
> guix package").  Basically, ‘guile-1.8’ refers to version 1.8.x of
> Guile; however, this syntax has proved to be ambiguous for packages
> whose name contains digits.
>
> For the new syntax, the proposals so far are:
>
>   1. slash, 
>
>  guile:1.8/doc
>  xterm-256-color:320
>  emacs:24.5/out

That’s really “colon”, rather than “slash”.  The slash is used to
separate the output, which reminds me of paths.

>   2. underscore, 
>
>  emacs_24.5:out

I do not like this one.

>   3. at, 
>
>  guile@1.8
>  guile@1.8:doc

I like the “@” because it reads as “guile at [version] 1.8”.  A colon to
separate the output name from the rest works just as well as a slash
(proposed above); I have no preference here.

~~ Ricardo




[PATCH 6/6] emacs: Add interface for system generations.

2016-01-10 Thread Alex Kost
* emacs/guix-main.scm (system-generation-boot-parameters)
(system-generation-param-alist, system-generation-sexps): New procedures.
(entries): Add 'system-generation' entry type.
* emacs/guix-messages.el (guix-result-message): Use the same messages
  for 'generation' and 'system-generation' entry types.
* emacs/guix-ui-system-generation.el: New file.
* emacs.am (ELFILES): Add it.
* doc/emacs.texi (Emacs Commands): Document new commands.
* NEWS: Mention new interface.
---
 NEWS   |   1 +
 doc/emacs.texi |   8 +++
 emacs.am   |   1 +
 emacs/guix-main.scm|  36 +
 emacs/guix-messages.el |   5 +-
 emacs/guix-ui-system-generation.el | 105 +
 6 files changed, 155 insertions(+), 1 deletion(-)
 create mode 100644 emacs/guix-ui-system-generation.el

diff --git a/NEWS b/NEWS
index c35c7d6..0084394 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,7 @@ Please send Guix bug reports to bug-g...@gnu.org.
 
 ** Package management
 
+*** Emacs interface for system generations
 *** Emacs interface for hydra.gnu.org
 *** Changes in Emacs interface variables
 In the following names, BUFFER-TYPE means "info" or "list";
diff --git a/doc/emacs.texi b/doc/emacs.texi
index ea340b1..b2a3d47 100644
--- a/doc/emacs.texi
+++ b/doc/emacs.texi
@@ -191,6 +191,14 @@ date/time prompt,,, org, The Org Manual}).
 
 @end table
 
+Analogously on GuixSD you can also display system generations:
+
+@table @kbd
+@item M-x guix-system-generations
+@item M-x guix-last-system-generations
+@item M-x guix-system-generations-by-time
+@end table
+
 You can also invoke the @command{guix pull} command (@pxref{Invoking
 guix pull}) from Emacs using:
 
diff --git a/emacs.am b/emacs.am
index 85165b9..d0d4dfb 100644
--- a/emacs.am
+++ b/emacs.am
@@ -47,6 +47,7 @@ ELFILES = \
   emacs/guix-ui.el \
   emacs/guix-ui-package.el \
   emacs/guix-ui-generation.el  \
+  emacs/guix-ui-system-generation.el   \
   emacs/guix-utils.el
 
 if HAVE_EMACS
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index 1199679..4baf2df 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -61,6 +61,7 @@
  (guix scripts lint)
  (guix scripts package)
  (guix scripts pull)
+ (guix scripts system)
  (gnu packages))
 
 (define-syntax-rule (first-or-false lst)
@@ -758,6 +759,38 @@ See 'entry-sexps' for details."
 params)))
 (map ->sexp generations)))
 
+(define system-generation-boot-parameters
+  (memoize
+   (lambda (profile generation)
+ "Return boot parameters for PROFILE's system GENERATION."
+ (let* ((gen-file   (generation-file-name profile generation))
+(param-file (string-append gen-file "/parameters")))
+   (call-with-input-file param-file read-boot-parameters)
+
+(define (system-generation-param-alist profile)
+  "Return an alist of system generation parameters and procedures for
+PROFILE."
+  (append (generation-param-alist profile)
+  `((label   . ,(lambda (gen)
+  (boot-parameters-label
+   (system-generation-boot-parameters
+profile gen
+(root-device . ,(lambda (gen)
+  (boot-parameters-root-device
+   (system-generation-boot-parameters
+profile gen
+(kernel  . ,(lambda (gen)
+  (boot-parameters-kernel
+   (system-generation-boot-parameters
+profile gen)))
+
+(define (system-generation-sexps profile params search-type search-vals)
+  "Return an alist with information about system generations."
+  (let ((generations (find-generations profile search-type search-vals))
+(->sexp (object-transformer (system-generation-param-alist profile)
+params)))
+(map ->sexp generations)))
+
 
 ;;; Getting package/output/generation entries (alists).
 
@@ -802,6 +835,9 @@ parameter/value pairs."
 ((generation)
  (generation-sexps profile params
search-type search-vals))
+((system-generation)
+ (system-generation-sexps profile params
+  search-type search-vals))
 (else (entry-type-error entry-type
 
 
diff --git a/emacs/guix-messages.el b/emacs/guix-messages.el
index 9f6d833..c4f15dc 100644
--- a/emacs/guix-messages.el
+++ b/emacs/guix-messages.el
@@ -186,7 +186,10 @@ Try \"M-x guix-search-by-name\"."
 search-type search-vals)
   "Display an appropriate message after displaying ENTRIES."
   (let* ((type-spec (guix-assq-value guix-messages
- entry-type search-type))
+  

[PATCH 3/6] emacs: Find packages in system profiles.

2016-01-10 Thread Alex Kost
For a usual profile, packages are placed in a profile directory itself,
but for a system profile, packages are placed in 'profile'
sub-directory.  So we need to do some special cases for system profiles
to find packages there as well.

* emacs/guix-base.el (guix-packages-profile): New procedure.
  (guix-manifest-file): Use it.  Add optional 'system?' argument.
* emacs/guix-ui-generation.el (guix-system-generation?)
  (guix-generation-current-packages-profile):  New procedures.
  (guix-generation-packages, guix-generation-insert-packages)
  (guix-generation-packages-buffer): Add optional 'system?' argument.
  (guix-profile-generation-manifest-file)
  (guix-profile-generation-packages-buffer): Adjust accordingly.
* emacs/guix-main.scm (generation-package-specifications+paths): Rename to...
  (profile->specifications+paths): ... this.  Use a single 'profile' argument.
---
 emacs/guix-base.el  | 25 ++---
 emacs/guix-main.scm |  9 -
 emacs/guix-ui-generation.el | 36 ++--
 3 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/emacs/guix-base.el b/emacs/guix-base.el
index dae658e..d720a87 100644
--- a/emacs/guix-base.el
+++ b/emacs/guix-base.el
@@ -1,6 +1,6 @@
 ;;; guix-base.el --- Common definitions   -*- lexical-binding: t -*-
 
-;; Copyright © 2014, 2015 Alex Kost 
+;; Copyright © 2014, 2015, 2016 Alex Kost 
 
 ;; This file is part of GNU Guix.
 
@@ -91,14 +91,25 @@ For the meaning of location, see `guix-find-location'."
   "Return the file name of a PROFILE's GENERATION."
   (format "%s-%s-link" profile generation))
 
-(defun guix-manifest-file (profile  generation)
+(defun guix-packages-profile (profile  generation system?)
+  "Return a directory where packages are installed for the
+PROFILE's GENERATION.
+
+If SYSTEM? is non-nil, then PROFILE is considered to be a system
+profile.  Unlike usual profiles, for a system profile, packages
+are placed in 'profile' subdirectory."
+  (let ((profile (if generation
+ (guix-generation-file profile generation)
+   profile)))
+(if system?
+(expand-file-name "profile" profile)
+  profile)))
+
+(defun guix-manifest-file (profile  generation system?)
   "Return the file name of a PROFILE's manifest.
-If GENERATION number is specified, return manifest file name for
-this generation."
+See `guix-packages-profile'."
   (expand-file-name "manifest"
-(if generation
-(guix-generation-file profile generation)
-  profile)))
+(guix-packages-profile profile generation system?)))
 
 ;;;###autoload
 (defun guix-edit (id-or-name)
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index 8c38e7c..5460c96 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Alex Kost 
+;;; Copyright © 2014, 2015, 2016 Alex Kost 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -144,11 +144,10 @@ return two values: name and version.  For example, for 
SPEC
 (manifest-entries->package-specifications
  (manifest-entries manifest
 
-(define (generation-package-specifications+paths profile number)
-  "Return a list of package specifications and paths for generation NUMBER.
+(define (profile->specifications+paths profile)
+  "Return a list of package specifications and paths for PROFILE.
 Each element of the list is a list of the package specification and its path."
-  (let ((manifest (profile-manifest
-   (generation-file-name profile number
+  (let ((manifest (profile-manifest profile)))
 (map (lambda (entry)
(list (manifest-entry->package-specification entry)
  (manifest-entry-item entry)))
diff --git a/emacs/guix-ui-generation.el b/emacs/guix-ui-generation.el
index aa71645..cb32e04 100644
--- a/emacs/guix-ui-generation.el
+++ b/emacs/guix-ui-generation.el
@@ -1,6 +1,6 @@
 ;;; guix-ui-generation.el --- Interface for displaying generations  -*- 
lexical-binding: t -*-
 
-;; Copyright © 2014, 2015 Alex Kost 
+;; Copyright © 2014, 2015, 2016 Alex Kost 
 
 ;; This file is part of GNU Guix.
 
@@ -78,6 +78,18 @@ Each element from GENERATIONS is a generation number."
   'switch-to-generation* profile generation)
  operation-buffer)))
 
+(defun guix-system-generation? ()
+  "Return non-nil, if current generation is a system one."
+  (eq (guix-buffer-current-entry-type)
+  'system-generation))
+
+(defun guix-generation-current-packages-profile ( generation)
+  "Return a directory where packages are installed for the
+current profile's GENERATION."
+  (guix-packages-profile (guix-ui-current-profile)
+ generation
+ (guix-system-generation?)))
+
 
 ;;; 

[PATCH 0/6] emacs: Add "M-x guix-system-generations".

2016-01-10 Thread Alex Kost
This patchset adds commands for displaying system generations — an
emacs analog of 'guix system list-generations' shell command.  The
interface is the same as for "M-x guix-generations", i.e. you can look
at installed "system" packages (by pressing RET on a generation), or
compare 2 generations by pressing "=".

Patches:

[PATCH 1/6] guix system: Export  accessors.

  I just exported this stuff, but perhaps it would be better to move it
  from (guix scripts system) to another module.

[PATCH 2/6] emacs: profiles: Add 'guix-system-profile'.

[PATCH 3/6] emacs: Find packages in system profiles.
[PATCH 4/6] emacs: Replace 'generation-diff' search with 'profile-diff'.
[PATCH 5/6] emacs: Remove 'generation' search type.

  These 3 patches are for some internal changes, related to the fact
  that system packages are installed in "system-NN-link/profile", while
  user packages are installed in "guix-profile-NN-link".

[PATCH 6/6] emacs: Add interface for system generations.

  Is it OK to update 'NEWS' file in this patch?



Texlive work

2016-01-10 Thread Andreas Enge
Hello,

a quick question to all syntax buffs: As a start to some work on the texlive
packages, I switched to modify-phases syntax. Is the indentation correct for
texlive-bin and texlive-texmf in the attached file?

Thanks,

Andreas

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge 
;;; Copyright © 2014 Eric Bavier 
;;; Copyright © 2015 Mark H Weaver 
;;;
;;; 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 texlive)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system trivial)
  #:use-module (gnu packages)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages gd)
  #:use-module (gnu packages ghostscript)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages icu4c)
  #:use-module (gnu packages image)
  #:use-module (gnu packages lua)
  #:use-module (gnu packages multiprecision)
  #:use-module (gnu packages pdf)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)
  #:use-module (gnu packages ruby)
  #:use-module (gnu packages tcsh)
  #:use-module (gnu packages base)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xdisorg)
  #:use-module (gnu packages zip)
  #:autoload   (gnu packages texinfo) (texinfo))

(define texlive-extra-src
  (origin
(method url-fetch)
(uri 
"ftp://tug.org/historic/systems/texlive/2015/texlive-20150523-extra.tar.xz;)
(sha256 (base32
  "1dkhhacga8h1v2m9xv1w02glbdda2m8lfp1la1y1zb9yjj8jsa6i"

(define texlive-texmf-src
  (origin
(method url-fetch)
(uri 
"ftp://tug.org/historic/systems/texlive/2015/texlive-20150523-texmf.tar.xz;)
(sha256 (base32
  "1a3hpcg6x69ysqx432v6sk4alg0x34813cwk41frmvzprdajpyqy"

(define-public texlive-bin
  (package
   (name "texlive-bin")
   (version "2015")
   (source
(origin
 (method url-fetch)
  (uri 
"ftp://tug.org/historic/systems/texlive/2015/texlive-20150521-source.tar.xz;)
  (sha256 (base32
   "0sa6kmz4jwhv6lw702gxszhhjkvw071wba0ngk1c76g8vixwv6zd"
   (build-system gnu-build-system)
   (inputs
`(("texlive-extra-src" ,texlive-extra-src)
  ("cairo" ,cairo)
  ("fontconfig" ,fontconfig)
  ("fontforge" ,fontforge)
  ("freetype" ,freetype)
  ("gd" ,gd)
  ("gmp" ,gmp)
  ("ghostscript" ,ghostscript)
  ("graphite2" ,graphite2)
  ("harfbuzz" ,harfbuzz)
  ("icu4c" ,icu4c)
  ("libpaper" ,libpaper)
  ("libpng" ,libpng)
  ("libxaw" ,libxaw)
  ("libxt" ,libxt)
  ("mpfr" ,mpfr)
  ("perl" ,perl)
  ("pixman" ,pixman)
  ("poppler" ,poppler)
  ("potrace" ,potrace)
  ("python" ,python-2) ; incompatible with Python 3 (print syntax)
  ("ruby" ,ruby)
  ("tcsh" ,tcsh)
  ("teckit" ,teckit)
  ("zlib" ,zlib)
  ("zziplib" ,zziplib)))
   (native-inputs
`(("pkg-config" ,pkg-config)))
   (arguments
`(#:out-of-source? #t
  #:configure-flags
   `("--disable-native-texlive-build"
 "--with-system-cairo"
 "--with-system-freetype2"
 "--with-system-gd"
 "--with-system-gmp"
 "--with-system-graphite2"
 "--with-system-harfbuzz"
 "--with-system-icu"
 "--with-system-libgs"
 "--with-system-libpaper"
 "--with-system-libpng"
 "--with-system-mpfr"
 "--with-system-pixman"
 "--with-system-poppler"
 "--with-system-potrace"
 "--with-system-teckit"
 "--with-system-xpdf"
 "--with-system-zlib"
 "--with-system-zziplib")

  ;; Disable tests on mips64 to cope with a failure of luajiterr.test.
  ;; XXX FIXME fix luajit properly on mips64.
  #:tests? ,(not (string-prefix? "mips64" (or (%current-target-system)
  (%current-system
  #:phases
   (modify-phases %standard-phases
 (add-after 'install 'postint
   (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
 (let* ((out (assoc-ref outputs "out"))
  

Re: [PATCH] build: Fix out-of-tree building of documentation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:

>  .png.eps:
> - convert "$<" "$@-tmp.eps"
> - mv "$@-tmp.eps" "$@"
> + convert "$<" "$(srcdir)/$@-tmp.eps"
> + mv "$(srcdir)/$@-tmp.eps" "$(srcdir)/$@"

Whoops, looks like that rule mustn't be changed.

Updated patch:

>From 80c928d93b9f87e227684a53dc4ce4477698c86b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
 
Date: Sun, 10 Jan 2016 10:14:43 +0100
Subject: [PATCH] build: Fix out-of-tree building of documentation.

* doc.am (.dot.png, .dot.pdf, .dot.eps): Put the generated files into
  $(srcdir).
---
 doc.am | 15 ---
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/doc.am b/doc.am
index e3a91cc..8a5cfdc 100644
--- a/doc.am
+++ b/doc.am
@@ -1,6 +1,7 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès 
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès 
 # Copyright © 2013 Andreas Enge 
+# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer 
 #
 # This file is part of GNU Guix.
 #
@@ -65,16 +66,16 @@ DOT_OPTIONS =	\
   -Nfontsize=9 -Nheight=.1 -Nwidth=.1
 
 .dot.png:
-	$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
-	mv "$@.tmp" "$@"
+	$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
+	mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .dot.pdf:
-	$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$@.tmp"
-	mv "$@.tmp" "$@"
+	$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
+	mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .dot.eps:
-	$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
-	mv "$@.tmp" "$@"
+	$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
+	mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .png.eps:
 	convert "$<" "$@-tmp.eps"
-- 
2.6.3



Re: [PATCH] Update Ruby to 2.3.0

2016-01-10 Thread Ben Woodcroft



On 09/01/16 02:52, Ludovic Courtès wrote:

Ben Woodcroft  skribis:


 From 28dee96b0de99adf8657457660b9e3733434d2b4 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft 
Date: Mon, 4 Jan 2016 09:38:42 +1000
Subject: [PATCH 4/4] gnu: ruby: Update to 2.3.0.

* gnu/packages/ruby.scm (ruby): Update to 2.3.0.

Please mention the switch to ‘modify-phases’ here.

I even made it a separate commit.

[..]

I overlooked this part before but: (1) this looks weird (the spaces
around ‘=’ suggest it’s Makefile syntax, not shell syntax), and (2) we
shouldn’t use the bundled libffi.

How much work would it be to fix #2?  It would be awesome if you could
do that.  Sorry for the extra work!
All good, was easy to fix. I also removed it from ruby-2.2 which bundles 
the same libffi version.


However, it seems 11 rubygems are also bundled. To unbundle these and 
deal with the circular dependencies, I reckon we should create a new 
ruby-base package that removes the bundled gems, then we package the 11 
gems and their dependencies using ruby-base, and the 'ruby' package then 
inherits from ruby-base but also propagates the 11 gems. However I don't 
think I have time to implement this right now, especially since most of 
the 11 haven't been packaged by us yet and core-updates is to be merged 
soon.


So do we merge this update as-is or wait for a more perfect solution?

+(define-public ruby-2.2
+  (package (inherit ruby)
+(version "2.2.4")
+(source
+ (origin
+   (method url-fetch)
+   (uri (string-append "http://cache.ruby-lang.org/pub/ruby/;
+   (version-major+minor version)
+   "/ruby-" version ".tar.bz2"))
+   (sha256
+(base32
+ "0g3ps4q3iz7wj9m45n8xyxzw8nh29ljdqb87b0f6i0p3853gz2yj"
+(arguments
+ `(#:test-target "test"
+   #:parallel-tests? #f
+   #:phases
+   (alist-cons-before
+'configure 'replace-bin-sh
+(lambda _
+  (substitute* '("Makefile.in"
+ "ext/pty/pty.c"
+ "io.c"
+ "lib/mkmf.rb"
+ "process.c"
+ "test/rubygems/test_gem_ext_configure_builder.rb"
+ "test/rdoc/test_rdoc_parser.rb"
+ "test/ruby/test_rubyoptions.rb"
+ "test/ruby/test_process.rb"
+ "test/ruby/test_system.rb"
+ "tool/rbinstall.rb")
+(("/bin/sh") (which "sh"
+%standard-phases)

AFAICS all of ‘arguments’ can be omitted once the above libffi
substitution is removed.

(If it there’s still a need for different phases, it should use
‘substitute-keyword-arguments’ to modify only #:phases, and then
‘modify-phases’ rather than ‘alist-cons-before’.)

Thanks for the tip, but ruby-2.2 is a now simple inherit.


Could you send an updated patch, hopefully the last one?  :-)

Please feel free to suggest further changes if you spot anything further.

Thanks for the review,
ben



Re: Update R

2016-01-10 Thread Andreas Enge
On Sun, Jan 10, 2016 at 09:26:55AM +0100, Ricardo Wurmus wrote:
> Sounds good to me!  I originally wanted to do this before the weekend
> anyway, but didn’t get around to it.

I just pushed, thanks!

Andreas




[PATCH 5/6] emacs: Remove 'generation' search type.

2016-01-10 Thread Alex Kost
Use 'installed' search type instead.

* emacs/guix-main.scm (%patterns-makers): Remove 'generation'.
  (package/output-sexps): Adjust accordingly.
* emacs/guix-ui-generation.el (guix-generation-info-insert-number):
  Replace 'generation' search with 'installed'.
  (guix-generation-list-show-packages): Likewise.
* emacs/guix-messages.el (guix-messages): Remove 'generation'.
---
 emacs/guix-main.scm |  7 +--
 emacs/guix-messages.el  | 16 +---
 emacs/guix-ui-generation.el |  9 +
 3 files changed, 7 insertions(+), 25 deletions(-)

diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index dfa9cba..1199679 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -668,7 +668,6 @@ ENTRIES is a list of installed manifest entries."
(id   . ,(apply-to-rest ids->package-patterns))
(name . ,(apply-to-rest specifications->package-patterns))
(installed. ,manifest-package-proc)
-   (generation   . ,manifest-package-proc)
(obsolete . ,(apply-to-first obsolete-package-patterns))
(regexp   . ,regexp-proc)
(all-available. ,all-proc)
@@ -677,7 +676,6 @@ ENTRIES is a list of installed manifest entries."
(id   . ,(apply-to-rest ids->output-patterns))
(name . ,(apply-to-rest specifications->output-patterns))
(installed. ,manifest-output-proc)
-   (generation   . ,manifest-output-proc)
(obsolete . ,(apply-to-first obsolete-output-patterns))
(regexp   . ,regexp-proc)
(all-available. ,all-proc)
@@ -692,10 +690,7 @@ ENTRIES is a list of installed manifest entries."
   search-type search-vals)
   "Return information about packages or package outputs.
 See 'entry-sexps' for details."
-  (let* ((profile (if (eq? search-type 'generation)
-  (generation-file-name profile (car search-vals))
-  profile))
- (manifest (profile-manifest profile))
+  (let* ((manifest (profile-manifest profile))
  (patterns (if (and (eq? entry-type 'output)
 (eq? search-type 'profile-diff))
(match search-vals
diff --git a/emacs/guix-messages.el b/emacs/guix-messages.el
index 234d3d1..9f6d833 100644
--- a/emacs/guix-messages.el
+++ b/emacs/guix-messages.el
@@ -55,14 +55,7 @@
  (obsolete
   (0 "No obsolete packages in profile '%s'." profile)
   (1 "A single obsolete package in profile '%s'." profile)
-  (many "%d obsolete packages in profile '%s'." count profile))
- (generation
-  (0 "No packages installed in generation %d of profile '%s'."
- val profile)
-  (1 "A single package installed in generation %d of profile '%s'."
- val profile)
-  (many "%d packages installed in generation %d of profile '%s'."
-count val profile)))
+  (many "%d obsolete packages in profile '%s'." count profile)))
 
 (output
  (id
@@ -91,13 +84,6 @@
   (0 "No obsolete package outputs in profile '%s'." profile)
   (1 "A single obsolete package output in profile '%s'." profile)
   (many "%d obsolete package outputs in profile '%s'." count profile))
- (generation
-  (0 "No package outputs installed in generation %d of profile '%s'."
- val profile)
-  (1 "A single package output installed in generation %d of profile '%s'."
- val profile)
-  (many "%d package outputs installed in generation %d of profile '%s'."
-count val profile))
  (profile-diff
   guix-message-outputs-by-diff))
 
diff --git a/emacs/guix-ui-generation.el b/emacs/guix-ui-generation.el
index eebcedf..5d55c4c 100644
--- a/emacs/guix-ui-generation.el
+++ b/emacs/guix-ui-generation.el
@@ -127,8 +127,9 @@ current profile's GENERATION."
(lambda (btn)
  (guix-buffer-get-display-entries
   'list guix-package-list-type
-  (list (guix-ui-current-profile)
-'generation (button-get btn 'number))
+  (list (guix-generation-current-packages-profile
+ (button-get btn 'number))
+'installed)
   'add))
"Show installed packages for this generation"
'number number)
@@ -202,8 +203,8 @@ VAL is a boolean value."
   "List installed packages for the generation at point."
   (interactive)
   (guix-package-get-display
-   (guix-ui-current-profile)
-   'generation (guix-list-current-id)))
+   (guix-generation-current-packages-profile (guix-list-current-id))
+   'installed))
 
 (defun guix-generation-list-generations-to-compare ()
   "Return a sorted list of 2 marked generations for comparing."
-- 
2.6.3




[PATCH 2/6] emacs: profiles: Add 'guix-system-profile'.

2016-01-10 Thread Alex Kost
* emacs/guix-profiles.el (guix-system-profile): New variable.
---
 emacs/guix-profiles.el | 7 ++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/emacs/guix-profiles.el b/emacs/guix-profiles.el
index 2c19368..43ad1d4 100644
--- a/emacs/guix-profiles.el
+++ b/emacs/guix-profiles.el
@@ -1,6 +1,7 @@
 ;;; guix-profiles.el --- Guix profiles
 
-;; Copyright © 2014 Alex Kost 
+;; Copyright © 2014, 2015, 2016 Alex Kost 
+;; Copyright © 2015 Mathieu Lirzin 
 
 ;; This file is part of GNU Guix.
 
@@ -25,6 +26,10 @@
   (expand-file-name "~/.guix-profile")
   "User profile.")
 
+(defvar guix-system-profile
+  (concat guix-config-state-directory "/profiles/system")
+  "System profile.")
+
 (defvar guix-default-profile
   (concat guix-config-state-directory
   "/profiles/per-user/"
-- 
2.6.3




Re: [PATCH] Update Ruby to 2.3.0

2016-01-10 Thread Ben Woodcroft



On 10/01/16 22:53, Ben Woodcroft wrote:



On 09/01/16 02:52, Ludovic Courtès wrote:

Ben Woodcroft  skribis:


 From 28dee96b0de99adf8657457660b9e3733434d2b4 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft 
Date: Mon, 4 Jan 2016 09:38:42 +1000
Subject: [PATCH 4/4] gnu: ruby: Update to 2.3.0.

* gnu/packages/ruby.scm (ruby): Update to 2.3.0.

Please mention the switch to ‘modify-phases’ here.

I even made it a separate commit.

Forgot to attach patches.
>From 2f26295b5a163cfc5d37332a501dcba5c40fb956 Mon Sep 17 00:00:00 2001
From: Ben Woodcroft 
Date: Mon, 4 Jan 2016 09:38:42 +1000
Subject: [PATCH 5/5] gnu: ruby: Update to 2.3.0.

* gnu/packages/ruby.scm (ruby): Update to 2.3.0.
[arguments]: Remove bundled libffi.  Use parallel tests.
(ruby-2.2): New variable.
---
 gnu/packages/ruby.scm | 23 +++
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 2b7496a..d2cdcf0 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -46,7 +46,7 @@
 (define-public ruby
   (package
 (name "ruby")
-(version "2.2.4")
+(version "2.3.0")
 (source
  (origin
(method url-fetch)
@@ -55,14 +55,13 @@
"/ruby-" version ".tar.xz"))
(sha256
 (base32
- "0g3ps4q3iz7wj9m45n8xyxzw8nh29ljdqb87b0f6i0p3853gz2yj"
+ "15s0dsb5ynf3d2w5gzawnszq5594fqvapv2y7a0qw16przq5l4kh"
 (build-system gnu-build-system)
 (arguments
  `(#:test-target "test"
-   #:parallel-tests? #f
#:phases
(modify-phases %standard-phases
- (add-before 'configure 'replace-bin-sh
+ (add-before 'configure 'replace-bin-sh-and-remove-libffi
(lambda _
  (substitute* '("Makefile.in"
 "ext/pty/pty.c"
@@ -76,6 +75,9 @@
 "test/ruby/test_system.rb"
 "tool/rbinstall.rb")
(("/bin/sh") (which "sh")))
+ ;; Remove bundled libffi
+ (delete-file-recursively
+  (string-append "ext/fiddle/libffi-3.2.1"))
  #t)
 (inputs
  `(("readline" ,readline)
@@ -95,6 +97,19 @@ a focus on simplicity and productivity.")
 (home-page "https://ruby-lang.org;)
 (license license:ruby)))
 
+(define-public ruby-2.2
+  (package (inherit ruby)
+(version "2.2.4")
+(source
+ (origin
+   (method url-fetch)
+   (uri (string-append "http://cache.ruby-lang.org/pub/ruby/;
+   (version-major+minor version)
+   "/ruby-" version ".tar.xz"))
+   (sha256
+(base32
+ "0g3ps4q3iz7wj9m45n8xyxzw8nh29ljdqb87b0f6i0p3853gz2yj"))
+
 (define-public ruby-2.1
   (package (inherit ruby)
 (version "2.1.6")
-- 
2.6.3

>From 551ecbd280eb35cb8e67cedf50e4a93f618cab1e Mon Sep 17 00:00:00 2001
From: Ben Woodcroft 
Date: Sun, 10 Jan 2016 22:25:45 +1000
Subject: [PATCH 4/5] gnu: ruby: Use modify-phases.

* gnu/packages/ruby.scm (ruby)[arguments]: Use modify-phases.
---
 gnu/packages/ruby.scm | 32 
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 1564a54..2b7496a 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -61,22 +61,22 @@
  `(#:test-target "test"
#:parallel-tests? #f
#:phases
-   (alist-cons-before
-'configure 'replace-bin-sh
-(lambda _
-  (substitute* '("Makefile.in"
- "ext/pty/pty.c"
- "io.c"
- "lib/mkmf.rb"
- "process.c"
- "test/rubygems/test_gem_ext_configure_builder.rb"
- "test/rdoc/test_rdoc_parser.rb"
- "test/ruby/test_rubyoptions.rb"
- "test/ruby/test_process.rb"
- "test/ruby/test_system.rb"
- "tool/rbinstall.rb")
-(("/bin/sh") (which "sh"
-%standard-phases)))
+   (modify-phases %standard-phases
+ (add-before 'configure 'replace-bin-sh
+   (lambda _
+ (substitute* '("Makefile.in"
+"ext/pty/pty.c"
+"io.c"
+"lib/mkmf.rb"
+"process.c"
+"test/rubygems/test_gem_ext_configure_builder.rb"
+"test/rdoc/test_rdoc_parser.rb"
+"test/ruby/test_rubyoptions.rb"
+"test/ruby/test_process.rb"
+"test/ruby/test_system.rb"
+"tool/rbinstall.rb")
+   (("/bin/sh") (which "sh")))
+ #t)
 (inputs
  

Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
l...@gnu.org (Ludovic Courtès) writes:

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:
>
>> It should have the same improvement as 'guix pull' since it does
>> basically the same thing.  I measured to make things concrete, and on my
>> machine the run time of 'make -j4' decreases from ~26m to ~6m.
>
> On my 4-core machine, it takes a bit less than 2mn.

OK, this is weird.  Something I did, sadly I don't know anymore what,
seems to have lead to .go files related to Guix's source tree being
cached in my $XDG_CACHE_HOME, after which running 'make -j4' in a clean
(but not newly cloned) repo indeed took only about 3 minutes.  I noticed
from lines like:

;;; note: source file ./guix/config.scm
;;;   newer than compiled 
/home/taylan/.cache/guile/ccache/2.0-LE-8-2.0/home/taylan/src/guix/build/guix/config.scm.go

Could it be that the same is the case for you?

Is this actually normal and I've been missing out the whole time? :-)
Maybe something in my setup/workflow while building guix gets in the way
of proper caching.

Taylan



Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Mathieu Lirzin
Let me say first that I found this an amazing work!

taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:

> -AM_V_GUILEC = $(AM_V_GUILEC_$(V))
> -AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
> -AM_V_GUILEC_0 = @echo "  GUILEC" $@;
> -
> -# Flags passed to 'guild compile'.
> -GUILD_COMPILE_FLAGS =\
> -  -Wformat -Wunbound-variable -Warity-mismatch
> -

It would make sense to me to keep compile options in Makefile.am and
pass them as a command line argument to compile-all.scm.  Maybe renaming
it GUILECFLAGS or GUILEC_FLAGS or GUILE_COMPILE_FLAGS would be better (I
think Automake won't like GUILE_CFLAGS).

>  # Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling.  Otherwise, if
>  # $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in
>  # there that are newer than the local .scm files (for instance because the
> @@ -358,14 +346,16 @@ GUILD_COMPILE_FLAGS =   \
>  #
>  # XXX: Use the C locale for when Guile lacks
>  # 
> .
   ^^^

> -.scm.go:
> - $(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ;   \
> +%.go: make-go ; @:
> +make-go: $(MODULES) guix/config.scm guix/tests.scm
> + @echo "Compiling Scheme modules..." ;   \
>   unset GUILE_LOAD_COMPILED_PATH ;\
>   LC_ALL=C\
^^^

This is present because (scripts compile) from "old" Guile doesn't do it
automatically.  What about copying the code from the link above in
compile-all.scm and removing this from Makefile.am ?

> + host=$(host) srcdir="$(top_srcdir)" \
>   $(top_builddir)/pre-inst-env\
> - $(GUILD) compile -L "$(top_builddir)" -L "$(top_srcdir)"\
> -   $(GUILD_COMPILE_FLAGS) --target="$(host)" \
> -   -o "$@" "$<"
> + $(GUILE) -L "$(top_builddir)" -L "$(top_srcdir)"\
> +   --no-auto-compile \
> +   -s "$(top_srcdir)"/build-aux/compile-all.scm $^
>  
>  SUFFIXES = .go
>  
> @@ -457,6 +447,6 @@ assert-final-inputs-self-contained:
>   $(top_builddir)/pre-inst-env "$(GUILE)" \
> "$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
>  
> -.PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go
> +.PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go make-go
>  .PHONY: assert-no-store-file-names assert-binaries-available
>  .PHONY: assert-final-inputs-self-contained
> diff --git a/build-aux/compile-all.scm b/build-aux/compile-all.scm
> new file mode 100644
> index 000..924ec39
> --- /dev/null
> +++ b/build-aux/compile-all.scm
[...]
> +;;; To work around  (FIXME), we want to load all
> +;;; files to be compiled first.  We do this via resolve-interface so that the
> +;;; top-level of each file (module) is only executed once.
> +(define (load-module-file file)
> +  (let ((module (file->module file)))
> +(format #t "  LOAD ~a~%" module)
 ^^^
> +(resolve-interface module)))
> +
> +(define (compile-file* file output-mutex)
> +  (let ((go (scm->go file)))
> +(with-mutex output-mutex
> +  (format #t "  GUILEC ~a~%" go)
 ^^^
I know this was already aligned this way before, but IMO It would look
cleaner to use the same alignment as Automake default silent rules (CC,
GEN, MAKEINFO...) with 11 characters including space before ‘~A’:

  (format #t "  LOAD ~A~%" source)
  (format #t "  GUILEC   ~A~%" source)


Thanks,

--
Mathieu Lirzin



Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Mathieu Lirzin
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:

>> that takes time proportional to the length of the line, so that leads
>> Emacs to hang for a second when it sees that line.  Silly.  ;-)
>
> I use M-x shell so I didn't have the slowness, but it still annoyed me
> actually, if only because it's ugly.  (It's also output every time one
> runs 'make', even if all .go files are up to date.)
>
> What about silencing it, like:
>
> make-go: $(MODULES) guix/config.scm guix/tests.scm
>   @echo "Compiling Scheme modules..." ;   \
>   unset GUILE_LOAD_COMPILED_PATH ;\
>   ...

It would be better to use $(AM_V_at), because this will match user
verbosity choice.  With "make V=1" user will have the actual commmand
displayed but with "make V=0" which is the default value nothing will be
displayed.

--
Mathieu Lirzin



Re: [PATCH] Upgrade bedtools to 0.25.0.

2016-01-10 Thread Ben Woodcroft



On 10/01/16 06:32, Leo Famulari wrote:

On Sat, Jan 09, 2016 at 07:07:42PM +0100, Ricardo Wurmus wrote:

Ben Woodcroft  writes:


A reasonably straightforward update.

I think you forgot to also remove the “bedtools-32bit-compilation.patch”
file from “gnu/packages/patches”.

In that case, the patch can also be "de-listed" from gnu-system.am,
unless it is being used by another package.

Oh yes, those.



Otherwise I agree with Andreas about separating the stylistic from the
functional changes by doing two commits.

Pushed as two commits, thanks.

ben



Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Mark H Weaver
l...@gnu.org (Ludovic Courtès) writes:

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:
>
>> +  (with-target target
>> +(lambda ()
>> +  (let ((mutex (make-mutex)))
>> +(par-for-each
>> + (lambda (file)
>> +   (let ((go (scm->go file)))
>> + (unless (and (file-exists? go)
>> +  (file-mtime> +   (with-mutex mutex
>> + (format #t "  GUILEC ~s~%" file)
>> + (force-output))
>> +   (compile-file file #:output-file go #:opts compile-options)
>> +   (with-mutex mutex
>> + (format #t "  WROTE ~s~%" go)
>> + (force-output)
>> + files)

I'm sorry I haven't been following this discussion closely, but let me
first say that the performance gains you've been able to achieve are
very exciting.  Thanks for working on this!

Unfortunately, I have concerns:

A few people mentioned on IRC that when doing these concurrent
compilations within a single process, they sometimes see warnings like
this:

;;; WARNING (module # not in submodules table)

I haven't yet investigated, but my strong suspicion is that this is due
to the fact that Guile's module system is not thread safe.  More
specifically, when a new module is created, it mutates the global
directory of modules in a way that is not thread safe.

New modules are created by 'compile-file', both for the module being
compiled and for any imported modules that haven't been previously
loaded.  Unfortunately, this means that this approach of compiling files
in multiple threads within a single guile process is not safe.  There
are likely to be random crashes and corruptions.

I suggest that for now, the best way can do safely is to adopt an
approach of running multiple Guile processes, where each one compiles
multiple files within a single thread.

Regards,
  Mark



Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
l...@gnu.org (Ludovic Courtès) writes:

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:
>
>> I'm having headaches with distcheck.  Currently it bails out because I'm
>> missing tex.  Debian's version is apparently too old, and Guix's version
>> is huge and has been downloading for many hours now.  I'll report back
>> again when I'm done with that.

Distcheck passes.

I also made sure make passes at the absence of gnutls in the
environment.  This obsoletes the hack in the Makefile that was mentioned
on IRC yesterday; here's an updated patch.

>From 61eab1edf73f5af9689fb1e776474fa1921a57fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
 
Date: Thu, 5 Nov 2015 23:42:45 +0100
Subject: [PATCH] build: Speed up .go compilation.

* build-aux/compile-all.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
(%.go, make-go): New rules.
---
 Makefile.am   | 28 ++--
 build-aux/compile-all.scm | 82 +++
 2 files changed, 91 insertions(+), 19 deletions(-)
 create mode 100644 build-aux/compile-all.scm

diff --git a/Makefile.am b/Makefile.am
index 760caed..0b9f2b4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -152,11 +152,6 @@ endif BUILD_DAEMON_OFFLOAD
 # Internal module with test suite support.
 dist_noinst_DATA = guix/tests.scm
 
-# Because of the autoload hack in (guix build download), we must build it
-# first to avoid errors on systems where (gnutls) is unavailable.
-guix/scripts/download.go: guix/build/download.go
-guix/download.go: guix/build/download.go
-
 # Linux-Libre configurations.
 KCONFIGS =	\
   gnu/packages/linux-libre-i686.conf		\
@@ -302,6 +297,7 @@ EXTRA_DIST =		\
   CODE-OF-CONDUCT	\
   .dir-locals.el	\
   build-aux/build-self.scm\
+  build-aux/compile-all.scm\
   build-aux/hydra/gnu-system.scm			\
   build-aux/hydra/demo-os.scm\
   build-aux/hydra/guix.scm\
@@ -341,14 +337,6 @@ CLEANFILES =	\
   $(GOBJECTS)	\
   $(SCM_TESTS:tests/%.scm=%.log)
 
-AM_V_GUILEC = $(AM_V_GUILEC_$(V))
-AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
-AM_V_GUILEC_0 = @echo "  GUILEC" $@;
-
-# Flags passed to 'guild compile'.
-GUILD_COMPILE_FLAGS =\
-  -Wformat -Wunbound-variable -Warity-mismatch
-
 # Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling.  Otherwise, if
 # $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in
 # there that are newer than the local .scm files (for instance because the
@@ -358,14 +346,16 @@ GUILD_COMPILE_FLAGS =\
 #
 # XXX: Use the C locale for when Guile lacks
 # .
-.scm.go:
-	$(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ;			\
+%.go: make-go ; @:
+make-go: $(MODULES) guix/config.scm guix/tests.scm
+	@echo "Compiling Scheme modules..." ;\
 	unset GUILE_LOAD_COMPILED_PATH ;\
 	LC_ALL=C			\
+	host=$(host) srcdir="$(top_srcdir)"\
 	$(top_builddir)/pre-inst-env	\
-	$(GUILD) compile -L "$(top_builddir)" -L "$(top_srcdir)"	\
-	  $(GUILD_COMPILE_FLAGS) --target="$(host)"			\
-	  -o "$@" "$<"
+	$(GUILE) -L "$(top_builddir)" -L "$(top_srcdir)"		\
+	  --no-auto-compile 		\
+	  -s "$(top_srcdir)"/build-aux/compile-all.scm $^
 
 SUFFIXES = .go
 
@@ -457,6 +447,6 @@ assert-final-inputs-self-contained:
 	$(top_builddir)/pre-inst-env "$(GUILE)"\
 	  "$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
 
-.PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go
+.PHONY: sync-descriptions gen-ChangeLog gen-AUTHORS clean-go make-go
 .PHONY: assert-no-store-file-names assert-binaries-available
 .PHONY: assert-final-inputs-self-contained
diff --git a/build-aux/compile-all.scm b/build-aux/compile-all.scm
new file mode 100644
index 000..924ec39
--- /dev/null
+++ b/build-aux/compile-all.scm
@@ -0,0 +1,82 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Taylan Ulrich Bayırlı/Kammer 
+;;;
+;;; 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 .
+
+(use-modules (system base target)
+ (ice-9 match)
+ (ice-9 threads)
+ (guix build utils))
+
+(define compile-options '(format unbound-variable arity-mismatch))
+
+(define host (getenv 

Re: [PATCH 2/4] emacs: Move loading packages to "guix-emacs.el".

2016-01-10 Thread Ludovic Courtès
Alex Kost  skribis:

> * emacs/guix-init.el: Move the code for auto-loading Emacs packages to...
>   (guix-package-enable-at-startup): Move to...
> * emacs/guix-emacs.el (guix-package-enable-at-startup): ... here.

OK!

Ludo'.



Re: [PATCH 3/4] gnu: emacs: Find packages in "~/.guix-profile".

2016-01-10 Thread Ludovic Courtès
Alex Kost  skribis:

> From: Federico Beffa 
>
> * gnu/packages/emacs.scm (emacs)[inputs]: Add 'guix-src' input.
>   [arguments]: Add 'install-site-start' phase.

[...]

> + (add-after 'install 'install-site-start

Could you add a comment like:

  ;; Copy guix-emacs.el from Guix and add it to site-start.el.  This
  ;; way, Emacs packages provided by Guix and installed in
  ;; ~/.guix-profile/share/emacs/site-lisp/guix.d/PACKAGE-VERSION are
  ;; automatically found.

Otherwise LGTM.

Also, on GuixSD, should we remove the default EMACSLOADPATH as well as
/etc/emacs/site-start.el?

Ludo’.



Re: [v3 1/2] gnu: w3m: Update patch to use '-p1'.

2016-01-10 Thread Ludovic Courtès
Leo Famulari  skribis:

> On Wed, Jan 06, 2016 at 11:33:28AM +0100, Ludovic Courtès wrote:
>> Leo Famulari  skribis:
>> 
>> > * gnu/packages/patches/w3m-fix-compile.patch: Update to work with -p1.
>> > * gnu/packages/w3m.scm (w3m): Drop patch flag -p0.
>> 
>> I would rename the patch to, say, ‘w3m-libgc.patch’, for clarity.
>> 
>> > --- a/gnu/packages/patches/w3m-fix-compile.patch
>> > +++ b/gnu/packages/patches/w3m-fix-compile.patch
>> > @@ -1,15 +1,27 @@
>> > +From 371f256f5f300b01be228a6fd95884ea475965fc Mon Sep 17 00:00:00 2001
>> > +From: Leo Famulari 
>> > +Date: Tue, 5 Jan 2016 16:57:29 -0500
>> > +Subject: [PATCH 1/4] fix compile
>> > +
>> >  https://bugs.archlinux.org/task/33397
>> 
>> Could you remove the Git header and write something like:
>> 
>>   This patch fixes w3m compilation with libgc > X.Y.
>> 
>> (If I understand correctly what it does.)
>
> Done.
>
>> 
>> However, I’m surprised this is needed since libgc hasn’t changed lately?
>
> It's for libgc-7.2, released 2012-05-11.
>
> You may also notice the substitution of "file_handle" in w3m's package
> definition. That's because glibc decided to start using the identifier
> "file_handle" in 2011 [0]. The problem was reported to w3m on the last
> day of 2011 [1]. It was patched in the distros in 2012 but nothing from
> upstream.

OK.  Thanks for the explanation.

Ludo’.



Re: reproducibility

2016-01-10 Thread Ludovic Courtès
Federico Beffa  skribis:

> I've noticed that a derivation is a function of the order of the
> inputs. As an example, the following two input orders give rise to two
> distinct derivations:
>
> A)
>
> (inputs
>  `(("texlive" ,texlive)
>("texinfo" ,texinfo)
>("m4" ,m4)
>("libx11" ,libx11))
>
> B)
> (inputs
>  `(("texinfo" ,texinfo)
>("texlive" ,texlive)
>("m4" ,m4)
>("libx11" ,libx11))
>
> Is this intentional?

Yes.  There are several places where order matters, most importantly
search paths, and these are computed from the input lists.

Ludo’.



Re: [PATCH 5/6] gnu: mit-scheme: Generate and install documentation.

2016-01-10 Thread Ludovic Courtès
Federico Beffa  skribis:

> On Sat, Jan 9, 2016 at 7:42 PM, Ludovic Courtès  wrote:
>> Federico Beffa  skribis:
>>> MIT Scheme is a complex system and without the documentation it's not
>>> possible to use it proficiently.
>>
>> Agreed, I didn’t mean to imply we should give up on documentation.
>>
>> I just realized that its documentation is in Texinfo format.  What about
>> simply installing the Info format like we do for other GNU packages, and
>> not the PDF/PS/DVI version?
>
> Texinfo is great for looking up pieces of information in a reference
> manual.

You mean Info, right?

> However, when it comes to reading a sizable part, I much prefer PDFs
> with a much superior graphic quality and scaling capability and would
> like to keep it (my eyes aren't in great conditions). I think we can
> drop PS. DVI is not installed. HTML is required by
> 'emacs-mit-scheme-doc'.

One can choose the font family and size for Info documents viewed in
Emacs (or even in a terminal.)  :-)  I find that Info is much more
convenient when reading on a computer because of its interface to
navigate the document, search the indexes, and search for words.

The thing is, we could make an exception for MIT Scheme and provide PDF
and/or HTML in addition to Info.

However, what should we do with the whole set of GNU packages?  I’m
very much in favor of keeping only Info by default, possibly with a few
exceptions.

WDYT?

Ludo’.



Re: [PATCH 4/4] doc: Describe how Emacs packages are found.

2016-01-10 Thread Ludovic Courtès
Alex Kost  skribis:

> * doc/guix.texi (Application Setup)[Emacs Packages]: New subsection.

[...]

> +directory for each package is a good idea.  It is very similar to how
> +Emacs package system organizes the file structure (@pxref{Package
  ^^

“the Emacs package system”
 ^^^

> +By default, Emacs (installed with Guix) ``knows'' where these packages
> +are placed, so you don't need to perform any configuring.  If, for some

s/configuring/configuration/

> +reason, you want to avoid auto-loading Emacs packages, installed with
^
Remove comma.

Perfect, thank you & Federico for working on this!  It’s definitely an
improvement.

Ludo’.



Re: [PATCH 4/6] gnu: Add emacs-constants.

2016-01-10 Thread Ludovic Courtès
Federico Beffa  skribis:

> On Tue, Jan 5, 2016 at 11:08 PM, Ludovic Courtès  wrote:
>> Federico Beffa  skribis:
>
>>> +(define* (uncompressed-file-fetch url hash-algo hash
>>> +  #:optional name
>>> +  #:key (system (%current-system))
>>> +  (guile (default-guile)))
>>> +  (mlet %store-monad ((drv (url-fetch url hash-algo hash name
>>> +  #:system system
>>> +  #:guile guile)))
>>> +(gexp->derivation (or name (basename url))
>>> +  #~(begin
>>> +  (mkdir #$output)
>>> +  (setenv "PATH"
>>> +  (string-append #$gzip "/bin"))
>>> +  (chdir #$output)
>>> +  (copy-file #$drv (basename #$url))
>>
>> The dependency on gzip can be removed.
>>
>> Also, the second derivation is okay, but kind of wasteful: it only
>> serves to move the file in a directory so the patch-application logic
>> can work.
>
> Of course it would be better if the patch logic would recognize this
> case. Then we wouldn't need the above procedure.

It depends on the maintenance cost, because it’s a rare use case, I think.

>> However, I’m unsure the patch in question really belongs here.  After
>> all, there’s just one file, and additionally it’s called ‘constants.el’!
>> ;-)
>
> I'm not sure I understand what you are trying to say. Could you please
> be more explicit.

[...]

>>   https://github.com/emacsmirror/constants/blob/master/constants.el
>>
>> Is the patch yours?  If yes, could you find an upstream to submit it
>> too?  If there’s no such thing, you could always become the upstream.
>> ;-)
>
> The above URL is just a snapshot of the file. No activity whatsoever.
>
> Yes, the patch is mine, following suggestions in the file itself. It
> is to make the package usable with lisp like syntax so that you don't
> get e.g.:
>
> c = 2.99...e8
>
> when you insert a constant in a scheme/lisp buffer. Isn't this project
> fanatic about scheme? ;-)

It is!  :-)

> I don't think there is an upstream. In any case I have no intention of
> becoming one.

You’re effectively becoming one, though.

Could get in touch with Carsten Dominik, for instance, and propose the
patch?

If he has no interest or is unresponsive, then we can choose to maintain
it in Guix as you propose.  But since the changes are not Guix-specific
in any way, I think our job is to first try to get it upstream.

Does that make sense?

Thanks,
Ludo’.



Re: [PATCH] Add Bioconductor importer and updater.

2016-01-10 Thread Ludovic Courtès
Ricardo Wurmus  skribis:

> From 616e5ca0d7d76718172b7f0373a10744e3df7731 Mon Sep 17 00:00:00 2001
> From: Ricardo Wurmus 
> Date: Wed, 16 Dec 2015 14:45:28 +0100
> Subject: [PATCH] import: Add Bioconductor importer and updater.
>
> * guix/import/cran.scm (%bioconductor-updater,
> latest-bioconductor-release, bioconductor-package?): New procedures.
> (cran->guix-package): Support repositories other than CRAN.
> (%bioconductor-url, %bioconductor-svn-url): New variables.
> (description->package): Update signature to distinguish between packages
> from different repositories.
> (latest-release): Rename procedure ...
> (latest-cran-release): ... to this.
> (cran-package?): Do not assume all R packages are available on CRAN.
> * tests/cran.scm: Update tests.
> * guix/scripts/import/cran.scm: Add "--archive" option and default to
> CRAN.
> * guix/scripts/refresh.scm (%updaters): Add "%bioconductor-updater".
> * doc/guix.texi: Document Bioconductor importer and updater.

[...]

> +Information is extracted from a package's DESCRIPTION file published on

@file{DESCRIPTION}

Apart from that, OK to push!

Thank you!

Ludo’.



Re: [PATCH] gnu: aspell: Wrap binary to find dictionaries.

2016-01-10 Thread Ludovic Courtès
Federico Beffa  skribis:

> From e183f8e473b97406968ecbda9fb13ebdf60963ec Mon Sep 17 00:00:00 2001
> From: Federico Beffa 
> Date: Fri, 8 Jan 2016 14:23:12 +0100
> Subject: [PATCH 11/11] gnu: aspell: Wrap binary to find dictionaries.
>
> * gnu/packages/aspell.scm (aspell): Add 'wrap-aspell phase.

Good idea, LGTM!

As Alex suggests, bonus point if you add the following change to this
commit:

diff --git a/gnu/system.scm b/gnu/system.scm
index 4aedb7e..aab18ef 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -457,9 +457,6 @@ else
   export PATH=\"$HOME/.guix-profile/bin:$PATH\"
 fi
 
-# Allow Aspell to find dictionaries installed in the user profile.
-export ASPELL_CONF=\"dict-dir $HOME/.guix-profile/lib/aspell\"
-
 # Allow GStreamer-based applications to find plugins.
 export GST_PLUGIN_PATH=\"$HOME/.guix-profile/lib/gstreamer-1.0\"
 

Thanks!

Ludo’.


Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
Mathieu Lirzin  writes:

> Let me say first that I found this an amazing work!

Thanks. :-)

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:
>
>> -AM_V_GUILEC = $(AM_V_GUILEC_$(V))
>> -AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
>> -AM_V_GUILEC_0 = @echo "  GUILEC" $@;
>> -
>> -# Flags passed to 'guild compile'.
>> -GUILD_COMPILE_FLAGS =   \
>> -  -Wformat -Wunbound-variable -Warity-mismatch
>> -
>
> It would make sense to me to keep compile options in Makefile.am and
> pass them as a command line argument to compile-all.scm.  Maybe renaming
> it GUILECFLAGS or GUILEC_FLAGS or GUILE_COMPILE_FLAGS would be better (I
> think Automake won't like GUILE_CFLAGS).

Hmm, the flags are a list of symbols in the Scheme code.  This has no
obvious representation in the Makefile.  I guess the closest is a
whitespace separated list of strings that would be turned into a list of
symbols.  Do you think it's worth this added complexity, or is there a
better way?

>>  # Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling.  Otherwise, 
>> if
>>  # $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in
>>  # there that are newer than the local .scm files (for instance because the
>> @@ -358,14 +346,16 @@ GUILD_COMPILE_FLAGS =  \
>>  #
>>  # XXX: Use the C locale for when Guile lacks
>>  # 
>> .
>^^^
>
>> -.scm.go:
>> -$(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ;   \
>> +%.go: make-go ; @:
>> +make-go: $(MODULES) guix/config.scm guix/tests.scm
>> +@echo "Compiling Scheme modules..." ;   \
>>  unset GUILE_LOAD_COMPILED_PATH ;\
>>  LC_ALL=C\
> ^^^
>
> This is present because (scripts compile) from "old" Guile doesn't do it
> automatically.  What about copying the code from the link above in
> compile-all.scm and removing this from Makefile.am ?

I should be using the whole (catch ...) expression, right?  Done, thanks
for the heads up.

>> +;;; To work around  (FIXME), we want to load all
>> +;;; files to be compiled first.  We do this via resolve-interface so that 
>> the
>> +;;; top-level of each file (module) is only executed once.
>> +(define (load-module-file file)
>> +  (let ((module (file->module file)))
>> +(format #t "  LOAD ~a~%" module)
>  ^^^
>> +(resolve-interface module)))
>> +
>> +(define (compile-file* file output-mutex)
>> +  (let ((go (scm->go file)))
>> +(with-mutex output-mutex
>> +  (format #t "  GUILEC ~a~%" go)
>  ^^^
> I know this was already aligned this way before, but IMO It would look
> cleaner to use the same alignment as Automake default silent rules (CC,
> GEN, MAKEINFO...) with 11 characters including space before ‘~A’:
>
>   (format #t "  LOAD ~A~%" source)
>   (format #t "  GUILEC   ~A~%" source)

Done.

> Thanks,

Thanks for looking over it!

> --
> Mathieu Lirzin

Taylan



Re: [PATCH] build: Fix out-of-tree building of documentation.

2016-01-10 Thread Ludovic Courtès
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:

> From 80c928d93b9f87e227684a53dc4ce4477698c86b Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
>  
> Date: Sun, 10 Jan 2016 10:14:43 +0100
> Subject: [PATCH] build: Fix out-of-tree building of documentation.
>
> * doc.am (.dot.png, .dot.pdf, .dot.eps): Put the generated files into
>   $(srcdir).

LGTM.  If ‘make distcheck’ is still happy, go for it!

Thanks,
Ludo’.



Re: [PATCH 5/6] gnu: mit-scheme: Generate and install documentation.

2016-01-10 Thread Federico Beffa
On Sun, Jan 10, 2016 at 7:50 PM, Ludovic Courtès  wrote:
> Federico Beffa  skribis:
>> Texinfo is great for looking up pieces of information in a reference
>> manual.
>
> You mean Info, right?

yes.

>
>> However, when it comes to reading a sizable part, I much prefer PDFs
>> with a much superior graphic quality and scaling capability and would
>> like to keep it (my eyes aren't in great conditions). I think we can
>> drop PS. DVI is not installed. HTML is required by
>> 'emacs-mit-scheme-doc'.
>
> One can choose the font family and size for Info documents viewed in
> Emacs (or even in a terminal.)  :-)  I find that Info is much more
> convenient when reading on a computer because of its interface to
> navigate the document, search the indexes, and search for words.

I know that you can choose font and size in emacs and console. But the
fact stays that the rendered quality difference is very large. I do
not know what to add... Many peoples claim not to see much difference.
I and some friends do see a large difference. Obviously the
visual-system varies a lot between peoples.

As said, I agree that for looking up reference information the Info
format is pretty good.

>
> The thing is, we could make an exception for MIT Scheme and provide PDF
> and/or HTML in addition to Info.
>
> However, what should we do with the whole set of GNU packages?  I’m
> very much in favor of keeping only Info by default, possibly with a few
> exceptions.

HTML is not better than Info. Here we only need to keep it for
'emacs-mit-scheme-doc' to work. This is functionality for mit-scheme
whereby Emacs looks up the documentation for the identifier at point.

For PDFs, it depends on the type and quality of the manual. If it is
short and/or poor, then nobody will spend hours reading it. But if the
manual is good and long, then there is a chance that people will spend
a lot of time reading it and it would be nice to have a good quality
environment to read it (again, I'm talking about font graphics
rendering).

This is analogous to making public buildings suitable for people with
wheel-chairs, ... may people don't care, until they are affected :-(

Regards,
Fede



Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Mathieu Lirzin
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:

> Mathieu Lirzin  writes:
>
>> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:
>>
>>> -AM_V_GUILEC = $(AM_V_GUILEC_$(V))
>>> -AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
>>> -AM_V_GUILEC_0 = @echo "  GUILEC" $@;
>>> -
>>> -# Flags passed to 'guild compile'.
>>> -GUILD_COMPILE_FLAGS =  \
>>> -  -Wformat -Wunbound-variable -Warity-mismatch
>>> -
>>
>> It would make sense to me to keep compile options in Makefile.am and
>> pass them as a command line argument to compile-all.scm.  Maybe renaming
>> it GUILECFLAGS or GUILEC_FLAGS or GUILE_COMPILE_FLAGS would be better (I
>> think Automake won't like GUILE_CFLAGS).
>
> Hmm, the flags are a list of symbols in the Scheme code.  This has no
> obvious representation in the Makefile.  I guess the closest is a
> whitespace separated list of strings that would be turned into a list of
> symbols.  Do you think it's worth this added complexity, or is there a
> better way?

I overlooked that what I proposed would require (ice-9 getopt-long).
Please ignore this suggestion, I think it would only make sense to
implement this later if we want a generic version of compile-all.scm.

>>>  # Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling.  Otherwise, 
>>> if
>>>  # $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in
>>>  # there that are newer than the local .scm files (for instance because the
>>> @@ -358,14 +346,16 @@ GUILD_COMPILE_FLAGS = \
>>>  #
>>>  # XXX: Use the C locale for when Guile lacks
>>>  # 
>>> .
>>^^^
>>
>>> -.scm.go:
>>> -   $(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ;   \
>>> +%.go: make-go ; @:
>>> +make-go: $(MODULES) guix/config.scm guix/tests.scm
>>> +   @echo "Compiling Scheme modules..." ;   \
>>> unset GUILE_LOAD_COMPILED_PATH ;\
>>> LC_ALL=C\
>> ^^^
>>
>> This is present because (scripts compile) from "old" Guile doesn't do it
>> automatically.  What about copying the code from the link above in
>> compile-all.scm and removing this from Makefile.am ?
>
> I should be using the whole (catch ...) expression, right?  Done, thanks
> for the heads up.

Yes I suppose.  Maybe Ludo can confirm?

--
Mathieu Lirzin



Re: [PATCH 0/4] Make Emacs find packages in "~/.guix-profile".

2016-01-10 Thread Ludovic Courtès
Alex Kost  skribis:

> So this is a full patchset to "teach" Emacs how to find emacs packages
> installed with Guix.  See conversation at
> .
>
> [PATCH 1/4] emacs: Make "guix-emacs.el" independent.
> [PATCH 2/4] emacs: Move loading packages to "guix-emacs.el".
> [PATCH 3/4] gnu: emacs: Find packages in "~/.guix-profile".
> [PATCH 4/4] doc: Describe how Emacs packages are found.
>
> There is an important nuance: the 3rd patch MUST NOT be committed along
> with the first 2 patches, because it will make our Emacs package use an
> old source of 'guix' which does not contain the required changes.  So I
> think we should:
>
> 1. Push the patches 1 and 2.
>
> 2. Wait for the next update of the 'guix-devel' snapshot (last time it
>was updated in November¹, so it will probably happen soon).
>
> 3. And finally push the patches 3 and 4.

OK.  Note that we can update ‘guix-devel’ whenever we want.  So if you
take care of pushing things, feel free to do it yourself!

Will comment on the rest separately.

Ludo’.



Re: [PATCH 1/4] emacs: Make "guix-emacs.el" independent.

2016-01-10 Thread Ludovic Courtès
Alex Kost  skribis:

> "guix-emacs.el" may be used just for "instructing" Emacs where to find
> Emacs packages installed with Guix, so it should have as minimal
> dependencies as possible.

s/minimal/few/

> See .
>
> * emacs/guix-emacs.el: Require 'guix-profiles' optionally.
>   (guix-emacs-load-autoloads): Use 'guix-profile-prompt' only if it is
>   available.

LGTM.

Ludo'.



Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
Mark H Weaver  writes:

> I'm sorry I haven't been following this discussion closely, but let me
> first say that the performance gains you've been able to achieve are
> very exciting.  Thanks for working on this!

Hi Mark, thanks for the kind words. :-)

> Unfortunately, I have concerns:
>
> A few people mentioned on IRC that when doing these concurrent
> compilations within a single process, they sometimes see warnings like
> this:
>
> ;;; WARNING (module # not in submodules table)
>
> I haven't yet investigated, but my strong suspicion is that this is due
> to the fact that Guile's module system is not thread safe.  More
> specifically, when a new module is created, it mutates the global
> directory of modules in a way that is not thread safe.
>
> New modules are created by 'compile-file', both for the module being
> compiled and for any imported modules that haven't been previously
> loaded.  Unfortunately, this means that this approach of compiling files
> in multiple threads within a single guile process is not safe.  There
> are likely to be random crashes and corruptions.
>
> I suggest that for now, the best way can do safely is to adopt an
> approach of running multiple Guile processes, where each one compiles
> multiple files within a single thread.

The latest version of the patch loads all needed modules first, in the
main thread, and then compiles the files corresponding to the modules in
parallel.  Does that still lead to mutation in the directory of modules
in the parallelized segment of the code?

> Regards,
>   Mark

Taylan



Re: [v3 1/2] gnu: w3m: Update patch to use '-p1'.

2016-01-10 Thread Ludovic Courtès
Leo Famulari  skribis:

> On Wed, Jan 06, 2016 at 11:33:55AM +0100, Ludovic Courtès wrote:
>> Leo Famulari  skribis:
>> 
>> > * gnu/packages/patches/w3m-fix-compile.patch: Update to work with -p1.
>> > * gnu/packages/w3m.scm (w3m): Drop patch flag -p0.
>> 
>> I forgot: please add the patch to gnu-system.am.
>
> This patch was already there. I just adjusted (and now, renamed) the
> patch prefix level from '-p0' to '-p1'.

Oh I see, sorry for the confusion.

Ludo’.



Re: [PATCH] Update Ruby to 2.3.0

2016-01-10 Thread Ludovic Courtès
Ben Woodcroft  skribis:

> From 2f26295b5a163cfc5d37332a501dcba5c40fb956 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft 
> Date: Mon, 4 Jan 2016 09:38:42 +1000
> Subject: [PATCH 5/5] gnu: ruby: Update to 2.3.0.
>
> * gnu/packages/ruby.scm (ruby): Update to 2.3.0.
> [arguments]: Remove bundled libffi.  Use parallel tests.
> (ruby-2.2): New variable.

[...]

> + ;; Remove bundled libffi
> + (delete-file-recursively
> +  (string-append "ext/fiddle/libffi-3.2.1"))

I should have mentioned it before, but could you move the removal to a
‘snippet’ in the origin?

This is not critical, so if you feel like you won’t have time now, we
can leave that for later.

Otherwise the patch is OK for ‘core-updates’.

> From 551ecbd280eb35cb8e67cedf50e4a93f618cab1e Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft 
> Date: Sun, 10 Jan 2016 22:25:45 +1000
> Subject: [PATCH 4/5] gnu: ruby: Use modify-phases.
>
> * gnu/packages/ruby.scm (ruby)[arguments]: Use modify-phases.

OK.

> From 015a0e17be804dd7f68f21cde8a878ff353a4a97 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft 
> Date: Fri, 8 Jan 2016 17:29:39 +1000
> Subject: [PATCH 3/5] ruby: Abstract out path to GEM_HOME.
>
> Previously paths to the GEM_HOME of certain Ruby packages were
> hard-coded, so packages failed to build when Ruby was updated to 2.3.0.
>
> * guix/build/ruby-build-system.scm (gem-home): New procedure.
> * gnu/packages/ruby.scm (ruby-metaclass, ruby-instantiator,
> ruby-introspection, ruby-mocha, ruby-minitest-tu-shim): Use it.

LGTM.

However, ultimately, we should pass the Ruby version as a keyword
parameter on the build side or have a build-side procedure akin to
‘get-python-version’ in python-build-system.scm (I’d prefer the former.)

That way, phases could query the version number of the Ruby that’s
actually used instead of using the version number of whatever variant
the global ‘ruby’ variable refers to.  This would allow users to simply
change the “ruby” input of a package and have it automatically work with
the new package.

Does that make sense?

This can always be done after the ‘core-updates’ merge, no rush.

> From 048036aee522d6a03436bf530d139ec26d8a438e Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft 
> Date: Wed, 6 Jan 2016 21:57:44 +1000
> Subject: [PATCH 2/5] gnu: ruby-yard: Disable failing test.
>
> * gnu/packages/ruby.scm (ruby-yard)[arguments]: Disable test which fails on
> Ruby 2.3.0.

OK.

> From 3918146b6179f211fb7ef955f74561f9b1460a8b Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft 
> Date: Wed, 6 Jan 2016 21:23:15 +1000
> Subject: [PATCH 1/5] gnu: ruby-power-assert: Update to 0.2.7.
>
> * gnu/packages/ruby.scm (ruby-power-assert): Update to 0.2.7.

OK.

Thank you!

Ludo’.



Re: [PATCH] import: Move beautify description from cran to utils. (was Re: [PATCH 6/6] gnu: Add emacs-slime.)

2016-01-10 Thread Ludovic Courtès
Ben Woodcroft  skribis:

> From e3bad19a07d6a9fdf3045619232a24b77a1a5d12 Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft 
> Date: Wed, 6 Jan 2016 00:09:19 +1000
> Subject: [PATCH 1/2] import: cran: Move beautify-description to utils module.
>
> * guix/import/cran.scm (beautify-description): Move from here...
> * guix/import/utils.scm: ... to here.

[...]

> From eb65d0ef0140ac2828b608c31ae19893861fea3a Mon Sep 17 00:00:00 2001
> From: Ben Woodcroft 
> Date: Wed, 6 Jan 2016 00:17:36 +1000
> Subject: [PATCH 2/2] import: gem: Beautify description field.
>
> * guix/import/gem.scm (gem->guix-package): Use 'beautify-description'.

LGTM, thanks!

Ludo'.



Re: [PATCH] build: Fix out-of-tree building of documentation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
l...@gnu.org (Ludovic Courtès) writes:

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:
>
>> From 80c928d93b9f87e227684a53dc4ce4477698c86b Mon Sep 17 00:00:00 2001
>> From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
>>  
>> Date: Sun, 10 Jan 2016 10:14:43 +0100
>> Subject: [PATCH] build: Fix out-of-tree building of documentation.
>>
>> * doc.am (.dot.png, .dot.pdf, .dot.eps): Put the generated files into
>>   $(srcdir).
>
> LGTM.  If ‘make distcheck’ is still happy, go for it!

Yup, pushed.

> Thanks,
> Ludo’.

Taylan



Re: [PATCH] build: Speed up .go compilation.

2016-01-10 Thread Taylan Ulrich Bayırlı/Kammer
Mathieu Lirzin  writes:

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:
>
>>> that takes time proportional to the length of the line, so that leads
>>> Emacs to hang for a second when it sees that line.  Silly.  ;-)
>>
>> I use M-x shell so I didn't have the slowness, but it still annoyed me
>> actually, if only because it's ugly.  (It's also output every time one
>> runs 'make', even if all .go files are up to date.)
>>
>> What about silencing it, like:
>>
>> make-go: $(MODULES) guix/config.scm guix/tests.scm
>>  @echo "Compiling Scheme modules..." ;   \
>>  unset GUILE_LOAD_COMPILED_PATH ;\
>>  ...
>
> It would be better to use $(AM_V_at), because this will match user
> verbosity choice.  With "make V=1" user will have the actual commmand
> displayed but with "make V=0" which is the default value nothing will be
> displayed.

Done, thanks for the recommendation.

> --
> Mathieu Lirzin



[sr #108948] Renaming 'dmd' to 'shepherd'

2016-01-10 Thread Ludovic Courtès
Follow-up Comment #2, sr #108948 (project administration):

Hi Karl,

Thanks for the super fast reply!  Indeed, the discussion with rms took place
in private.

I'll email the sysadmins and maintainers lists to complete the migration.

Thank you!

Ludo'.

___

Reply to this item at:

  

___
  Message sent via/by Savannah
  http://savannah.gnu.org/




Re: [PATCH 5/6] gnu: mit-scheme: Generate and install documentation.

2016-01-10 Thread Mathieu Lirzin
Hi,

Federico Beffa  writes:

> HTML is not better than Info. Here we only need to keep it for
> 'emacs-mit-scheme-doc' to work. This is functionality for mit-scheme
> whereby Emacs looks up the documentation for the identifier at point.
>
> For PDFs, it depends on the type and quality of the manual. If it is
> short and/or poor, then nobody will spend hours reading it. But if the
> manual is good and long, then there is a chance that people will spend
> a lot of time reading it and it would be nice to have a good quality
> environment to read it (again, I'm talking about font graphics
> rendering).
>
> This is analogous to making public buildings suitable for people with
> wheel-chairs, ... may people don't care, until they are affected :-(

Sorry I don't understand your analogy.  IIUC the discussion is about
what should be installed with the default output.  Putting the PDF
version of the manual in the 'doc' output will not prevent anyone to use
it.  Did I miss something?

--
Mathieu Lirzin



Re: [PATCH] gnu: boost: Update to 1.60.0

2016-01-10 Thread Andreas Enge
On Wed, Jan 06, 2016 at 11:18:19PM +0100, Ludovic Courtès wrote:
> It has 140 dependent packages, including LibreOffice, so kinda
> borderline for master.  It’s probably safer on a separate branch that
> Hydra will build.  Mark?

Finally hydra picked up the branch. Unfortunately, the new boost fails
to build on mips:
   http://hydra.gnu.org/build/914532

I find it difficult to see what is the problem in the build log
(C++, eh?)...

Andreas