diff options
author | Mark H Weaver <mhw@netris.org> | 2015-10-17 19:08:53 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2015-10-17 19:08:53 -0400 |
commit | ccb522324bd99cc379ada4a1da5b8bcfd7d12c5b (patch) | |
tree | bd73bf8f8dabc046c12c53295b18daad49379887 | |
parent | 5fba12ecd3146e17d826167b6b9ffdfcbe2a49c9 (diff) | |
parent | 9e2592a3466c72dbfb64494e1316ce8af1554647 (diff) | |
download | guix-ccb522324bd99cc379ada4a1da5b8bcfd7d12c5b.tar guix-ccb522324bd99cc379ada4a1da5b8bcfd7d12c5b.tar.gz |
Merge branch 'master' into dbus-update
41 files changed, 1146 insertions, 394 deletions
diff --git a/.gitignore b/.gitignore index e3f2ac2c21..6e8bfaca95 100644 --- a/.gitignore +++ b/.gitignore @@ -132,3 +132,4 @@ GTAGS /doc/images/service-graph.png /doc/images/service-graph.eps /doc/images/service-graph.pdf +/doc/images/dmd-graph.png diff --git a/build-aux/hydra/guix.scm b/build-aux/hydra/guix.scm index 1035f81b4a..a6f7923fb8 100644 --- a/build-aux/hydra/guix.scm +++ b/build-aux/hydra/guix.scm @@ -48,6 +48,7 @@ (gnu packages version-control) (gnu packages package-management) (gnu packages graphviz) + (gnu packages man) (srfi srfi-1) (srfi srfi-26) (ice-9 match)) @@ -71,7 +72,12 @@ (define (tarball-package checkout) "Return a package that does `make distcheck' from CHECKOUT, a directory containing a Git checkout of Guix." - (dist-package guix checkout)) + (dist-package (package + (inherit guix) + (native-inputs `(("graphviz" ,graphviz) + ("help2man" ,help2man) + ,@(package-native-inputs guix)))) + checkout)) (define (hydra-jobs store arguments) "Return Hydra jobs." @@ -23,7 +23,8 @@ DOT_FILES = \ doc/images/bootstrap-graph.dot \ doc/images/coreutils-graph.dot \ doc/images/coreutils-bag-graph.dot \ - doc/images/service-graph.dot + doc/images/service-graph.dot \ + doc/images/dmd-graph.dot DOT_VECTOR_GRAPHICS = \ $(DOT_FILES:%.dot=%.eps) \ diff --git a/doc/emacs.texi b/doc/emacs.texi index ab69515972..0e901e1f90 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -531,6 +531,49 @@ GNU Emacs Manual}). @end itemize +Several commands (@command{guix graph}, @command{guix system dmd-graph} +and @command{guix system extension-graph}) also have a ``View graph'' +action, which allows you to view a generated graph using @command{dot} +command (specified by @code{guix-dot-program} variable). By default a +PNG file will be saved in @file{/tmp} directory and will be opened +directly in Emacs. This behavior may be changed with the following +variables: + +@table @code + +@item guix-find-file-function +Function used to open a generated graph. If you want to open a graph in +an external program, you can do it by modifying this variable---for +example, you can use a functionality provided by the Org Mode +(@pxref{Top,,, org, The Org Manual}): + +@example +(setq guix-find-file-function 'org-open-file) +(add-to-list 'org-file-apps '("\\.png\\'" . "sxiv %s")) +@end example + +@item guix-dot-default-arguments +Command line arguments to run @command{dot} command. If you change an +output format (for example, into @code{-Tpdf}), you also need to change +the next variable. + +@item guix-dot-file-name-function +Function used to define a name of the generated graph file. Default +name is @file{/tmp/guix-emacs-graph-XXXXXX.png}. + +@end table + +So, for example, if you want to generate and open a PDF file in your +Emacs, you may change the settings like this: + +@example +(defun my-guix-pdf-graph () + "/tmp/my-current-guix-graph.pdf") + +(setq guix-dot-default-arguments '("-Tpdf") + guix-dot-file-name-function 'my-guix-pdf-graph) +@end example + @node Emacs Prettify @section Guix Prettify Mode diff --git a/doc/guix.texi b/doc/guix.texi index 9956887b96..fd0adfd203 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -6983,6 +6983,36 @@ KVM kernel module should be loaded, and the @file{/dev/kvm} device node must exist and be readable and writable by the user and by the daemon's build users. +The @command{guix system} command has even more to offer! The following +sub-commands allow you to visualize how your system services relate to +each other: + +@anchor{system-extension-graph} +@table @code + +@item extension-graph +Emit in Dot/Graphviz format to standard output the @dfn{service +extension graph} of the operating system defined in @var{file} +(@pxref{Service Composition}, for more information on service +extensions.) + +The command: + +@example +$ guix system extension-graph @var{file} | dot -Tpdf > services.pdf +@end example + +produces a PDF file showing the extension relations among services. + +@anchor{system-dmd-graph} +@item dmd-graph +Emit in Dot/Graphviz format to standard output the @dfn{dependency +graph} of dmd services of the operating system defined in @var{file}. +@xref{dmd Services}, for more information and for an example graph. + +@end table + + @node Defining Services @subsection Defining Services @@ -7015,6 +7045,7 @@ collects device management rules and makes them available to the eudev daemon; the @file{/etc} service populates the system's @file{/etc} directory. +@cindex service extensions GuixSD services are connected by @dfn{extensions}. For instance, the secure shell service @emph{extends} dmd---GuixSD's initialization system, running as PID@tie{}1---by giving it the command lines to start and stop @@ -7035,6 +7066,9 @@ as arrows, a typical system might provide something like this: At the bottom, we see the @dfn{boot service}, which produces the boot script that is executed at boot time from the initial RAM disk. +@xref{system-extension-graph, the @command{guix system extension-graph} +command}, for information on how to generate this representation for a +particular operating system definition. @cindex service types Technically, developers can define @dfn{service types} to express these @@ -7304,10 +7338,23 @@ setuid-root programs on the system (@pxref{Setuid Programs}). The @code{(gnu services dmd)} provides a way to define services managed by GNU@tie{}dmd, which is GuixSD initialization system---the first process that is started when the system boots, aka. PID@tie{}1 -(@pxref{Introduction,,, dmd, GNU dmd Manual}). The -@var{%dmd-root-service} represents PID@tie{}1, of type -@var{dmd-root-service-type}; it can be extended by passing it lists of -@code{<dmd-service>} objects. +(@pxref{Introduction,,, dmd, GNU dmd Manual}). + +Services in dmd can depend on each other. For instance, the SSH daemon +may need to be started after the syslog daemon has been started, which +in turn can only happen once all the file systems have been mounted. +The simple operating system defined earlier (@pxref{Using the +Configuration System}) results in a service graph like this: + +@image{images/dmd-graph,,5in,Typical dmd service graph.} + +You can actually generate such a graph for any operating system +definition using the @command{guix system dmd-graph} command +(@pxref{system-dmd-graph, @command{guix system dmd-graph}}). + +The @var{%dmd-root-service} is a service object representing PID@tie{}1, +of type @var{dmd-root-service-type}; it can be extended by passing it +lists of @code{<dmd-service>} objects. @deftp {Data Type} dmd-service The data type representing a service managed by dmd. diff --git a/doc/images/coreutils-bag-graph.dot b/doc/images/coreutils-bag-graph.dot index c36268eeea..422c719282 100644 --- a/doc/images/coreutils-bag-graph.dot +++ b/doc/images/coreutils-bag-graph.dot @@ -1,213 +1,215 @@ digraph "Guix bag-emerged" { - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" [label = "coreutils-8.24", shape = box, fontname = Helvetica]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" [color = red]; - "/gnu/store/rgbnfjyvx2i44x2iwi62jsk76rg5vfr0-coreutils-8.24.drv" -> "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" [label = "perl-5.16.1", shape = box, fontname = Helvetica]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [label = "tar-1.28", shape = box, fontname = Helvetica]; - "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [label = "gzip-1.6", shape = box, fontname = Helvetica]; - "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [label = "bzip2-1.0.6", shape = box, fontname = Helvetica]; - "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [label = "xz-5.0.4", shape = box, fontname = Helvetica]; - "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [label = "file-5.22", shape = box, fontname = Helvetica]; - "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [label = "diffutils-3.3", shape = box, fontname = Helvetica]; - "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [label = "patch-2.7.5", shape = box, fontname = Helvetica]; - "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [label = "sed-4.2.2", shape = box, fontname = Helvetica]; - "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [label = "findutils-4.4.2", shape = box, fontname = Helvetica]; - "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [label = "gawk-4.1.3", shape = box, fontname = Helvetica]; - "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [label = "grep-2.21", shape = box, fontname = Helvetica]; - "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [label = "coreutils-8.24", shape = box, fontname = Helvetica]; - "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [label = "make-4.1", shape = box, fontname = Helvetica]; - "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [label = "bash-4.3.39", shape = box, fontname = Helvetica]; - "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [label = "ld-wrapper-0", shape = box, fontname = Helvetica]; - "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [label = "binutils-2.25", shape = box, fontname = Helvetica]; - "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [label = "gcc-4.9.3", shape = box, fontname = Helvetica]; - "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [label = "glibc-2.21", shape = box, fontname = Helvetica]; - "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [label = "glibc-utf8-locales-2.21", shape = box, fontname = Helvetica]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" [label = "acl-2.2.52", shape = box, fontname = Helvetica]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/bx5ksjc77qy38p2y8xr5cph59kkh5aqc-acl-2.2.52.drv" -> "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" [label = "gettext-0.19.5", shape = box, fontname = Helvetica]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" -> "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" [label = "expat-2.1.0", shape = box, fontname = Helvetica]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/zv0yx4506q6k13vkl8k7pqnfirnlqplg-expat-2.1.0.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" [label = "sed-4.2.2", shape = box, fontname = Helvetica]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/fi3hvhhi6jfm7qmlxayrd551d3wxp115-sed-4.2.2.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" [label = "attr-2.4.46", shape = box, fontname = Helvetica]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/mw5q1c5flk83xwj7yvqv0mb3hi6xb316-gettext-0.19.5.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/ww221j42552c05xrrbjjz9av7w7r9s5x-attr-2.4.46.drv" -> "/gnu/store/1vx9x5ml5q6irf4pnjrlfgmhcislmg1n-perl-5.16.1.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" [label = "gmp-6.0.0a", shape = box, fontname = Helvetica]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/1jzdjkign6jjsanmfhzs45kngi9gw5k8-gmp-6.0.0a.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" [label = "m4-1.4.17", shape = box, fontname = Helvetica]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/7176h825gaw745sdkwkgh7jip9w26w8m-tar-1.28.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/86bbbaav5ilnr63cpihi9h03ila7cr1k-gzip-1.6.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/ab82abh8l2dr56j0s9z68v6i872dic45-bzip2-1.0.6.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/x9dji1ms9cj9vbl15bksci7w76zcwvkj-xz-5.0.4.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/l8712bh52742kzav8w11n97l0vzim838-file-5.22.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/52b3d4q4nyv0i0n1phnwms3xan38q8is-diffutils-3.3.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/vaksjdasfzhbj6jzc46fdglwy75y8ggs-patch-2.7.5.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/4dikg9vw3fnhvjx86wq5jlpaw58nfmbv-sed-4.2.2.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/6q81294lvwzwqwj3s5flhl2fap5ac1qf-findutils-4.4.2.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/0qzl2vj3fwz03m6a8v7yypqhb58b4408-gawk-4.1.3.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/0w9md4s7vasgi5jy1xvxnsg4a3s134a9-grep-2.21.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/ldxarpgn1f4xbghbw0vqibdbi5cv3snl-coreutils-8.24.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/j7h01h99vrcs8wr0xx997wl2ijqhrz9b-make-4.1.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/8ghhz8yi3m9d4s07r443106g4pffd8q2-bash-4.3.39.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/sx1s4j6p0sm66znaaizb9a4cfwy109zy-ld-wrapper-0.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/gj0jr0lz5siyn0ifq1vnksvfdcmd1gw7-binutils-2.25.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/a74b2jvm3vv405a9wkd0c2v47s17alyi-gcc-4.9.3.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/0b68fcwgd01v2mji5pyda5ag9amg7d10-glibc-2.21.drv" [color = red]; - "/gnu/store/zsi7a1v45zq9qc7fzzw463q907mwqwwr-m4-1.4.17.drv" -> "/gnu/store/phkvp3cp8yqfqiv7i35j64lv671iv00x-glibc-utf8-locales-2.21.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" [label = "coreutils-8.24", shape = box, fontname = Helvetica]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" [color = red]; + "/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [label = "perl-5.16.1", shape = box, fontname = Helvetica]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [label = "tar-1.28", shape = box, fontname = Helvetica]; + "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [label = "gzip-1.6", shape = box, fontname = Helvetica]; + "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [label = "bzip2-1.0.6", shape = box, fontname = Helvetica]; + "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [label = "xz-5.0.4", shape = box, fontname = Helvetica]; + "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [label = "file-5.22", shape = box, fontname = Helvetica]; + "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [label = "diffutils-3.3", shape = box, fontname = Helvetica]; + "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [label = "patch-2.7.5", shape = box, fontname = Helvetica]; + "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [label = "sed-4.2.2", shape = box, fontname = Helvetica]; + "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [label = "findutils-4.4.2", shape = box, fontname = Helvetica]; + "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [label = "gawk-4.1.3", shape = box, fontname = Helvetica]; + "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [label = "grep-2.21", shape = box, fontname = Helvetica]; + "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [label = "coreutils-8.24", shape = box, fontname = Helvetica]; + "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [label = "make-4.1", shape = box, fontname = Helvetica]; + "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [label = "bash-4.3.39", shape = box, fontname = Helvetica]; + "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [label = "ld-wrapper-0", shape = box, fontname = Helvetica]; + "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [label = "binutils-2.25.1", shape = box, fontname = Helvetica]; + "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [label = "gcc-4.9.3", shape = box, fontname = Helvetica]; + "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [label = "glibc-2.22", shape = box, fontname = Helvetica]; + "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [label = "glibc-utf8-locales-2.22", shape = box, fontname = Helvetica]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" [label = "acl-2.2.52", shape = box, fontname = Helvetica]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" [label = "gettext-0.19.6", shape = box, fontname = Helvetica]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" [label = "expat-2.1.0", shape = box, fontname = Helvetica]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" [label = "attr-2.4.46", shape = box, fontname = Helvetica]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" [label = "gmp-6.0.0a", shape = box, fontname = Helvetica]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" [label = "m4-1.4.17", shape = box, fontname = Helvetica]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" [label = "libcap-2.24", shape = box, fontname = Helvetica]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red]; + "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" [color = red]; } diff --git a/doc/images/coreutils-graph.dot b/doc/images/coreutils-graph.dot index f9a08a83ed..cb0622a427 100644 --- a/doc/images/coreutils-graph.dot +++ b/doc/images/coreutils-graph.dot @@ -1,23 +1,25 @@ digraph "Guix package" { - "50639808" [label = "coreutils-8.24", shape = box, fontname = Helvetica]; - "50639808" -> "31984640" [color = red]; - "50639808" -> "50641344" [color = red]; - "50639808" -> "38428672" [color = red]; - "31984640" [label = "perl-5.16.1", shape = box, fontname = Helvetica]; - "50641344" [label = "acl-2.2.52", shape = box, fontname = Helvetica]; - "50641344" -> "50641728" [color = red]; - "50641344" -> "31984640" [color = red]; - "50641344" -> "50640768" [color = red]; - "50641344" -> "50641536" [color = red]; - "50641728" [label = "gettext-0.19.5", shape = box, fontname = Helvetica]; - "50641728" -> "50530368" [color = red]; - "50530368" [label = "expat-2.1.0", shape = box, fontname = Helvetica]; - "50640768" [label = "sed-4.2.2", shape = box, fontname = Helvetica]; - "50641536" [label = "attr-2.4.46", shape = box, fontname = Helvetica]; - "50641536" -> "50641728" [color = red]; - "50641536" -> "31984640" [color = red]; - "38428672" [label = "gmp-6.0.0a", shape = box, fontname = Helvetica]; - "38428672" -> "38431168" [color = red]; - "38431168" [label = "m4-1.4.17", shape = box, fontname = Helvetica]; + "70481600" [label = "coreutils-8.24", shape = box, fontname = Helvetica]; + "70481600" -> "50717824" [color = red]; + "70481600" -> "57499200" [color = red]; + "70481600" -> "57496320" [color = red]; + "70481600" -> "69877504" [color = red]; + "50717824" [label = "perl-5.16.1", shape = box, fontname = Helvetica]; + "57499200" [label = "acl-2.2.52", shape = box, fontname = Helvetica]; + "57499200" -> "70563904" [color = red]; + "57499200" -> "50717824" [color = red]; + "57499200" -> "70563520" [color = red]; + "70563904" [label = "gettext-0.19.6", shape = box, fontname = Helvetica]; + "70563904" -> "69316352" [color = red]; + "69316352" [label = "expat-2.1.0", shape = box, fontname = Helvetica]; + "70563520" [label = "attr-2.4.46", shape = box, fontname = Helvetica]; + "70563520" -> "70563904" [color = red]; + "70563520" -> "50717824" [color = red]; + "57496320" [label = "gmp-6.0.0a", shape = box, fontname = Helvetica]; + "57496320" -> "57498432" [color = red]; + "57498432" [label = "m4-1.4.17", shape = box, fontname = Helvetica]; + "69877504" [label = "libcap-2.24", shape = box, fontname = Helvetica]; + "69877504" -> "50717824" [color = red]; + "69877504" -> "70563520" [color = red]; } diff --git a/doc/images/dmd-graph.dot b/doc/images/dmd-graph.dot new file mode 100644 index 0000000000..220a2afca1 --- /dev/null +++ b/doc/images/dmd-graph.dot @@ -0,0 +1,75 @@ +digraph "Guix dmd-service" { + "user-file-systems" [label = "user-file-systems", shape = box, fontname = Helvetica]; + "user-processes" -> "user-file-systems" [color = red]; + "user-processes" [label = "user-processes", shape = box, fontname = Helvetica]; + "nscd" -> "user-processes" [color = red]; + "guix-daemon" -> "user-processes" [color = red]; + "syslogd" -> "user-processes" [color = red]; + "term-tty6" -> "user-processes" [color = red]; + "term-tty5" -> "user-processes" [color = red]; + "term-tty4" -> "user-processes" [color = red]; + "term-tty3" -> "user-processes" [color = red]; + "term-tty2" -> "user-processes" [color = red]; + "term-tty1" -> "user-processes" [color = red]; + "networking" -> "user-processes" [color = red]; + "nscd" [label = "nscd", shape = box, fontname = Helvetica]; + "guix-daemon" [label = "guix-daemon", shape = box, fontname = Helvetica]; + "syslogd" [label = "syslogd", shape = box, fontname = Helvetica]; + "ssh-daemon" -> "syslogd" [color = red]; + "ssh-daemon" [label = "ssh-daemon", shape = box, fontname = Helvetica]; + "term-tty6" [label = "term-tty6", shape = box, fontname = Helvetica]; + "console-font-tty6" -> "term-tty6" [color = red]; + "console-font-tty6" [label = "console-font-tty6", shape = box, fontname = Helvetica]; + "term-tty5" [label = "term-tty5", shape = box, fontname = Helvetica]; + "console-font-tty5" -> "term-tty5" [color = red]; + "console-font-tty5" [label = "console-font-tty5", shape = box, fontname = Helvetica]; + "term-tty4" [label = "term-tty4", shape = box, fontname = Helvetica]; + "console-font-tty4" -> "term-tty4" [color = red]; + "console-font-tty4" [label = "console-font-tty4", shape = box, fontname = Helvetica]; + "term-tty3" [label = "term-tty3", shape = box, fontname = Helvetica]; + "console-font-tty3" -> "term-tty3" [color = red]; + "console-font-tty3" [label = "console-font-tty3", shape = box, fontname = Helvetica]; + "term-tty2" [label = "term-tty2", shape = box, fontname = Helvetica]; + "console-font-tty2" -> "term-tty2" [color = red]; + "console-font-tty2" [label = "console-font-tty2", shape = box, fontname = Helvetica]; + "term-tty1" [label = "term-tty1", shape = box, fontname = Helvetica]; + "console-font-tty1" -> "term-tty1" [color = red]; + "console-font-tty1" [label = "console-font-tty1", shape = box, fontname = Helvetica]; + "networking" [label = "networking", shape = box, fontname = Helvetica]; + "ssh-daemon" -> "networking" [color = red]; + "root-file-system" [label = "root-file-system", shape = box, fontname = Helvetica]; + "file-system-/run/user" -> "root-file-system" [color = red]; + "file-system-/run/systemd" -> "root-file-system" [color = red]; + "file-system-/gnu/store" -> "root-file-system" [color = red]; + "file-system-/dev/shm" -> "root-file-system" [color = red]; + "file-system-/dev/pts" -> "root-file-system" [color = red]; + "user-processes" -> "root-file-system" [color = red]; + "udev" -> "root-file-system" [color = red]; + "file-system-/run/user" [label = "file-system-/run/user", shape = box, fontname = Helvetica]; + "user-processes" -> "file-system-/run/user" [color = red]; + "file-system-/run/systemd" [label = "file-system-/run/systemd", shape = box, fontname = Helvetica]; + "user-processes" -> "file-system-/run/systemd" [color = red]; + "file-system-/gnu/store" [label = "file-system-/gnu/store", shape = box, fontname = Helvetica]; + "user-processes" -> "file-system-/gnu/store" [color = red]; + "file-system-/dev/shm" [label = "file-system-/dev/shm", shape = box, fontname = Helvetica]; + "user-processes" -> "file-system-/dev/shm" [color = red]; + "file-system-/dev/pts" [label = "file-system-/dev/pts", shape = box, fontname = Helvetica]; + "user-processes" -> "file-system-/dev/pts" [color = red]; + "udev" [label = "udev", shape = box, fontname = Helvetica]; + "term-tty6" -> "udev" [color = red]; + "term-tty5" -> "udev" [color = red]; + "term-tty4" -> "udev" [color = red]; + "term-tty3" -> "udev" [color = red]; + "term-tty2" -> "udev" [color = red]; + "term-tty1" -> "udev" [color = red]; + "networking" -> "udev" [color = red]; + "host-name" [label = "host-name", shape = box, fontname = Helvetica]; + "term-tty6" -> "host-name" [color = red]; + "term-tty5" -> "host-name" [color = red]; + "term-tty4" -> "host-name" [color = red]; + "term-tty3" -> "host-name" [color = red]; + "term-tty2" -> "host-name" [color = red]; + "term-tty1" -> "host-name" [color = red]; + "loopback" [label = "loopback", shape = box, fontname = Helvetica]; + +} diff --git a/emacs/guix-command.el b/emacs/guix-command.el index b679ad9b1e..1a42594b68 100644 --- a/emacs/guix-command.el +++ b/emacs/guix-command.el @@ -249,7 +249,8 @@ to be modified." (guix-command-define-argument-improver guix-command-improve-system-argument - '(("vm-image" :char ?V) + '(("disk-image" :char ?D) + ("vm-image" :char ?V) ("--on-error" :char ?E) ("--no-grub" :char ?g) ("--full-boot" :char ?b))) @@ -498,15 +499,17 @@ to be modified." "List of default 'execute' action arguments.") (defvar guix-command-additional-execute-arguments - `((("build") - ,(guix-command-make-argument - :name "log" :char ?l :doc "View build log")) - (("graph") - ,(guix-command-make-argument - :name "view" :char ?v :doc "View graph")) - (("size") - ,(guix-command-make-argument - :name "view" :char ?v :doc "View map"))) + (let ((graph-arg (guix-command-make-argument + :name "view" :char ?v :doc "View graph"))) + `((("build") + ,(guix-command-make-argument + :name "log" :char ?l :doc "View build log")) + (("graph") ,graph-arg) + (("size") + ,(guix-command-make-argument + :name "view" :char ?v :doc "View map")) + (("system" "dmd-graph") ,graph-arg) + (("system" "extension-graph") ,graph-arg))) "Alist of guix commands and additional 'execute' action arguments.") (defun guix-command-execute-arguments (commands) @@ -530,7 +533,11 @@ to be modified." (("graph") ("view" . guix-run-view-graph)) (("size") - ("view" . guix-run-view-size-map))) + ("view" . guix-run-view-size-map)) + (("system" "dmd-graph") + ("view" . guix-run-view-graph)) + (("system" "extension-graph") + ("view" . guix-run-view-graph))) "Alist of guix commands and alists of special executers for them. See also `guix-command-default-executors'.") diff --git a/emacs/guix-devel.el b/emacs/guix-devel.el index b8330289c5..f3ad4b9255 100644 --- a/emacs/guix-devel.el +++ b/emacs/guix-devel.el @@ -24,6 +24,7 @@ ;;; Code: +(require 'lisp-mode) (require 'guix-guile) (require 'guix-geiser) (require 'guix-utils) @@ -177,9 +178,52 @@ to find 'modify-phases' keywords." (ignore-errors (forward-sexp)) (save-excursion (up-list) (point))))) +(defconst guix-devel-keywords + '("call-with-compressed-output-port" + "call-with-container" + "call-with-decompressed-port" + "call-with-derivation-narinfo" + "call-with-derivation-substitute" + "call-with-error-handling" + "call-with-temporary-directory" + "call-with-temporary-output-file" + "define-enumerate-type" + "define-gexp-compiler" + "define-lift" + "define-monad" + "define-operation" + "define-record-type*" + "emacs-substitute-sexps" + "emacs-substitute-variables" + "mbegin" + "mlet" + "mlet*" + "munless" + "mwhen" + "run-with-state" + "run-with-store" + "signature-case" + "substitute*" + "substitute-keyword-arguments" + "test-assertm" + "use-package-modules" + "use-service-modules" + "use-system-modules" + "with-atomic-file-output" + "with-atomic-file-replacement" + "with-derivation-narinfo" + "with-derivation-substitute" + "with-directory-excursion" + "with-error-handling" + "with-monad" + "with-mutex" + "with-store")) + (defvar guix-devel-font-lock-keywords `((,(rx (or "#~" "#$" "#$@" "#+" "#+@")) . 'guix-devel-gexp-symbol) + (,(guix-guile-keyword-regexp (regexp-opt guix-devel-keywords)) + (1 'font-lock-keyword-face)) (,(guix-guile-keyword-regexp "modify-phases") (1 'font-lock-keyword-face) (guix-devel-modify-phases-font-lock-matcher @@ -189,6 +233,69 @@ to find 'modify-phases' keywords." "A list of `font-lock-keywords' for `guix-devel-mode'.") +;;; Indentation + +(defmacro guix-devel-scheme-indent (&rest rules) + "Set `scheme-indent-function' according to RULES. +Each rule should have a form (SYMBOL VALUE). See `put' for details." + (declare (indent 0)) + `(progn + ,@(mapcar (lambda (rule) + `(put ',(car rule) 'scheme-indent-function ,(cadr rule))) + rules))) + +(defun guix-devel-indent-package (state indent-point normal-indent) + "Indentation rule for 'package' form." + (let* ((package-eol (line-end-position)) + (count (if (and (ignore-errors (down-list) t) + (< (point) package-eol) + (looking-at "inherit\\>")) + 1 + 0))) + (lisp-indent-specform count state indent-point normal-indent))) + +(guix-devel-scheme-indent + (bag 0) + (build-system 0) + (call-with-compressed-output-port 2) + (call-with-container 1) + (call-with-decompressed-port 2) + (call-with-error-handling 0) + (container-excursion 1) + (emacs-batch-edit-file 1) + (emacs-batch-eval 0) + (emacs-substitute-sexps 1) + (emacs-substitute-variables 1) + (file-system 0) + (graft 0) + (manifest-entry 0) + (manifest-pattern 0) + (mbegin 1) + (mlet 2) + (mlet* 2) + (modify-phases 1) + (munless 1) + (mwhen 1) + (operating-system 0) + (origin 0) + (package 'guix-devel-indent-package) + (run-with-state 1) + (run-with-store 1) + (signature-case 1) + (substitute* 1) + (substitute-keyword-arguments 1) + (test-assertm 1) + (with-atomic-file-output 1) + (with-derivation-narinfo 1) + (with-derivation-substitute 2) + (with-directory-excursion 1) + (with-error-handling 0) + (with-monad 1) + (with-mutex 1) + (with-store 1) + (wrap-program 1)) + + (defvar guix-devel-keys-map (let ((map (make-sparse-keymap))) (define-key map (kbd "b") 'guix-devel-build-package-definition) diff --git a/emacs/guix-external.el b/emacs/guix-external.el index d233473abe..580676ef91 100644 --- a/emacs/guix-external.el +++ b/emacs/guix-external.el @@ -64,7 +64,7 @@ If ARGS is nil, use `guix-dot-default-arguments'." "Return '.png' file name in the `temporary-file-directory'." (concat (make-temp-name (concat (file-name-as-directory temporary-file-directory) - "graph-")) + "guix-emacs-graph-")) ".png")) (provide 'guix-external) diff --git a/emacs/guix-init.el b/emacs/guix-init.el index 96aa0c2ffc..4b3d9c281c 100644 --- a/emacs/guix-init.el +++ b/emacs/guix-init.el @@ -1,4 +1,5 @@ (require 'guix-autoloads) +(require 'guix-emacs) (defcustom guix-package-enable-at-startup t "If non-nil, activate Emacs packages installed in a user profile. @@ -8,8 +9,9 @@ avoid loading autoloads of Emacs packages installed in :type 'boolean :group 'guix) +(add-to-list 'load-path (guix-emacs-directory)) + (when guix-package-enable-at-startup - (require 'guix-emacs) (guix-emacs-load-autoloads 'all)) (add-hook 'scheme-mode-hook 'guix-devel-activate-mode-maybe) diff --git a/gnu-system.am b/gnu-system.am index 36c94d602b..6eb41304a7 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -567,7 +567,6 @@ dist_patch_DATA = \ gnu/packages/patches/module-init-tools-moduledir.patch \ gnu/packages/patches/mumps-build-parallelism.patch \ gnu/packages/patches/mupdf-buildsystem-fix.patch \ - gnu/packages/patches/mutt-CVE-2014-9116.patch \ gnu/packages/patches/mutt-store-references.patch \ gnu/packages/patches/net-tools-bitrot.patch \ gnu/packages/patches/ngircd-handle-zombies.patch \ diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index 377bec278e..00af35d3df 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -348,7 +348,7 @@ run a file system check." ;; in the case of a bind mount, a regular file may be needed. (if (and (= MS_BIND (logand flags MS_BIND)) (regular-file? source)) - (begin + (unless (file-exists? mount-point) (mkdir-p (dirname mount-point)) (call-with-output-file mount-point (const #t))) (mkdir-p mount-point)) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 4b7f76b9c6..51e3df6d81 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -970,6 +970,9 @@ translated DNA query sequences against a protein reference database (BLASTP and BLASTX alignment mode). The speedup over BLAST is up to 20,000 on short reads at a typical sensitivity of 90-99% relative to BLAST depending on the data and settings.") + ;; diamond fails to build on other platforms + ;; https://github.com/bbuchfink/diamond/issues/18 + (supported-systems '("x86_64-linux")) (license (license:non-copyleft "file://src/COPYING" "See src/COPYING in the distribution.")))) @@ -2179,6 +2182,10 @@ viewer.") (lambda _ (chdir "ngs-sdk") #t) %standard-phases)))) (native-inputs `(("perl" ,perl))) + ;; According to the test + ;; unless ($MARCH =~ /x86_64/i || $MARCH =~ /i?86/i) + ;; in ngs-sdk/setup/konfigure.perl + (supported-systems '("i686-linux" "x86_64-linux")) (home-page "https://github.com/ncbi/ngs") (synopsis "API for accessing Next Generation Sequencing data") (description diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 6e858a7d96..86b131a3e8 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -67,14 +67,14 @@ a major mode for Emacs for examining the flowcharts that it produces.") (define-public complexity (package (name "complexity") - (version "1.2") + (version "1.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/complexity/complexity-" version ".tar.gz")) (sha256 (base32 - "0pmlhlj1chl4caaqffvn1cy9z8gwmjbx97syi7pdfa0vqygkql6d")))) + "19bc64sxpqd5rqylqaa7dijz2x7qp2b0dg3ah3fb3qbcvd8b4wgy")))) (build-system gnu-build-system) (native-inputs `(("texinfo" ,texinfo) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 43a7b9f034..258294f6c8 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -60,7 +60,7 @@ (define-public calibre (package (name "calibre") - (version "2.40.0") + (version "2.41.0") (source (origin (method url-fetch) @@ -69,7 +69,7 @@ version ".tar.xz")) (sha256 (base32 - "1xzf910w3c15vajnlra32xzi0gwb4z7a9m9w5nfj0by2wss3fv7n")) + "069fkcsx7kaazs7f095nkz4jw9jrm0k9zq16ayx41lxjbd1r97ik")) ;; Remove non-free or doubtful code, see ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html (modules '((guix build utils))) diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 54e43ef0f8..1c378f63a7 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -237,6 +237,9 @@ optimizer; and it can produce photorealistic and design review images.") (sha256 (base32 "0x37vfp6k0d2z3gnig0hbicvi0jp8v267xjnn3z8jdllpiaa6p3k")) + (snippet + ;; Remove a non-free file. + '(delete-file "doc/psfig.sty")) (modules '((guix build utils) (guix build download) (guix ftp-client))) @@ -265,8 +268,18 @@ optimizer; and it can produce photorealistic and design review images.") (("\\\\special\\{psfile=([^,]*),.*scale=([#0-9.]*).*\\}" all file scale) (string-append "\\includegraphics[scale=" scale "]{" - file "}"))) - (substitute* '("doc/mtt.tex" "doc/tcad.tex") + file "}")) + (("\\\\psfig\\{figure=([^,]*),.*width=([#0-9.]*in).*\\}" + all file width) + (string-append "\\includegraphics[width=" width "]{" + file "}")) + (("\\\\psfig\\{figure=([^,]*),.*height=([#0-9.]*in).*\\}" + all file height) + (string-append "\\includegraphics[height=" height "]{" + file "}")) + (("\\\\psfig\\{figure=([^,]*)\\}" all file) + (string-append "\\includegraphics{" file "}"))) + (substitute* '("doc/mtt.tex" "doc/tcad.tex" "doc/ug.tex") (("^\\\\documentstyle\\[(.*)\\]\\{(.*)\\}" all options class) (string-append "\\documentclass[" options "]{" diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index e250bf9633..3023794218 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -163,17 +163,10 @@ scriptable with Guile.") (guix build utils)) #:phases (modify-phases %standard-phases (add-after 'set-paths 'set-sdl-paths - (lambda* (#:key inputs outputs (search-paths '()) - #:allow-other-keys) - (define input-directories - (match inputs - (((_ . dir) ...) - dir))) - ;; This package does not use pkg-config, so modify CPATH - ;; variable to point to include/SDL for SDL header files. - (set-path-environment-variable "CPATH" - '("include/SDL") - input-directories))) + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CPATH" + (string-append (assoc-ref inputs "sdl-union") + "/include/SDL")))) (add-after 'patch-source-shebangs 'patch-makefile (lambda* (#:key outputs #:allow-other-keys) ;; Replace /usr with package output directory. @@ -192,11 +185,7 @@ scriptable with Guile.") (delete 'configure)) #:tests? #f)) ;; No check target. (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("sdl" ,sdl) - ("sdl-gfx" ,sdl-gfx) - ("sdl-image" ,sdl-image) - ("sdl-mixer" ,sdl-mixer) - ("sdl-ttf" ,sdl-ttf))) + (inputs `(("sdl-union" ,(sdl-union)))) (home-page "http://code.google.com/p/abbaye-for-linux/") (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"") (description "L'Abbaye des Morts is a 2D platform game set in 13th century @@ -309,7 +298,7 @@ asynchronously and at a user-defined speed.") (define-public chess (package (name "chess") - (version "6.1.1") + (version "6.2.2") (source (origin (method url-fetch) @@ -317,7 +306,7 @@ asynchronously and at a user-defined speed.") ".tar.gz")) (sha256 (base32 - "1jckpg1qi1vjr3pqs0dnip3rmn0mgklx63xflrpqiv3cx2qlz8kn")))) + "1a41ag03q66pwy3pjrmbxxjpzi9fcaiiaiywd7m9v25mxqac2xkp")))) (build-system gnu-build-system) (home-page "http://www.gnu.org/software/chess") (synopsis "Full chess implementation") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 53842b3aa0..25407b835a 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -171,21 +171,15 @@ aliasing facilities to work just as they would on normal mail.") (define-public mutt (package (name "mutt") - (version "1.5.23") + (version "1.5.24") (source (origin (method url-fetch) - (uri (list ;; Temporarily put bitbucket first, because - ;; ftp.mutt.org has been down for a while. - (string-append "https://bitbucket.org/mutt/mutt/downloads/mutt-" - version ".tar.gz") - (string-append "ftp://ftp.mutt.org/mutt/devel/mutt-" - version ".tar.gz"))) + (uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-" + version ".tar.gz")) (sha256 (base32 - "0dzx4qk50pjfsb6cs5jahng96a52k12f7pm0sc78iqdrawg71w1s")) - (patches (map search-patch - '("mutt-CVE-2014-9116.patch" - "mutt-store-references.patch"))))) + "0012njrgxf1barjksqkx7ccid2l0xyikhna9mjs9vcfpbrvcm4m2")) + (patches (list (search-patch "mutt-store-references.patch"))))) (build-system gnu-build-system) (inputs `(("cyrus-sasl" ,cyrus-sasl) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index fe8e6f129d..a72f7543dd 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -274,7 +274,13 @@ Guile.") (build-system waf-build-system) (arguments `(#:tests? #f ;no "check" target - #:configure-flags '("--project=sequencer") + #:configure-flags + (list "--project=sequencer" + ;; Disable the use of SSE unless on x86_64. + ,@(if (not (string-prefix? "x86_64" (or (%current-target-system) + (%current-system)))) + '("--disable-sse") + '())) #:python ,python-2)) (inputs `(("jack" ,jack-1) diff --git a/gnu/packages/patches/mutt-CVE-2014-9116.patch b/gnu/packages/patches/mutt-CVE-2014-9116.patch deleted file mode 100644 index 91e17ecbe0..0000000000 --- a/gnu/packages/patches/mutt-CVE-2014-9116.patch +++ /dev/null @@ -1,46 +0,0 @@ -Fix CVE-2014-9116. Copied from Debian: - -This patch solves the issue raised by CVE-2014-9116 in bug 771125. - -We correctly redefine what are the whitespace characters as per RFC5322; by -doing so we prevent mutt_substrdup from being used in a way that could lead to -a segfault. - -The lib.c part was written by Antonio Radici <antonio@debian.org> to prevent -crashes due to this kind of bugs from happening again. - -The wheezy version of this patch is slightly different, therefore this patch -has -jessie prefixed in its name. - -The sendlib.c part was provided by Salvatore Bonaccorso and it is the same as -the upstream patch reported here: -http://dev.mutt.org/trac/attachment/ticket/3716/ticket-3716-stable.patch - ---- a/lib.c -+++ b/lib.c -@@ -815,6 +815,9 @@ char *mutt_substrdup (const char *begin, - size_t len; - char *p; - -+ if (end != NULL && end < begin) -+ return NULL; -+ - if (end) - len = end - begin; - else ---- a/sendlib.c -+++ b/sendlib.c -@@ -1814,7 +1814,12 @@ static int write_one_header (FILE *fp, i - { - tagbuf = mutt_substrdup (start, t); - /* skip over the colon separating the header field name and value */ -- t = skip_email_wsp(t + 1); -+ ++t; -+ -+ /* skip over any leading whitespace (WSP, as defined in RFC5322) */ -+ while (*t == ' ' || *t == '\t') -+ t++; -+ - valbuf = mutt_substrdup (t, end); - } - dprint(4,(debugfile,"mwoh: buf[%s%s] too long, " diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 399c23fc0c..c972b62500 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -36,6 +36,7 @@ #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages attr) + #:use-module (gnu packages backup) #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages fontutils) @@ -72,6 +73,7 @@ #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (guix build-system cmake) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (srfi srfi-1)) @@ -3272,6 +3274,7 @@ functions.") (native-inputs `(("python-nose" ,python-nose) ("python-sphinx" ,python-sphinx) + ("python-numpydoc" ,python-numpydoc) ("gfortran" ,gfortran) ("texlive" ,texlive) ("perl" ,perl))) @@ -3329,7 +3332,13 @@ atlas_libs = openblas (zero? (system* "python" "-c" "import scipy; scipy.test()")))) (alist-delete 'check - %standard-phases)))))) + (alist-cons-after + 'unpack 'fix-tests + (lambda _ + (substitute* "scipy/integrate/tests/test_quadpack.py" + (("libm.so") "libm.so.6")) + #t) + %standard-phases))))))) (home-page "http://www.scipy.org/") (synopsis "The Scipy library provides efficient numerical routines") (description "The SciPy library is one of the core packages that make up @@ -5610,3 +5619,97 @@ Python Package Index (PyPI).") (define-public python2-pip (package-with-python2 python-pip)) + +(define-public python-tlsh + (package + (name "python-tlsh") + (version "3.4.1") ;according to CMakeLists.txt + (home-page "https://github.com/trendmicro/tlsh") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + ;; This is a commit right after 3.4.1; see + ;; <https://github.com/trendmicro/tlsh/issues/9>. + (commit "3ae3f1f"))) + (sha256 + (base32 + "12cvnr5ndm5cg6i7lch93id90kgwgrigjgrj8f186nh3h4bf9chj")) + (file-name (string-append name "-" version "-checkout")))) + (build-system cmake-build-system) + (arguments + '(#:out-of-source? #f + #:phases (modify-phases %standard-phases + (replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + ;; Build and install the Python bindings. The underlying + ;; C++ library is apparently not meant to be installed. + (let ((out (assoc-ref outputs "out"))) + (with-directory-excursion "py_ext" + (and (system* "python" "setup.py" "build") + (system* "python" "setup.py" "install" + (string-append "--prefix=" out)))))))))) + (inputs `(("python" ,python-wrapper))) ;for the bindings + (synopsis "Fuzzy matching library for Python") + (description + "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library. +Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash +value which can be used for similarity comparisons. Similar objects have +similar hash values, which allows for the detection of similar objects by +comparing their hash values. The byte stream should have a sufficient amount +of complexity; for example, a byte stream of identical bytes will not generate +a hash value.") + (license asl2.0))) + +(define-public python2-tlsh + (package + (inherit python-tlsh) + (name "python2-tlsh") + (inputs `(("python" ,python-2))))) + +(define-public python-libarchive-c + (package + (name "python-libarchive-c") + (version "2.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/l/libarchive-c/libarchive-c-" + version ".tar.gz")) + (sha256 + (base32 + "089lrz6xyrfnk55v35vis6jyqyyl77w093057djyspnd2744wi2n")))) + (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before + 'build 'reference-libarchive + (lambda* (#:key inputs #:allow-other-keys) + ;; Retain the absolute file name of libarchive.so. + (let ((libarchive (assoc-ref inputs "libarchive"))) + (substitute* "libarchive/ffi.py" + (("find_library\\('archive'\\)") + (string-append "'" libarchive + "/lib/libarchive.so'")))) + + ;; Do not make a compressed egg (see + ;; <http://bugs.gnu.org/20765>). + (let ((port (open-file "setup.cfg" "a"))) + (display "\n[easy_install]\nzip_ok = 0\n" + port) + (close-port port) + #t)))))) + (inputs + `(("python-setuptools" ,python-setuptools) + ("libarchive" ,libarchive))) + (home-page "https://github.com/Changaco/python-libarchive-c") + (synopsis "Python interface to libarchive") + (description + "This package provides Python bindings to libarchive, a C library to +access possibly compressed archives in many different formats. It uses +Python's @code{ctypes} foreign function interface (FFI).") + (license lgpl2.0+))) + +(define-public python2-libarchive-c + (package-with-python2 python-libarchive-c)) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index c906361971..701b7ee6ef 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -258,6 +259,17 @@ groups.") (home-page "https://github.com/rspec/rspec-core") (license license:expat))) +(define-public ruby-rspec-core-2 + (package (inherit ruby-rspec-core) + (version "2.14.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-core" version)) + (sha256 + (base32 + "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc")))) + (propagated-inputs `()))) + (define-public ruby-diff-lcs (package (name "ruby-diff-lcs") @@ -301,6 +313,18 @@ outcomes of a code example.") (home-page "https://github.com/rspec/rspec-expectations") (license license:expat))) +(define-public ruby-rspec-expectations-2 + (package (inherit ruby-rspec-expectations) + (version "2.14.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-expectations" version)) + (sha256 + (base32 + "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9")))) + (propagated-inputs + `(("ruby-diff-lcs" ,ruby-diff-lcs))))) + (define-public ruby-rspec-mocks (package (name "ruby-rspec-mocks") @@ -323,6 +347,18 @@ support for stubbing and mocking.") (home-page "https://github.com/rspec/rspec-mocks") (license license:expat))) +(define-public ruby-rspec-mocks-2 + (package (inherit ruby-rspec-mocks) + (version "2.14.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec-mocks" version)) + (sha256 + (base32 + "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30")))) + (propagated-inputs + `(("ruby-diff-lcs" ,ruby-diff-lcs))))) + (define-public ruby-rspec (package (name "ruby-rspec") @@ -347,6 +383,20 @@ expectations and mocks frameworks.") (home-page "http://rspec.info/") (license license:expat))) +(define-public ruby-rspec-2 + (package (inherit ruby-rspec) + (version "2.14.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rspec" version)) + (sha256 + (base32 + "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg")))) + (propagated-inputs + `(("ruby-rspec-core" ,ruby-rspec-core-2) + ("ruby-rspec-mocks" ,ruby-rspec-mocks-2) + ("ruby-rspec-expectations" ,ruby-rspec-expectations-2))))) + ;; Bundler is yet another source of circular dependencies, so we must disable ;; its test suite as well. (define-public bundler @@ -1415,3 +1465,34 @@ and trust on your team.") features such as filtering and fine grained logging.") (home-page "https://github.com/pjotrp/bioruby-logger-plugin") (license license:expat))) + +(define-public ruby-yard + (package + (name "ruby-yard") + (version "0.8.7.6") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "yard" version)) + (sha256 + (base32 + "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "specs" + #:phases + (modify-phases %standard-phases + (add-before 'check 'set-HOME + ;; $HOME needs to be set to somewhere writeable for tests to run + (lambda _ (setenv "HOME" "/tmp") #t))))) + (native-inputs + `(("ruby-rspec" ,ruby-rspec-2) + ("ruby-rack" ,ruby-rack))) + (synopsis "Documentation generation tool for Ruby") + (description + "YARD is a documentation generation tool for the Ruby programming +language. It enables the user to generate consistent, usable documentation +that can be exported to a number of formats very easily, and also supports +extending for custom Ruby constructs such as custom class level definitions.") + (home-page "http://yardoc.org") + (license license:expat))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 26483f707b..ced17f0e30 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -793,7 +793,7 @@ projects while introducing many more.") (define-public youtube-dl (package (name "youtube-dl") - (version "2015.09.28") + (version "2015.10.16") (source (origin (method url-fetch) (uri (string-append "https://youtube-dl.org/downloads/" @@ -801,7 +801,7 @@ projects while introducing many more.") version ".tar.gz")) (sha256 (base32 - "0q3s2a91s1lr1db2ngacq0iapyr4jngx1dqp4z5dc6zma0qyx5k3")))) + "001a4md0yl3zx129mksmwc85grss67r3c9rynvranf9vlpv202vn")))) (build-system python-build-system) (inputs `(("setuptools" ,python-setuptools))) (home-page "http://youtube-dl.org") diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 9ca5b96fe8..e0859ccf30 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2015 xd1le <elisp.vim@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -64,6 +65,39 @@ single/double-quoted strings, environment variable expansion, functions and nested include statements).") (license isc))) +(define-public bspwm + (package + (name "bspwm") + (version "0.9") + (source + (origin + (file-name (string-append name "-" version ".tar.gz")) + (method url-fetch) + (uri (string-append + "https://github.com/baskerville/bspwm/archive/" + version ".tar.gz")) + (sha256 + (base32 + "1pig0h2jk8wipyz90j69c4bk37bfyq60asnn0v0bqld2p2vjvyqy")))) + (build-system gnu-build-system) + (inputs + `(("libxcb" ,libxcb) + ("libxinerama" ,libxinerama) + ("sxhkd" ,sxhkd) + ("xcb-util" ,xcb-util) + ("xcb-util-keysyms" ,xcb-util-keysyms) + ("xcb-util-wm" ,xcb-util-wm))) + (arguments + '(#:phases (alist-delete 'configure %standard-phases) + #:tests? #f ; no check target + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output)))) + (home-page "https://github.com/baskerville/bspwm") + (synopsis "Tiling window manager based on binary space partitioning") + (description "bspwm is a tiling window manager that represents windows as +the leaves of a full binary tree.") + (license bsd-2))) + (define-public i3status (package (name "i3status") diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 7a0b50bdab..42a0454a35 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com> ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com> +;;; Copyright © 2015 xd1le <elisp.vim@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,6 +33,7 @@ #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system python) #:use-module (gnu packages) + #:use-module (gnu packages asciidoc) #:use-module (gnu packages compression) #:use-module (gnu packages image) #:use-module (gnu packages pkg-config) @@ -489,6 +491,38 @@ clicks or timed double clicks take actions. Also all functions that work in Guile will work for XBindKeys.") (license license:gpl2+))) +(define-public sxhkd + (package + (name "sxhkd") + (version "0.5.5") + (source + (origin + (file-name (string-append name "-" version ".tar.gz")) + (method url-fetch) + (uri (string-append + "https://github.com/baskerville/sxhkd/archive/" + version ".tar.gz")) + (sha256 + (base32 + "04s3y2bq9502gw72jj3y2zsh96yj3qg2av3zsa8ahd2farvrysg6")))) + (build-system gnu-build-system) + (inputs + `(("asciidoc" ,asciidoc) + ("libxcb" ,libxcb) + ("xcb-util" ,xcb-util) + ("xcb-util-keysyms" ,xcb-util-keysyms) + ("xcb-util-wm" ,xcb-util-wm))) + (arguments + '(#:phases (alist-delete 'configure %standard-phases) + #:tests? #f ; no check target + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" %output)))) + (home-page "https://github.com/baskerville/sxhkd") + (synopsis "Simple X hotkey daemon") + (description "sxhkd is a simple X hotkey daemon with a powerful and +compact configuration syntax.") + (license license:bsd-2))) + (define-public rxvt-unicode (package (name "rxvt-unicode") diff --git a/gnu/services.scm b/gnu/services.scm index fdfa569b23..d0fe0ade17 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -38,12 +38,17 @@ service-type service-type? + service-type-name + service-type-extensions + service-type-compose + service-type-extend service service? service-kind service-parameters + service-back-edges fold-services service-error? diff --git a/gnu/services/base.scm b/gnu/services/base.scm index adafe1b55e..336cc4dec9 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -125,7 +125,8 @@ (respawn? #f))) (define root-file-system-service-type - (dmd-service-type (const %root-file-system-dmd-service))) + (dmd-service-type 'root-file-system + (const %root-file-system-dmd-service))) (define (root-file-system-service) "Return a service whose sole purpose is to re-mount read-only the root file @@ -145,6 +146,7 @@ FILE-SYSTEM." ;; TODO(?): Make this an extensible service that takes <file-system> objects ;; and returns a list of <dmd-service>. (dmd-service-type + 'file-system (lambda (file-system) (let ((target (file-system-mount-point file-system)) (device (file-system-device file-system)) @@ -205,10 +207,11 @@ object." (define user-unmount-service-type (dmd-service-type + 'user-file-systems (lambda (known-mount-points) (dmd-service (documentation "Unmount manually-mounted file systems.") - (provision '(user-unmount)) + (provision '(user-file-systems)) (start #~(const #t)) (stop #~(lambda args (define (known? mount-point) @@ -242,14 +245,15 @@ in KNOWN-MOUNT-POINTS when it is stopped." (define user-processes-service-type (dmd-service-type + 'user-processes (match-lambda ((requirements grace-delay) (dmd-service (documentation "When stopped, terminate all user processes.") (provision '(user-processes)) - (requirement (cons 'root-file-system - (map file-system->dmd-service-name - requirements))) + (requirement (cons* 'root-file-system 'user-file-systems + (map file-system->dmd-service-name + requirements))) (start #~(const #t)) (stop #~(lambda _ (define (kill-except omit signal) @@ -337,6 +341,7 @@ stopped before 'kill' is called." (define host-name-service-type (dmd-service-type + 'host-name (lambda (name) (dmd-service (documentation "Initialize the machine's host name.") @@ -369,6 +374,7 @@ stopped before 'kill' is called." (define console-keymap-service-type (dmd-service-type + 'console-keymap (lambda (file) (dmd-service (documentation (string-append "Load console keymap (loadkeys).")) @@ -384,6 +390,7 @@ stopped before 'kill' is called." (define console-font-service-type (dmd-service-type + 'console-font (match-lambda ((tty font) (let ((device (string-append "/dev/" tty))) @@ -644,6 +651,7 @@ Service Switch}, for an example." (define syslog-service-type (dmd-service-type + 'syslog (lambda (config-file) (dmd-service (documentation "Run the syslog daemon (syslogd).") @@ -982,6 +990,7 @@ extra rules from the packages listed in @var{rules}." (define device-mapping-service-type (dmd-service-type + 'device-mapping (match-lambda ((target open close) (dmd-service @@ -1001,6 +1010,7 @@ gexp, to open it, and evaluate @var{close} to close it." (define swap-service-type (dmd-service-type + 'swap (lambda (device) (define requirement (if (string-prefix? "/dev/mapper/" device) diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm index 6020ffc8eb..e87b9e4415 100644 --- a/gnu/services/dmd.scm +++ b/gnu/services/dmd.scm @@ -27,7 +27,9 @@ #:use-module (gnu services) #:use-module (gnu packages admin) #:use-module (ice-9 match) + #:use-module (ice-9 vlist) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:export (dmd-root-service-type @@ -42,7 +44,9 @@ dmd-service-respawn? dmd-service-start dmd-service-stop - dmd-service-auto-start?)) + dmd-service-auto-start? + + dmd-service-back-edges)) ;;; Commentary: ;;; @@ -86,11 +90,11 @@ ;; <dmd-service> objects. (service dmd-root-service-type '())) -(define-syntax-rule (dmd-service-type proc) +(define-syntax-rule (dmd-service-type service-name proc) "Return a <service-type> denoting a simple dmd service--i.e., the type for a service that extends DMD-ROOT-SERVICE-TYPE and nothing else." (service-type - (name 'some-dmd-service) + (name service-name) (extensions (list (service-extension dmd-root-service-type (compose list proc)))))) @@ -98,17 +102,17 @@ service that extends DMD-ROOT-SERVICE-TYPE and nothing else." (define-record-type* <dmd-service> dmd-service make-dmd-service dmd-service? - (documentation service-documentation ; string + (documentation dmd-service-documentation ;string (default "[No documentation.]")) - (provision service-provision) ; list of symbols - (requirement service-requirement ; list of symbols + (provision dmd-service-provision) ;list of symbols + (requirement dmd-service-requirement ;list of symbols (default '())) - (respawn? service-respawn? ; Boolean + (respawn? dmd-service-respawn? ;Boolean (default #t)) - (start service-start) ; g-expression (procedure) - (stop service-stop ; g-expression (procedure) + (start dmd-service-start) ;g-expression (procedure) + (stop dmd-service-stop ;g-expression (procedure) (default #~(const #f))) - (auto-start? service-auto-start? ; Boolean + (auto-start? dmd-service-auto-start? ;Boolean (default #t))) @@ -127,8 +131,8 @@ failure." (format #f (_ "service '~a' provided more than once") symbol))))))) - (for-each assert-unique (service-provision service)) - (fold set-insert set (service-provision service))) + (for-each assert-unique (dmd-service-provision service)) + (fold set-insert set (dmd-service-provision service))) (setq) services)) @@ -160,12 +164,12 @@ failure." (register-services #$@(map (lambda (service) #~(make <service> - #:docstring '#$(service-documentation service) - #:provides '#$(service-provision service) - #:requires '#$(service-requirement service) - #:respawn? '#$(service-respawn? service) - #:start #$(service-start service) - #:stop #$(service-stop service))) + #:docstring '#$(dmd-service-documentation service) + #:provides '#$(dmd-service-provision service) + #:requires '#$(dmd-service-requirement service) + #:respawn? '#$(dmd-service-respawn? service) + #:start #$(dmd-service-start service) + #:stop #$(dmd-service-stop service))) services)) ;; guix-daemon 0.6 aborts if 'PATH' is undefined, so work around it. @@ -173,9 +177,38 @@ failure." (format #t "starting services...~%") (for-each start - '#$(append-map service-provision - (filter service-auto-start? services))))) + '#$(append-map dmd-service-provision + (filter dmd-service-auto-start? + services))))) (gexp->file "dmd.conf" config))) +(define (dmd-service-back-edges services) + "Return a procedure that, when given a <dmd-service> from SERVICES, returns +the list of <dmd-service> that depend on it." + (define provision->service + (let ((services (fold (lambda (service result) + (fold (cut vhash-consq <> service <>) + result + (dmd-service-provision service))) + vlist-null + services))) + (lambda (name) + (match (vhash-assq name services) + ((_ . service) service) + (#f #f))))) + + (define edges + (fold (lambda (service edges) + (fold (lambda (requirement edges) + (vhash-consq (provision->service requirement) service + edges)) + edges + (dmd-service-requirement service))) + vlist-null + services)) + + (lambda (service) + (vhash-foldq* cons '() service edges))) + ;;; dmd.scm ends here diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 52a843b54b..003d5a5010 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -94,6 +94,7 @@ fe80::1%lo0 apps.facebook.com\n") (define static-networking-service-type (dmd-service-type + 'static-networking (match-lambda (($ <static-networking> interface ip gateway provision name-servers net-tools) @@ -166,6 +167,7 @@ gateway." (define dhcp-client-service-type (dmd-service-type + 'dhcp-client (lambda (dhcp) (define dhclient #~(string-append #$dhcp "/sbin/dhclient")) diff --git a/gnu/system.scm b/gnu/system.scm index b32d26bc8e..aa768824d9 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -474,6 +474,9 @@ export DBUS_FATAL_WARNINGS=0 # 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\" + if [ -n \"$BASH_VERSION\" -a -f /etc/bashrc ] then # Load Bash-specific initialization code. diff --git a/gnu/system/install.scm b/gnu/system/install.scm index a91c5c3533..93a6f18c49 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -76,9 +76,12 @@ under /root/.guix-profile where GUIX is installed." (with-directory-excursion %root (zero? (system* "tar" "--xz" "--format=gnu" - ;; avoid non-determinism in the archive + ;; Avoid non-determinism in the archive. Use + ;; mtime = 1, not zero, because that is what the + ;; daemon does for files in the store (see the + ;; 'mtimeStore' constant in local-store.cc.) "--sort=name" - "--mtime=@0" ;for files in /var/guix + "--mtime=@1" ;for files in /var/guix "--owner=root:0" "--group=root:0" @@ -162,6 +165,7 @@ current store is on a RAM disk." (define cow-store-service-type (dmd-service-type + 'cow-store (lambda _ (dmd-service (requirement '(root-file-system user-processes)) diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index 3be83468eb..c83c50b76e 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -204,7 +204,7 @@ runs `make distcheck' and whose result is one or more source tarballs." (let ((ref (lambda (module var) (module-ref (resolve-interface module) var)))) `(,@(package-native-inputs p) - ("autoconf" ,(ref '(gnu packages autotools) 'autoconf)) + ("autoconf" ,((ref '(gnu packages autotools) 'autoconf-wrapper))) ("automake" ,(ref '(gnu packages autotools) 'automake)) ("libtool" ,(ref '(gnu packages autotools) 'libtool)) ("gettext" ,(ref '(gnu packages gettext) 'gnu-gettext)) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 2c2fbde0a3..a3b68c4537 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -315,10 +315,16 @@ string TMPL and return its file name. TMPL must end with 'XXXXXX'." (define CLONE_NEWNET #x40000000) ;; The libc interface to sys_clone is not useful for Scheme programs, so the -;; low-level system call is wrapped instead. +;; low-level system call is wrapped instead. The 'syscall' function is +;; declared in <unistd.h> as a variadic function; in practice, it expects 6 +;; pointer-sized arguments, as shown in, e.g., x86_64/syscall.S. (define clone (let* ((ptr (dynamic-func "syscall" (dynamic-link))) - (proc (pointer->procedure int ptr (list int int '*))) + (proc (pointer->procedure long ptr + (list long ;sysno + unsigned-long ;flags + '* '* '* + '*))) ;; TODO: Don't do this. (syscall-id (match (utsname:machine (uname)) ("i686" 120) @@ -329,7 +335,10 @@ string TMPL and return its file name. TMPL must end with 'XXXXXX'." "Create a new child process by duplicating the current parent process. Unlike the fork system call, clone accepts FLAGS that specify which resources are shared between the parent and child processes." - (let ((ret (proc syscall-id flags %null-pointer)) + (let ((ret (proc syscall-id flags + %null-pointer ;child stack + %null-pointer %null-pointer ;ptid & ctid + %null-pointer)) ;unused (err (errno))) (if (= ret -1) (throw 'system-error "clone" "~d: ~A" diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index ac83df40a3..e09df4b3ef 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -116,8 +116,10 @@ (doc-urls gnu-package-doc-urls) ; list of strings (download-url gnu-package-download-url)) -(define (official-gnu-packages) - "Return a list of records, which are GNU packages." +(define* (official-gnu-packages + #:optional (fetch http-fetch/cached)) + "Return a list of records, which are GNU packages. Use FETCH, +to fetch the list of GNU packages over HTTP." (define (read-records port) ;; Return a list of alists. Each alist contains fields of a GNU ;; package. @@ -129,8 +131,7 @@ (cons alist result))))) (define official-description - (let ((db (read-records (http-fetch %package-description-url - #:text? #t)))) + (let ((db (read-records (fetch %package-description-url #:text? #t)))) (lambda (name) ;; Return the description found upstream for package NAME, or #f. (and=> (find (lambda (alist) @@ -160,7 +161,10 @@ "doc-url" "download-url") '("doc-url" "language")))) - (read-records (http-fetch %package-list-url #:text? #t)))) + (let* ((port (fetch %package-list-url #:text? #t)) + (lst (read-records port))) + (close-port port) + lst))) (define (find-packages regexp) "Find GNU packages which satisfy REGEXP." diff --git a/guix/http-client.scm b/guix/http-client.scm index 9861ec80cb..8d1cc9b8f3 100644 --- a/guix/http-client.scm +++ b/guix/http-client.scm @@ -23,6 +23,8 @@ #:use-module ((web client) #:hide (open-socket-for-uri)) #:use-module (web response) #:use-module (srfi srfi-11) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:use-module (ice-9 match) @@ -30,6 +32,8 @@ #:use-module (rnrs bytevectors) #:use-module (guix ui) #:use-module (guix utils) + #:use-module ((guix build utils) + #:select (mkdir-p dump-port)) #:use-module ((guix build download) #:select (open-socket-for-uri resolve-uri-reference)) #:re-export (open-socket-for-uri) @@ -39,7 +43,10 @@ http-get-error-code http-get-error-reason - http-fetch)) + http-fetch + + %http-cache-ttl + http-fetch/cached)) ;;; Commentary: ;;; @@ -229,4 +236,51 @@ Raise an '&http-get-error' condition if downloading fails." (&message (message "download failed")))))))))) + +;;; +;;; Caching. +;;; + +(define (%http-cache-ttl) + ;; Time-to-live in seconds of the HTTP cache of in ~/.cache/guix. + (make-parameter + (* 3600 (or (and=> (getenv "GUIX_HTTP_CACHE_TTL") + string->number*) + 36)))) + +(define* (http-fetch/cached uri #:key (ttl (%http-cache-ttl)) text?) + "Like 'http-fetch', return an input port, but cache its contents in +~/.cache/guix. The cache remains valid for TTL seconds." + (let* ((directory (string-append (cache-directory) "/http/" + (uri-host uri))) + (file (string-append directory "/" + (basename (uri-path uri))))) + (define (update-cache) + ;; Update the cache and return an input port. + (let ((port (http-fetch uri #:text? text?))) + (mkdir-p directory) + (call-with-output-file file + (cut dump-port port <>)) + (close-port port) + (open-input-file file))) + + (define (old? port) + ;; Return true if PORT has passed TTL. + (let* ((s (stat port)) + (now (current-time time-utc))) + (< (+ (stat:mtime s) ttl) (time-second now)))) + + (catch 'system-error + (lambda () + (let ((port (open-input-file file))) + (if (old? port) + (begin + (close-port port) + (update-cache)) + port))) + (lambda args + (if (= ENOENT (system-error-errno args)) + (update-cache) + (apply throw args)))))) + ;;; http-client.scm ends here diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm index 725ae42030..734a47719a 100644 --- a/guix/scripts/graph.scm +++ b/guix/scripts/graph.scm @@ -322,10 +322,12 @@ substitutes." (define* (export-graph sinks port #:key + reverse-edges? (node-type %package-node-type) (backend %graphviz-backend)) "Write to PORT the representation of the DAG with the given SINKS, using the -given BACKEND. Use NODE-TYPE to traverse the DAG." +given BACKEND. Use NODE-TYPE to traverse the DAG. When REVERSE-EDGES? is +true, draw reverse arrows." (match backend (($ <graph-backend> emit-prologue emit-epilogue emit-node emit-edge) (emit-prologue (node-type-name node-type) port) @@ -349,7 +351,9 @@ given BACKEND. Use NODE-TYPE to traverse the DAG." dependencies))) (emit-node id (node-label head) port) (for-each (lambda (dependency dependency-id) - (emit-edge id dependency-id port)) + (if reverse-edges? + (emit-edge dependency-id id port) + (emit-edge id dependency-id port))) dependencies ids) (loop (append dependencies tail) (set-insert id visited))))))))))))) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 71b92dacc7..b5da57a9ce 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -28,12 +28,15 @@ #:use-module (guix profiles) #:use-module (guix scripts) #:use-module (guix scripts build) + #:use-module (guix scripts graph) #:use-module (guix build utils) #:use-module (gnu build install) #:use-module (gnu system) #:use-module (gnu system file-systems) #:use-module (gnu system vm) #:use-module (gnu system grub) + #:use-module (gnu services) + #:use-module (gnu services dmd) #:use-module (gnu packages grub) #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) @@ -280,6 +283,50 @@ it atomically, and then run OS's activation script." ;;; +;;; Graphs. +;;; + +(define (service-node-label service) + "Return a label to represent SERVICE." + (let ((type (service-kind service)) + (value (service-parameters service))) + (string-append (symbol->string (service-type-name type)) + (cond ((or (number? value) (symbol? value)) + (string-append " " (object->string value))) + ((string? value) + (string-append " " value)) + ((file-system? value) + (string-append " " (file-system-mount-point value))) + (else + ""))))) + +(define (service-node-type services) + "Return a node type for SERVICES. Since <service> instances are not +self-contained (they express dependencies on service types, not on services), +we have to create the 'edges' procedure dynamically as a function of the full +list of services." + (node-type + (name "service") + (description "the DAG of services") + (identifier (lift1 object-address %store-monad)) + (label service-node-label) + (edges (lift1 (service-back-edges services) %store-monad)))) + +(define (dmd-service-node-label service) + "Return a label for a node representing a <dmd-service>." + (string-join (map symbol->string (dmd-service-provision service)))) + +(define (dmd-service-node-type services) + "Return a node type for SERVICES, a list of <dmd-service>." + (node-type + (name "dmd-service") + (description "the dependency graph of dmd services") + (identifier (lift1 dmd-service-node-label %store-monad)) + (label dmd-service-node-label) + (edges (lift1 (dmd-service-back-edges services) %store-monad)))) + + +;;; ;;; Action. ;;; @@ -366,6 +413,29 @@ building anything." ;; All we had to do was to build SYS. (return (derivation->output-path sys)))))))) +(define (export-extension-graph os port) + "Export the service extension graph of OS to PORT." + (let* ((services (operating-system-services os)) + (boot (find (lambda (service) + (eq? (service-kind service) boot-service-type)) + services))) + (export-graph (list boot) (current-output-port) + #:node-type (service-node-type services) + #:reverse-edges? #t))) + +(define (export-dmd-graph os port) + "Export the graph of dmd services of OS to PORT." + (let* ((services (operating-system-services os)) + (pid1 (fold-services services + #:target-type dmd-root-service-type)) + (dmds (service-parameters pid1)) ;the list of <dmd-service> + (sinks (filter (lambda (service) + (null? (dmd-service-requirement service))) + dmds))) + (export-graph sinks (current-output-port) + #:node-type (dmd-service-node-type dmds) + #:reverse-edges? #t))) + ;;; ;;; Options. @@ -388,7 +458,11 @@ Build the operating system declared in FILE according to ACTION.\n")) (display (_ "\ disk-image build a disk image, suitable for a USB stick\n")) (display (_ "\ - init initialize a root file system to run GNU.\n")) + init initialize a root file system to run GNU\n")) + (display (_ "\ + extension-graph emit the service extension graph in Dot format\n")) + (display (_ "\ + dmd-graph emit the graph of dmd services in Dot format\n")) (show-build-options-help) (display (_ " @@ -496,16 +570,17 @@ Build the operating system declared in FILE according to ACTION.\n")) (alist-cons 'argument arg result) (let ((action (string->symbol arg))) (case action - ((build vm vm-image disk-image reconfigure init) + ((build vm vm-image disk-image reconfigure init + extension-graph dmd-graph) (alist-cons 'action action result)) (else (leave (_ "~a: unknown action~%") action)))))) (define (match-pair car) ;; Return a procedure that matches a pair with CAR. (match-lambda - ((head . tail) - (and (eq? car head) tail)) - (_ #f))) + ((head . tail) + (and (eq? car head) tail)) + (_ #f))) (define (option-arguments opts) ;; Extract the plain arguments from OPTS. @@ -561,20 +636,26 @@ Build the operating system declared in FILE according to ACTION.\n")) (run-with-store store (mbegin %store-monad (set-guile-for-build (default-guile)) - (perform-action action os - #:dry-run? dry? - #:derivations-only? (assoc-ref opts - 'derivations-only?) - #:use-substitutes? (assoc-ref opts 'substitutes?) - #:image-size (assoc-ref opts 'image-size) - #:full-boot? (assoc-ref opts 'full-boot?) - #:mappings (filter-map (match-lambda - (('file-system-mapping . m) - m) - (_ #f)) - opts) - #:grub? grub? - #:target target #:device device)) + (case action + ((extension-graph) + (export-extension-graph os (current-output-port))) + ((dmd-graph) + (export-dmd-graph os (current-output-port))) + (else + (perform-action action os + #:dry-run? dry? + #:derivations-only? (assoc-ref opts + 'derivations-only?) + #:use-substitutes? (assoc-ref opts 'substitutes?) + #:image-size (assoc-ref opts 'image-size) + #:full-boot? (assoc-ref opts 'full-boot?) + #:mappings (filter-map (match-lambda + (('file-system-mapping . m) + m) + (_ #f)) + opts) + #:grub? grub? + #:target target #:device device)))) #:system system)))) ;;; system.scm ends here diff --git a/guix/utils.scm b/guix/utils.scm index 0802a1b67a..190b787185 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -81,6 +81,7 @@ fold-tree fold-tree-leaves split + cache-directory filtered-port compressed-port @@ -703,6 +704,12 @@ elements after E." ((head . tail) (loop tail (cons head acc)))))) +(define (cache-directory) + "Return the cache directory for Guix, by default ~/.cache/guix." + (or (getenv "XDG_CONFIG_HOME") + (and=> (getenv "HOME") + (cut string-append <> "/.cache/guix")))) + ;;; ;;; Source location. diff --git a/tests/services.scm b/tests/services.scm index b4e2cb0b30..7d2e31b3a9 100644 --- a/tests/services.scm +++ b/tests/services.scm @@ -18,6 +18,7 @@ (define-module (test-services) #:use-module (gnu services) + #:use-module (gnu services dmd) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) @@ -25,6 +26,25 @@ (test-begin "services") +(test-assert "service-back-edges" + (let* ((t1 (service-type (name 't1) (extensions '()) + (compose +) (extend *))) + (t2 (service-type (name 't2) + (extensions + (list (service-extension t1 (const '())))) + (compose +) (extend *))) + (t3 (service-type (name 't3) + (extensions + (list (service-extension t2 identity) + (service-extension t1 list))))) + (s1 (service t1 #t)) + (s2 (service t2 #t)) + (s3 (service t3 #t)) + (e (service-back-edges (list s1 s2 s3)))) + (and (lset= eq? (e s1) (list s2 s3)) + (lset= eq? (e s2) (list s3)) + (null? (e s3))))) + (test-equal "fold-services" ;; Make sure 'fold-services' returns the right result. The numbers come ;; from services of type T3; 'xyz 60' comes from the service of type T2, @@ -85,6 +105,15 @@ (fold-services (list s) #:target-type t1) #f))) +(test-assert "dmd-service-back-edges" + (let* ((s1 (dmd-service (provision '(s1)) (start #f))) + (s2 (dmd-service (provision '(s2)) (requirement '(s1)) (start #f))) + (s3 (dmd-service (provision '(s3)) (requirement '(s1 s2)) (start #f))) + (e (dmd-service-back-edges (list s1 s2 s3)))) + (and (lset= eq? (e s1) (list s2 s3)) + (lset= eq? (e s2) (list s3)) + (null? (e s3))))) + (test-end) |