help-guix
[Top][All Lists]
Advanced

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

Re: Creating local variation of match-theme


From: Jack Hill
Subject: Re: Creating local variation of match-theme
Date: Wed, 18 Dec 2019 17:01:11 -0500 (EST)
User-agent: Alpine 2.20 (DEB 67 2015-01-07)

Hi,

It's been a few days, so I was wondering if anyone had thoughts on the following:

Best,
Jack

On Sun, 8 Dec 2019, Jack Hill wrote:

Hi Guix,

I'd like to create a local variation of the matcha-theme package with one of the colors changed to suit my taste. Rather than make the change in my clone of the git repository, which could then become outdated, I thought I would try to make the change programatically as part of the package definition. I decided to make my change in a snippet as part of the origin specification because that seemed to logically fit with what I was trying to do (build a package with modified source) and because matcha-theme uses the trivial build system, which I don't believe has the concept of phases, so it wasn't clear how I would add a phase to make my change during the build. I came up with the following package definition:

```
(package
 (inherit matcha-theme)
 (source (origin
           (inherit (package-source matcha-theme))
           (modules '((guix build utils)))
           (snippet
             '(begin
                (substitute* (find-files "." "\\.css$")
                  (("abb9b6") "859900"))))))
 (synopsis "jackhill's version of the matcha-theme"))
```

Unfortunately, after building my modified source tarball correctly, the package build fails. I believe this is because matcha-theme's trivial-build-system recipe expects a source checkout and not a tarball, and doesn't have the logic to expand the tarball that, e.g., the gnu-build-system provides.

The build log contains the following:

```
@ build-started /gnu/store/rqx5yqh4ncj02rxzfwvp9jcqv9dk8l1g-matcha-theme-2019-11-02.drv - x86_64-linux /var/log/guix/drvs/rq//x5yqh4ncj02rxzfwvp9jcqv9dk8l1g-matcha-theme-2019-11-02.drv.bz2 28285
Backtrace:
          4 (primitive-load "/gnu/store/j01a49zzlrn7fyr2x7ibxyqsph5?")
In ice-9/eval.scm:
  191:35  3 (_ #f)
   619:8  2 (_ #(#(#(#(#(#<directory (guile-user) 7f?> ?) ?) ?) ?) ?))
In /gnu/store/ygivy1fvr7gbyva4z22b7vzzps1krbq5-module-import/guix/build/utils.scm:
  343:27  1 (_ "/gnu/store/ajbvkiw30mmfhj8mpjfyvnxpjl0ycj07-matcha?" ?)
In unknown file:
          0 (copy-file "/gnu/store/ajbvkiw30mmfhj8mpjfyvnxpjl0ycj0?" ?)

ERROR: In procedure copy-file:
In procedure copy-file: Is a directory
`/gnu/store/ajbvkiw30mmfhj8mpjfyvnxpjl0ycj07-matcha-theme-2019-11-02.tar.xz' -> `/tmp/guix-build-matcha-theme-2019-11-02.drv-0' builder for `/gnu/store/rqx5yqh4ncj02rxzfwvp9jcqv9dk8l1g-matcha-theme-2019-11-02.drv' failed with exit code 1 @ build-failed /gnu/store/rqx5yqh4ncj02rxzfwvp9jcqv9dk8l1g-matcha-theme-2019-11-02.drv - 1 builder for `/gnu/store/rqx5yqh4ncj02rxzfwvp9jcqv9dk8l1g-matcha-theme-2019-11-02.drv' failed with exit code 1
```

For reference, matcha-theme's builder is:

```
(arguments
    '(#:modules ((guix build utils))
      #:builder
      (begin
        (use-modules (guix build utils))
        (let* ((out (assoc-ref %outputs "out"))
               (source (assoc-ref %build-inputs "source"))
               (bash (assoc-ref %build-inputs "bash"))
               (coreutils (assoc-ref %build-inputs  "coreutils"))
               (themesdir (string-append out "/share/themes")))
          (setenv "PATH"
                  (string-append coreutils "/bin:"
                                 (string-append bash "/bin:")))
          (copy-recursively source (getcwd))
          (patch-shebang "Install")
          (mkdir-p themesdir)
          (invoke "./Install" "-d" themesdir)
          #t))))
```

This leaves me with two questions:

How should I accomplish what I want to do (change one of the colors in matcha-theme for local use)?

If I am right about trivial-build-system (that it makes it more difficult to create modified packages compared to other build systems), should we try to avoid using it in gnu/packages to ensure people have the easiest time exercising their software freedom?

Best,
Jack





reply via email to

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