aboutsummaryrefslogtreecommitdiff
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2015-2016, 2024 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
# GNU Guix is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
#
# GNU Guix is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

# Define some files/folders needed for the tests.
output="t-download-$$"
test_git_repo="$(mktemp -d)"
output_dir="t-archive-dir-$$"
trap 'rm -rf "$test_git_repo" ; rm -f "$output" ; rm -rf "$output_dir"' EXIT

#
# Test the `guix download' command-line utility.
#

guix download --version

# Make sure it fails here.
guix download http://does.not/exist && false

guix download unknown://some/where && false

guix download /does-not-exist && false

# This one should succeed.
guix download "file://$abs_top_srcdir/README"

# And this one, without the URI scheme.
guix download "$abs_top_srcdir/README"

# This one too, even if it cannot talk to the daemon.
GUIX_DAEMON_SOCKET="/nowhere" guix download -o "$output" \
		  "file://$abs_top_srcdir/README"
cmp "$output" "$abs_top_srcdir/README"

# This one should fail.
guix download "file:///does-not-exist" "file://$abs_top_srcdir/README" && false

# Test git support with local repository.
# First, create a dummy git repo in the temporary directory.
(
    # Avoid interference with user config.
    GIT_CONFIG_GLOBAL=/dev/null
    GIT_CONFIG_SYSTEM=/dev/null
    export GIT_CONFIG_SYSTEM GIT_CONFIG_GLOBAL

    cd $test_git_repo
    git init
    touch test
    git config user.name "User"
    git config user.email "user@domain"
    git add test
    git commit -m "Commit"
    git tag -a -m "v1" v1
)

# Extract commit number.
commit=$((cd $test_git_repo && git log) | head -n 1 | cut -f2 -d' ')

# We expect that guix hash is working properly or at least that the output of
# 'guix download' is consistent with 'guix hash'.
expected_hash=$(guix hash -rx $test_git_repo)

# Test the different options
for option in "" "--commit=$commit" "--commit=v1" "--branch=master"
do
    command_output="$(guix download --git $option "file://$test_git_repo")"
    computed_hash="$(echo $command_output | cut -f2 -d' ')"
    store_path="$(echo $command_output | cut -f1 -d' ')"
    [ "$expected_hash" = "$computed_hash" ]
    diff -r -x ".git" $test_git_repo $store_path
done

# Should fail.
guix download --git --branch=non_existent "file://$test_git_repo" && false

# Same but download to file instead of store.
guix download --git "file://$test_git_repo" -o $output_dir
diff -r -x ".git" $test_git_repo $output_dir

exit 0
/td>mailmap: Update entries for Matthew James Kraai....* .mailmap: Change name for Matthew James Kraai. * gnu/packages/lisp-xyz.scm, gnu/packages/python-xyz.scm, gnu/packages/rust.scm: Likewise. Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr> Matthew James Kraai 2021-06-23gnu: Add Sollya....* gnu/packages/algebra.scm (sollya): New variable. * .mailmap: Adjust "proper email" for `git commit`. Eric Bavier 2021-04-21Update email address for Kei....* .mailmap: Remove obsolete email for Kei. Kei Kebreau /po/guix?id=b51bde71a9385f4e81fbea258bfb9e8ff48be119'>installer: Add services page....Add a page to select services, for now only desktop environments choice is available. * gnu/installer.scm (steps): Add services step. * gnu/installer/newt.scm (newt-installer): Add services-page field. * gnu/installer/newt/services.scm: New file. * gnu/installer/record.scm (installer): Add services-page field. * gnu/installer/services.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add new files. * po/guix/POTFILES.in: Add new files. Mathieu Othacehe 2019-01-17installer: Move everything to the build side....* gnu/installer.scm: Rename to ... * gnu/installer/record.scm: ... this. * gnu/installer/build-installer.scm: Move everything to the build side and rename to gnu/installer.scm. * gnu/installer/newt.scm: Remove all the gexps and add depencies to newt modules as this code will only be used on the build side by now. * gnu/local.mk (GNU_SYSTEM_MODULES): Adapt it, (dist_installer_DATA): New rule to install installer's aux-files. * gnu/system/install.scm (%installation-services): Use only 'installer-program' from (gnu installer). The installer is now choosen on the build side. * guix/self.scm (*system-modules*): Restore previous behaviour and add all installer files to #:extra-files field of the scheme-node. * po/guix/POTFILES.in: Adapt it. Mathieu Othacehe 2019-01-17gnu: Add graphical installer support....* configure.ac: Require that guile-newt is available. * gnu/installer.scm: New file. * gnu/installer/aux-files/logo.txt: New file. * gnu/installer/build-installer.scm: New file. * gnu/installer/connman.scm: New file. * gnu/installer/keymap.scm: New file. * gnu/installer/locale.scm: New file. * gnu/installer/newt.scm: New file. * gnu/installer/newt/ethernet.scm: New file. * gnu/installer/newt/hostname.scm: New file. * gnu/installer/newt/keymap.scm: New file. * gnu/installer/newt/locale.scm: New file. * gnu/installer/newt/menu.scm: New file. * gnu/installer/newt/network.scm: New file. * gnu/installer/newt/page.scm: New file. * gnu/installer/newt/timezone.scm: New file. * gnu/installer/newt/user.scm: New file. * gnu/installer/newt/utils.scm: New file. * gnu/installer/newt/welcome.scm: New file. * gnu/installer/newt/wifi.scm: New file. * gnu/installer/steps.scm: New file. * gnu/installer/timezone.scm: New file. * gnu/installer/utils.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add previous files. * gnu/system.scm: Export %root-account. * gnu/system/install.scm (%installation-services): Use kmscon instead of linux VT for all tty. (installation-os)[users]: Add the graphical installer as shell of the root account. [packages]: Add font related packages. * po/guix/POTFILES.in: Add installer files. Mathieu Othacehe 2019-01-10Add (guix deprecation)....* guix/deprecation.scm: New file. * Makefile.am (MODULES): Add it. * po/guix/POTFILES.in: Add it. Ludovic Courtès 2018-12-17import: Update opam importer....* guix/import/opam.scm: Update importer for opam 2. * tests/opam.scm: Update tests for the opam 2 importer. Julien Lepiller 2018-12-03nls: Update 'fr' translation.Julien Lepiller 2018-12-02nls: Update 'fr' translation.Julien Lepiller 2018-11-30git: Nicely report '--with-commit' errors....* guix/git.scm (latest-repository-commit*): Rewrite to catch 'git-error'. * po/guix/POTFILES.in: Add guix/git.scm. * tests/guix-build-branch.sh: Test --with-commit errors. Ludovic Courtès 2018-11-06nls: Update 'de' translation.Ludovic Courtès 2018-10-29Add 'guix processes'....* guix/scripts/processes.scm, tests/processes.scm: New files. * Makefile.am (MODULES): Add the former. (SCM_TESTS): Add the latter. * po/guix/POTFILES.in: Add guix/scripts/processes.scm. * doc/guix.texi (Invoking guix processes): New node. (Invoking guix-daemon): Reference it. Ludovic Courtès 2018-10-11profiles: Add 'ensure-profile-directory'....* guix/scripts/package.scm (ensure-default-profile): Move /var/guix/profiles/per-user handling to... * guix/profiles.scm (ensure-profile-directory): ... here. New procedure. * po/guix/POTFILES.in: Add 'guix/profiles.scm'. Ludovic Courtès 2018-09-27Add (guix status) and use it for pretty colored output....* guix/progress.scm (progress-reporter/trace): New procedure. (%progress-interval): New variable. (progress-reporter/file): Use it. * guix/scripts/build.scm (set-build-options-from-command-line): Pass #:print-extended-build-trace?. (%default-options): Add 'print-extended-build-trace?'. (guix-build): Parameterize CURRENT-TERMINAL-COLUMNS. Use 'build-status-updater'. * guix/scripts/environment.scm (%default-options): Add 'print-extended-build-trace?'. (guix-environment): Wrap body in 'with-status-report'. * guix/scripts/pack.scm (%default-options): Add 'print-build-trace?' and 'print-extended-build-trace?'. (guix-pack): Wrap body in 'with-status-report'. * guix/scripts/package.scm (%default-options, guix-package): Likewise. * guix/scripts/system.scm (%default-options, guix-system): Likewise. * guix/scripts/pull.scm (%default-options, guix-pull): Likewise. * guix/scripts/substitute.scm (progress-report-port): Don't call STOP when TOTAL is zero. (process-substitution): Add #:print-build-trace? and honor it. (guix-substitute)[print-build-trace?]: New variable. Pass #:print-build-trace? to 'process-substitution'. * guix/status.scm: New file. * guix/store.scm (set-build-options): Add #:print-extended-build-trace?; pass it into PAIRS. (%protocol-version): Bump. (protocol-version, nix-server-version): New procedures. (current-store-protocol-version): New variable. (with-store, build-things): Parameterize it. * guix/ui.scm (build-output-port): Remove. (colorize-string): Export. * po/guix/POTFILES.in: Add guix/status.scm. * tests/status.scm: New file. * Makefile.am (SCM_TESTS): Add it. * nix/libstore/worker-protocol.hh (PROTOCOL_VERSION): Bump to 0x162. * nix/libstore/build.cc (DerivationGoal::registerOutputs) (SubstitutionGoal::finished): Print a "@ hash-mismatch" trace before throwing. Ludovic Courtès 2018-09-07Add 'guix describe'....* guix/scripts/describe.scm: New file. * Makefile.am (MODULES): Add it. (SH_TESTS): Add tests/guix-describe.sh. * po/guix/POTFILES.in: Add it. * guix/scripts/pull.scm (display-profile-content): Export. * guix/describe.scm (current-profile, current-profile-entries): Export. * tests/guix-describe.sh: New file. * doc/guix.texi (Features): Mention 'guix pull' and provenance tracking. (Invoking guix pull): Link to 'guix describe'. (Channels): Likewise. (Invoking guix describe): New node. Ludovic Courtès 2018-09-02Add (guix channels) and use it in (guix scripts pull)....* guix/channels.scm: New file. * Makefile.am (MODULES): Add it. * guix/scripts/pull.scm: Use it. (%default-options): Remove 'repository-url' and 'ref'. (show-help, %options): Add '--channels'. (%self-build-file, %pull-version, build-from-source) (whole-package-for-legacy, derivation->manifest-entry): Remove. These now exist in a similar form in (guix channels). (build-and-install): Change 'source' to 'instances'. Remove #:url, #:branch, and #:commit. Rewrite using 'channel-instances->manifest'. (channel-list): New procedure. (guix-pull): Parameterize %REPOSITORY-CACHE-DIRECTORY. Call 'honor-lets-encrypt-certificates!' unconditionally. Load ~/.config/guix/channels.scm. Rewrite to use (guix channels). [use-le-certs?]: Remove. * po/guix/POTFILES.in: Add (guix channels). * doc/guix.texi (Invoking guix pull): Group the description of '--url', '--commit', and '--branch'. Remove mention of 'GUIX_PULL_URL'. Add references to "Channels". Document '--channels'. (Channels): New node. (Defining Packages): Link to "Channels" instead of "Package Modules". (Invoking guix edit): Link to "Package Modules" instead of "Defining Packages". (Package Modules): Document both GUIX_PACKAGE_PATH and channels. Ludovic Courtès 2018-08-26nls: Update 'fr' translation.Julien Lepiller 2018-08-24nls: Update 'de' translation.Leo Famulari 2018-08-20nls: Update 'fr' translation.Leo Famulari 2018-08-12nls: Update 'da' translation.Leo Famulari 2018-07-04nls: Update 'fr' translation.Julien Lepiller 2018-06-27nls: Update 'pt_BR' translation.Ludovic Courtès 2018-06-23nls: Update 'fr' translation.Julien Lepiller 2018-06-18nls: Update 'da' translation.Ludovic Courtès 2018-06-08nls: Update 'da' translation.Ludovic Courtès