aboutsummaryrefslogtreecommitdiff
path: root/guix-package.in
Commit message (Collapse)AuthorAge
* Replace individual scripts with master 'guix' script.Mark H Weaver2013-02-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * scripts/guix.in: New script. * Makefile.am (bin_SCRIPTS): Add 'scripts/guix'. Remove 'guix-build', 'guix-download', 'guix-import', 'guix-package', and 'guix-gc'. (MODULES): Add 'guix/scripts/build.scm', 'guix/scripts/download.scm', 'guix/scripts/import.scm', 'guix/scripts/package.scm', and 'guix/scripts/gc.scm'. * configure.ac (AC_CONFIG_FILES): Add 'scripts/guix'. Remove 'guix-build', 'guix-download', 'guix-import', 'guix-package', and 'guix-gc'. * guix-build.in, guix-download.in, guix-gc.in, guix-import.in, guix-package.in: Remove shell script boilerplate. Move to guix-COMMAND.in to guix/scripts/COMMAND.scm. Rename module from (guix-COMMAND) to (guix scripts COMMAND). Change "guix-COMMAND" to "guix COMMAND" in usage help string. * pre-inst-env.in: Add "@abs_top_builddir@/scripts" to the front of $PATH. Export $GUIX_UNINSTALLED. * tests/guix-build.sh, tests/guix-daemon.sh, tests/guix-download.sh, tests/guix-gc.sh, tests/guix-package.sh: Use "guix COMMAND" instead of "guix-COMMAND". * doc/guix.texi: Replace all occurrences of "guix-COMMAND" with "guix COMMAND". * po/POTFILES.in: Update.
* Build newest versions unless specified, and implement upgrades.Mark H Weaver2013-02-13
| | | | | | | | | | | | | | | | | | | | | | | * gnu/packages.scm (find-newest-available-packages): New exported procedure. * guix-build.in (newest-available-packages, find-best-packages-by-name): New procedures. (find-package): Use find-best-packages-by-name, to guarantee that if a version number is not specified, only the newest versions will be considered. * guix-package.in (%options): Add --upgrade/-u option. (newest-available-packages, find-best-packages-by-name, upgradeable?): New procedures. (find-package): Use find-best-packages-by-name, to guarantee that if a version number is not specified, only the newest versions will be considered. (process-actions): Implement upgrade option. * doc/guix.texi (Invoking guix-package): In the description of --install, mention that if no version number is specified, the newest available version will be selected.
* guix-package: Install propagated inputs.Ludovic Courtès2013-02-06
| | | | | | | | | | | | | | * guix-package.in (profile-manifest): Return "version 1" manifests. (manifest-packages): Likewise. When MANIFEST is "version 0", add '() as the list of "propagated inputs" of each package. (profile-derivation): Produce "version 1" manifests. Pass each PACKAGES item's propagated inputs as an input for BUILDER. (input->name+path): New procedure. (guix-package)[find-package]: Add the transitive propagated inputs of each selected package as the last item of the tuple. [canonicalize-deps]: New procedure. [process-actions]: Adjust to support propagated inputs as the last item. [process-query]: Likewise.
* guix-package: Make `--search' queries case-insensitive.Ludovic Courtès2013-02-01
| | | | | * guix-package.in (guix-package)[process-query]: Use `regexp/icase' for the `search' regexp.
* guix-package: Report `--search' matches in recutils format.Ludovic Courtès2013-02-01
| | | | | | | | | | | | * guix/ui.scm (fill-paragraph, string->recutils, package->recutils): New procedures. * guix-package.in (guix-package)[process-query]: Use `package->recutils' to display package meta-data. * tests/guix-package.sh: Adjust test. * tests/ui.scm: New file. * Makefile.am (TESTS): Add it. * doc/guix.texi (Invoking guix-package): Adjust `--search' documentation, and give an example.
* guix-package: Gracefully report non-existing outputs.Ludovic Courtès2013-02-01
| | | | | * guix-package.in (guix-package)[find-package](ensure-output): New procedure. Use it to validate SUB-DRV.
* guix-package: Reduce start-up time for queries.Ludovic Courtès2013-01-31
| | | | | * guix-package.in (guix-package): Call `open-connection' and `package-derivation' only after `process-query' has returned.
* Gracefully handle failure to install the current locale.Ludovic Courtès2013-01-30
| | | | | | * guix/ui.scm (install-locale): New procedure. * guix-build.in, guix-download.in, guix-gc.in, guix-import.in, guix-package.in: Use it instead of (setlocale LC_ALL "").
* guix-package: Add '--search'.Nikita Karetnikov2013-01-28
| | | | | | | | * guix-package.in (find-packages-by-description): New procedure. (show-help, %options): Add '--search'. (guix-package)[process-query]: Add support for '--search'. * doc/guix.texi (Invoking guix-package): Document it. * tests/guix-package.sh: Add tests.
* guix-package: Always use the next number for new generations.Ludovic Courtès2013-01-27
| | | | | | | | | | | | | | | | Suggested by Andreas Enge <andreas@enge.fr> at <http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00325.html>. * guix-package.in (latest-profile-number): Remove. (switch-symlinks): New procedure. (roll-back)[switch-link]: Use it. (guix-package)[process-actions]: Always choose NUMBER + 1 for the new profile. Use `switch-symlinks' instead of `symlink'. Remove code to delete PROFILE when it exists since `switch-symlinks' has the same effect. * tests/guix-package.sh: Adjust existing `--roll-back' tests. * doc/guix.texi (Invoking guix-package): Document this `--roll-back' behavior.
* guix-package: When rolling back to nothingness, point to the empty profile.Ludovic Courtès2013-01-27
| | | | | | | | | | | | Suggested by Andreas Enge <andreas@enge.fr> at <http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00316.html>. * guix-package.in (roll-back): Check whether PROFILE is valid using `file-exists?'. When NUMBER is zero, just emit a notice. When PREVIOUS-NUMBER is zero and PREVIOUS-PROFILE does not exist, build the empty profile, and link to it. * tests/guix-package.sh: Add tests. * doc/guix.texi (Invoking guix-package): Document the new behavior.
* guix-package: Error out when passed a non-option argument.Ludovic Courtès2013-01-24
| | | | | | | * guix-package.in (guix-package)[parse-options]: Call `leave' when passed a non-option argument. Reported by Andreas Enge <andreas@enge.fr>. * tests/guix-package.sh: Add test.
* guix-package: Fix `--roll-back' when `--profile' is not passed.Ludovic Courtès2013-01-22
| | | | | | | * guix-package.in (roll-back): Fix file name of PREVIOUS-PROFILE, which could end up containing the dirname twice. Reported by Nikita and Andreas. * tests/guix-package.sh: Add test.
* distro: Rename (distro) to (gnu packages).Ludovic Courtès2013-01-18
| | | | | | | * distro.scm: Rename to... * gnu/packages.scm: ... this. Update all users accordingly. * Makefile.am (MODULES): Adjust accordingly. * po/POTFILES.in: Likewise.
* distro: Change the module name space to (gnu ...).Ludovic Courtès2013-01-18
| | | | | | | | | | * distro: Rename to... * gnu: ... this. Update module names accordingly. * Makefile.am: Adjust accordingly. * po/POTFILES.in: Likewise. * distro.scm: Search for files under /gnu/packages instead of /distro/packages. * gnu/packages/base.scm (ld-wrapper-boot3): Likewise.
* guix-package: Allow `--roll-back' to skip missing generations.Ludovic Courtès2013-01-17
| | | | | | | | | * guix-package.in (profile-numbers): New procedure. (latest-profile-number): Use it. (previous-profile-number): New procedure. (roll-back): Use it lieu of `1-'. Check whether PREVIOUS-NUMBER is zero, and raise an error when it is. * tests/guix-package.sh: Test whether we can roll back over a "hole".
* guix-package: Add `--roll-back'.Ludovic Courtès2013-01-17
| | | | | | | | | | | | | | | | | | Based on a patch by Nikita Karetnikov <nikita@karetnikov.org>. * guix-package.in (profile-regexp): New procedure. (latest-profile-number): Remove `%profile-rx', and use `profile-regexp' instead. (profile-number, roll-back): New procedure. (show-help): Add `--roll-back'. (%options): Likewise. (guix-package)[process-actions]: First check whether `roll-back?' is among OPTS, and call `roll-back' if it is, followed by a recursive call to `process-actions'. Emit the "nothing to be done" message only when INSTALL or REMOVE is non-empty. * tests/guix-package.sh (readlink_base): New function. Add tests for `--roll-back'. * doc/guix.texi (Invoking guix-package): Document `--roll-back'.
* guix-package: Connect to the daemon only after arguments have been processed.Ludovic Courtès2013-01-15
| | | | | | * guix-package.in (%store): Change to a SRFI-39 parameter. Update all users. (guix-package): Parametrize %STORE to an open connection after `parse-options' has been called.
* guix-package: Create or diagnose missing profile directory.Ludovic Courtès2013-01-14
| | | | | | | | | | | Reported by Andreas Enge. * guix-package.in (%profile-directory): Honor $NIX_STATE_DIR. (guix-package)[ensure-default-profile]: Use it. [process-actions]: Call it when the `profile' option is %CURRENT-PROFILE. * tests/guix-package.sh: Add installation test with $HOME set, using the default profile.
* guix-package: Fix check for ~/.guix-profile existence.Ludovic Courtès2013-01-13
| | | | | | * guix-package.in (guix-package): When testing whether %USER-ENVIRONMENT-DIRECTORY exists, use `lstat' instead of `file-exists?'. Reported by Andreas Enge.
* guix-package: Create ~/.guix-profile when it doesn't exist.Ludovic Courtès2013-01-09
| | | | | | * guix-package.in (guix-package): Create the %USER-ENVIRONMENT-DIRECTORY symlink if it doesn't exist yet. * doc/guix.texi (Invoking guix-package): Document it.
* guix-package: Show package outputs in `--list-available'.Ludovic Courtès2013-01-09
| | | | | | * guix-package.in (guix-package)[process-query]: For `list-available', show the outputs of each package. * doc/guix.texi (Invoking guix-package): Update accordingly.
* guix-package: Use `guile-final', not `guile-2.0' to build the environment.Ludovic Courtès2013-01-08
| | | | | * guix-package.in (guix-package): Use either %BOOTSTRAP-GUILE or GUILE-FINAL.
* guix-package: Be verbose when Guile itself needs to be built.Ludovic Courtès2013-01-08
| | | | | | * guix-package.in (guix-package)[guile-missing?]: New procedure. (guix-package): Always redirect `current-build-output-port' to `current-error-port' when (guile-missing?).
* guix-package: Remove `-b' shorthand for `--bootstrap'.Ludovic Courtès2013-01-07
| | | | | | | * guix-package.in (%options): Remove #\b as an alternate for "bootstrap". (show-help): Adjust accordingly. * tests/guix-package.sh: Use `--bootstrap' instead of `-b'.
* Update license headers.Ludovic Courtès2013-01-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change all license headers, except guix/build/* and ld-wrapper.scm, with this code: (use-modules (guix build utils) (srfi srfi-1)) (fluid-set! %default-port-encoding "UTF-8") (substitute* (remove (lambda (f) (or (string-contains f ".tar.") (string-contains f ".git/") (string-contains f ".so") (string-suffix? ".o" f) (string-suffix? ".a" f) (string-suffix? ".go" f) (string-suffix? ".pdf" f) (string-suffix? ".png" f) (string-suffix? ".info" f) (equal? (basename f) "guix-daemon") (equal? (basename f) "nix-setuid-helper") (string-contains f "nix-upstream/") (string-contains f "distro/packages/bootstrap/"))) (find-files "." "\\.[a-z]+$")) (("^([[:graph:]]+) This file is part of Guix." _ comment-start) (string-append comment-start " This file is part of GNU Guix.")) (("^([[:graph:]]+) Guix --- Nix package management.*" _ comment-start) (string-append comment-start " GNU Guix --- Functional package management for GNU\n")) (("^([[:graph:]]+) Guix is " _ comment-start) (string-append comment-start " GNU Guix is ")) (("^([[:graph:]]+) along with Guix." _ comment-start) (string-append comment-start " along with GNU Guix.")) (("^([[:graph:]]+) Copyright \\(C\\)" _ comment-start) (string-append comment-start " Copyright ©"))) Change headers using C-style comments manually.
* ui: Factorize bug-report information in `--help'.Ludovic Courtès2013-01-05
| | | | | | | | | * guix/config.scm.in (%guix-home-page-url): New variable. * guix/ui.scm (show-bug-report-information): New procedure. * guix-build.in (show-help): Use it. * guix-download.in (show-help): Likewise. * guix-import.in (show-help): Likewise. * guix-package.in (show-help): Likewise.
* guix-package: Avoid use of the `guix' sub-directory for profiles.Ludovic Courtès2012-12-13
| | | | * guix-package.in (%current-profile): Change to `guix-profile'.
* guix-package: Use directory names from (guix config).Ludovic Courtès2012-12-13
| | | | | * guix-package.in (%profile-directory): Use %STATE-DIRECTORY instead of a hard-coded directory.
* guix-package: Add `--verbose'; silence the environment's build by default.Ludovic Courtès2012-12-12
| | | | | | | * guix-package.in (%options): Add `--verbose'. (show-help): Update accordingly. (guix-package): Parameterize `current-build-output-port' according to VERBOSE?. By default, silence the environment build's output.
* guix-package: Gracefully handle multiple installs of the same path.Ludovic Courtès2012-12-12
| | | | | | | | | * guix-package.in (guix-package)[process-actions]: Compute PACKAGES such that packages listed in INSTALL* are first removed from the remainder of the list. When PROF is equal to the previous profile's store path, do nothing. Reported by Andreas Enge <andreas@enge.fr>. * tests/guix-package.sh: Test the behavior of installing the same store path twice. When removing a package, omit its version number.
* guix-package: Extract version strings when installing a direct store path.Ludovic Courtès2012-11-19
| | | | | | * guix-package.in (guix-package)[process-actions]: Extract the version string from store paths. * tests/guix-package.sh: Adjust accordingly.
* guix-package: Record the correct version string in manifests.Ludovic Courtès2012-11-19
| | | | | * guix-package.in (guix-package)[find-package]: Return (package-version p), not VERSION.
* guix-package: Add `--list-available'.Ludovic Courtès2012-11-19
| | | | | | | | | | * guix-package.in (show-help, %options): Add `--list-available'. (guix-package)[process-query]: Add support for `--list-available'. * doc/guix.texi (Invoking guix-package): Document it. * tests/guix-package.sh: Add test. * guix/ui.scm (location->string): New procedure. * guix/utils.scm: Export <location>.
* guix-package: Add `--list-installed'.Ludovic Courtès2012-11-19
| | | | | | | | | * guix-package.in (show-help, %options): Add `--list-installed'. (guix-package): Move main body to... [process-actions]: ... here. New internal procedure. [process-query]: New procedure. * tests/guix-package.sh: Add tests for `--list-installed'. * doc/guix.texi (Invoking guix-package): Document it.
* guix-package: Fix typo.Ludovic Courtès2012-11-19
| | | | | * guix-package.in (guix-package)[find-package]: Don't use `_' as the wildcard, to avoid collision with `gettext'.
* guix-package: Fix handling of the PACKAGE:OUTPUT syntax.Ludovic Courtès2012-11-07
| | | | | | | * guix-package.in (guix-package)[find-package]: Return the correct NAME and SUB-DRV when NAME contains #\:. * tests/guix-package.sh (profile): Add test.
* guix-package: Fix invalid module use.Ludovic Courtès2012-11-07
| | | | * guix-package.in: Use (distro packages guile), not (... base).
* guix-package: Remove extraneous procedures.Ludovic Courtès2012-11-04
| | | | * guix-package.in (_, N_): Remove.
* utils: Add `package-name->name+version'.Ludovic Courtès2012-11-04
| | | | | | * guix/utils.scm (package-name->name+version): New procedure. * guix-package.in (guix-package)[find-package]: Use it. * tests/utils.scm ("package-name->name+version"): New test.
* guix-package: Use more (guix ui) features.Ludovic Courtès2012-11-03
| | | | | * guix-package.in (leave): Remove. (guix-package): Wrap body in `with-error-handling'.
* ui: Factorize `--version'.Ludovic Courtès2012-11-03
| | | | | | | | * guix/ui.scm (show-version-and-exit): New procedure. * guix-build.in (show-version): Remove. (%options)["version"]: Use `show-version-and-exit'. * guix-download.in: Likewise. * guix-package.in: Likewise.
* Add a preliminary `guix-package' command-line tool.Ludovic Courtès2012-11-01
* guix-package.in, tests/guix-package.sh: New files. * configure.ac: Output `guix-package'. * Makefile.am (TESTS): Add `tests/guix-package.sh'. (bin_SCRIPTS): Add `guix-package'.