<
aboutsummaryrefslogtreecommitdiff
path: root/tests/guix-refresh.sh
blob: 691020b0310e54c8bb1739d80074d012db32d178 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# GNU Guix --- Functional package management for GNU
# Copyright © 2023 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/>.

#
# Test the 'guix refresh' command-line utility.
#

guix refresh --version

manifest="t-guix-refresh-manifest-$$.scm"
module_dir="t-guix-refresh-modules-$$"
trap 'rm -f "$manifest"; rm -rf "$module_dir"' EXIT

# Tell the 'test' updater what to simulate.
export GUIX_TEST_UPDATER_TARGETS
idutils_version="$(guix package -A ^idutils$ | cut -f2)"
GUIX_TEST_UPDATER_TARGETS='
  (("guile" "3" (("12.5" "file:///dev/null")
                 ("1.6.4" "file:///dev/null")))
   ("libreoffice" "" (("1.0" "file:///dev/null")))
   ("idutils" "" (("'$idutils_version'" "file:///dev/null")))
   ("the-test-package" "" (("5.5" "file://'$PWD/$module_dir'/source"))))'

# No newer version available.
guix refresh -t test idutils	# XXX: should return non-zero?
case "$(guix refresh -t test idutils 2>&1)" in
    *"$idutils_version"*"already the latest version"*) true;;
    *) false;;
esac
guix refresh -t test libreoffice # XXX: should return non-zero?
case "$(guix refresh -t test libreoffice 2>&1)" in
    *"greater than the latest known version"*"1.0"*) true;;
    *) false;;
esac

# Various ways to specify packages.
cat > "$manifest" <<EOF
(specifications->manifest (list "guile@3.0"))
EOF
default_IFS="$IFS"
IFS=_
for spec in "guile"					\
	    "guile@3.0"					\
	    "-e_(@ (gnu packages guile) guile-3.0)"	\
	    "-m_$manifest"				\
	    "-r_guile"					\
	    "-s_core"
do
    guix refresh -t test $spec
    case "$(guix refresh -t test $spec 2>&1)" in
	*"would be upgraded"*"12.5"*)
	    true;;
	*)
	    false;;
    esac
done
IFS="$default_IFS"

# Actually updating.
mkdir "$module_dir"
echo hello > "$module_dir/source"
cat > "$module_dir/sample.scm"<<EOF
(define-module (sample)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (gnu packages base))

(define-public my-thing
  (package
    (inherit hello)
    (name "the-test-package")
    (version "4.3")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/hello/hello-" version
                                  ".tar.gz"))
              (sha256
               (base32
                "086vqwk2wl8zfs47sq2xpjc9k066ilmb8z6dn0q6ymwjzlm196cd"))))))
EOF
guix refresh -t test -L "$module_dir" the-test-package
guix refresh -t test -L "$module_dir" the-test-package -u \
     --keyring="$module_dir/keyring.kbx"  # so we don't create $HOME/.config
grep 'version "5.5"' "$module_dir/sample.scm"
grep "$(guix hash -H sha256 -f nix-base32 "$module_dir/source")" "$module_dir/sample.scm"

# Specifying a target version.
guix refresh -t test guile=2.0.0 # XXX: should return non-zero?
case "$(guix refresh -t test guile=2.0.0 2>&1)" in
    *"failed to find"*"2.0.0"*) true;;
    *) false;;
esac
for spec in "guile=1.6.4" "guile@3=1.6.4"
do
    guix refresh -t test "$spec"
    case "$(guix refresh -t test "$spec" 2>&1)" in
	*"would be downgraded"*"1.6.4"*) true;;
	*) false;;
    esac
done

# Listing updaters.  This should work whether or not networking is available.
guix refresh --list-updaters
t)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/opencog/opencog") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "1j8wv910fvrmph370wv5pv2f4bc2s9vl6i7bw3pkmwbdhxkhjbhm")))) (build-system cmake-build-system) (arguments `(#:test-target "tests" #:configure-flags (list (string-append "-DGUILE_INCLUDE_DIR=" (assoc-ref %build-inputs "guile") "/include/guile/2.2/") (string-append "-DGUILE_SITE_DIR=" (assoc-ref %outputs "out") "/share/guile/site/2.2/")))) (inputs `(("attention" ,attention) ("atomspace" ,atomspace) ("boost" ,boost) ("cogserver" ,cogserver) ("cogutil" ,cogutil) ("gmp" ,gmp) ("guile" ,guile-2.2) ("libuuid" ,util-linux "lib") ("link-grammar" ,link-grammar))) (native-inputs `(("cxxtest" ,cxxtest) ("python" ,python-minimal) ("pkg-config" ,pkg-config))) (home-page "https://github.com/opencog/attention/") (synopsis "Framework for integrated artificial intelligence") (description "OpenCog is a framework for developing AI systems, especially appropriate for integrative multi-algorithm systems, and artificial general intelligence systems. It currently contains a functional core framework, and a number of cognitive agents at varying levels of completion, some already displaying interesting and useful functionalities alone and in combination.") (license license:agpl3)))) (define-public agi-bio ;; There are no releases. (let ((commit "b5c6f3d99e8cca3798bf0cdf2c32f4bdb8098efb") (revision "1")) (package (name "agi-bio") (version (git-version "0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/opencog/agi-bio") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0c3q0nhmd03nvqm1ih10y28n596cjvfhkcfvzw2fmz1sn3ywdah4")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; there are none #:configure-flags (list (string-append "-DGUILE_INCLUDE_DIR=" (assoc-ref %build-inputs "guile") "/include/guile/2.2/") (string-append "-DGUILE_SITE_DIR=" (assoc-ref %outputs "out") "/share/guile/site/2.2/")) #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-unqualified-load (lambda* (#:key outputs #:allow-other-keys) (substitute* "bioscience/bioscience.scm" (("\\(load \"bioscience/types/bioscience_types.scm\"\\)") (format #f "(load \"~a/bioscience/types/bioscience_types.scm\")" (string-append (assoc-ref outputs "out") "/share/guile/site/2.2/opencog")))) #t))))) (inputs (list atomspace cogutil gmp guile-2.2)) (native-inputs `(("cxxtest" ,cxxtest) ("python" ,python-minimal) ("pkg-config" ,pkg-config))) (home-page "https://github.com/opencog/agi-bio") (synopsis "Genomic and proteomic data exploration and pattern mining") (description "This is a package for genomic and proteomic research using the OpenCog toolset with Guile. This includes experiments in applying pattern mining and other OpenCog components.") (license license:agpl3))))