help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Package Definitions and Maintenance


From: Ludovic Courtès
Subject: Re: Package Definitions and Maintenance
Date: Mon, 03 Apr 2017 15:21:16 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Hello!

Thomas Sigurdsen <address@hidden> skribis:

> I've been playing around with guixsd on my day-to-day work laptop for a month
> or so now and have to say I'm thoroughly happy about how everything is put
> together and mostly _just works_.
>
> I'll note that I'm still very much learning guile and scheme. But the manual
> (https://www.gnu.org/software/guile/manual/) is amazing.

Cool, thanks for the kind words!

> I have tried writing some package definitions
> (https://notabug.org/thomassgn/guixsd-configuration/src/master/modules/tms/).
> But I can not get it to even pass evaluation and I don't understand what is
> meant by 'procedure #f'. Assuming I somewhere have a value that should eval
> to a procedure but evals to false instead - I just don't understand where.

[...]

> 1024: 4 [bag->derivation # # #]
> In srfi/srfi-1.scm:
>  573: 3 [map #<procedure 356a150 at guix/packages.scm:1026:30 (t-1331428)> #]
> In guix/packages.scm:
>  846: 2 [expand-input # # # ...]
> In guix/store.scm:
> 1176: 1 [#<procedure 1a404a0 at guix/store.scm:1175:26 (store . args)> #
> # ...] In unknown file:
>    ?: 0 [#f # "x86_64-linux" #f]
>
> ERROR: In procedure #f:
> ERROR: Wrong type to apply: #f

This backtrace is indeed terrible.

I just cloned your repo and then did:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build -L /tmp/guixsd-configuration/modules/tms/ 
wkhtmltopdf
WARNING: (wkhtmltopdf): `freetype' imported from both (guix licenses) and (gnu 
packages fontutils)
Backtrace:
In ice-9/boot-9.scm:
    834:9 19 (catch _ _ #<procedure 7fd510b63a88 at guix/ui.scm:433:2 (key c)> 
_)
    834:9 18 (catch _ _ #<procedure 7fd510b63aa0 at guix/ui.scm:490:6 (key proc 
format-string format-args . res…> …)
In guix/scripts/build.scm:
   700:24 17 (_)
    629:4 16 (options->derivations _ _)
In srfi/srfi-1.scm:
   679:15 15 (append-map _ _ . _)
   592:17 14 (map1 (#<package address@hidden 
/tmp/guixsd-configuration/modules/tms/wkhtmltopdf.scm:13 1b656…>))
In guix/scripts/build.scm:
   634:30 13 (_ _)
In guix/packages.scm:
   789:14 12 (cache! #<weak-table 353/443> #<package address@hidden 
/tmp/guixsd-configuration/modules/tms/w…> …)
In unknown file:
          11 (_ #<procedure thunk ()> #<procedure list _> #<undefined>)
In guix/packages.scm:
  1096:22 10 (thunk)
  1029:25  9 (bag->derivation #<build-daemon 256.97 f52fc0> #<<bag> name: 
"wkhtmltopdf-0.12.4" system: "x86_64-…> …)
In srfi/srfi-1.scm:
   592:29  8 (map1 (("python" #<package address@hidden 
gnu/packages/python.scm:384 1bf9a80>) ("source" …) …))
   592:29  7 (map1 (("source" #<origin 
"http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4.ta…>) …))
   592:29  6 (map1 (("fontconfig" #<package address@hidden 
gnu/packages/fontutils.scm:226 1f7d6c0>) ("f…" …) …))
   592:29  5 (map1 (("freetype" #<package address@hidden 
gnu/packages/fontutils.scm:49 1f7da80>) ("libpng" #) # …))
   592:29  4 (map1 (("libpng" #<package address@hidden 
gnu/packages/image.scm:67 1702900>) ("zlib" #<<licens…>) …))
   592:17  3 (map1 (("zlib" #<<license> name: "Zlib" uri: 
"http://www.gzip.org/zlib/zlib_license.html"; comm…>) …))
In guix/packages.scm:
   849:16  2 (expand-input _ _ _ _ _)
In guix/store.scm:
  1177:50  1 (_ #<build-daemon 256.97 f52fc0> #<<license> name: "Zlib" uri: 
"http://www.gzip.org/zlib/zlib_lice…> …)
In unknown file:
           0 (_ #<<license> name: "Zlib" uri: 
"http://www.gzip.org/zlib/zlib_license.html"; comment: "https://ww…> …)

ERROR: ERROR: Wrong type to apply: #f
--8<---------------cut here---------------end--------------->8---

(I’m using Guile 2.2 here, which produces a nicer backtrace.)

The warning at the top gives a hint: there’s a name clash between
bindings exported by the (guix licenses) module and those exported by
(gnu packages fontutils).

The bottom of the backtrace is also interesting: we’re getting a
<license> object here, where we really want a <package>.  The same
occurs with ‘openssl’.

To address that, you need to remap the (guix licenses) bindings to avoid
the name clash, and to import the right modules for ‘zlib’ and ‘openssl’
(see the patch below).  Once that is done, ‘guix build’ evaluates the
module nicely.

HTH!

Ludo’.

diff --git a/modules/tms/wkhtmltopdf.scm b/modules/tms/wkhtmltopdf.scm
index 66e41e5..07eb7e0 100644
--- a/modules/tms/wkhtmltopdf.scm
+++ b/modules/tms/wkhtmltopdf.scm
@@ -3,9 +3,11 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system python)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages compression) ;zlib
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages tls)         ;openssl
   #:use-module (gnu packages xorg)
   #:use-module (srfi srfi-1))
 
@@ -55,5 +57,5 @@ thing.
 
 GUIX Specific: C library is untested")
     (home-page "http://wkhtmltopdf.org/";)
-    (license gpl3+)))
+    (license license:gpl3+)))
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]