Re: [PATCH 2/2] gnu: Add Mlucas.

2015-11-06 Thread Andreas Enge
Hello!

I must admit I was put off looking at this patch by the addition of the
flags system, of which I do not understand the justification. Basically,
it seems to be an additional layer on top of what we already have in
our different build systems. We have #:configure-flags and #:make-flags,
and in extreme cases we can set environment variables such as CPPFLAGS
and so on in an additional phase. Commonly used flags can be added to the
build systems once and for all, for others, my impression is that we already
have the mechanisms for doing it on a per package basis. Which problem does
this part of the patch solve?

On Mon, Oct 26, 2015 at 12:34:59PM +0100, Paul van der Walt wrote:
> > * gnu/packages/mlucas.scm: New file.
> I'm not an expert, and i'm not 100% sure on this so it's an honest
> question, but does this application really deserve a new package file?
> Shouldn't mlucas perhaps be added to maths.scm?

It should go to algebra.scm, which regroups tools of symbolic, exact
computation (whereas maths.scm contains tools for numerical computation).

Andreas




Re: [PATCH] edit: Friendlier error message.

2015-11-06 Thread Andreas Enge
On Thu, Nov 05, 2015 at 12:08:35PM +0100, Ludovic Courtès wrote:
> > +(unless (search-path (parse-path (getenv "PATH")) (%editor))
> > +  (leave (_ "Couldn't find editor '~a'. Please check $EDITOR and 
> > $PATH.")
> > + (%editor)))

An additional, heterodox suggestion: Maybe also test for $VISUAL.

Andreas




Re: Where is (guix ui)?

2015-11-06 Thread Andreas Enge
On Fri, Nov 06, 2015 at 03:11:13PM +0100, Ludovic Courtès wrote:
> The problem is not in your build tree: the error reported here comes
> from ‘guix substitute’, which is invoked by ‘guix-daemon’.

Thanks for this observation, and sorry for not noticing it myself!

> Above, we see that /usr/local/guix-git/bin/guix is being run, so maybe
> this /usr/local/guix-git installation is corrupt or incomplete?

Yes indeed, as I had deleted a .scm file, I wanted to make sure it was not
installed any more, and removed the entire /usr/local/guix-git/share/guile/
directory. I was not aware that guix-daemon was not a stand-alone binary,
thanks for pointing it out!

Andreas




[PATCH] Add microscheme.

2015-11-06 Thread Ricardo Wurmus
>From 6fd419709fe93511fc519701d4e496f95aba84e4 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Fri, 6 Nov 2015 22:35:33 +0100
Subject: [PATCH 1/2] gnu: Add prefix to license imports in (gnu packages avr).

* gnu/packages/avr.scm: Import (guix licenses) with prefix "license:".
---
 gnu/packages/avr.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index d7ca1b1..105c741 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -17,7 +17,7 @@
 ;;; along with GNU Guix.  If not, see .
 
 (define-module (gnu packages avr)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix download)
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
@@ -48,4 +48,4 @@
 (description
  "AVR Libc is a project whose goal is to provide a high quality C library
 for use with GCC on Atmel AVR microcontrollers.")
-(license (non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt";
+(license (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt";
-- 
2.5.0

>From 1900f3015162cc777ee79883a0cae2a21216d99c Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Fri, 6 Nov 2015 22:37:40 +0100
Subject: [PATCH 2/2] gnu: Add microscheme.

* gnu/packages/avr.scm (microscheme): New variable.
---
 gnu/packages/avr.scm | 42 +-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 105c741..d59816b 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis 
+;;; Copyright © 2015 Ricardo Wurmus 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,7 +23,9 @@
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
-  #:use-module (gnu packages cross-base))
+  #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages vim)
+  #:use-module (gnu packages zip))
 
 (define-public avr-libc
   (package
@@ -49,3 +52,40 @@
  "AVR Libc is a project whose goal is to provide a high quality C library
 for use with GCC on Atmel AVR microcontrollers.")
 (license (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt";
+
+(define-public microscheme
+  (package
+(name "microscheme")
+(version "0.9.2")
+(source (origin
+  (method url-fetch)
+  (uri (string-append "https://github.com/ryansuchocki/";
+  "microscheme/archive/v" version ".zip"))
+  (sha256
+   (base32
+"0cmp1c6ilcib4w9ysqghav310g8jsq9gdfpfa9sd23wgl7mlncxf"))
+  (file-name (string-append name "-" version ".zip"
+(build-system gnu-build-system)
+(arguments
+ `(#:parallel-build? #f ; fails to build otherwise
+   #:tests? #f ; no tests
+   #:phases
+   (modify-phases %standard-phases
+ (delete 'configure))
+   #:make-flags
+   (list (string-append "PREFIX=" (assoc-ref %outputs "out")
+(native-inputs
+ `(("unzip" ,unzip)
+   ("vim" ,vim))) ; for xxd
+(home-page "http://microscheme.org/";)
+(synopsis "Scheme subset for Atmel microcontrollers")
+(description
+ "Microscheme, or @code{(ms)} for short, is a functional programming
+language for the Arduino, and for Atmel 8-bit AVR microcontrollers in general.
+Microscheme is a subset of Scheme, in the sense that every valid @code{(ms)}
+program is also a valid Scheme program (with the exception of Arduino
+hardware-specific primitives).  The @code{(ms)} compiler performs function
+inlining, and features an aggressive tree-shaker, eliminating unused top-level
+definitions.  Microscheme has a robust @dfn{Foreign Function Interface} (FFI)
+meaning that C code may be invoked directly from (ms) programs.")
+(license license:expat)))
-- 
2.5.0



Re: [PATCH] build: Add a scheme custom test driver using SRFI-64.

2015-11-06 Thread Ludovic Courtès
Mathieu Lirzin  skribis:

> As suggested, I've created a “wip-check” for this patch.

Cool.

[...]

>> Is GNU cpio available in $PATH?  Which version is that?  Could you run
>> this test in ‘master’ to see if the problem shows up?
>
> Yeah the test pass in master.

So I suppose I can leave the burden on you to find out what’s going on?
:-)

Ludo’.



Re: [PATCH] Add btrfs-progs.

2015-11-06 Thread Ludovic Courtès
Hi!

Patrick Hetu  skribis:

> I still need to figure out how to get rid of the "fsck.btrfs not
> found" when the system boots. Maybe it needs to be in the initrd.

(gnu build file-systems) is where “fsck.foo” is invoked, in
‘check-file-system’.

The other place to look at is ‘base-initrd’ in (gnu system
linux-initrd), where the ‘helper-packages’ variable hosts packages to be
added to the initrd.

If you adjust these two things, it should be possible to boot on a Btrfs
file system.

However note that there’s an ext2 superblock parser in (gnu build
file-systems), which is used to find partition labels and so on.  This
won’t work on Btrfs partitions I suppose, so you’ll have to refer to
them by device name rather than by label or UUID.

> Note that I'm also adding it to %base-packages like e2fsprogs.

I think I’d rather avoid it by default.  Users can still add it to their
‘packages’ field.

Now, we could add it in (gnu system install) so people can create Btrfs
partition from the installer.  That should be a separate commit, though.

> From 982302084d16b53b878b36cc29f4e0cefc2df608 Mon Sep 17 00:00:00 2001
> From: Patrick Hetu 
> Date: Thu, 5 Nov 2015 17:01:42 -0500
> Subject: [PATCH] gnu: Add btrfs-progs.

The MUA ate the patch!  It seems lines were wrapped or something.  Could
you send it again, the gnu/packages part?

Also, it would be great if you could try to write a commit entry in
ChangeLog format; see
.

Thank you!

Ludo’.



Re: [PATCH] Add BLESS

2015-11-06 Thread Ludovic Courtès
Ricardo Wurmus  skribis:

> Alex Kost  writes:
>
>> Ricardo Wurmus (2015-11-06 17:28 +0300) wrote:
>>
>> [...]
>>> I have taken your recipe and removed more bundled sources in a snippet.
>>> There’s still bundled stuff that we should get rid of, most importantly
>>> kmc, which brings its own executables.
>>>
>>> I also changed the description based on the paper; instead of patching
>>> the Makefile I overwrite the make flags.
>>>
>>> Attached is a patch.  Does this work for you?
>>> What do others think about this patch?
>>
>> Oops, too late for the comment, but still:
>>
>> [...]
>>> +(define-public bless
>>> +  (package
>>> +(name "bless")
>>> +(version "1p02")
>>> +(source (origin
>>> +  (method url-fetch)
>>> +  (uri (string-append "mirror://sourceforge/bless-ec/bless.v"
>>> +  version ".tgz"))
>>> +  (sha256
>>> +   (base32
>>> +   "0rm0gw2s18dqwzzpl3c2x1z05ni2v0xz5dmfk3d33j6g4cgrlrdd"))
>> tabulation ↑ here
>>
>>> +(modules '((guix build utils)))
>> and wrong indentation ↑ here
>
> Ah!  I didn’t see this.  (So embarrassing.)

Heheh.  :-)
‘guix lint’ should report tabs.

> What would the correct commit message be to fix this?  Will you fix
> this?

Whatever makes sense to you.

Ludo’.



Re: [PATCH] website: Add support for Haunt.

2015-11-06 Thread Thompson, David
On Fri, Nov 6, 2015 at 3:47 PM, Ludovic Courtès  wrote:
> "Thompson, David"  skribis:
>
>> On Thu, Nov 5, 2015 at 4:25 PM, Ludovic Courtès  wrote:
>>> Mathieu Lirzin  skribis:
>>>
 +Building the website depends on the static site generator:
 +
 +  - [[http://haunt.dthompson.us/][Haunt]]
 +
 +To build the site, run ‘haunt build -c guixsd.scm’ to compile all of
 +the HTML pages.  To view the results, run ‘haunt serve -c guixsd.scm’
 +and visit  in a web browser.
>>>
>>> This looks nice.
>>>
>>> Is there a way to specify the output directory for the generated HTML?
>>>
>>> Currently I do:
>>>
>>>   (export-web-site "/path/to/cvs/checkout")
>>>
>>> so the HTML ends up directly in the right place.
>>
>> Yes, you can tweak haunt.scm a bit:
>>
>> (site ... #:build-directory "/path/to/cvs/checkout")
>
> And from the command line?  I don’t want to hard-code /home/ludo in the
> code.  :-)

I guess I need to add an option to 'haunt build' for that.

>> WARNING: Haunt builds the site afresh at each 'haunt build' run, which
>> means that it deletes everything in the build directory first.  Will
>> that be an issue here?
>
> That should be fine.

OK.  I was worried that maybe some "stateful" stuff like the manual
html pages would get clobbered or something.

- Dave



Re: [PATCH] build: pull: Compile .scm files in one process.

2015-11-06 Thread Ludovic Courtès
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:

> Sadly, when I reintroduce sorting, I get a different error:
>
> === snip ===
> compiling...   17.9% of 463 filesBacktrace:
> In ice-9/boot-9.scm:
> 2401: 19 [save-module-excursion # ice-9/boot-9.scm:3066:17 ()>]
> 3085: 18 [#]
> In unknown file:
>?: 17 [primitive-load-path "gnu/packages/cross-base" ...]
> In ice-9/eval.scm:
>  505: 16 [# (define-module # 
> # ...)]
> In ice-9/psyntax.scm:
> 1106: 15 [expand-top-sequence ((define-module # # # ...)) () ((top)) ...]
>  989: 14 [scan ((define-module (gnu packages cross-base) #:use-module ...)) 
> () ...]
>  279: 13 [scan ((#(syntax-object let # ...) (#) (# #) ...)) () ...]
> In ice-9/eval.scm:
>  411: 12 [eval # ()]
> In ice-9/boot-9.scm:
> 2951: 11 [define-module* (gnu packages cross-base) #:filename ...]
> 2926: 10 [resolve-imports ((#) (#) (#) (#) ...)]
> 2864: 9 [resolve-interface (gnu packages commencement) #:select ...]
> 2789: 8 [# autoload version #:key ensure)> # ...]
> 3065: 7 [try-module-autoload (gnu packages commencement) #f]
> 2401: 6 [save-module-excursion # ice-9/boot-9.scm:3066:17 ()>]
> 3085: 5 [#]
> In unknown file:
>?: 4 [primitive-load-path "gnu/packages/commencement" ...]
> In ice-9/eval.scm:
>  432: 3 Exception thrown while printing backtrace:
> ERROR: In procedure package-location: Wrong type argument: Error while 
> printing exception.
>
> ice-9/boot-9.scm:106:20: In procedure # ice-9/boot-9.scm:97:6 (thrown-k . args)>:
> ice-9/boot-9.scm:106:20: In procedure package-version: Wrong type argument: 
> Error while printing exception.
> builder for `/gnu/store/94p9v7mgdl6n02skmbxnmmr82bxyz7bi-guix-latest.drv' 
> failed with exit code 1
> === / snip ===

Could you do ‘guix pull --verbose’ so we see the order in which files
are compiled?

TIA,
Ludo’.



Re: [PATCH] build: pull: Compile .scm files in one process.

2015-11-06 Thread Ludovic Courtès
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:

> We need to ensure that as soon as a module file is compiled, it's also
> explicitly loaded before anything else is compiled (which might import
> it), otherwise that compilation will import the "degenerate" version of
> the module that results from compiling but not loading it.

Correct.

Ludo’.



Re: [PATCH] website: Add support for Haunt.

2015-11-06 Thread Ludovic Courtès
"Thompson, David"  skribis:

> On Thu, Nov 5, 2015 at 4:25 PM, Ludovic Courtès  wrote:
>> Mathieu Lirzin  skribis:
>>
>>> +Building the website depends on the static site generator:
>>> +
>>> +  - [[http://haunt.dthompson.us/][Haunt]]
>>> +
>>> +To build the site, run ‘haunt build -c guixsd.scm’ to compile all of
>>> +the HTML pages.  To view the results, run ‘haunt serve -c guixsd.scm’
>>> +and visit  in a web browser.
>>
>> This looks nice.
>>
>> Is there a way to specify the output directory for the generated HTML?
>>
>> Currently I do:
>>
>>   (export-web-site "/path/to/cvs/checkout")
>>
>> so the HTML ends up directly in the right place.
>
> Yes, you can tweak haunt.scm a bit:
>
> (site ... #:build-directory "/path/to/cvs/checkout")

And from the command line?  I don’t want to hard-code /home/ludo in the
code.  :-)

> WARNING: Haunt builds the site afresh at each 'haunt build' run, which
> means that it deletes everything in the build directory first.  Will
> that be an issue here?

That should be fine.

Thanks,
Ludo’.



Re: [PATCH] Add BLESS

2015-11-06 Thread Ricardo Wurmus

Alex Kost  writes:

> Ricardo Wurmus (2015-11-06 17:28 +0300) wrote:
>
> [...]
>> I have taken your recipe and removed more bundled sources in a snippet.
>> There’s still bundled stuff that we should get rid of, most importantly
>> kmc, which brings its own executables.
>>
>> I also changed the description based on the paper; instead of patching
>> the Makefile I overwrite the make flags.
>>
>> Attached is a patch.  Does this work for you?
>> What do others think about this patch?
>
> Oops, too late for the comment, but still:
>
> [...]
>> +(define-public bless
>> +  (package
>> +(name "bless")
>> +(version "1p02")
>> +(source (origin
>> +  (method url-fetch)
>> +  (uri (string-append "mirror://sourceforge/bless-ec/bless.v"
>> +  version ".tgz"))
>> +  (sha256
>> +   (base32
>> +"0rm0gw2s18dqwzzpl3c2x1z05ni2v0xz5dmfk3d33j6g4cgrlrdd"))
> tabulation ↑ here
>
>> +(modules '((guix build utils)))
> and wrong indentation ↑ here

Ah!  I didn’t see this.  (So embarrassing.)

In both cases it’s tabs.  I copied this whole expression from the
original attachment and it didn’t occur to me to check for tabs as it
looked just right in my Emacs.

What would the correct commit message be to fix this?  Will you fix
this?

~~ Ricardo



Re: [PATCH] Add BLESS

2015-11-06 Thread Alex Kost
Ricardo Wurmus (2015-11-06 17:28 +0300) wrote:

[...]
> I have taken your recipe and removed more bundled sources in a snippet.
> There’s still bundled stuff that we should get rid of, most importantly
> kmc, which brings its own executables.
>
> I also changed the description based on the paper; instead of patching
> the Makefile I overwrite the make flags.
>
> Attached is a patch.  Does this work for you?
> What do others think about this patch?

Oops, too late for the comment, but still:

[...]
> +(define-public bless
> +  (package
> +(name "bless")
> +(version "1p02")
> +(source (origin
> +  (method url-fetch)
> +  (uri (string-append "mirror://sourceforge/bless-ec/bless.v"
> +  version ".tgz"))
> +  (sha256
> +   (base32
> + "0rm0gw2s18dqwzzpl3c2x1z05ni2v0xz5dmfk3d33j6g4cgrlrdd"))
tabulation ↑ here

> +(modules '((guix build utils)))
and wrong indentation ↑ here

-- 
Alex



Re: [PATCH] gnu: guile: Add guile-irregex.

2015-11-06 Thread Christopher Allan Webber
Ludovic Courtès writes:

> Christopher Allan Webber  skribis:
>
>> On a side note, it would really be nice to have a
>> r6rs-build-system... starting to result in a lot of similar spaghetti in
>> a few of these packages.
>
> Is there really a standard R6 way of doing things?
>
> I agree some factorization would be welcome anyhow!

I don't really know, that comes from reading the Guildhall README:

  https://github.com/ijp/guildhall/blob/master/README

  > === Background ==
  > Guildhall is a port of Andreas Rottmanns Dorodango portable package manager 
for
  > R6RS Scheme, adapted to better fit in with Guile Scheme environments. 
  > It is compatible with the R6RS Scheme package archives that Dorodango uses.
  >
  > dorodango is (intended to be) a package manager for R6RS
  > implementations. Its main concepts are outlined in this thread:
  > 
.

So I've thought there's something probably, but I haven't really looked
enough...

>> + `(#:modules ((guix build utils)
>> +  (ice-9 match)
>> +  ,@%gnu-build-system-modules)
>
> I think (guix build gnu-build-system) is enough on the 3rd line.

Good call.

>> +(synopsis "S-expression based regular expressions, packaged for Guile")
>
> I’d remove “, packaged for Guile”.
>
> Otherwise LGTM, thank you!
>
> Ludo’.

Done, and pushed!



Re: [PATCH] Add BLESS

2015-11-06 Thread Ricardo Wurmus

Ludovic Courtès  writes:

> Ricardo Wurmus  skribis:
>
>> From 11496448abe3717279d5b6a5d31eedae7a1dcc89 Mon Sep 17 00:00:00 2001
>> From: Ricardo Wurmus 
>> Date: Fri, 6 Nov 2015 15:22:26 +0100
>> Subject: [PATCH] gnu: Add BLESS.
>>
>> * gnu/packages/bioinformatics.scm (bless): New variable.
>
> Probably you should add:
>
>   Co-authored-by: Diane Trout 
>
>> +sequencing reads} (BLESS) uses a single minimum-sized Bloo  filter is a
> ^^
> Typo.
>
> Otherwise LGTM, thanks to both of you!

Thanks for the review.  I pushed it after fixing the typo and adding the
attribution to the commit message.

~~ Ricardo



Re: [PATCHES] Mupen64Plus

2015-11-06 Thread Taylan Ulrich Bayırlı/Kammer
taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") writes:

> These packages need to be used in a somewhat peculiar way:
>
> - install *both* mupen64plus-core and mupen64plus-ui-console in your
>   profile,
>
> - install all the plugins in your profile,
>
> - in your config file ($XDG_CONFIG_HOME/mupen64plus/mupen64plus.cfg),
>   set Core/SharedDataPath to $guix_profile/share/mupen64plus, and set
>   UI-Console/PluginDir to $guix_profile/lib/mupen64plus,
>
> - specify your input/audio/video/rsp plugins of choice (for video, the
>   Glide64 ones work well for me, and the HLE one for RSP).
>
> That yields a working setup.  I don't know if I can make it work any
> better out of the box (without horrible hacks and/or substantial patches
> to the C code) because the whole system seems to assume the existence of
> a single "shared data" and a single "plugin" directory, so a user is
> best served by installing all preferred mupen64plus-* packages into one
> profile and then pointing the data and plugin directories there as
> described above.  In particular, the -core package needs to be installed
> too (despite ui-console already closing over it) because it also
> provides a data file without which some things don't work.

I now tackled this problem the following way:

- mupen64plus-ui-console is the recommended way to install mupen and
  propagates a basic set of plugins and the core library package (from
  which a data file is needed; the .so is referenced absolutely so
  that's not the reason),

- the C code of the console UI gets a Guix-specific patch which prints a
  flashy notice for Guix users when no plugins are found, instructing
  the user to edit their config so and so.

In the future I might provide some proper patches to the C code to take
the directory paths from environment variables in addition to the
existing mechanisms (CLI flag, .ini file, hardcoded system paths), but
for now I think this is good enough.

Comments welcome.

>From 6a2d0bc7cc0d27ce3bbee77faa747ff68466306a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
 
Date: Mon, 2 Nov 2015 00:39:22 +0100
Subject: [PATCH 11/11] gnu: Add mupen64plus-ui-console.

* gnu/packages/games.scm (mupen64plus-ui-console): New variable.
* gnu/packages/patches/mupen64plus-ui-console-notice.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
---
 gnu-system.am  |  1 +
 gnu/packages/games.scm | 66 ++
 .../patches/mupen64plus-ui-console-notice.patch| 34 +++
 3 files changed, 101 insertions(+)
 create mode 100644 gnu/packages/patches/mupen64plus-ui-console-notice.patch

diff --git a/gnu-system.am b/gnu-system.am
index 946b77e..c27989c 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -568,6 +568,7 @@ dist_patch_DATA =		\
   gnu/packages/patches/mplayer2-theora-fix.patch		\
   gnu/packages/patches/module-init-tools-moduledir.patch	\
   gnu/packages/patches/mumps-build-parallelism.patch		\
+  gnu/packages/patches/mupen64plus-ui-console-notice.patch	\
   gnu/packages/patches/mupdf-buildsystem-fix.patch		\
   gnu/packages/patches/mutt-store-references.patch		\
   gnu/packages/patches/net-tools-bitrot.patch			\
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 5830f9d..b867d52 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -1688,6 +1688,72 @@ which is capable of accurately playing many games.  This package contains the
 Z64 video plugin.")
 (license license:gpl2+)))
 
+(define-public mupen64plus-ui-console
+  (package
+(name "mupen64plus-ui-console")
+(version "2.5")
+(source
+ (origin
+   (method url-fetch)
+   (uri (string-append
+ "https://github.com/mupen64plus/mupen64plus-ui-console/archive/";
+ version ".tar.gz"))
+   (file-name (string-append name "-" version ".tar.gz"))
+   (sha256
+(base32 "04qkpd8ic7xsgnqz7spl00wxdygf79m7d1k8rabbygjk5lg6p8z2"))
+   (patches
+(list (search-patch "mupen64plus-ui-console-notice.patch")
+(build-system gnu-build-system)
+(native-inputs
+ `(("pkg-config" ,pkg-config)
+   ("which" ,which)))
+(inputs
+ `(("sdl2" ,sdl2)))
+;; Mupen64Plus supports a single data directory and a single plugin
+;; directory in its configuration, yet we need data and plugin files from
+;; a variety of packages.  The best way to deal with this is to install
+;; all packages from which data and plugin files are needed into one's
+;; profile, and point the configuration there.  Hence, propagate the most
+;; important packages here to save the user from the bother.  The patch
+;; mupen64plus-ui-console-notice also gives users instructions on what
+;; they need to do in order to point the configuration to their profile.
+(propagated-inputs
+ `(("mupen64plus-core" ,mupen64plus-core)
+   ("mupen64plus-audio-sdl" ,mupen64plus

Re: [PATCH] build: pull: Compile .scm files in one process.

2015-11-06 Thread Taylan Ulrich Bayırlı/Kammer
Andy Wingo  writes:

> On Thu 05 Nov 2015 17:10, taylanbayi...@gmail.com (Taylan Ulrich 
> "Bayırlı/Kammer") writes:
>
>> CPU:
>>
>> It used to max out every CPU core, now just one. :-)
>>
>>
>> Time:
>>
>> It used to take ~18 minutes on my machine, now less than 3.
>
> If you compile within a par-for-each you should be able to peg your CPU
> core again, but actually reduce the time :)

>From what I understand, that would probably ignite the bug again.

We need to ensure that as soon as a module file is compiled, it's also
explicitly loaded before anything else is compiled (which might import
it), otherwise that compilation will import the "degenerate" version of
the module that results from compiling but not loading it.

But that's really just my shallow high-level understanding of the bug,
and could be way off.  If you have any insights on what's really going
on, that would be greatly appreciated. :-)

Taylan



Re: [PATCH] build: pull: Compile .scm files in one process.

2015-11-06 Thread Andy Wingo
On Thu 05 Nov 2015 17:10, taylanbayi...@gmail.com (Taylan Ulrich 
"Bayırlı/Kammer") writes:

> CPU:
>
> It used to max out every CPU core, now just one. :-)
>
>
> Time:
>
> It used to take ~18 minutes on my machine, now less than 3.

If you compile within a par-for-each you should be able to peg your CPU
core again, but actually reduce the time :)

Andy



Re: [PATCH] Add BLESS (was: Re: Bioinformatics package: Bless)

2015-11-06 Thread Diane Trout
That patch looks much nicer. Thank you.

Diane

On Friday, November 06, 2015 03:28:23 PM Ricardo Wurmus wrote:
> Hi,
> 
> > One of our users asked me to install a package "bless" that required a
> > newer version of MPI than Debian provides, so I thought I'd try to build
> > a guix package as Guix actually has openmpi 1.8 packaged.
> 
> Great!  Thank you for your contribution.
> 
> > The source tarball has the GPL-3 LICENSE file, however it does also
> > contain
> > convenience copies of other source, and in my packaging I only spliced out
> > one -- the pigz dependency.
> 
> I have taken your recipe and removed more bundled sources in a snippet.
> There’s still bundled stuff that we should get rid of, most importantly
> kmc, which brings its own executables.
> 
> I also changed the description based on the paper; instead of patching
> the Makefile I overwrite the make flags.
> 
> Attached is a patch.  Does this work for you?
> What do others think about this patch?
> 
> ~~ Ricardo




Re: [PATCH] gnu: guile: Add guile-irregex.

2015-11-06 Thread Ludovic Courtès
Christopher Allan Webber  skribis:

> On a side note, it would really be nice to have a
> r6rs-build-system... starting to result in a lot of similar spaghetti in
> a few of these packages.

Is there really a standard R6 way of doing things?

I agree some factorization would be welcome anyhow!

> From 38edbac8ab42e1518424fd2da4d53ece2c96094c Mon Sep 17 00:00:00 2001
> From: Christopher Allan Webber 
> Date: Thu, 5 Nov 2015 12:20:03 -0600
> Subject: [PATCH] gnu: guile: Add guile-irregex.
>
> * gnu/packages/guile.scm (guile-irregex): New variable.

[...]

> + `(#:modules ((guix build utils)
> +  (ice-9 match)
> +  ,@%gnu-build-system-modules)

I think (guix build gnu-build-system) is enough on the 3rd line.

> +(synopsis "S-expression based regular expressions, packaged for Guile")

I’d remove “, packaged for Guile”.

Otherwise LGTM, thank you!

Ludo’.



Re: [PATCH] Add BLESS

2015-11-06 Thread Ludovic Courtès
Ricardo Wurmus  skribis:

> From 11496448abe3717279d5b6a5d31eedae7a1dcc89 Mon Sep 17 00:00:00 2001
> From: Ricardo Wurmus 
> Date: Fri, 6 Nov 2015 15:22:26 +0100
> Subject: [PATCH] gnu: Add BLESS.
>
> * gnu/packages/bioinformatics.scm (bless): New variable.

Probably you should add:

  Co-authored-by: Diane Trout 

> +sequencing reads} (BLESS) uses a single minimum-sized Bloo  filter is a
^^
Typo.

Otherwise LGTM, thanks to both of you!

Ludo’.



Re: [PATCH] website: Add support for Haunt.

2015-11-06 Thread Luis Felipe López Acevedo

On 2015-11-06 09:28, Thompson, David wrote:

On Thu, Nov 5, 2015 at 6:50 PM, Mathieu Lirzin  wrote:

Hi,

"Thompson, David"  writes:


On Thu, Nov 5, 2015 at 4:25 PM, Ludovic Courtès  wrote:

[...]

Does the generated HTML change as a result of using Haunt?


Not as far as I can tell by looking at the patch.

I'm not 100% sure if Haunt really buys us anything in the case of 
this

site.  Mathieu, do you see any current or potential future advantages
to using Haunt having done this work?  I'm really happy to see more
Haunt users, but I also don't want to encourage its use where it
doesn't make sense. :)


For now it provides us a reliable and simple command line interface 
for

building the website.  My hope for the future is that GuixSD website
will have a smaller code base that will use convenient generic
procedures provided by Haunt.  Of course it will depend on what would
make sense to be implemented in Haunt.  the first example I have in 
mind
is the the RSS/Atom feed importer implemented by Ludo in “www.scm” 
(used

by new Guile's website too) which IIUC could be implemented as a Haunt
reader.  This would provide somekind of RSS/Atom functional
composability. ;)

WDYT?


Makes sense.  Let's see how it goes. :)


Yes, at least for me, and for potential contributors (I think), using 
Haunt commands would be very convenient specially for testing the 
website while making changes. For example, I'd like to


1. Edit source files.
2. haunt serve
3. Check that everything works in the browser.
4. Commit changes.

The problem with the current tools in the website is that copying the 
`static` directory and serving the built site are not automatic steps. I 
was using `myscript.scm` with (system) calls to `mkdir -p` directories, 
copy the `static` directory to the build directory and serve the latter 
with `python3 -m http.server`.


So, if the website can work with Haunt, great :)


--
Luis Felipe López Acevedo
http://sirgazil.bitbucket.org/



[PATCH] Add BLESS (was: Re: Bioinformatics package: Bless)

2015-11-06 Thread Ricardo Wurmus
Hi,

> One of our users asked me to install a package "bless" that required a newer 
> version of MPI than Debian provides, so I thought I'd try to build a guix 
> package as Guix actually has openmpi 1.8 packaged.

Great!  Thank you for your contribution.

> The source tarball has the GPL-3 LICENSE file, however it does also contain 
> convenience copies of other source, and in my packaging I only spliced out 
> one 
> -- the pigz dependency.

I have taken your recipe and removed more bundled sources in a snippet.
There’s still bundled stuff that we should get rid of, most importantly
kmc, which brings its own executables.

I also changed the description based on the paper; instead of patching
the Makefile I overwrite the make flags.

Attached is a patch.  Does this work for you?
What do others think about this patch?

~~ Ricardo

>From 11496448abe3717279d5b6a5d31eedae7a1dcc89 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus 
Date: Fri, 6 Nov 2015 15:22:26 +0100
Subject: [PATCH] gnu: Add BLESS.

* gnu/packages/bioinformatics.scm (bless): New variable.
---
 gnu/packages/bioinformatics.scm | 83 +
 1 file changed, 83 insertions(+)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index fbc1f4e..c28f833 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -44,6 +44,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -524,6 +525,88 @@ confidence to have in an alignment.")
license:lgpl2.0+
license:asl2.0
 
+(define-public bless
+  (package
+(name "bless")
+(version "1p02")
+(source (origin
+  (method url-fetch)
+  (uri (string-append "mirror://sourceforge/bless-ec/bless.v"
+  version ".tgz"))
+  (sha256
+   (base32
+		"0rm0gw2s18dqwzzpl3c2x1z05ni2v0xz5dmfk3d33j6g4cgrlrdd"))
+(modules '((guix build utils)))
+  (snippet
+   `(begin
+  ;; Remove bundled boost, pigz, zlib, and .git directory
+  ;; FIXME: also remove bundled sources for google-sparsehash,
+  ;; murmurhash3, kmc once packaged.
+  (delete-file-recursively "boost")
+  (delete-file-recursively "pigz")
+  (delete-file-recursively "zlib")
+  (delete-file-recursively ".git")
+  #t
+(build-system gnu-build-system)
+(arguments
+ '(#:tests? #f ;no "check" target
+   #:make-flags
+   (list (string-append "ZLIB="
+(assoc-ref %build-inputs "zlib")
+"/lib/libz.a")
+ (string-append "LDFLAGS="
+(string-join '("-lboost_filesystem"
+   "-lboost_system"
+   "-lboost_iostreams"
+   "-lz"
+   "-fopenmp"
+   "-std=c++11"
+   #:phases
+   (modify-phases %standard-phases
+ (add-after 'unpack 'do-not-build-bundled-pigz
+  (lambda* (#:key inputs outputs #:allow-other-keys)
+(substitute* "Makefile"
+  (("cd pigz/pigz-2.3.3; make") ""))
+#t))
+ (add-after 'unpack 'patch-paths-to-executables
+  (lambda* (#:key inputs outputs #:allow-other-keys)
+(substitute* "parse_args.cpp"
+  (("kmc_binary = .*")
+   (string-append "kmc_binary = \""
+  (assoc-ref outputs "out")
+  "/bin/kmc\";"))
+  (("pigz_binary = .*")
+   (string-append "pigz_binary = \""
+  (assoc-ref inputs "pigz")
+  "/bin/pigz\";")))
+#t))
+ (replace 'install
+  (lambda* (#:key outputs #:allow-other-keys)
+(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+  (for-each (lambda (file)
+  (install-file file bin))
+'("bless" "kmc/bin/kmc"))
+  #t)))
+ (delete 'configure
+(native-inputs
+ `(("perl" ,perl)))
+(inputs
+ `(("openmpi" ,openmpi)
+   ("boost" ,boost)
+   ("pigz" ,pigz)
+   ("zlib" ,zlib)))
+(home-page "http://sourceforge.net/projects/bless-ec/wiki/Home/";)
+(synopsis "Bloom-filter-based error correction tool for NGS reads")
+(description
+ "@dfn{Bloom-filter-based error correction solution for high-throughput
+sequencing reads} (BLESS) uses 

Re: [PATCH] website: Add support for Haunt.

2015-11-06 Thread Thompson, David
On Thu, Nov 5, 2015 at 6:50 PM, Mathieu Lirzin  wrote:
> Hi,
>
> "Thompson, David"  writes:
>
>> On Thu, Nov 5, 2015 at 4:25 PM, Ludovic Courtès  wrote:
> [...]
>>> Does the generated HTML change as a result of using Haunt?
>>
>> Not as far as I can tell by looking at the patch.
>>
>> I'm not 100% sure if Haunt really buys us anything in the case of this
>> site.  Mathieu, do you see any current or potential future advantages
>> to using Haunt having done this work?  I'm really happy to see more
>> Haunt users, but I also don't want to encourage its use where it
>> doesn't make sense. :)
>
> For now it provides us a reliable and simple command line interface for
> building the website.  My hope for the future is that GuixSD website
> will have a smaller code base that will use convenient generic
> procedures provided by Haunt.  Of course it will depend on what would
> make sense to be implemented in Haunt.  the first example I have in mind
> is the the RSS/Atom feed importer implemented by Ludo in “www.scm” (used
> by new Guile's website too) which IIUC could be implemented as a Haunt
> reader.  This would provide somekind of RSS/Atom functional
> composability. ;)
>
> WDYT?

Makes sense.  Let's see how it goes. :)

> Continue the good work!

I'll try.

- Dave



Re: Where is (guix ui)?

2015-11-06 Thread Ludovic Courtès
Andreas Enge  skribis:

> Hello, in current master (commit a09f6ed), I get the following:
>
> $ ./pre-inst-env guix build hello -n
> substitute: Backtrace:
> substitute: In ice-9/boot-9.scm:
> substitute:  157: 12 [catch #t # ...]
> substitute: In unknown file:
> substitute:?: 11 [apply-smob/1 #]
> substitute: In ice-9/boot-9.scm:
> substitute:   63: 10 [call-with-prompt prompt0 ...]
> substitute: In ice-9/eval.scm:
> substitute:  432: 9 [eval # #]
> substitute: In ice-9/boot-9.scm:
> substitute: 2401: 8 [save-module-excursion # ice-9/boot-9.scm:4045:3 ()>]
> substitute: 4050: 7 [#]
> substitute: 1724: 6 [%start-stack load-stack ...]
> substitute: 1729: 5 [#]
> substitute: In unknown file:
> substitute:?: 4 [primitive-load "/usr/local/guix-git/bin/guix"]
> substitute: In ice-9/eval.scm:
> substitute:  411: 3 [eval # #]
> substitute:  387: 2 [eval # #]
> substitute: In ice-9/boot-9.scm:
> substitute: 2867: 1 [resolve-interface (guix ui) #:select ...]
> substitute: In unknown file:
> substitute:?: 0 [scm-error misc-error #f "~A ~S" ("no code for module" 
> (guix ui)) #f]
> substitute: 
> substitute: ERROR: In procedure scm-error:
> substitute: ERROR: no code for module (guix ui)
> guix build: error: build failed: substituter `substitute' died unexpectedly
>
> This even after "make clean-go" and removing any additional .go files in
> my guix tree.

The problem is not in your build tree: the error reported here comes
from ‘guix substitute’, which is invoked by ‘guix-daemon’.

Above, we see that /usr/local/guix-git/bin/guix is being run, so maybe
this /usr/local/guix-git installation is corrupt or incomplete?

HTH,
Ludo’.



Re: [PATCH] import: pypi: add updater

2015-11-06 Thread Ludovic Courtès
Mathieu Lirzin  skribis:

> Cyril Roelandt  writes:
>
>> * guix/import/pypi.scm (guix-package->pypi-name,
>>   latest-release): New procedures.
>>   (pypi-updater): New variable.
>> * guix/scripts/refresh.scm (%updaters): Add %PYPI-UPDATER.
>> ---
>>  guix/import/pypi.scm | 50 
>> +++-
>>  guix/scripts/refresh.scm |  4 +++-
>>  2 files changed, 52 insertions(+), 2 deletions(-)
>>
>
> IIUC the commit bab020d7ca50e4153cf24832d119389a37fa8f63 has made
> Guile-JSON non optional.

Yes, a mistake.

> What should we do about this?

Something like this should work:

diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index 3984a0b..4e9d1c8 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -30,7 +30,6 @@
   #:use-module ((guix gnu-maintenance) #:select (%gnu-updater))
   #:use-module (guix import elpa)
   #:use-module (guix import cran)
-  #:use-module (guix import pypi)
   #:use-module (guix gnupg)
   #:use-module (gnu packages)
   #:use-module ((gnu packages commencement) #:select (%final-inputs))
@@ -149,12 +148,35 @@ specified with `--select'.\n"))
 ;;; Updates.
 ;;;
 
+(define-syntax maybe-updater
+  (lambda (s)
+(syntax-case s (=>)
+  ((_ ((module => updater) rest ...) (result ...))
+   (let ((met? (false-if-exception
+(resolve-interface (syntax->datum #'module)
+ (if met?
+ #'(maybe-updater (rest ...)
+  (result ... (@ module updater)))
+ #'(maybe-updater (rest ...) (result ...)
+  ((_ (updater rest ...) (result ...))
+   #'(maybe-updater (rest ...) (result ... updater)))
+  ((_ () result)
+   #'result
+
+(define-syntax-rule (list-updaters updaters ...)
+  "Expand to '(list UPDATERS ...)' but only the subset of UPDATERS that are
+either unconditional, or have their requirement met.
+
+This is a way to discard at macro expansion time updaters that depend on
+unavailable optional dependencies such as Guile-JSON."
+  (maybe-updater (updaters ...) (list)))
+
 (define %updaters
   ;; List of "updaters" used by default.  They are consulted in this order.
-  (list %gnu-updater
+  (list-updaters %gnu-updater
  %elpa-updater
  %cran-updater
-%pypi-updater))
+ ((guix import pypi) => %pypi-updater)))
 
 (define (lookup-updater name)
   "Return the updater called NAME."

Could you test in a JSON-less environment and report back?

Alternately, we could declare Guile-JSON to be mandatory.

TIA,
Ludo’.


[PATCH] gnu: guile: Add guile-irregex.

2015-11-06 Thread Christopher Allan Webber
(Oops!  I originally sent this to guile-devel!)

Irregex, packaged for Guile!  Horray!

On a side note, it would really be nice to have a
r6rs-build-system... starting to result in a lot of similar spaghetti in
a few of these packages.

I don't know how that works though, so consider that a research project
for another day.

>From 38edbac8ab42e1518424fd2da4d53ece2c96094c Mon Sep 17 00:00:00 2001
From: Christopher Allan Webber 
Date: Thu, 5 Nov 2015 12:20:03 -0600
Subject: [PATCH] gnu: guile: Add guile-irregex.

* gnu/packages/guile.scm (guile-irregex): New variable.
---
 gnu/packages/guile.scm | 79 ++
 1 file changed, 79 insertions(+)

diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index da75add..5f8ad73 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -478,6 +478,85 @@ slightly from miniKanren mainline.
 See http://minikanren.org/ for more on miniKanren generally.")
 (license expat)))
 
+(define-public guile-irregex
+  (package
+(name "guile-irregex")
+(version "0.9.3")
+(source (origin
+  (method url-fetch)
+  (uri (string-append
+"http://synthcode.com/scheme/irregex/irregex-";
+version
+".tar.gz"))
+  (sha256
+   (base32
+"1b8jl7bycyl2ssp6sb1j24pp9hvqyxm85ki9bmwd50glyyjs5zay"
+(build-system gnu-build-system)
+(arguments
+ `(#:modules ((guix build utils)
+  (ice-9 match)
+  ,@%gnu-build-system-modules)
+   #:phases
+   (modify-phases %standard-phases
+ (delete 'check)
+ (delete 'configure)
+ (delete 'build)
+ (delete 'check)
+ (replace 'install
+   (lambda* (#:key inputs outputs #:allow-other-keys)
+ (begin
+   (use-modules (guix build utils)
+(ice-9 match))
+   (let* ((out (assoc-ref outputs "out"))
+  (module-dir (string-append out "/share/guile/site/2.0"))
+  (source (assoc-ref inputs "source"))
+  (doc (string-append out "/share/doc/guile-irregex/"))
+  (guild (string-append (assoc-ref %build-inputs "guile")
+"/bin/guild")))
+ ;; Make installation directories.
+ (mkdir-p (string-append module-dir "/rx/source"))
+ (mkdir-p doc)
+
+ ;; Compile .scm files and install.
+ (setenv "GUILE_AUTO_COMPILE" "0")
+
+ (for-each (lambda (copy-info)
+ (match copy-info
+   ((src-file dest-file-basis)
+(let* ((dest-file (string-append
+   module-dir dest-file-basis
+   ".scm"))
+   (go-file (string-append
+ module-dir dest-file-basis
+ ".go")))
+  ;; Install source module.
+  (copy-file src-file
+ dest-file)
+  ;; Install compiled module.
+  (unless (zero? (system* guild "compile"
+  "-L" (getcwd)
+  "-o" go-file
+  src-file))
+(error (format #f "Failed to compile ~s to ~s!"
+   src-file dest-file)))
+   '(("irregex-guile.scm" "/rx/irregex")
+ ("irregex.scm" "/rx/source/irregex")
+ ;; Not really reachable via guile's packaging system,
+ ;; but nice to have around
+ ("irregex-utils.scm" "/rx/source/irregex-utils")))
+
+ ;; Also copy over the README.
+ (install-file "irregex.html" doc)
+ #t)))
+(inputs
+ `(("guile" ,guile-2.0)))
+(home-page "http://synthcode.com/scheme/irregex";)
+(synopsis "S-expression based regular expressions, packaged for Guile")
+(description
+ "Irregex is an s-expression based alternative to your classic
+string-based regular expressions.  It implements SRFI 115 and is deeply
+inspired by the SCSH regular expression system.")
+(license bsd-3)))
 
 ;; There are two guile-gdbm packages, one using the FFI and one with
 ;; direct C bindings, hence the verbose name.
-- 
2.1.4



Re: [PATCH] build: pull: Compile .scm files in one process.

2015-11-06 Thread Taylan Ulrich Bayırlı/Kammer
l...@gnu.org (Ludovic Courtès) writes:

> taylanbayi...@gmail.com (Taylan Ulrich "Bayırlı/Kammer") skribis:
>
>> It used to take ~18 minutes on my machine, now less than 3.
>
> Sounds compelling.  :-)
>
>> From fd5d9bf77fd38fad354d66c31e57bc9bbc86481f Mon Sep 17 00:00:00 2001
>> From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?=
>>  
>> Date: Thu, 5 Nov 2015 16:21:48 +0100
>> Subject: [PATCH] build: pull: Compile .scm files in one process.
>>
>> * guix/build/pull.scm (call-with-process): Removed procedure.
>> (report-build-progress): Removed procedure.
>> (p-for-each): Removed procedure.
>> (build-guix): Don't create subprocesses to compile the .scm files.
>
> [...]
>
>> -;; Build guix/*.scm before gnu/*.scm to speed
>> -;; things up.
>> -(sort (find-files out "\\.scm")
>> -  (let ((guix (string-append out "/guix"))
>> -(gnu  (string-append out "/gnu")))
>> -(lambda (a b)
>> -  (or (and (string-prefix? guix a)
>> -   (string-prefix? gnu b))
>> -  (string
> This logic should be kept (with this version of the patch, it starts
> compiling gnu.scm, which depends on many modules, so the progress report
> stays at 0% for maybe 30s and then suddenly reaches 20%.)

Ah, I see.  Indeed I was irritated by that long pause.

Sadly, when I reintroduce sorting, I get a different error:

=== snip ===
compiling... 17.9% of 463 filesBacktrace:
In ice-9/boot-9.scm:
2401: 19 [save-module-excursion #]
3085: 18 [#]
In unknown file:
   ?: 17 [primitive-load-path "gnu/packages/cross-base" ...]
In ice-9/eval.scm:
 505: 16 [# (define-module # # 
...)]
In ice-9/psyntax.scm:
1106: 15 [expand-top-sequence ((define-module # # # ...)) () ((top)) ...]
 989: 14 [scan ((define-module (gnu packages cross-base) #:use-module ...)) () 
...]
 279: 13 [scan ((#(syntax-object let # ...) (#) (# #) ...)) () ...]
In ice-9/eval.scm:
 411: 12 [eval # ()]
In ice-9/boot-9.scm:
2951: 11 [define-module* (gnu packages cross-base) #:filename ...]
2926: 10 [resolve-imports ((#) (#) (#) (#) ...)]
2864: 9 [resolve-interface (gnu packages commencement) #:select ...]
2789: 8 [# # ...]
3065: 7 [try-module-autoload (gnu packages commencement) #f]
2401: 6 [save-module-excursion #]
3085: 5 [#]
In unknown file:
   ?: 4 [primitive-load-path "gnu/packages/commencement" ...]
In ice-9/eval.scm:
 432: 3 Exception thrown while printing backtrace:
ERROR: In procedure package-location: Wrong type argument: Error while printing 
exception.

ice-9/boot-9.scm:106:20: In procedure #:
ice-9/boot-9.scm:106:20: In procedure package-version: Wrong type argument: 
Error while printing exception.
builder for `/gnu/store/94p9v7mgdl6n02skmbxnmmr82bxyz7bi-guix-latest.drv' 
failed with exit code 1
=== / snip ===

This prompted me to try a different hack which is to first *only* load
all module files and later compile them, but that produced a similar
error:

=== snip ===
Backtrace:
In ice-9/boot-9.scm:
3065: 19 [try-module-autoload (gnu packages cross-base) #f]
2401: 18 [save-module-excursion #]
3085: 17 [#]
In unknown file:
   ?: 16 [primitive-load-path "gnu/packages/cross-base" ...]
In ice-9/eval.scm:
 505: 15 [# (define-module # # 
...)]
In ice-9/psyntax.scm:
1106: 14 [expand-top-sequence ((define-module # # # ...)) () ((top)) ...]
 989: 13 [scan ((define-module (gnu packages cross-base) #:use-module ...)) () 
...]
 279: 12 [scan ((#(syntax-object let # ...) (#) (# #) ...)) () ...]
In ice-9/eval.scm:
 411: 11 [eval # ()]
In ice-9/boot-9.scm:
2951: 10 [define-module* (gnu packages cross-base) #:filename ...]
2926: 9 [resolve-imports ((#) (#) (#) (#) ...)]
2864: 8 [resolve-interface (gnu packages commencement) #:select ...]
2789: 7 [# # ...]
3065: 6 [try-module-autoload (gnu packages commencement) #f]
2401: 5 [save-module-excursion #]
3085: 4 [#]
In unknown file:
   ?: 3 [primitive-load-path "gnu/packages/commencement" ...]
In ice-9/eval.scm:
 432: 2 Exception thrown while printing backtrace:
ERROR: In procedure package-location: Wrong type argument: Error while printing 
exception.

ice-9/eval.scm:411:25: In procedure eval:
ice-9/eval.scm:411:25: In procedure package-version: Wrong type argument: Error 
while printing exception.
builder for `/gnu/store/cbd2vx8pbbhz098dfzwxj82n9h5lcvy4-guix-latest.drv' 
failed with exit code 1
=== / snip ===

I don't know if this relates to bug 15602, and I don't know how to
attempt to fix it.  Help appreciated.

>> +;; Compile the .scm files.  Also load every compiled file after writing 
>> it
>> +;; to work around  (FIXME).
>> +(let* ((files (filter (cut string-suffix? ".scm" <>)
>> +  (find-files out "\\.scm")))
>> +   (total (length files)))
>> +  (let loop ((file (car files))
>> +