X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/35f35111678e6622301b414f3d464acb71e106bb..c456d18b50f764d008ef46029201ef20584cd6f7:/doc/guix.texi diff --git a/doc/guix.texi b/doc/guix.texi index f1ca285a25..a66bb3d646 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -772,11 +772,11 @@ The following dependencies are optional: @itemize @item -@c Note: We need at least 0.10.2 for 'channel-send-eof'. +@c Note: We need at least 0.12.0 for 'userauth-gssapi!'. Support for build offloading (@pxref{Daemon Offload Setup}) and @command{guix copy} (@pxref{Invoking guix copy}) depends on @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, -version 0.10.2 or later. +version 0.12.0 or later. @item When @url{https://www.nongnu.org/lzip/lzlib.html, lzlib} is available, lzlib @@ -6154,6 +6154,70 @@ parameters available to cargo. It will also remove an included if they are defined by the crate. @end defvr + +@defvr {Scheme Variable} copy-build-system +@cindex (copy build system) +This variable is exported by @code{(guix build-system copy)}. It +supports builds of simple packages that don't require much compiling, +mostly just moving files around. + +It adds much of the @code{gnu-build-system} packages to the set of +inputs. Because of this, the @code{copy-build-system} does not require +all the boilerplate code often needed for the +@code{trivial-build-system}. + +To further simplify the file installation process, an +@code{#:install-plan} argument is exposed to let the packager specify +which files go where. The install plan is a list of @code{(@var{source} +@var{target} [@var{filters}])}. @var{filters} are optional. + +@itemize +@item When @var{source} matches a file or directory without trailing slash, install it to @var{target}. +@itemize +@item If @var{target} has a trailing slash, install @var{source} basename beneath @var{target}. +@item Otherwise install @var{source} as @var{target}. +@end itemize + +@item When @var{source} is a directory with a trailing slash, or when @var{filters} are used, +the trailing slash of @var{target} is implied with the same meaning +as above. +@itemize +@item Without @var{filters}, install the full @var{source} @emph{content} to @var{target}. +@item With @var{filters} among @code{#:include}, @code{#:include-regexp}, @code{#:exclude}, +@code{#:exclude-regexp}, only select files are installed depending on +the filters. Each filters is specified by a list of strings. +@itemize +@item With @code{#:include}, install all the files which the path suffix matches +at least one of the elements in the given list. +@item With @code{#:include-regexp}, install all the files which the +subpaths match at least one of the regular expressions in the given +list. +@item The @code{#:exclude} and @code{#:exclude-regexp} filters +are the complement of their inclusion counterpart. Without @code{#:include} flags, +install all files but those matching the exclusion filters. +If both inclusions and exclusions are specified, the exclusions are done +on top of the inclusions. +@end itemize +@end itemize +In all cases, the paths relative to @var{source} are preserved within +@var{target}. +@end itemize + +Examples: + +@itemize +@item @code{("foo/bar" "share/my-app/")}: Install @file{bar} to @file{share/my-app/bar}. +@item @code{("foo/bar" "share/my-app/baz")}: Install @file{bar} to @file{share/my-app/baz}. +@item @code{("foo/" "share/my-app")}: Install the content of @file{foo} inside @file{share/my-app}, +e.g., install @file{foo/sub/file} to @file{share/my-app/sub/file}. +@item @code{("foo/" "share/my-app" #:include ("sub/file"))}: Install only @file{foo/sub/file} to +@file{share/my-app/sub/file}. +@item @code{("foo/sub" "share/my-app" #:include ("file"))}: Install @file{foo/sub/file} to +@file{share/my-app/file}. +@end itemize +@end defvr + + @cindex Clojure (programming language) @cindex simple Clojure build system @defvr {Scheme Variable} clojure-build-system @@ -6810,10 +6874,11 @@ instruct it to listen for TCP connections (@pxref{Invoking guix-daemon, @item ssh @cindex SSH access to build daemons -These URIs allow you to connect to a remote daemon over -SSH. This feature requires Guile-SSH (@pxref{Requirements}) and a working -@code{guile} binary in @code{PATH} on the destination machine. It supports -public key and GSSAPI authentication. A typical URL might look like this: +These URIs allow you to connect to a remote daemon over SSH. This +feature requires Guile-SSH (@pxref{Requirements}) and a working +@code{guile} binary in @code{PATH} on the destination machine. It +supports public key and GSSAPI authentication. A typical URL might look +like this: @example ssh://charlie@@guix.example.org:22