Merge branch 'master' into dbus-update
This commit is contained in:
		
						commit
						ccb522324b
					
				
					 41 changed files with 1146 additions and 394 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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."
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										3
									
								
								doc.am
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								doc.am
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -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)			\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										75
									
								
								doc/images/dmd-graph.dot
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								doc/images/dmd-graph.dot
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
  (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")
 | 
			
		||||
     ,(guix-command-make-argument
 | 
			
		||||
       :name "view" :char ?v :doc "View graph"))
 | 
			
		||||
      (("graph") ,graph-arg)
 | 
			
		||||
      (("size")
 | 
			
		||||
       ,(guix-command-make-argument
 | 
			
		||||
       :name "view" :char ?v :doc "View map")))
 | 
			
		||||
         :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'.")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			@ -188,6 +232,69 @@ to find 'modify-phases' keywords."
 | 
			
		|||
      (0 'guix-devel-modify-phases-keyword nil t))))
 | 
			
		||||
  "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)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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		\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 "]{"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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, "
 | 
			
		||||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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,12 +245,13 @@ 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
 | 
			
		||||
       (requirement (cons* 'root-file-system 'user-file-systems
 | 
			
		||||
                           (map file-system->dmd-service-name
 | 
			
		||||
                                requirements)))
 | 
			
		||||
       (start #~(const #t))
 | 
			
		||||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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."
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)))))))))))))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			@ -278,6 +281,50 @@ it atomically, and then run OS's activation script."
 | 
			
		|||
                       systems)))
 | 
			
		||||
    (filter-map system->grub-entry systems numbers times)))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
;;; 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,7 +570,8 @@ 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))))))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -561,6 +636,12 @@ Build the operating system declared in FILE according to ACTION.\n"))
 | 
			
		|||
      (run-with-store store
 | 
			
		||||
        (mbegin %store-monad
 | 
			
		||||
          (set-guile-for-build (default-guile))
 | 
			
		||||
          (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
 | 
			
		||||
| 
						 | 
				
			
			@ -574,7 +655,7 @@ Build the operating system declared in FILE according to ACTION.\n"))
 | 
			
		|||
                                                      (_ #f))
 | 
			
		||||
                                                    opts)
 | 
			
		||||
                             #:grub? grub?
 | 
			
		||||
                          #:target target #:device device))
 | 
			
		||||
                             #:target target #:device device))))
 | 
			
		||||
        #:system system))))
 | 
			
		||||
 | 
			
		||||
;;; system.scm ends here
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue