scripts: package: Add --install-from-file option.
* guix/scripts/package.scm (show-help): Add help text for --install-from-file option. (%options): Add --install-from-file option. * tests/guix-package.sh: Test it. * doc/guix.texi ("invoking guix package"): Document it. * doc/package-hello.scm: New file. * doc.am (EXTRA_DIST): Add it.
This commit is contained in:
parent
83bde59fb3
commit
0d2794005c
3
doc.am
3
doc.am
@ -26,7 +26,8 @@ EXTRA_DIST += \
|
|||||||
doc/images/bootstrap-graph.eps \
|
doc/images/bootstrap-graph.eps \
|
||||||
doc/images/bootstrap-graph.pdf \
|
doc/images/bootstrap-graph.pdf \
|
||||||
doc/images/coreutils-size-map.eps \
|
doc/images/coreutils-size-map.eps \
|
||||||
doc/environment-gdb.scm
|
doc/environment-gdb.scm \
|
||||||
|
doc/package-hello.scm
|
||||||
|
|
||||||
OS_CONFIG_EXAMPLES_TEXI = \
|
OS_CONFIG_EXAMPLES_TEXI = \
|
||||||
doc/os-config-bare-bones.texi \
|
doc/os-config-bare-bones.texi \
|
||||||
|
@ -1167,6 +1167,22 @@ Note that this option installs the first output of the specified
|
|||||||
package, which may be insufficient when needing a specific output of a
|
package, which may be insufficient when needing a specific output of a
|
||||||
multiple-output package.
|
multiple-output package.
|
||||||
|
|
||||||
|
@item --install-from-file=@var{file}
|
||||||
|
@itemx -f @var{file}
|
||||||
|
Install the package that the code within @var{file} evaluates to.
|
||||||
|
|
||||||
|
As an example, @var{file} might contain a definition like this
|
||||||
|
(@pxref{Defining Packages}):
|
||||||
|
|
||||||
|
@example
|
||||||
|
@verbatiminclude package-hello.scm
|
||||||
|
@end example
|
||||||
|
|
||||||
|
Developers may find it useful to include such a @file{package.scm} file
|
||||||
|
in the root of their project's source tree that can be used to test
|
||||||
|
development snapshots and create reproducible development environments
|
||||||
|
(@pxref{Invoking guix environment}).
|
||||||
|
|
||||||
@item --remove=@var{package} @dots{}
|
@item --remove=@var{package} @dots{}
|
||||||
@itemx -r @var{package} @dots{}
|
@itemx -r @var{package} @dots{}
|
||||||
Remove the specified @var{package}s.
|
Remove the specified @var{package}s.
|
||||||
|
18
doc/package-hello.scm
Normal file
18
doc/package-hello.scm
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
(use-modules (guix)
|
||||||
|
(guix build-system gnu)
|
||||||
|
(guix licenses))
|
||||||
|
|
||||||
|
(package
|
||||||
|
(name "hello")
|
||||||
|
(version "2.8")
|
||||||
|
(source (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "mirror://gnu/hello/hello-" version
|
||||||
|
".tar.gz"))
|
||||||
|
(sha256
|
||||||
|
(base32 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(synopsis "Hello, GNU world: An example GNU package")
|
||||||
|
(description "Guess what GNU Hello prints!")
|
||||||
|
(home-page "http://www.gnu.org/software/hello/")
|
||||||
|
(license gpl3+))
|
@ -381,6 +381,10 @@ Install, remove, or upgrade packages in a single transaction.\n"))
|
|||||||
-e, --install-from-expression=EXP
|
-e, --install-from-expression=EXP
|
||||||
install the package EXP evaluates to"))
|
install the package EXP evaluates to"))
|
||||||
(display (_ "
|
(display (_ "
|
||||||
|
-f, --install-from-file=FILE
|
||||||
|
install the package that the code within FILE
|
||||||
|
evaluates to"))
|
||||||
|
(display (_ "
|
||||||
-r, --remove PACKAGE ...
|
-r, --remove PACKAGE ...
|
||||||
remove PACKAGEs"))
|
remove PACKAGEs"))
|
||||||
(display (_ "
|
(display (_ "
|
||||||
@ -454,6 +458,12 @@ Install, remove, or upgrade packages in a single transaction.\n"))
|
|||||||
(values (alist-cons 'install (read/eval-package-expression arg)
|
(values (alist-cons 'install (read/eval-package-expression arg)
|
||||||
result)
|
result)
|
||||||
#f)))
|
#f)))
|
||||||
|
(option '(#\f "install-from-file") #t #f
|
||||||
|
(lambda (opt name arg result arg-handler)
|
||||||
|
(values (alist-cons 'install
|
||||||
|
(load* arg (make-user-module '()))
|
||||||
|
result)
|
||||||
|
#f)))
|
||||||
(option '(#\r "remove") #f #t
|
(option '(#\r "remove") #f #t
|
||||||
(lambda (opt name arg result arg-handler)
|
(lambda (opt name arg result arg-handler)
|
||||||
(let arg-handler ((arg arg) (result result))
|
(let arg-handler ((arg arg) (result result))
|
||||||
|
@ -225,6 +225,15 @@ cat > "$module_dir/foo.scm"<<EOF
|
|||||||
EOF
|
EOF
|
||||||
guix package -i emacs-foo-bar-patched -n
|
guix package -i emacs-foo-bar-patched -n
|
||||||
|
|
||||||
|
# Make sure installing from a file works.
|
||||||
|
cat > "$module_dir/package.scm"<<EOF
|
||||||
|
(use-modules (gnu))
|
||||||
|
(use-package-modules bootstrap)
|
||||||
|
|
||||||
|
%bootstrap-guile
|
||||||
|
EOF
|
||||||
|
guix package --bootstrap --install-from-file="$module_dir/package.scm"
|
||||||
|
|
||||||
# This one should not show up in searches since it's no supported on the
|
# This one should not show up in searches since it's no supported on the
|
||||||
# current system.
|
# current system.
|
||||||
test "`guix package -A super-non-portable-emacs`" = ""
|
test "`guix package -A super-non-portable-emacs`" = ""
|
||||||
|
Loading…
Reference in New Issue
Block a user