aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi10
-rw-r--r--gnu/packages/emacs.scm58
-rw-r--r--gnu/packages/enlightenment.scm4
-rw-r--r--gnu/packages/guile.scm29
-rw-r--r--gnu/packages/image-viewers.scm10
-rw-r--r--gnu/packages/java.scm5
-rw-r--r--gnu/packages/kodi.scm4
-rw-r--r--gnu/packages/linux.scm6
-rw-r--r--gnu/packages/ocaml.scm155
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/samba.scm4
-rw-r--r--gnu/packages/scheme.scm24
-rw-r--r--gnu/packages/tls.scm4
-rw-r--r--gnu/packages/vim.scm13
-rw-r--r--gnu/packages/vpn.scm47
-rw-r--r--gnu/system.scm2
-rw-r--r--guix/scripts/lint.scm23
-rw-r--r--guix/scripts/offload.scm169
-rw-r--r--guix/scripts/pull.scm7
-rw-r--r--tests/lint.scm80
20 files changed, 489 insertions, 171 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 8a781f5ec7..c6286f2222 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2887,6 +2887,11 @@ Use @var{profile} instead of @file{~/.config/guix/current}.
Show which channel commit(s) would be used and what would be built or
substituted but do not actually do it.
+@item --system=@var{system}
+@itemx -s @var{system}
+Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of
+the system type of the build host.
+
@item --verbose
Produce verbose output, writing build logs to the standard error output.
@@ -7699,6 +7704,11 @@ URL. Check that the source file name is meaningful, e.g.@: is not just a
version number or ``git-checkout'', without a declared @code{file-name}
(@pxref{origin Reference}).
+@item source-unstable-tarball
+Parse the @code{source} URL to determine if a tarball from GitHub is
+autogenerated or if it is a release tarball. Unfortunately GitHub's
+autogenerated tarballs are sometimes regenerated.
+
@item cve
@cindex security vulnerabilities
@cindex CVE, Common Vulnerabilities and Exposures
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 262517a73e..21a7c5a34e 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -41,6 +41,7 @@
;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -122,6 +123,7 @@
#:use-module (gnu packages video)
#:use-module (gnu packages haskell)
#:use-module (gnu packages wordnet)
+ #:use-module (gnu packages ocaml)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match))
@@ -12862,3 +12864,59 @@ functions to ensure they are called with the right arguments during testing.")
@code{wordnet}. Features include completion, if the query is not found
too ambiguous and navigation in the result buffer.")
(license license:gpl3+))))
+
+(define-public emacs-dedukti-mode
+ (let ((commit "d7c3505a1046187de3c3aeb144455078d514594e"))
+ (package
+ (name "emacs-dedukti-mode")
+ (version (git-version "0" "0" commit))
+ (home-page "https://github.com/rafoo/dedukti-mode")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (sha256
+ (base32
+ "1842wikq24c8rg0ac84vb1qby9ng1nssxswyyni4kq85lng5lcrp"))
+ (file-name (git-file-name name version))))
+ (inputs
+ `(("dedukti" ,dedukti)))
+ (build-system emacs-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'patch-dkpath
+ (lambda _
+ (let ((dkcheck-path (which "dkcheck")))
+ (substitute* "dedukti-mode.el"
+ (("dedukti-path \"(.*)\"")
+ (string-append "dedukti-path \"" dkcheck-path "\"")))))))))
+ (synopsis "Emacs major mode for Dedukti files")
+ (description "This package provides an Emacs major mode for editing
+Dedukti files.")
+ (license license:cecill-b))))
+
+(define-public emacs-flycheck-dedukti
+ (let ((commit "3dbff5646355f39d57a3ec514f560a6b0082a1cd"))
+ (package
+ (name "emacs-flycheck-dedukti")
+ (version (git-version "0" "0" commit))
+ (home-page "https://github.com/rafoo/flycheck-dedukti")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (sha256
+ (base32
+ "1ffpxnwl3wx244n44mbw81g00nhnykd0lnid29f4aw1av7w6nw8l"))
+ (file-name (git-file-name name version))))
+ (build-system emacs-build-system)
+ (inputs
+ `(("dedukti-mode" ,emacs-dedukti-mode)
+ ("flycheck-mode" ,emacs-flycheck)))
+ (synopsis "Flycheck integration for the dedukti language")
+ (description "This package provides a frontend for Flycheck to perform
+syntax checking on dedukti files.")
+ (license license:cecill-b))))
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index d0ad44271e..20f842c9a6 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -184,7 +184,7 @@ removable devices or support for multimedia.")
(define-public terminology
(package
(name "terminology")
- (version "1.3.0")
+ (version "1.3.2")
(source (origin
(method url-fetch)
(uri
@@ -192,7 +192,7 @@ removable devices or support for multimedia.")
"terminology/terminology-" version ".tar.xz"))
(sha256
(base32
- "07vw28inkimi9avp16j0rqcfqjq16081554qsv29pcqhz18xp59r"))
+ "1kclxzadmk272s9spa7n704pcb1c611ixxrq88w5zk22va0i25xm"))
(modules '((guix build utils)))
;; Remove the bundled fonts.
(snippet
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 5a3ce44016..07b568ee7c 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -2329,4 +2329,33 @@ Scheme by using Guile’s foreign function interface.")
(home-page "https://gitlab.com/mothacehe/guile-newt")
(license license:gpl3+))))
+(define-public guile-mastodon
+ (package
+ (name "guile-mastodon")
+ (version "0.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://framagit.org/prouby/guile-mastodon.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1vblf3d1bbwna3l09p2ap5y8ycvl549bz6whgk78imyfmn28ygry"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("guile" ,guile-2.2)
+ ("gnutls" ,gnutls)
+ ("guile-json" ,guile-json)))
+ (home-page "https://framagit.org/prouby/guile-mastodon")
+ (synopsis "Guile Mastodon REST API module")
+ (description "This package provides Guile modules to access the
+@uref{https://docs.joinmastodon.org/api/, REST API of Mastodon}, a federated
+microblogging service.")
+ (license license:gpl3+)))
+
;;; guile.scm ends here
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 62f6674691..877c4a7866 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -238,12 +238,14 @@ it and customize it for your needs.")
(version "1.7")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://github.com/hellosiyan/Viewnior/archive/"
- name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hellosiyan/Viewnior.git")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1rpkk721s3xas125q3g0fl11b5zsrmzv9pzl6ddzcy4sj2rd7ymr"))))
+ "0y4hk3vq8psba5k615w18qj0kbdfp5w0lm98nv5apy6hmcpwfyig"))))
(build-system meson-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 054ad67731..c607cbbcc5 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -6140,6 +6140,11 @@ printed.")
(modify-phases %standard-phases
(add-after 'install 'strip-jar-timestamps
(assoc-ref ant:%standard-phases 'strip-jar-timestamps))
+ (add-before 'configure 'fix-timestamp
+ (lambda _
+ (substitute* "configure"
+ (("^TIMESTAMP.*") "TIMESTAMP=19700101\n"))
+ #t))
(add-after 'configure 'fix-bin-ls
(lambda _
(substitute* (find-files "." "Makefile")
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index 822fceb46a..a910d2da49 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -268,7 +268,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
(define-public kodi
(package
(name "kodi")
- (version "18.0rc1")
+ (version "18.0rc3")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -277,7 +277,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
(file-name (git-file-name name version))
(sha256
(base32
- "0xzzp4x8l0ywx8aq93a1323il6wwslmgdbhasv0r8zp3w1c0wqf1"))
+ "0bwi4gwmwppjw6bf0zihyg42zwnd0imq0aw4xxsgnacqakhxzii0"))
(snippet
'(begin
(use-modules (guix build utils))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index cbcd88f372..5953c09c24 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -937,7 +937,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
(define-public strace
(package
(name "strace")
- (version "4.25")
+ (version "4.26")
(home-page "https://strace.io")
(source (origin
(method url-fetch)
@@ -945,7 +945,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
"/strace-" version ".tar.xz"))
(sha256
(base32
- "00f7zagfh3np5gwi0z7hi7zjd7s5nixcaq7z78n87dvhakkgi1fn"))))
+ "070yz8xii8gnb4psiz628zwm5srh266sfb06f7f1qzagxzz2ykbw"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -964,7 +964,7 @@ Zerofree requires the file system to be unmounted or mounted read-only.")
(description
"strace is a system call tracer, i.e. a debugging tool which prints out a
trace of all the system calls made by a another process/program.")
- (license license:bsd-3)))
+ (license license:lgpl2.1+)))
(define-public ltrace
(package
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 603db34dbd..e4f17133d7 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -298,46 +298,46 @@ functional, imperative and object-oriented styles of programming.")
(define-public ocaml ocaml-4.07)
(define-public ocamlbuild
- (package
- (name "ocamlbuild")
- (version "0.13.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/ocaml/ocamlbuild/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1320cfkixs1xlng5av04pa5qjb3ynvi2kl3k1ngqzg5fpi29b0vr"))))
- (build-system gnu-build-system)
- (arguments
- `(#:test-target "test"
- #:tests? #f; tests require findlib
- #:make-flags
- (list (string-append "OCAMLBUILD_PREFIX=" (assoc-ref %outputs "out"))
- (string-append "OCAMLBUILD_BINDIR=" (assoc-ref %outputs "out")
- "/bin")
- (string-append "OCAMLBUILD_LIBDIR=" (assoc-ref %outputs "out")
- "/lib/ocaml/site-lib")
- (string-append "OCAMLBUILD_MANDIR=" (assoc-ref %outputs "out")
- "/share/man"))
- #:phases
- (modify-phases %standard-phases
- (delete 'bootstrap)
- (delete 'configure)
- (add-before 'build 'findlib-environment
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out")))
- (setenv "OCAMLFIND_DESTDIR" (string-append out "/lib/ocaml/site-lib"))
- (setenv "OCAMLFIND_LDCONF" "ignore")
- #t))))))
- (native-inputs
- `(("ocaml" ,ocaml)))
- (home-page "https://github.com/ocaml/ocamlbuild")
- (synopsis "OCaml build tool")
- (description "OCamlbuild is a generic build tool, that has built-in rules
- for building OCaml library and programs.")
- (license license:lgpl2.1+)))
+ (package
+ (name "ocamlbuild")
+ (version "0.13.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/ocaml/ocamlbuild/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1320cfkixs1xlng5av04pa5qjb3ynvi2kl3k1ngqzg5fpi29b0vr"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:test-target "test"
+ #:tests? #f; tests require findlib
+ #:make-flags
+ (list (string-append "OCAMLBUILD_PREFIX=" (assoc-ref %outputs "out"))
+ (string-append "OCAMLBUILD_BINDIR=" (assoc-ref %outputs "out")
+ "/bin")
+ (string-append "OCAMLBUILD_LIBDIR=" (assoc-ref %outputs "out")
+ "/lib/ocaml/site-lib")
+ (string-append "OCAMLBUILD_MANDIR=" (assoc-ref %outputs "out")
+ "/share/man"))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'bootstrap)
+ (delete 'configure)
+ (add-before 'build 'findlib-environment
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out")))
+ (setenv "OCAMLFIND_DESTDIR" (string-append out "/lib/ocaml/site-lib"))
+ (setenv "OCAMLFIND_LDCONF" "ignore")
+ #t))))))
+ (native-inputs
+ `(("ocaml" ,ocaml)))
+ (home-page "https://github.com/ocaml/ocamlbuild")
+ (synopsis "OCaml build tool")
+ (description "OCamlbuild is a generic build tool, that has built-in rules
+for building OCaml library and programs.")
+ (license license:lgpl2.1+)))
(define-public opam
(package
@@ -5018,11 +5018,11 @@ Coq proof assistant.")
(replace 'build
(lambda _
(invoke "make")
- #t))
+ #t))
(replace 'check
(lambda _
(invoke "make" "tests")
- #t))
+ #t))
(add-before 'install 'set-binpath
;; Change binary path in the makefile
(lambda _
@@ -5030,11 +5030,11 @@ Coq proof assistant.")
(substitute* "GNUmakefile"
(("BINDIR = (.*)$")
(string-append "BINDIR = " out "/bin"))))
- #t))
- (replace 'install
- (lambda _
- (invoke "make" "install")
- #t)))))
+ #t))
+ (replace 'install
+ (lambda _
+ (invoke "make" "install")
+ #t)))))
(synopsis "Proof-checker for the λΠ-calculus modulo theory, an extension of
the λ-calculus")
(description "Dedukti is a proof-checker for the λΠ-calculus modulo
@@ -5044,3 +5044,64 @@ dependent types. The λΠ-calculus modulo theory is itself an extension of the
rules. This system is not designed to develop proofs, but to check proofs
developed in other systems. In particular, it enjoys a minimalistic syntax.")
(license license:cecill-c)))
+
+(define-public ocaml-biniou
+ (package
+ (name "ocaml-biniou")
+ (version "1.2.0")
+ (home-page "https://github.com/mjambon/biniou")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append home-page ".git"))
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0mjpgwyfq2b2izjw0flmlpvdjgqpq8shs89hxj1np2r50csr8dcb"))))
+ (build-system dune-build-system)
+ (inputs
+ `(("ocaml-easy-format" ,ocaml-easy-format)))
+ (native-inputs
+ `(("which" ,which)))
+ (synopsis "Data format designed for speed, safety, ease of use and backward
+compatibility")
+ (description "Biniou (pronounced \"be new\" is a binary data format
+designed for speed, safety, ease of use and backward compatibility as
+protocols evolve. Biniou is vastly equivalent to JSON in terms of
+functionality but allows implementations several times faster (4 times faster
+than yojson), with 25-35% space savings.")
+ (license license:bsd-3)))
+
+(define-public ocaml-yojson
+ (package
+ (name "ocaml-yojson")
+ (version "1.4.1")
+ (home-page "https://github.com/ocaml-community/yojson")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append home-page ".git"))
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0nwsfkmqpyfab4rxq76q8ff7giyanghw08094jyrp275v99zdjr9"))))
+ (build-system dune-build-system)
+ (arguments
+ `(#:test-target "."))
+ (inputs
+ `(("ocaml-biniou" ,ocaml-biniou)
+ ("ocaml-easy-format" ,ocaml-easy-format)))
+ (native-inputs
+ `(("ocaml-cppo" ,ocaml-cppo)))
+ (synopsis "Low-level JSON library for OCaml")
+ (description "Yojson is an optimized parsing and printing library for the
+JSON format. It addresses a few shortcomings of json-wheel including 2x
+speedup, polymorphic variants and optional syntax for tuples and variants.
+@code{ydump} is a pretty printing command-line program provided with the
+yojson package. The program @code{atdgen} can be used to derive OCaml-JSON
+serializers and deserializers from type definitions.")
+ (license license:bsd-3)))
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 9bb71dc80f..85c95a75e9 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -105,8 +105,8 @@
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "0.16.0")
- (commit "6f1e0bb79266f34b50b09200b9280a641b8aa7c8")
- (revision 7))
+ (commit "7ba2b27467a39956f10e2e11061d9569e4b7d632")
+ (revision 8))
(package
(name "guix")
@@ -122,7 +122,7 @@
(commit commit)))
(sha256
(base32
- "0xk4ki5zsliwknxc9a3lvpjzpckz8nx4dz55xmw9sydq5z5mmy50"))
+ "14srgkl0vyr6q7azv76nncp63gngmm71y18ybyj9f6l6s4shbcm4"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index fd9bdd9724..213e416a4d 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -150,14 +150,14 @@ anywhere.")
(define-public samba
(package
(name "samba")
- (version "4.9.3")
+ (version "4.9.4")
(source (origin
(method url-fetch)
(uri (string-append "https://download.samba.org/pub/samba/stable/"
"samba-" version ".tar.gz"))
(sha256
(base32
- "1krm47x08c0vcrq12dxs8mbicma1ck2sl1i0hgkvrmwsgrqdi3yg"))))
+ "0kqbzywlnh1skg6g78qilyn12qv7wri66h5v9f77igncpkcai63d"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 3c688e1204..16904dce32 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -37,6 +37,7 @@
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages compression)
#:use-module (gnu packages libevent)
@@ -85,8 +86,7 @@
(outputs '("out" "doc"))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; no "check" target
- #:modules ((guix build gnu-build-system)
+ `(#:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-1))
#:phases
@@ -103,6 +103,20 @@
(find-files "src/compiler" "^make\\."))
(chdir "src")
#t))
+ (add-after 'unpack 'patch-/bin/sh
+ (lambda _
+ (setenv "CONFIG_SHELL" (which "sh"))
+ (substitute* '("../tests/ffi/autogen.sh"
+ "../tests/ffi/autobuild.sh"
+ "../tests/ffi/test-ffi.sh"
+ "../tests/runtime/test-process.scm"
+ "runtime/unxprm.scm")
+ (("/bin/sh") (which "sh"))
+ (("\\./autogen\\.sh")
+ (string-append (which "sh") " autogen.sh"))
+ (("\\./configure")
+ (string-append (which "sh") " configure")))
+ #t))
;; FIXME: the texlive-union insists on regenerating fonts. It stores
;; them in HOME, so it needs to be writeable.
(add-before 'build 'set-HOME
@@ -150,7 +164,11 @@
(delete-file-recursively old-doc-dir)
#t))))))
(native-inputs
- `(("texlive" ,(texlive-union (list texlive-tex-texinfo)))
+ `(;; Autoconf, Automake, and Libtool are necessary for the FFI tests.
+ ("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
("texinfo" ,texinfo)
("m4" ,m4)))
(inputs
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index acd175fe09..1d50f1e464 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -833,7 +833,7 @@ then ported to the GNU / Linux environment.")
(define-public mbedtls-apache
(package
(name "mbedtls-apache")
- (version "2.14.1")
+ (version "2.16.0")
(source
(origin
(method url-fetch)
@@ -843,7 +843,7 @@ then ported to the GNU / Linux environment.")
version "-apache.tgz"))
(sha256
(base32
- "07f6xn77w5rd6fhq5s1dmna3czs4chk5j2s6wkj366cvikawp2gi"))))
+ "1qlscr0m97favkqmrlj90rlgw40h8lcypxz0snvr1iwkj1pbbnp3"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index ecce4e0ae6..a5f03aad40 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -63,13 +63,14 @@
(name "vim")
(version "8.1.0551")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/vim/vim/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/vim/vim")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1wi6j9w04wg3hxsch3izl2mxb0065vpvxscz19zjn5ypkfypnm8n"))))
+ "1db5ihzj9flz62alb3kd1w173chb5vbni325abqjf25aly7c22n0"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -103,7 +104,7 @@
("ncurses" ,ncurses)
("perl" ,perl)
("tcsh" ,tcsh))) ; For runtime/tools/vim32
- (home-page "http://www.vim.org/")
+ (home-page "https://www.vim.org/")
(synopsis "Text editor based on vi")
(description
"Vim is a highly configurable text editor built to enable efficient text
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 1edd1ac56a..dabf84a947 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
@@ -37,6 +39,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gnuzilla)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
#:use-module (gnu packages perl)
@@ -400,3 +403,47 @@ DNS domain name queries.")
@command{sshuttle} virtual private networks. It supports flexible profiles
with configuration options for most of @command{sshuttle}’s features.")
(license license:gpl3+)))
+
+(define-public badvpn
+ (package
+ (name "badvpn")
+ (version "1.999.130")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ambrop72/badvpn.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0rm67xhi7bh3yph1vh07imv5y1pwyldvw3wa5bz471g8mnkc7d3c"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:tests? #f)) ; no tests
+ (inputs
+ `(("nspr" ,nspr)
+ ("nss" ,nss)
+ ("openssl" ,openssl)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/ambrop72/badvpn")
+ (synopsis "Peer-to-peer virtual private network (VPN)")
+ (description "@code{BadVPN} is a collection of virtual private
+network (VPN) tools. It includes:
+
+@enumerate
+@item NCD programming language.\n
+NCD (Network Configuration Daemon) is a daemon and programming/scripting
+language for configuration of network interfaces and other aspects of the
+operating system.
+@item Tun2socks network-layer proxifier.\n
+The tun2socks program socksifes TCP connections at the network layer. It
+implements a TUN device which accepts all incoming TCP connections (regardless
+of destination IP), and forwards the connections through a SOCKS server.
+@item Peer-to-peer VPN.\n
+The peer-to-peer VPN implements a Layer 2 (Ethernet) network between the peers
+(VPN nodes).
+@end enumerate")
+ ;; This project contains a bundled lwIP. lwIP is also released under the
+ ;; 3-clause BSD license.
+ (license license:bsd-3)))
diff --git a/gnu/system.scm b/gnu/system.scm
index 146af7cf08..ee48f48266 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -913,7 +913,7 @@ listed in OS. The C library expects to find it under
" (beta)"))
((inferior-package? kernel)
(string-append "GNU with "
- (string-titlecase (inferior-package-name kernel))
+ (string-titlecase (inferior-package-name kernel)) " "
(inferior-package-version kernel)
" (beta)"))
(else "GNU")))
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index 354f6f7031..2c1c7ec669 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
@@ -76,6 +76,7 @@
check-home-page
check-source
check-source-file-name
+ check-source-unstable-tarball
check-mirror-url
check-github-url
check-license
@@ -752,6 +753,22 @@ descriptions maintained upstream."
(G_ "the source file name should contain the package name")
'source))))
+(define (check-source-unstable-tarball package)
+ "Emit a warning if PACKAGE's source is an autogenerated tarball."
+ (define (check-source-uri uri)
+ (when (and (string=? (uri-host (string->uri uri)) "github.com")
+ (string=? (third (split-and-decode-uri-path
+ (uri-path (string->uri uri))))
+ "archive"))
+ (emit-warning package
+ (G_ "the source URI should not be an autogenerated tarball")
+ 'source)))
+ (let ((origin (package-source package)))
+ (when (and (origin? origin)
+ (eqv? (origin-method origin) url-fetch))
+ (let ((uris (origin-uris origin)))
+ (for-each check-source-uri uris)))))
+
(define (check-mirror-url package)
"Check whether PACKAGE uses source URLs that should be 'mirror://'."
(define (check-mirror-uri uri) ;XXX: could be optimized
@@ -1099,6 +1116,10 @@ or a list thereof")
(description "Validate file names of sources")
(check check-source-file-name))
(lint-checker
+ (name 'source-unstable-tarball)
+ (description "Check for autogenerated tarballs")
+ (check check-source-unstable-tarball))
+ (lint-checker
(name 'derivation)
(description "Report failure to compile a package to a derivation")
(check check-derivation))
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index dcdccc80e0..30fe69ad6d 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -260,13 +260,6 @@ instead of '~a' of type '~a'~%")
(lambda ()
(unlock-file port)))))
-(define-syntax-rule (with-machine-lock machine hint exp ...)
- "Wait to acquire MACHINE's exclusive lock for HINT, and evaluate EXP in that
-context."
- (with-file-lock (machine-lock-file machine hint)
- exp ...))
-
-
(define (machine-slot-file machine slot)
"Return the file name of MACHINE's file for SLOT."
;; For each machine we have a bunch of files representing each build slot.
@@ -284,23 +277,25 @@ the slot, or #f if none is available.
This mechanism allows us to set a hard limit on the number of simultaneous
connections allowed to MACHINE."
(mkdir-p (dirname (machine-slot-file machine 0)))
- (with-machine-lock machine 'slots
- (any (lambda (slot)
- (let ((port (open-file (machine-slot-file machine slot)
- "w0")))
- (catch 'flock-error
- (lambda ()
- (fcntl-flock port 'write-lock #:wait? #f)
- ;; Got it!
- (format (current-error-port)
- "process ~a acquired build slot '~a'~%"
- (getpid) (port-filename port))
- port)
- (lambda args
- ;; PORT is already locked by another process.
- (close-port port)
- #f))))
- (iota (build-machine-parallel-builds machine)))))
+
+ ;; When several 'guix offload' processes run in parallel, there's a race
+ ;; among them, but since they try the slots in the same order, we're fine.
+ (any (lambda (slot)
+ (let ((port (open-file (machine-slot-file machine slot)
+ "w0")))
+ (catch 'flock-error
+ (lambda ()
+ (fcntl-flock port 'write-lock #:wait? #f)
+ ;; Got it!
+ (format (current-error-port)
+ "process ~a acquired build slot '~a'~%"
+ (getpid) (port-filename port))
+ port)
+ (lambda args
+ ;; PORT is already locked by another process.
+ (close-port port)
+ #f))))
+ (iota (build-machine-parallel-builds machine))))
(define (release-build-slot slot)
"Release SLOT, a build slot as returned as by 'acquire-build-slot'."
@@ -447,16 +442,6 @@ of free disk space on '~a'~%")
normalized)
load))
-(define (machine-lock-file machine hint)
- "Return the name of MACHINE's lock file for HINT."
- (string-append %state-directory "/offload/"
- (build-machine-name machine)
- "." (symbol->string hint) ".lock"))
-
-(define (machine-choice-lock-file)
- "Return the name of the file used as a lock when choosing a build machine."
- (string-append %state-directory "/offload/machine-choice.lock"))
-
(define (random-seed)
(logxor (getpid) (car (gettimeofday))))
@@ -479,67 +464,64 @@ of free disk space on '~a'~%")
slot (which must later be released with 'release-build-slot'), or #f and #f."
;; Proceed like this:
- ;; 1. Acquire the global machine-choice lock.
- ;; 2. For all MACHINES, attempt to acquire a build slot, and filter out
+ ;; 1. For all MACHINES, attempt to acquire a build slot, and filter out
;; those machines for which we failed.
- ;; 3. Choose the best machine among those that are left.
- ;; 4. Release the previously-acquired build slots of the other machines.
- ;; 5. Release the global machine-choice lock.
-
- (with-file-lock (machine-choice-lock-file)
- (define machines+slots
- (filter-map (lambda (machine)
- (let ((slot (acquire-build-slot machine)))
- (and slot (list machine slot))))
- (shuffle machines)))
-
- (define (undecorate pred)
- (lambda (a b)
- (match a
- ((machine1 slot1)
- (match b
- ((machine2 slot2)
- (pred machine1 machine2)))))))
-
- (define (machine-faster? m1 m2)
- ;; Return #t if M1 is faster than M2.
- (> (build-machine-speed m1)
- (build-machine-speed m2)))
-
- (let loop ((machines+slots
- (sort machines+slots (undecorate machine-faster?))))
- (match machines+slots
- (((best slot) others ...)
- ;; Return the best machine unless it's already overloaded.
- ;; Note: We call 'node-load' only as a last resort because it is
- ;; too costly to call it once for every machine.
- (let* ((session (false-if-exception (open-ssh-session best)))
- (node (and session (remote-inferior session)))
- (load (and node (normalized-load best (node-load node))))
- (space (and node (node-free-disk-space node))))
- (when node (close-inferior node))
- (when session (disconnect! session))
- (if (and node (< load 2.) (>= space %minimum-disk-space))
- (match others
- (((machines slots) ...)
- ;; Release slots from the uninteresting machines.
- (for-each release-build-slot slots)
-
- ;; The caller must keep SLOT to protect it from GC and to
- ;; eventually release it.
- (values best slot)))
- (begin
- ;; BEST is unsuitable, so try the next one.
- (when (and space (< space %minimum-disk-space))
- (format (current-error-port)
- "skipping machine '~a' because it is low \
+ ;; 2. Choose the best machine among those that are left.
+ ;; 3. Release the previously-acquired build slots of the other machines.
+
+ (define machines+slots
+ (filter-map (lambda (machine)
+ (let ((slot (acquire-build-slot machine)))
+ (and slot (list machine slot))))
+ (shuffle machines)))
+
+ (define (undecorate pred)
+ (lambda (a b)
+ (match a
+ ((machine1 slot1)
+ (match b
+ ((machine2 slot2)
+ (pred machine1 machine2)))))))
+
+ (define (machine-faster? m1 m2)
+ ;; Return #t if M1 is faster than M2.
+ (> (build-machine-speed m1)
+ (build-machine-speed m2)))
+
+ (let loop ((machines+slots
+ (sort machines+slots (undecorate machine-faster?))))
+ (match machines+slots
+ (((best slot) others ...)
+ ;; Return the best machine unless it's already overloaded.
+ ;; Note: We call 'node-load' only as a last resort because it is
+ ;; too costly to call it once for every machine.
+ (let* ((session (false-if-exception (open-ssh-session best)))
+ (node (and session (remote-inferior session)))
+ (load (and node (normalized-load best (node-load node))))
+ (space (and node (node-free-disk-space node))))
+ (when node (close-inferior node))
+ (when session (disconnect! session))
+ (if (and node (< load 2.) (>= space %minimum-disk-space))
+ (match others
+ (((machines slots) ...)
+ ;; Release slots from the uninteresting machines.
+ (for-each release-build-slot slots)
+
+ ;; The caller must keep SLOT to protect it from GC and to
+ ;; eventually release it.
+ (values best slot)))
+ (begin
+ ;; BEST is unsuitable, so try the next one.
+ (when (and space (< space %minimum-disk-space))
+ (format (current-error-port)
+ "skipping machine '~a' because it is low \
on disk space (~,2f MiB free)~%"
- (build-machine-name best)
- (/ space (expt 2 20) 1.)))
- (release-build-slot slot)
- (loop others)))))
- (()
- (values #f #f))))))
+ (build-machine-name best)
+ (/ space (expt 2 20) 1.)))
+ (release-build-slot slot)
+ (loop others)))))
+ (()
+ (values #f #f)))))
(define (call-with-timeout timeout drv thunk)
"Call THUNK and leave after TIMEOUT seconds. If TIMEOUT is #f, simply call
@@ -834,7 +816,6 @@ This tool is meant to be used internally by 'guix-daemon'.\n"))
(leave (G_ "invalid arguments: ~{~s ~}~%") x))))
;;; Local Variables:
-;;; eval: (put 'with-machine-lock 'scheme-indent-function 2)
;;; eval: (put 'with-file-lock 'scheme-indent-function 1)
;;; eval: (put 'with-error-to-port 'scheme-indent-function 1)
;;; eval: (put 'with-timeout 'scheme-indent-function 2)
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index dc83729911..862556d12b 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -126,6 +126,10 @@ Download and deploy the latest version of Guix.\n"))
(lambda (opt name arg result)
(alist-cons 'profile (canonicalize-profile arg)
result)))
+ (option '(#\s "system") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'system arg
+ (alist-delete 'system result eq?))))
(option '(#\n "dry-run") #f #f
(lambda (opt name arg result)
(alist-cons 'dry-run? #t (alist-cons 'graft? #f result))))
@@ -505,7 +509,8 @@ Use '~/.config/guix/channels.scm' instead."))
(else
(with-store store
(with-status-report print-build-event
- (parameterize ((%graft? (assoc-ref opts 'graft?))
+ (parameterize ((%current-system (assoc-ref opts 'system))
+ (%graft? (assoc-ref opts 'graft?))
(%repository-cache-directory cache))
(set-build-options-from-command-line store opts)
(honor-x509-certificates store)
diff --git a/tests/lint.scm b/tests/lint.scm
index d4aa7c0e8e..fe12bebd88 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -572,6 +572,86 @@
(check-source-file-name pkg)))
"file name should contain the package name"))))
+(test-assert "source-unstable-tarball"
+ (string-contains
+ (with-warnings
+ (let ((pkg (dummy-package "x"
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://github.com/example/example/archive/v0.0.tar.gz")
+ (sha256 %null-sha256))))))
+ (check-source-unstable-tarball pkg)))
+ "source URI should not be an autogenerated tarball"))
+
+(test-assert "source-unstable-tarball: source #f"
+ (not
+ (->bool
+ (string-contains
+ (with-warnings
+ (let ((pkg (dummy-package "x"
+ (source #f))))
+ (check-source-unstable-tarball pkg)))
+ "source URI should not be an autogenerated tarball"))))
+
+(test-assert "source-unstable-tarball: valid"
+ (not
+ (->bool
+ (string-contains
+ (with-warnings
+ (let ((pkg (dummy-package "x"
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://github.com/example/example/releases/download/x-0.0/x-0.0.tar.gz")
+ (sha256 %null-sha256))))))
+ (check-source-unstable-tarball pkg)))
+ "source URI should not be an autogenerated tarball"))))
+
+(test-assert "source-unstable-tarball: package named archive"
+ (not
+ (->bool
+ (string-contains
+ (with-warnings
+ (let ((pkg (dummy-package "x"
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://github.com/example/archive/releases/download/x-0.0/x-0.0.tar.gz")
+ (sha256 %null-sha256))))))
+ (check-source-unstable-tarball pkg)))
+ "source URI should not be an autogenerated tarball"))))
+
+(test-assert "source-unstable-tarball: not-github"
+ (not
+ (->bool
+ (string-contains
+ (with-warnings
+ (let ((pkg (dummy-package "x"
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://bitbucket.org/archive/example/download/x-0.0.tar.gz")
+ (sha256 %null-sha256))))))
+ (check-source-unstable-tarball pkg)))
+ "source URI should not be an autogenerated tarball"))))
+
+(test-assert "source-unstable-tarball: git-fetch"
+ (not
+ (->bool
+ (string-contains
+ (with-warnings
+ (let ((pkg (dummy-package "x"
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/archive/example.git")
+ (commit "0")))
+ (sha256 %null-sha256))))))
+ (check-source-unstable-tarball pkg)))
+ "source URI should not be an autogenerated tarball"))))
+
(test-skip (if (http-server-can-listen?) 0 1))
(test-equal "source: 200"
""