[PATCH 00/32] Add vagrant, some vagrant plugins and required ruby modules

  • Open
  • quality assurance status badge
Details
One participant
  • Hartmut Goebel
Owner
unassigned
Submitted by
Hartmut Goebel
Severity
normal
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:24
(address . guix-patches@gnu.org)
cover.1691432343.git.h.goebel@crazy-compilers.com
This series add Vagrant, a utility for managing the lifecycle of virtual
machines, and some (non-) trivial plugins for it, as well as the required
packages.

This series contains some plugins (esp. vagrant-libvirt) to test whether
vagrant's plugins-mechanism actually works in Guix. (And indeed, quite some
adjustments had to be made to vagrant make this work.)

Using this setup I was able to

- install plugins (per-user=global and per-project=local)
- show list of system plugins
- search for boxes (vargant cloud search)
- download a box (done by vagrant up)
- list downloaded boxes (vagrant box list)
- start a virtual machine using libvirt (vagrant up)
- added an unidirectional synced folders using rsync
- added a bidirectional synced folders using 9p virtfs
- copy data into the machine using "vagrant scp"
- reload, stop and destroy the box

Not working for me:

- synced folders using virtiofs: 'requires shared memory — this might be
caused by my local setup or missing stuff in Vagrantfile

Here is the code I used for testing:

...8<----
./pre-inst-env guix shell \
-C openssh coreutils rsync \
--network --share=/tmp --expose=/var/run/libvirt \
vagrant vagrant-vai vagrant-cachier vagrant-reload vagrant-libvirt nss-certs

the in the shell:

export SSL_CERT_DIR=$GUIX_ENVIRONMENT/etc/ssl/certs
export VAGRANT_DEFAULT_PROVIDER=libvirt
mkdir -p /tmp/vagrant-test/xxx/
cd /tmp/vagrant-test/
HOME=$PWD
cd xxx
cat > Vagrantfile <<EOF
Vagrant.configure("2") do |config|
config.vm.box = "generic/alpine317" # reasonable small
config.vm.synced_folder "a", "/vagrant/rsynced", type: "rsync"
#config.vm.synced_folder "b", "/vagrant/9p", type: "9p"
#config.vm.synced_folder "c", "/vagrant/virtio", type: "virtio"
# for testing vagrant-vai
config.vm.provision :vai do |ansible|
ansible.inventory_dir = 'ansible/inventory'
end
end
EOF
rm -rf {a,b,c}
mkdir {a,b,c}

# test plugin management
vagrant plugin list
vagrant plugin install vagrant-scp
vagrant plugin install --local vagrant-timezone
vagrant plugin list --local
plugin uninstall vagrant-timezone --local
vagrant plugin list --local

# test download of box and starting machine
touch a/file-from-A.txt
vagrant up

# test plugin vagrant-scp
vagrant scp Vagrantfile default:xxx.txt
vagrant ssh -c 'ls'

# test file-sync - you need to enable different options in the Vagrantfile
# to test them an. then run 'vagrant reload'
touch a/file-from-A.txt
vagrant reload # to trigger rsync
touch b/file-from-B.txt c/file-from-C.txt
vagrant ssh -c 'touch /vagrant/9p/file-from-9p.txt'
vagrant ssh -c 'touch /vagrant/rsynced/file-from-rsynced.txt'
vagrant ssh -c 'touch /vagrant/virtio/file-from-virtio.txt'
vagrant ssh -c 'ls -F /vagrant/*/'
ls {a,b,c}

vagrant destroy -f
...8<----


Hartmut Goebel (32):
gnu: Add ruby-excon.
gnu: Add ruby-ipaddr.
gnu: Add ruby-net-ftp.
gnu: Add ruby-fake-ftp.
gnu: Add ruby-net-sftp.
gnu: Add ruby-net-telnet.
gnu: Add ruby-pairing-heap.
gnu: Add ruby-stringio.
gnu: Add ruby-stream.
gnu: Add ruby-rgl.
gnu: Add ruby-sfl.
gnu: Add ruby-specinfra.
gnu: Add ruby-serverspec.
gnu: Add ruby-time.
gnu: Add ruby-google-protobuf.
gnu: Add ruby-googleapis-common-protos-types.
gnu: Add ruby-grpc.
gnu: Add ruby-vagrant-cloud.
gnu: Add ruby-vagrant-spec.
gnu: Add ruby-vagrant-spec-helper-basic.
gnu: Add ruby-hashicorp-checkpoint.
gnu: ruby-childprocess: Update to 4.1.0.
gnu: Add vagrant.
gnu: Add vagrant-vai.
gnu: Add vagrant-cachier.
gnu: Add vagrant-reload.
gnu: Add ruby-libvirt.
gnu: Add ruby-fog-core.
gnu: Add ruby-fog-json.
gnu: Add ruby-fog-xml.
gnu: Add ruby-fog-libvirt.
gnu: Add vagrant-libvirt.

gnu/local.mk | 3 +
...ant-Support-system-installed-plugins.patch | 172 +++++
.../vagrant-Use-a-private-temporary-dir.patch | 119 ++++
...rant-silence-warning-about-installer.patch | 24 +
gnu/packages/ruby.scm | 621 +++++++++++++++++-
gnu/packages/virtualization.scm | 363 ++++++++++
6 files changed, 1296 insertions(+), 6 deletions(-)
create mode 100644 gnu/packages/patches/vagrant-Support-system-installed-plugins.patch
create mode 100644 gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
create mode 100644 gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch


base-commit: 39fbc041f92489ec30075a85937c8a38723752dc
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 01/32] gnu: Add ruby-excon.
(address . 65131@debbugs.gnu.org)
1a164f28a7bb085ca362c245f644c30085644125.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-excon): New variable.
---
gnu/packages/ruby.scm | 48 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)

Toggle diff (68 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index e0dca646ac..e3bb5bf5ed 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -34,6 +34,7 @@
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -13774,6 +13775,53 @@ GFM dialect to HTML.")
parser for writing http servers, clients and proxies.")
(license license:expat)))
+(define-public ruby-excon
+ (package
+ (name "ruby-excon")
+ (version "0.100.0")
+ (source (origin
+ (method git-fetch) ;for tests
+ (uri (git-reference
+ (url "https://github.com/excon/excon")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "158p9z0jk6042ambqdc68qh5n5j58c2w19hc32aa1d045l45pagh"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'replace-git-ls-files
+ (lambda _
+ (substitute* "excon.gemspec"
+ (("`git ls-files -- data/. lib/.`")
+ "`find data lib -type f`"))))
+ (add-before 'check 'disable-server-spec-checks
+ (lambda _ ;; TODO: Remove this if ruby-unicorn is available.
+ ;; Some of the tests in this file require ruby-unicorn, which is
+ ;; not yet packaged for guix and would pull in a lot of other
+ ;; dependencies.
+ (delete-file "spec/excon/test/server_spec.rb"))))))
+ (native-inputs
+ (list
+ ruby-activesupport
+ ruby-eventmachine
+ ruby-json
+ ruby-open4
+ ruby-puma
+ ruby-rspec
+ ruby-shindo
+ ruby-sinatra
+ ruby-webrick))
+ (synopsis "Usable, fast, simple Ruby HTTP 1.1")
+ (description "Excon was designed to be simple, fast and performant. It
+works great as a general HTTP(s) client and is particularly well suited to
+usage in API clients.")
+ (home-page "https://github.com/excon/excon")
+ (license license:expat)))
+
(define-public ruby-em-websocket
(package
(name "ruby-em-websocket")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 02/32] gnu: Add ruby-ipaddr.
(address . 65131@debbugs.gnu.org)
3265fe500acd3617a5a5d010e134f911812584c0.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-ipaddr): New variable.
---
gnu/packages/ruby.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index e3bb5bf5ed..a0c21c09af 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -4408,6 +4408,26 @@ help tests uncover more bugs.")
(home-page "https://github.com/jordansissel/ruby-flores")
(license license:asl2.0)))
+(define-public ruby-ipaddr
+ (package
+ (name "ruby-ipaddr")
+ (version "1.2.5")
+ (source (origin
+ (method git-fetch) ;for tests
+ (uri (git-reference
+ (url "https://github.com/ruby/ipaddr")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0mv2i92nvm53lrnd5v4bl1xvsghqzssqlqr5jmwl7c492wvmny02"))))
+ (build-system ruby-build-system)
+ (synopsis "Manipulate IP addresses")
+ (description "This package provides a set of methods to manipulate an IP
+address. Both IPv4 and IPv6 are supported.")
+ (home-page "https://github.com/ruby/ipaddr")
+ (license license:bsd-2)))
+
(define-public ruby-net-http-persistent
(package
(name "ruby-net-http-persistent")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 03/32] gnu: Add ruby-net-ftp.
(address . 65131@debbugs.gnu.org)
e109b15ce691aa9fa5c47e9e0d4a8269b35dd8f0.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-net-ftp): New variable.
---
gnu/packages/ruby.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index a0c21c09af..eef586776b 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -4428,6 +4428,29 @@ address. Both IPv4 and IPv6 are supported.")
(home-page "https://github.com/ruby/ipaddr")
(license license:bsd-2)))
+(define-public ruby-net-ftp
+ (package
+ (name "ruby-net-ftp")
+ (version "0.2.0")
+ (source (origin
+ (method git-fetch) ;for tests
+ (uri (git-reference
+ (url "https://github.com/ruby/net-ftp")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "13yb6zalbcizsg592xqlck9xmzqb05pavsfh6ixqlilv4vv7d5ch"))))
+ (build-system ruby-build-system)
+ (propagated-inputs (list ruby-net-protocol ruby-time))
+ (synopsis "File Transfer Protocol client library")
+ (description "This class implements the File Transfer Protocol. If you
+have used a command-line FTP program, and are familiar with the commands, you
+will be able to use this class easily. Some extra features are included to
+take advantage of Ruby's style and strengths.")
+ (home-page "https://github.com/ruby/net-ftp")
+ (license license:bsd-2)))
+
(define-public ruby-net-http-persistent
(package
(name "ruby-net-http-persistent")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 04/32] gnu: Add ruby-fake-ftp.
(address . 65131@debbugs.gnu.org)
8249d7a956334415cce5c2d06fd42d5afdbebcf6.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-fake-ftp): New variable.
---
gnu/packages/ruby.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index eef586776b..bc61ab81b9 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -4428,6 +4428,27 @@ address. Both IPv4 and IPv6 are supported.")
(home-page "https://github.com/ruby/ipaddr")
(license license:bsd-2)))
+(define-public ruby-fake-ftp
+ (package
+ (name "ruby-fake-ftp")
+ (version "0.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "fake_ftp" version))
+ (sha256
+ (base32
+ "1zl9q9m4x7lz9890g0h1qqj7hcxnwzpjfnfbxadjblps7b5054q4"))))
+ (build-system ruby-build-system)
+ (native-inputs (list ruby-rspec ruby-rubocop ruby-simplecov))
+ (arguments
+ '(#:test-target "spec"))
+ (synopsis "Fake FTP server for use with ruby tests")
+ (description "This package allows you to test FTP implementations in ruby.
+It is a minimal single-client FTP server that can be bound to any arbitrary
+port on localhost.")
+ (home-page "https://rubygems.org/gems/fake_ftp")
+ (license license:expat)))
+
(define-public ruby-net-ftp
(package
(name "ruby-net-ftp")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 05/32] gnu: Add ruby-net-sftp.
(address . 65131@debbugs.gnu.org)
dd56c07e8b31999825492a89d7f339c759c0a399.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-net-sftp): New variable.
---
gnu/packages/ruby.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index bc61ab81b9..0e9a805973 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -5545,6 +5545,27 @@ client protocol.")
(home-page "https://github.com/net-ssh/net-scp")
(license license:expat)))
+(define-public ruby-net-sftp
+ (package
+ (name "ruby-net-sftp")
+ (version "4.0.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "net-sftp" version))
+ (sha256
+ (base32
+ "0r33aa2d61hv1psm0l0mm6ik3ycsnq8symv7h84kpyf2b7493fv5"))))
+ (build-system ruby-build-system)
+ (propagated-inputs (list ruby-net-ssh))
+ (synopsis "Pure Ruby implementation of the SFTP client protocol")
+ (description
+ "@code{Net::SFTP} is a pure Ruby implementation of the SFTP
+protocol (specifically, versions 1 through 6 of the SFTP protocol). Note that
+this is the “Secure File Transfer Protocol”, typically run over an SSH
+connection, and has nothing to do with the FTP protocol.")
+ (home-page "https://github.com/net-ssh/net-sftp")
+ (license license:expat)))
+
(define-public ruby-minima
(package
(name "ruby-minima")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 06/32] gnu: Add ruby-net-telnet.
(address . 65131@debbugs.gnu.org)
cfa7d0ceeb2a95749e2781f134bb48b9be787c99.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-net-telnet): New variable.
---
gnu/packages/ruby.scm | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

Toggle diff (29 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0e9a805973..e80b1dbaf2 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -4449,6 +4449,22 @@ port on localhost.")
(home-page "https://rubygems.org/gems/fake_ftp")
(license license:expat)))
+(define-public ruby-net-telnet
+ (package
+ (name "ruby-net-telnet")
+ (version "0.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "net-telnet" version))
+ (sha256
+ (base32
+ "16nkxc79nqm7fd6w1fba4kb98vpgwnyfnlwxarpdcgywz300fc15"))))
+ (build-system ruby-build-system)
+ (synopsis "Telnet client functionality")
+ (description "This package provides telnet client functionality.")
+ (home-page "https://github.com/ruby/net-telnet")
+ (license license:bsd-2)))
+
(define-public ruby-net-ftp
(package
(name "ruby-net-ftp")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 07/32] gnu: Add ruby-pairing-heap.
(address . 65131@debbugs.gnu.org)
b25bd60ba3e0fe2138a3cc424b1ac81936d9e989.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-pairing-heap): New variable.
---
gnu/packages/ruby.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index e80b1dbaf2..6988cb40a2 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -12012,6 +12012,32 @@ dependency, @code{pg}.")
(home-page "https://github.com/QueueClassic/queue_classic")
(license license:expat)))
+(define-public ruby-pairing-heap
+ (package
+ (name "ruby-pairing-heap")
+ (version "3.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "pairing_heap" version))
+ (sha256
+ (base32
+ "15c97yvzkfhy7glsdza48sswidjyjphdx62yjapbrs5fzf0089id"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda _
+ (substitute* "Rakefile"
+ (("require \"standard/rake\"") "")
+ ((":\"standard:fix\",") "")))))))
+ (synopsis "Priority queue in pure Ruby")
+ (description "This package provides a performant priority queue in pure
+ruby with support for changing priority using pairing heap data structure")
+ (home-page "https://github.com/mhib/pairing_heap")
+ (license license:expat)))
+
(define-public ruby-ae
(package
(name "ruby-ae")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 08/32] gnu: Add ruby-stringio.
(address . 65131@debbugs.gnu.org)
01387b4eed98331eeb9d8afcb4ddf1ca84f045fb.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-stringio): New variable.
---
gnu/packages/ruby.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6988cb40a2..96a68f9698 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -14896,6 +14896,26 @@ can be used to build formatters, linters, language servers, and more.")
(home-page "https://github.com/ruby-syntax-tree/syntax_tree")
(license license:expat)))
+(define-public ruby-stringio
+ (package
+ (name "ruby-stringio")
+ (version "3.0.7")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ruby/stringio")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1050l496p3p5gm177va4cxh09aprcsdpvimc5jsv6im1adx285pz"))))
+ (build-system ruby-build-system)
+ (native-inputs (list ruby-rake-compiler))
+ (synopsis "Pseudo `IO` class from and to `String`")
+ (description "Pseudo `IO` class from and to `String`.")
+ (home-page "https://github.com/ruby/stringio")
+ (license license:bsd-2)))
+
(define sorbet-version "0.5.10610.20230106174520-1fa668010")
(define sorbet-monorepo
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 09/32] gnu: Add ruby-stream.
(address . 65131@debbugs.gnu.org)
bd29a6958f5cdd4bdab2a46163a7eb92427f57e8.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-stream): New variable.
---
gnu/packages/ruby.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 96a68f9698..85e75c7908 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -14916,6 +14916,29 @@ can be used to build formatters, linters, language servers, and more.")
(home-page "https://github.com/ruby/stringio")
(license license:bsd-2)))
+(define-public ruby-stream
+ (package
+ (name "ruby-stream")
+ (version "0.5.5")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "stream" version))
+ (sha256
+ (base32
+ "016m9v81vpj14d8g5ins91zc4pzl7vf5f1gxl7jhfsfy601k7cv2"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'remove-version-constraints
+ (lambda _
+ (delete-file "Gemfile.lock"))))))
+ (native-inputs (list bundler ruby-stringio ruby-webrick ruby-yard))
+ (synopsis "Interface for external iterators")
+ (description "Module Stream defines an interface for external iterators.")
+ (home-page "https://github.com/monora/stream")
+ (license license:bsd-2)))
+
(define sorbet-version "0.5.10610.20230106174520-1fa668010")
(define sorbet-monorepo
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 10/32] gnu: Add ruby-rgl.
(address . 65131@debbugs.gnu.org)
63a33d011b9154bbb4de7ad1d183043220fec49a.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-rgl): New variable.
---
gnu/packages/ruby.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (54 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 85e75c7908..870fb13ed9 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -66,6 +66,7 @@
#:use-module (gnu packages rails)
#:use-module (gnu packages readline)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages graphviz)
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages java)
#:use-module (gnu packages libffi)
@@ -3383,6 +3384,39 @@ identical to that of Hash.")
(home-page "http://rbtree.rubyforge.org/")
(license license:expat)))
+(define-public ruby-rgl
+ (package
+ (name "ruby-rgl")
+ (version "0.6.6")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "rgl" version))
+ (sha256
+ (base32
+ "0dji1k9knrf8cxm5psd3pgd9i8f7cfq182jwjpi1pwxw15axf496"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'remove-unnecessary-dependencies
+ (lambda _
+ (substitute* "Gemfile"
+ ;; Caring about coverage is a not a packager's task but a
+ ;; developer's
+ ;;(("gem \"simplecov\"") "")
+ ;; CodeClimate is an online service, and is unnecessary for
+ ;; running the tests
+ (("gem \"codeclimate-test-reporter\", .*") "\n")))))))
+ (native-inputs (list ruby-test-unit ruby-simplecov ruby-yard graphviz-minimal))
+ (propagated-inputs (list ruby-pairing-heap ruby-rexml ruby-stream))
+ (synopsis "Framework for graph data structures and algorithms")
+ (description "RGL is a framework for graph data structures and algorithms.
+The design of the library is much influenced by the Boost Graph Library (BGL)
+which is written in C++.")
+ (home-page "https://github.com/monora/rgl")
+ (license license:bsd-2)))
+
(define-public ruby-hkdf
(package
(name "ruby-hkdf")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 11/32] gnu: Add ruby-sfl.
(address . 65131@debbugs.gnu.org)
f245e4044c21935cf23e69bb47269743c429c3de.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-sfl): New variable.
---
gnu/packages/ruby.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 870fb13ed9..0c39d2d118 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -12944,6 +12944,26 @@ manifest file.")
(home-page "https://github.com/mvz/rake-manifest")
(license license:expat)))
+(define-public ruby-sfl
+ (package
+ (name "ruby-sfl")
+ (version "2.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sfl" version))
+ (sha256
+ (base32
+ "1qm4hvhq9pszi9zs1cl9qgwx1n4wxq0af0hq9sbf6qihqd8rwwwr"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f ;; some tests fail, gem is a dummy for ruby >= 1.9 anyway
+ #:test-target "spec"))
+ (synopsis "Spawn for Ruby 1.8")
+ (description "This pure ruby library provides @code{spawn()} which is
+almost perfectly compatible with ruby 1.9's.")
+ (home-page "https://github.com/ujihisa/spawn-for-legacy")
+ (license license:bsd-2)))
+
(define-public ruby-childprocess
(package
(name "ruby-childprocess")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 12/32] gnu: Add ruby-specinfra.
(address . 65131@debbugs.gnu.org)
c54b952cab466e8f6d4bfa0bd0d8262a70bc0d49.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-specinfra): New variable.
---
gnu/packages/ruby.scm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Toggle diff (42 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0c39d2d118..aad6bfe2a3 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1192,6 +1192,35 @@ the @env{RSPEC_DEBUG} environment variable to @samp{true} then invoke the
(home-page "https://github.com/ko1/rspec-debug")
(license license:expat)))
+(define-public ruby-specinfra
+ (package
+ (name "ruby-specinfra")
+ (version "2.86.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "specinfra" version))
+ (sha256
+ (base32
+ "0il390jb1nc2agkfwl3j42zzw403q785bzfg3vvq1nh3dws0clxr"))))
+ (build-system ruby-build-system)
+ (propagated-inputs (list ruby-net-scp ruby-net-ssh ruby-net-telnet
+ ruby-sfl))
+ (arguments
+ (list
+ #:test-target "spec"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'extract-gemspec 'relax-dependencies
+ (lambda _
+ (substitute* "specinfra.gemspec"
+ (("%q<net-telnet>.freeze, \\[.*\\]")
+ "%q<net-telnet>.freeze, [\">= 0\"]")))))))
+ (synopsis "Common layer for serverspec and itamae")
+ (description "This Gem provides a common layer for serverspec and
+itamae.")
+ (home-page "https://github.com/mizzy/specinfra")
+ (license license:expat)))
+
;; Bundler is yet another source of circular dependencies, so we must disable
;; its test suite as well.
(define-public bundler
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 13/32] gnu: Add ruby-serverspec.
(address . 65131@debbugs.gnu.org)
915f1b261965223da4cfd31c4e1a4737183bb36c.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-serverspec): New variable.
---
gnu/packages/ruby.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index aad6bfe2a3..98993f6f01 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1221,6 +1221,36 @@ itamae.")
(home-page "https://github.com/mizzy/specinfra")
(license license:expat)))
+(define-public ruby-serverspec
+ (package
+ (name "ruby-serverspec")
+ (version "2.42.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "serverspec" version))
+ (sha256
+ (base32
+ "0kqx84yspy75z517wf32mz2hr4bqmq33y46zik57rn7bq2pj39xx"))))
+ (build-system ruby-build-system)
+ (propagated-inputs (list ruby-multi-json ruby-rspec ruby-rspec-its
+ ruby-specinfra))
+ (arguments
+ (list #:test-target "spec"))
+ (synopsis
+ "RSpec tests for servers configured by Puppet, Chef, Itamae, etc")
+ (description
+ "With Serverspec, you can write RSpec tests for checking your servers are
+configured correctly.
+
+Serverspec tests your servers’ actual state by executing command locally, via
+SSH, via WinRM, via Docker API and so on. So you don’t need to install any
+agent softwares on your servers and can use any configuration management
+tools, Puppet, Ansible, CFEngine, Itamae and so on.
+
+But the true aim of Serverspec is to help refactoring infrastructure code.")
+ (home-page "https://serverspec.org/")
+ (license license:expat)))
+
;; Bundler is yet another source of circular dependencies, so we must disable
;; its test suite as well.
(define-public bundler
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 14/32] gnu: Add ruby-time.
(address . 65131@debbugs.gnu.org)
564980155dcad017d7d89bf103b9bc9cf0bd1aac.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-time): New variable.
---
gnu/packages/ruby.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 98993f6f01..c4ebaa2aaa 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -719,6 +719,29 @@ includes the @code{Comparable} module for handling dates.")
(home-page "https://github.com/ruby/date")
(license license:bsd-2)))
+(define-public ruby-time
+ (package
+ (name "ruby-time")
+ (version "0.2.2")
+ (source (origin
+ (method git-fetch) ; for tests
+ (uri (git-reference
+ (url "https://github.com/ruby/time")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1ij1vfa5vlphnv2giji71nbsj07yfghyvw4vhmsizxm8nmlqasl6"))))
+ (build-system ruby-build-system)
+ (propagated-inputs (list ruby-date))
+ (synopsis
+ "Extends the Time class with methods for parsing and conversion")
+ (description
+ "When this gem is @code{require}d, it extends the Time class with with
+additional methods for parsing and converting Times.")
+ (home-page "https://github.com/ruby/time")
+ (license license:bsd-2)))
+
(define-public ruby-diff-lcs
(package
(name "ruby-diff-lcs")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 15/32] gnu: Add ruby-google-protobuf.
(address . 65131@debbugs.gnu.org)
1703f95ab437cfda9d747a94f0f88e9a9c806a4d.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-google-protobuf): New variable.
---
gnu/packages/ruby.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index c4ebaa2aaa..80cc35b45d 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -17696,6 +17696,32 @@ has not yet been packaged for Guix.")
(license license:bsd-2)
(properties `((upstream-name . "anystyle-cli")))))
+(define-public ruby-google-protobuf
+ (package
+ (name "ruby-google-protobuf")
+ (version "3.23.4")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "google-protobuf" version))
+ (sha256
+ (base32
+ "1dq5lgkxhagqr8zjrwr10zi8rldbg2vhis2m5q86v5q9415ylfgj"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ;; has no tests
+ (synopsis "Protocol Buffers are Google's data interchange format")
+ (description "This library contains the Ruby extension that implements
+Protocol Buffers functionality in Ruby.
+
+The Ruby extension makes use of generated Ruby code that defines message and
+enum types in a Ruby DSL. You may write definitions in this DSL directly, but
+we recommend using protoc's Ruby generation support with @code{.proto} files.
+The build process in this directory only installs the extension; you need to
+install @code{protoc} (in package ruby-grpc-tools) as well to have Ruby code
+generation functionality.")
+ (home-page "https://protobuf.dev")
+ (license license:bsd-3)))
+
;;;
;;; Avoid adding new packages to the end of this file. To reduce the chances
;;; of a merge conflict, place them above by existing packages with similar
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 17/32] gnu: Add ruby-grpc.
(address . 65131@debbugs.gnu.org)
5bc18e4162111799700918cab589c25a2edfdf5e.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-grpc): New variable.
---
gnu/packages/ruby.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 62499bf775..9927f96560 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -17741,6 +17741,29 @@ generation functionality.")
(home-page "https://github.com/googleapis/common-protos-ruby")
(license license:asl2.0)))
+(define-public ruby-grpc
+ (package
+ (name "ruby-grpc")
+ (version "1.56.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "grpc" version))
+ (sha256
+ (base32
+ "1ndyis4hyq5wyypvy5j2pxaax73k9xd9cdsc5hyvpk3vbnn26rdb"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ;; has no tests
+ ;; TODO remove third-party sources (zlib, upb, utf8-range, re2, c-ares,
+ ;; boringssl-with-bazel, address_sorting, abseil-cpp), see Makefile
+ (propagated-inputs (list ruby-googleapis-common-protos-types
+ ruby-google-protobuf))
+ (synopsis "GRPC system in Ruby")
+ (description "GRPC is a high performance, open-source universal RPC
+framework. This package provides a ruby interface for it.")
+ (home-page "https://github.com/grpc/grpc/tree/master/src/ruby")
+ (license license:asl2.0)))
+
;;;
;;; Avoid adding new packages to the end of this file. To reduce the chances
;;; of a merge conflict, place them above by existing packages with similar
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 16/32] gnu: Add ruby-googleapis-common-protos-types.
(address . 65131@debbugs.gnu.org)
1a96c181b8ce7c0a96b06f58c7f749816cf7a316.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-googleapis-common-protos-types): New variable.
---
gnu/packages/ruby.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 80cc35b45d..62499bf775 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -17722,6 +17722,25 @@ generation functionality.")
(home-page "https://protobuf.dev")
(license license:bsd-3)))
+(define-public ruby-googleapis-common-protos-types
+ (package
+ (name "ruby-googleapis-common-protos-types")
+ (version "1.7.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "googleapis-common-protos-types" version))
+ (sha256
+ (base32
+ "0gsiz0xpnv5fjpwihz06kf0y09rdkcv2bqjxm2bigayz8rdnxq8r"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:tests? #f)) ;; has no tests
+ (propagated-inputs (list ruby-google-protobuf))
+ (synopsis "Common protocol buffer types used by Google APIs")
+ (description "Common protocol buffer types used by Google APIs")
+ (home-page "https://github.com/googleapis/common-protos-ruby")
+ (license license:asl2.0)))
+
;;;
;;; Avoid adding new packages to the end of this file. To reduce the chances
;;; of a merge conflict, place them above by existing packages with similar
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 18/32] gnu: Add ruby-vagrant-cloud.
(address . 65131@debbugs.gnu.org)
dc6faf1f563f40444d95631827811b075f9a7358.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-vagrant-cloud): New variable.
---
gnu/packages/ruby.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 9927f96560..0bcf61d15b 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -9589,6 +9589,30 @@ follows Ruby conventions and requires little knowledge of REST.")
(home-page "https://github.com/octokit/octokit.rb")
(license license:expat)))
+(define-public ruby-vagrant-cloud
+ (package
+ (name "ruby-vagrant-cloud")
+ (version "3.0.5")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hashicorp/vagrant_cloud")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "09mczlczvnsw19zwv4bm3hv4jp71gx5l00mmj2l1gmpbxmi5nyfg"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "spec"))
+ (native-inputs (list ruby-rspec ruby-webmock))
+ (propagated-inputs (list ruby-excon ruby-log4r ruby-rexml))
+ (synopsis "Vagrant Cloud API library")
+ (description "This library provides the functionality to create, modify,
+and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.")
+ (home-page "https://github.com/hashicorp/vagrant_cloud")
+ (license license:asl2.0)))
+
(define-public ruby-pry-byebug
(package
(name "ruby-pry-byebug")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 19/32] gnu: Add ruby-vagrant-spec.
(address . 65131@debbugs.gnu.org)
7355546d611ac4e12e0c8c32d670487f4baf9235.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/virtualization.scm (ruby-vagrant-spec): New variable.
---
gnu/packages/virtualization.scm | 37 +++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)

Toggle diff (71 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 9556fbc61e..cfba1f0898 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -29,6 +29,7 @@
;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2023 Juliana Sims <juli@incana.org>
+;;; Copyright © 2023 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -119,6 +120,7 @@
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages ruby)
#:use-module (gnu packages rsync)
#:use-module (gnu packages selinux)
#:use-module (gnu packages sdl)
@@ -138,6 +140,7 @@
#:use-module (guix build-system go)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)
+ #:use-module (guix build-system ruby)
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix git-download)
@@ -2164,6 +2167,40 @@ the image.
@end enumerate")
(license license:asl2.0)))
+(define-public ruby-vagrant-spec
+ (package
+ (name "ruby-vagrant-spec")
+ (version "0.0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "vagrant_spec" version))
+ (sha256
+ (base32
+ "1bkzz3mj7kzsv6k0ii8w31cgkpiqw3wvmvv2c6rknsavqqnagb4g"))))
+ (build-system ruby-build-system)
+ ;; (native-inputs (list ruby-rubocop ruby-vagrant-spec-helper-basic))
+ (propagated-inputs (list ruby-coveralls ruby-serverspec ruby-dep))
+ (arguments
+ (list
+ #:tests? #f ;; tests require vagrant
+ ;; target 'test' includes 'cops' and running some ansible-playbook
+ #:test-target "unit"
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda _
+ (substitute* "Rakefile"
+ (("Bundler::GemHelper") "require 'bundler'\nBundler::GemHelper"))))
+ (add-before 'check 'prepare-check
+ (lambda _
+ (setenv "HOME" "/tmp"))))))
+ (synopsis "Specification and tests for Vagrant")
+ (description "@code{vagrant-spec} is a both a specification of how Vagrant
+and its various components should behave as well as a library of testing
+helpers that let you write your own unit and acceptance tests for Vagrant.")
+ (home-page "https://github.com/hashicorp/vagrant-spec")
+ (license license:mpl2.0)))
+
(define-public python-vagrant
(package
(name "python-vagrant")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 20/32] gnu: Add ruby-vagrant-spec-helper-basic.
(address . 65131@debbugs.gnu.org)
3c094a5160b2efec7c6983336cc4ab18fc3528b0.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/virtualization.scm (ruby-vagrant-spec-helper-basic): New variable.
---
gnu/packages/virtualization.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index cfba1f0898..68beeb88d3 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -2167,6 +2167,25 @@ the image.
@end enumerate")
(license license:asl2.0)))
+(define-public ruby-vagrant-spec-helper-basic
+ (package
+ (name "ruby-vagrant-spec-helper-basic")
+ (version "0.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "vagrant-spec-helper-basic" version))
+ (sha256
+ (base32
+ "1qhxxc07dhrma1s1x2g9sma7xxgwzs20s6v5pv9jrpz6bl4b527n"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list #:tests? #f)) ;; has not tests
+ (synopsis "Helper for vagrant-spec")
+ (description "This package is an internal helper for vagrant-spec. Don't
+use it.")
+ (home-page "https://github.com/hashicorp/vagrant-spec")
+ (license license:mpl2.0)))
+
(define-public ruby-vagrant-spec
(package
(name "ruby-vagrant-spec")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 21/32] gnu: Add ruby-hashicorp-checkpoint.
(address . 65131@debbugs.gnu.org)
71c3cece5f3375da93eb98155c878aca25892a07.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-hashicorp-checkpoint): New variable.
---
gnu/packages/ruby.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0bcf61d15b..0ee9d447a1 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -9589,6 +9589,26 @@ follows Ruby conventions and requires little knowledge of REST.")
(home-page "https://github.com/octokit/octokit.rb")
(license license:expat)))
+(define-public ruby-hashicorp-checkpoint
+ (package
+ (name "ruby-hashicorp-checkpoint")
+ (version "0.1.5")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "hashicorp-checkpoint" version))
+ (sha256
+ (base32
+ "1z6mwzvd7p2wqhmk07dwrhvm0ncgqm7pxn0pr2k025rwsspp9bsd"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list #:tests? #f)) ;; no need to test, useless outside HashiCorp anyway
+ (synopsis "Internal HashiCorp service to check version information")
+ (description "This package is probably useless outside of internal
+HashiCorp use. It is open source for disclosure and because HashiCorp's open
+source projects must be able to link to it.")
+ (home-page "https://github.com/hashicorp/ruby-checkpoint")
+ (license license:mpl2.0)))
+
(define-public ruby-vagrant-cloud
(package
(name "ruby-vagrant-cloud")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 22/32] gnu: ruby-childprocess: Update to 4.1.0.
(address . 65131@debbugs.gnu.org)
51672e41e8c43a2a2bb25faf80fff57ff9395f52.1691432343.git.h.goebel@crazy-compilers.com
This change include code for making more tests pass. Anyhow, one is still
failing for unclear reason, thus tests are still disabled.

* gnu/packages/ruby.scm (ruby-childprocess): Update to 4.1.0.
[arguments]{test-target}: New argument. {phases}: New argument
[propagated-inputs]: Remove ruby-ffi.
[native-inputs]: Remove bundler; add ruby-coveralls.
---
gnu/packages/ruby.scm | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)

Toggle diff (39 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0ee9d447a1..5204f42895 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -13093,21 +13093,26 @@ almost perfectly compatible with ruby 1.9's.")
(define-public ruby-childprocess
(package
(name "ruby-childprocess")
- (version "3.0.0")
+ (version "4.1.0")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "childprocess" version))
(sha256
(base32
- "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5"))))
+ "1lvcp8bsd35g57f7wz4jigcw2sryzzwrpcgjwwf3chmjrjcww5in"))))
(build-system ruby-build-system)
(arguments
- `(#:tests? #f))
+ `(#:tests? #f ;; one failing test, even with fixes below
+ #:test-target "spec"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch
+ (lambda _
+ (substitute* "spec/spec_helper.rb"
+ (("#!/bin/sh\\\\n") (string-append "#!" (which "sh") "\\n"))))))))
(native-inputs
- (list bundler ruby-rspec))
- (propagated-inputs
- (list ruby-ffi))
+ (list ruby-coveralls ruby-rspec))
(synopsis "Control external programs running in the background, in Ruby")
(description "@code{childprocess} provides a gem to control external
programs running in the background, in Ruby.")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 23/32] gnu: Add vagrant.
(address . 65131@debbugs.gnu.org)
ce5dd68ceec0db51cd2dcf06b6f4b0db9e801b92.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/virtualization.scm (vagrant): New variable.
* gnu/packages/patches/vagrant-Support-system-installed-plugins.patch,
gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch:
New files.
* gnu/local.mk(dist_patch_DATA): Add them
---
gnu/local.mk | 3 +
...ant-Support-system-installed-plugins.patch | 172 ++++++++++++++++++
.../vagrant-Use-a-private-temporary-dir.patch | 119 ++++++++++++
...rant-silence-warning-about-installer.patch | 24 +++
gnu/packages/virtualization.scm | 104 +++++++++++
5 files changed, 422 insertions(+)
create mode 100644 gnu/packages/patches/vagrant-Support-system-installed-plugins.patch
create mode 100644 gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
create mode 100644 gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch

Toggle diff (464 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 6dcacd3d6e..cecef27827 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2067,6 +2067,9 @@ dist_patch_DATA = \
%D%/packages/patches/unzip-32bit-zipbomb-fix.patch \
%D%/packages/patches/ustr-fix-build-with-gcc-5.patch \
%D%/packages/patches/util-linux-tests.patch \
+ %D%/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch \
+ %D%/packages/patches/vagrant-Support-system-installed-plugins.patch \
+ %D%/packages/patches/vagrant-Use-a-private-temporary-dir.patch \
%D%/packages/patches/vboot-utils-fix-format-load-address.patch \
%D%/packages/patches/vboot-utils-fix-tests-show-contents.patch \
%D%/packages/patches/vboot-utils-skip-test-workbuf.patch \
diff --git a/gnu/packages/patches/vagrant-Support-system-installed-plugins.patch b/gnu/packages/patches/vagrant-Support-system-installed-plugins.patch
new file mode 100644
index 0000000000..3d57993921
--- /dev/null
+++ b/gnu/packages/patches/vagrant-Support-system-installed-plugins.patch
@@ -0,0 +1,172 @@
+From: Hartmut Goebel <h.goebel@crazy-compilers.com>
+Date: Mon, 07 Aug 2023 18:09:09 +0200
+Subject: Support system-installed plugins
+
+Plugins must be installed as regular Ruby libraries, and they must
+contain share/vagrant-plugins/plugins.d/$PLUGINNAME.json with the
+following content:
+
+{
+ "${PLUGINNAME}": {
+ "ruby_version":"$(ruby -e 'puts RUBY_VERSION')",
+ "vagrant_version":"$(cat /usr/share/vagrant/version.txt)",
+ "gem_version":"",
+ "require":"",
+ "sources":[]
+ }
+}
+
+This patch was based on the respective patch from Debian, anyhow heavily
+adjusted to Guix and to support GUIX_VAGRANT_PLUGINS_PATH.
+
+Orignal-Author: Antonio Terceiro <terceiro@debian.org>
+Co-authored-by: Antonio Terceiro <terceiro@debian.org>
+---
+ bin/vagrant | 15 +++++++++++++++
+ lib/vagrant/bundler.rb | 2 +-
+ lib/vagrant/plugin/manager.rb | 4 ++--
+ lib/vagrant/plugin/state_file.rb | 30 ++++++++++++++++++++++++++++--
+ lib/vagrant/shared_helpers.rb | 8 ++++++++
+ 5 files changed, 54 insertions(+), 5 deletions(-)
+
+diff --git a/bin/vagrant b/bin/vagrant
+index d3f4ea6..cc00efa 100755
+--- a/bin/vagrant
++++ b/bin/vagrant
+@@ -86,6 +86,21 @@ $stderr.sync = true
+ # so we can provide correct resolutions later
+ builtin_specs = []
+
++# Add the gem paths of vagrant plugins to the Gem search path
++# TODO: find a better way to add paths to the Gem search path
++gempath = []
++if ENV['GEM_PATH']
++ gempath.append(ENV['GEM_PATH'])
++end
++ENV['GUIX_VAGRANT_PLUGINS_PATH'].split(File::PATH_SEPARATOR).each do |pluginsdir|
++ gemdir = File.absolute_path(File.join(pluginsdir, "../../lib/ruby/vendor_ruby"))
++ gempath.append(gemdir)
++end
++ENV['GEM_PATH'] = gempath.join(':')
++gemdir = nil
++gempath = nil
++Gem.clear_paths() # make GEM_PATH be reevaluated
++
+ vagrant_spec = Gem::Specification.find_all_by_name("vagrant").detect do |spec|
+ spec.version == Gem::Version.new(Vagrant::VERSION)
+ end
+diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb
+index 46ef69f..27979b9 100644
+--- a/lib/vagrant/bundler.rb
++++ b/lib/vagrant/bundler.rb
+@@ -665,7 +665,7 @@ module Vagrant
+ spec_dir = Gem::Specification.default_specifications_dir
+ end
+ directories = [spec_dir]
+- if Vagrant.in_bundler?
++ if Vagrant.in_bundler? || Vagrant.in_guix_package?
+ Gem::Specification.find_all{true}.each do |spec|
+ list[spec.full_name] = spec
+ end
+diff --git a/lib/vagrant/plugin/manager.rb b/lib/vagrant/plugin/manager.rb
+index b73f07f..94cd609 100644
+--- a/lib/vagrant/plugin/manager.rb
++++ b/lib/vagrant/plugin/manager.rb
+@@ -18,7 +18,7 @@ module Vagrant
+
+ # Returns the path to the [StateFile] for system plugins.
+ def self.system_plugins_file
+- dir = Vagrant.installer_embedded_dir
++ dir = nil
+ return nil if !dir
+ Pathname.new(dir).join("plugins.json")
+ end
+@@ -38,7 +38,7 @@ module Vagrant
+
+ system_path = self.class.system_plugins_file
+ @system_file = nil
+- @system_file = StateFile.new(system_path) if system_path && system_path.file?
++ @system_file = StateFile.new(system_path, true) #if system_path && system_path.file?
+
+ @local_file = nil
+ @globalized = @localized = false
+diff --git a/lib/vagrant/plugin/state_file.rb b/lib/vagrant/plugin/state_file.rb
+index c6872d4..b927fd8 100644
+--- a/lib/vagrant/plugin/state_file.rb
++++ b/lib/vagrant/plugin/state_file.rb
+@@ -11,11 +11,17 @@ module Vagrant
+ # @return [Pathname] path to file
+ attr_reader :path
+
+- def initialize(path)
++ def initialize(path, system = false)
+ @path = path
++ @system = system
+
+ @data = {}
+- if @path.exist?
++ if system
++ if ENV.has_key?('GUIX_VAGRANT_PLUGINS_PATH')
++ @data["installed"] = {}
++ load_system_plugins
++ end
++ elsif @path.exist?
+ begin
+ @data = JSON.parse(@path.read)
+ rescue JSON::ParserError => e
+@@ -30,6 +36,22 @@ module Vagrant
+ @data["installed"] ||= {}
+ end
+
++ def load_system_plugins
++ ENV['GUIX_VAGRANT_PLUGINS_PATH'].split(File::PATH_SEPARATOR).each do |pluginsdir|
++ extra_plugins = Dir.glob(File.join(pluginsdir, 'plugins.d', '*.json'))
++ extra_plugins.each do |filename|
++ json = File.read(filename)
++ begin
++ plugin_data = JSON.parse(json)
++ @data["installed"].merge!(plugin_data)
++ rescue JSON::ParserError => e
++ raise Vagrant::Errors::PluginStateFileParseError,
++ path: filename, message: e.message
++ end
++ end
++ end
++ end
++
+ # Add a plugin that is installed to the state file.
+ #
+ # @param [String] name The name of the plugin
+@@ -107,6 +129,10 @@ module Vagrant
+ f.close
+ FileUtils.mv(f.path, @path)
+ end
++ rescue Errno::EACCES
++ # Ignore permission denied against system-installed plugins; regular
++ # users are not supposed to write there.
++ raise unless @system
+ end
+
+ protected
+diff --git a/lib/vagrant/shared_helpers.rb b/lib/vagrant/shared_helpers.rb
+index 7b0b87c..eb9a21e 100644
+--- a/lib/vagrant/shared_helpers.rb
++++ b/lib/vagrant/shared_helpers.rb
+@@ -43,6 +43,14 @@ module Vagrant
+ !defined?(::Bundler).nil?
+ end
+
++ # This returns a true/false if we are running from a Guix package
++ #
++ # @return [Boolean]
++ def self.in_guix_package?
++ # FIXME write a proper check if this ever goes upstream
++ true
++ end
++
+ # Returns the path to the embedded directory of the Vagrant installer,
+ # if there is one (if we're running in an installer).
+ #
+--
+2.30.9
+
diff --git a/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch b/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
new file mode 100644
index 0000000000..8d0012e888
--- /dev/null
+++ b/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
@@ -0,0 +1,119 @@
+From: Antonio Terceiro <terceiro@debian.org>
+Date: Wed, 22 Oct 2014 09:40:14 -0200
+Subject: Use a private temporary directory that is cleanup up on exit
+
+This avoids vagrant from cluttering $TMPDIR with dozens of even hundreds
+of temporary files (~4 per vagrant invocation).
+---
+ lib/vagrant/box.rb | 3 ++-
+ lib/vagrant/util.rb | 1 +
+ lib/vagrant/util/caps.rb | 2 +-
+ lib/vagrant/util/platform.rb | 2 +-
+ lib/vagrant/util/tempfile.rb | 39 +++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 44 insertions(+), 3 deletions(-)
+ create mode 100644 lib/vagrant/util/tempfile.rb
+
+diff --git a/lib/vagrant/box.rb b/lib/vagrant/box.rb
+index 90dc69d..4ee79b9 100644
+--- a/lib/vagrant/box.rb
++++ b/lib/vagrant/box.rb
+@@ -9,6 +9,7 @@ require "vagrant/util/downloader"
+ require "vagrant/util/platform"
+ require "vagrant/util/safe_chdir"
+ require "vagrant/util/subprocess"
++require "vagrant/util/tempfile"
+
+ module Vagrant
+ # Represents a "box," which is a package Vagrant environment that is used
+@@ -142,7 +143,7 @@ module Vagrant
+ # @param [Hash] download_options Options to pass to the downloader.
+ # @return [BoxMetadata]
+ def load_metadata(download_options={})
+- tf = Tempfile.new("vagrant-load-metadata")
++ tf = Util::Tempfile.new("vagrant-load-metadata")
+ tf.close
+
+ url = @metadata_url
+diff --git a/lib/vagrant/util.rb b/lib/vagrant/util.rb
+index 4b3e0ff..36eb671 100644
+--- a/lib/vagrant/util.rb
++++ b/lib/vagrant/util.rb
+@@ -53,6 +53,7 @@ module Vagrant
+ autoload :SilenceWarnings, 'vagrant/util/silence_warnings'
+ autoload :SSH, 'vagrant/util/ssh'
+ autoload :StackedProcRunner, 'vagrant/util/stacked_proc_runner'
++ autoload :Tempfile, 'vagrant/util/tempfile'
+ autoload :StringBlockEditor, 'vagrant/util/string_block_editor'
+ autoload :Subprocess, 'vagrant/util/subprocess'
+ autoload :TemplateRenderer, 'vagrant/util/template_renderer'
+diff --git a/lib/vagrant/util/caps.rb b/lib/vagrant/util/caps.rb
+index 310add3..55afc49 100644
+--- a/lib/vagrant/util/caps.rb
++++ b/lib/vagrant/util/caps.rb
+@@ -28,7 +28,7 @@ module Vagrant
+
+ def ensure_output_iso(file_destination)
+ if file_destination.nil?
+- tmpfile = Tempfile.new(["vagrant", ".iso"])
++ tmpfile = Util::Tempfile.new(["vagrant", ".iso"])
+ file_destination = Pathname.new(tmpfile.path)
+ tmpfile.close
+ tmpfile.unlink
+diff --git a/lib/vagrant/util/platform.rb b/lib/vagrant/util/platform.rb
+index c8658e1..0421c70 100644
+--- a/lib/vagrant/util/platform.rb
++++ b/lib/vagrant/util/platform.rb
+@@ -356,7 +356,7 @@ module Vagrant
+
+ if wsl?
+ # Mark our filesystem with a temporary file having an unique name.
+- marker = Tempfile.new(Time.now.to_i.to_s)
++ marker = Util::Tempfile.new(Time.now.to_i.to_s)
+ logger = Log4r::Logger.new("vagrant::util::platform::wsl")
+
+ # Check for lxrun installation first
+diff --git a/lib/vagrant/util/tempfile.rb b/lib/vagrant/util/tempfile.rb
+new file mode 100644
+index 0000000..0cbbb53
+--- /dev/null
++++ b/lib/vagrant/util/tempfile.rb
+@@ -0,0 +1,39 @@
++require 'fileutils'
++require 'tmpdir'
++
++module Vagrant
++ module Util
++ class Tempfile < ::Tempfile
++
++ def initialize(basename)
++ super(basename, private_tmpdir)
++ end
++
++ def private_tmpdir
++ self.class.private_tmpdir
++ end
++
++ def self.private_tmpdir
++ @private_tmpdir ||=
++ begin
++ user = Etc.getpwuid.name
++ pid = Process.pid
++ tmpdir = File.join(Dir.tmpdir, "vagrant-#{user}-#{pid}")
++ FileUtils.mkdir_p(tmpdir)
++ FileUtils.chmod(0700, tmpdir)
++ tmpdir
++ end
++ end
++
++ def self.mktmpdir(prefix_suffix)
++ Dir.mktmpdir(prefix_suffix, private_tmpdir)
++ end
++
++
++ end
++ end
++end
++
++at_exit do
++ FileUtils.rm_rf(Vagrant::Util::Tempfile.private_tmpdir)
++end
diff --git a/gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch b/gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch
new file mode 100644
index 0000000000..4d4fed273c
--- /dev/null
+++ b/gnu/packages/patches/vagrant-bin-vagrant-silence-warning-about-installer.patch
@@ -0,0 +1,24 @@
+From: Antonio Terceiro <terceiro@debian.org>
+Date: Sat, 11 Oct 2014 16:54:58 -0300
+Subject: bin/vagrant: silence warning about installer
+
+---
+ bin/vagrant | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/bin/vagrant b/bin/vagrant
+index 7ca30b3..d3f4ea6 100755
+--- a/bin/vagrant
++++ b/bin/vagrant
+@@ -221,11 +221,6 @@ begin
+ end
+ end
+
+- if !Vagrant.in_installer? && !Vagrant.very_quiet?
+- # If we're not in the installer, warn.
+- env.ui.warn(I18n.t("vagrant.general.not_in_installer") + "\n", prefix: false)
+- end
+-
+ # Acceptable experimental flag values include:
+ #
+ # Unset - Disables experimental features
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 68beeb88d3..d0b51a960d 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -2220,6 +2220,110 @@ helpers that let you write your own unit and acceptance tests for Vagrant.")
(home-page "https://github.com/hashicorp/vagrant-spec")
(license license:mpl2.0)))
+(define-public vagrant
+ (package
+ (name "vagrant")
+ (version "2.3.7")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hashicorp/vagrant")
+ (commit "1f904866b568d9980daef4401c08b92cb3d1cda4")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0c674c5v70skh38lpydz8cdmcp8wgr9h7rn00rxdpgizrzbfxl82"))
+ (patches (search-patches
+ "vagrant-bin-vagrant-silence-warning-about-installer.patch"
+ "vagrant-Support-system-installed-plugins.patch"
+ "vagrant-Use-a-private-temporary-dir.patch"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:tests? #f ; test require ruby-grpc-tools which are not packaged yet
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-gemfile
+ (lambda _
+ (substitute* "Gemfile"
+ ((", git:.*") "\n"))))
+ (add-after 'unpack 'pin-executables
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((bsdtar (search-input-file inputs "/bin/bsdtar"))
+ (curl (search-input-file inputs "/bin/curl"))
+ (grep (search-input-file inputs "/bin/grep"))
+ (modinfo (search-input-file inputs "/bin/modinfo"))
+ (ps (search-input-file inputs "/bin/ps")))
+ ;; bsdtar
+ (for-each
+ (lambda (rbfile)
+ (substitute* rbfile
+ (("\"bsdtar\",") (string-append "\"" bsdtar "\","))))
+ (find-files "lib/vagrant/" "\\.rb$"))
+ ;; curl
+ (substitute* "lib/vagrant/util/downloader.rb"
+ (("\"curl\",") (string-append "\"" curl "\",")))
+ (substitute* "lib/vagrant/util/uploader.rb"
+ (("\"curl\",") (string-append "\"" curl "\",")))
+ (substitute* "plugins/hosts/linux/cap/nfs.rb"
+ ;; grep
+ (("\\| grep #\\{nfs_service")
+ (string-append "| " grep " #{nfs_service"))
+ (("\"grep\",") (string-append "\"" grep "\","))
+ ;; modinfo
+ (("Vagrant::Util::Which.which\\(\"modinfo\"\\)")
+ (string-append "\"" modinfo "\"")))
+ ;; ssh, rsync:
+ ;; Don't pin ssh to allow different clients and to avoid
+ ;; configuration conflicts when running on a foreign distro.
+ ;; (substitute* "lib/vagrant/util/ssh.rb"
+ ;; (("Which.which\\(\"ssh\", original_path: true\\)")
+ ;; (string-append "\"" ssh "\"")))
+ ;; ps
+ (substitute* "lib/vagrant/util/platform.rb"
+ (("\"ps\",") (string-append "\"" ps "\","))))))
+ (add-after 'extract-gemspec 'relax-requirements
+ (lambda _
+ (substitute* "vagrant.gemspec"
+ ;; Relax some version specification.
+ (("dependency \"rgl\", \"~> 0.5.10\"")
+ "dependency \"rgl\"")
+ ;; Remove Windows specific dependencies
+ ((".*dependency \"(wdm|winrm(|-elevated|-fs))\".*") "")
+ ;; Remove BSD dependency
+ ((".*dependency \"rb-kqueue\".*") "")
+ ;; Remove cyclic inclusion of gem
+ (("^ gitignore_path = " line)
+ (string-append
+ "all_files.reject! { |file| file.match?(\"vagrant-.*\\.gem\") }\n"
+ line))))))))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "GUIX_VAGRANT_PLUGINS_PATH")
+ (files '("share/vagrant-plugins")))))
+ ;; TODO: install bash/zsh completions, man-page, etc.
+ ;; see http://svnweb.mageia.org/packages/cauldron/vagrant/current/SPECS/vagrant.spec
+ (native-inputs (list ruby-fake-ftp ruby-webrick bundler ruby-vagrant-spec))
+ (inputs (list curl grep kmod libarchive openssh procps))
+ (propagated-inputs
+ (list ruby-bcrypt-pbkdf ruby-childprocess ruby-ed25519 ruby-erubi
+ ruby-googleapis-common-protos-types ruby-grpc
+ ruby-hashicorp-checkpoint ruby-i18n ruby-listen ruby-log4r
+ ruby-mime-types ruby-net-ftp ruby-net-ssh ruby-net-sftp
+ ruby-net-scp ruby-ipaddr ruby-rexml ruby-rgl ruby-rubyzip
+ ruby-vagrant-cloud ruby-vagrant-spec))
+ (synopsis "Build and distribute virtualized development environments")
+ (description "Vagrant is the command line utility for managing the
+lifecycle of virtual machines. Isolate dependencies and their configuration
+within a single disposable and consistent environment.
+
+Note: Make sure to have @code{ssh} and @code{rsync} installed — if you use the
+respective Vagrant functions. This package does not link to any specific
+implementation of these to allow different clients and to avoid configuration
+conflicts when running on a `foreign distribution'.")
+ (home-page "https://www.vagrantup.com")
+ (license license:bsd-3)))
+
(define-public python-vagrant
(package
(name "python-vagrant")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 24/32] gnu: Add vagrant-vai.
(address . 65131@debbugs.gnu.org)
cfe5c7142e2a0f91429265342bf250fb3dfd699f.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/virtualization.scm (vagrant-vai): New variable.
---
gnu/packages/virtualization.scm | 48 +++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)

Toggle diff (68 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index d0b51a960d..d37844904c 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -87,6 +87,7 @@
#:use-module (gnu packages golang)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages guile)
#:use-module (gnu packages haskell)
#:use-module (gnu packages haskell-apps)
#:use-module (gnu packages haskell-check)
@@ -2324,6 +2325,53 @@ conflicts when running on a `foreign distribution'.")
(home-page "https://www.vagrantup.com")
(license license:bsd-3)))
+(define-public vagrant-vai
+ (package
+ (name "vagrant-vai")
+ (version "0.9.3")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "vai" version))
+ (sha256
+ (base32
+ "041bi8hk03ybhacqzhw153j3knqhwvxn8aczzq6nikmpklcs4m4a"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:tests? #f ; tests involve running vagrant and downloading a box
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'install-plugin.json
+ (lambda _
+ (let* ((plugins.d (string-append
+ #$output "/share/vagrant-plugins/plugins.d"))
+ (plugin.json (string-append
+ plugins.d "/" #$name ".json")))
+ (mkdir-p plugins.d)
+ #$(with-extensions (list guile-json-4)
+ #~(begin
+ (use-modules (json))
+ (call-with-output-file plugin.json
+ (lambda (port)
+ (scm->json
+ '(("vai" ;; #$name
+ .
+ (("ruby_version"
+ . #$(package-version (this-package-input "ruby")))
+ ("vagrant_version"
+ . #$(package-version (this-package-input "vagrant")))
+ ("gem_version" . "")
+ ("require" . "")
+ ("installed_gem_version" . #$version)
+ ("sources" . #()))))
+ port)))))))))))
+ (inputs (list ruby vagrant))
+ (synopsis "Vagrant provisioning plugin to output an Ansible inventory")
+ (description "This plugin creates an Ansible inventory file containing the
+created virtual machines and the respective ssh-parameters.")
+ (home-page "https://github.com/MatthewMi11er/vai")
+ (license license:expat)))
+
(define-public python-vagrant
(package
(name "python-vagrant")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 25/32] gnu: Add vagrant-cachier.
(address . 65131@debbugs.gnu.org)
aa0793e6ba052c148b37e687b46bf907a7d51da1.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/virtualization.scm (vagrant-cachier): New variable.
---
gnu/packages/virtualization.scm | 50 +++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)

Toggle diff (63 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index d37844904c..c3d5bef58b 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -2325,6 +2325,56 @@ conflicts when running on a `foreign distribution'.")
(home-page "https://www.vagrantup.com")
(license license:bsd-3)))
+(define-public vagrant-cachier
+ (package
+ (name "vagrant-cachier")
+ (version "1.2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "vagrant-cachier" version))
+ (sha256
+ (base32
+ "0v11nf2d2y2knwm4zackd5ap8h2927n8rc1q73b6ii4hndv98fh9"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:tests? #f ; neither gem nor source actually has tests
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'install-plugin.json
+ (lambda _
+ (let* ((plugins.d (string-append
+ #$output "/share/vagrant-plugins/plugins.d"))
+ (plugin.json (string-append
+ plugins.d "/" #$name ".json")))
+ (mkdir-p plugins.d)
+ #$(with-extensions (list guile-json-4)
+ #~(begin
+ (use-modules (json))
+ (call-with-output-file plugin.json
+ (lambda (port)
+ (scm->json
+ '((#$name
+ .
+ (("ruby_version"
+ . #$(package-version (this-package-input "ruby")))
+ ("vagrant_version"
+ . #$(package-version (this-package-input "vagrant")))
+ ("gem_version" . "")
+ ("require" . "")
+ ("installed_gem_version" . #$version)
+ ("sources" . #()))))
+ port)))))))))))
+ (inputs (list ruby vagrant))
+ (synopsis "Share a common package cache among similar VM instances")
+ (description "This package provides a Vagrant plugin that helps you reduce
+the amount of coffee you drink while waiting for boxes to be provisioned by
+sharing a common package cache among similar VM instances. Kinda like
+vagrant-apt_cache or this magical snippet but targeting multiple package
+managers and Linux distros.")
+ (home-page "https://github.com/fgrehm/vagrant-cachier")
+ (license license:expat)))
+
(define-public vagrant-vai
(package
(name "vagrant-vai")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 26/32] gnu: Add vagrant-reload.
(address . 65131@debbugs.gnu.org)
eb7778585d3c9c61f78528a6f1c9d7145033ff67.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/virtualization.scm (vagrant-reload): New variable.
---
gnu/packages/virtualization.scm | 52 +++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)

Toggle diff (65 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index c3d5bef58b..0742db7cc2 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -2375,6 +2375,58 @@ managers and Linux distros.")
(home-page "https://github.com/fgrehm/vagrant-cachier")
(license license:expat)))
+(define-public vagrant-reload
+ (package
+ (name "vagrant-reload")
+ (version "0.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "vagrant-reload" version))
+ (sha256
+ (base32
+ "0smy0px20xgakcyki5hdbk3n63k9c6ychh5pvbannn1p4zjxa0xa"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:tests? #f ; has no tests, testing as described in the Readme requires
+ ; running vagrant, a provider and downloading a box
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-gemfile
+ (lambda _
+ (substitute* "Gemfile"
+ ((", :git.*") "\n"))))
+ (add-after 'install 'install-plugin.json
+ (lambda _
+ (let* ((plugins.d (string-append
+ #$output "/share/vagrant-plugins/plugins.d"))
+ (plugin.json (string-append
+ plugins.d "/" #$name ".json")))
+ (mkdir-p plugins.d)
+ #$(with-extensions (list guile-json-4)
+ #~(begin
+ (use-modules (json))
+ (call-with-output-file plugin.json
+ (lambda (port)
+ (scm->json
+ '((#$name
+ .
+ (("ruby_version"
+ . #$(package-version (this-package-input "ruby")))
+ ("vagrant_version"
+ . #$(package-version (this-package-input "vagrant")))
+ ("gem_version" . "")
+ ("require" . "")
+ ("installed_gem_version" . #$version)
+ ("sources" . #()))))
+ port)))))))))))
+ (inputs (list ruby vagrant))
+ (synopsis "Reload a Vagrant VM as a provisioning step")
+ (description "This Vagrant plugin enables reloading a Vagrant VM as a
+provisioning step.")
+ (home-page "http://www.vagrantup.com")
+ (license license:expat)))
+
(define-public vagrant-vai
(package
(name "vagrant-vai")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 27/32] gnu: Add ruby-libvirt.
(address . 65131@debbugs.gnu.org)
1747c12d62d1ecaab9b7be06c8a97cb356fffa1c.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-libvirt): New variable.
---
gnu/packages/ruby.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 5204f42895..c1aff21e51 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -79,6 +79,7 @@
#:use-module (gnu packages networking)
#:use-module (gnu packages node)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
@@ -9633,6 +9634,28 @@ and delete boxes, versions, and providers on HashiCorp's Vagrant Cloud.")
(home-page "https://github.com/hashicorp/vagrant_cloud")
(license license:asl2.0)))
+(define-public ruby-libvirt
+ (package
+ (name "ruby-libvirt")
+ (version "0.8.0")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "ruby-libvirt" version))
+ (sha256
+ (base32
+ "0rnmbfhdz270fky0cm8w1i73gkrnlf3s1hdkm5yxjkdbvapwvjsd"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:tests? #f)) ; tests require access to libvirt socket
+ (native-inputs (list pkg-config))
+ (inputs (list libvirt))
+ (synopsis "Ruby bindings for libvirt")
+ (description "This package provides Ruby language binding for libvirt's
+native C API.")
+ (home-page "https://ruby.libvirt.org/")
+ (license license:lgpl2.1+)))
+
(define-public ruby-pry-byebug
(package
(name "ruby-pry-byebug")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 28/32] gnu: Add ruby-fog-core.
(address . 65131@debbugs.gnu.org)
0d6040eb45e1fdf51258052cbff15c852e763d33.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-fog-core): New variable.
---
gnu/packages/ruby.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index c1aff21e51..fb45a52c9e 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -9656,6 +9656,36 @@ native C API.")
(home-page "https://ruby.libvirt.org/")
(license license:lgpl2.1+)))
+(define-public ruby-fog-core
+ (package
+ (name "ruby-fog-core")
+ (version "2.3.0")
+ (source (origin
+ (method git-fetch) ; for tests
+ (uri (git-reference
+ (url "https://github.com/fog/fog-core")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1s355ldv5wv0zv2irnraj4z70jgrhhk8ypgxr2wig3mr77px5b8g"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'check 'set-home
+ (lambda _
+ (setenv "HOME" "/tmp"))))))
+ (native-inputs (list ruby-minitest-stub-const))
+ (propagated-inputs (list ruby-builder ruby-excon ruby-formatador
+ ruby-mime-types))
+ (synopsis "Shared classes and tests for fog providers and services")
+ (description "@code{fog} is a Ruby cloud services library. This package
+provides shared classes and tests for @code{fog} providers and services.")
+ (home-page "https://github.com/fog/fog-core")
+ (license license:expat)))
+
(define-public ruby-pry-byebug
(package
(name "ruby-pry-byebug")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 29/32] gnu: Add ruby-fog-json.
(address . 65131@debbugs.gnu.org)
f29e7464fc670c099332d9c9956720f311aafa26.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-fog-json): New variable.
---
gnu/packages/ruby.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index fb45a52c9e..50f066e17c 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -9686,6 +9686,29 @@ provides shared classes and tests for @code{fog} providers and services.")
(home-page "https://github.com/fog/fog-core")
(license license:expat)))
+(define-public ruby-fog-json
+ (package
+ (name "ruby-fog-json")
+ (version "1.2.0")
+ (source (origin
+ (method git-fetch) ; for tests
+ (uri (git-reference
+ (url "https://github.com/fog/fog-json")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0f4hbmhy22b1gbkzd3pnj5xvljp6bl7inc2y4fxh29nrmcn4pgb0"))))
+ (build-system ruby-build-system)
+ (native-inputs (list ruby-minitest))
+ (propagated-inputs (list ruby-fog-core ruby-multi-json))
+ (synopsis "JSON parsing tools used by @code{fog} providers")
+ (description "This package containse the JSON parsing tools shared between
+a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
+services library.")
+ (home-page "https://github.com/fog/fog-json")
+ (license license:expat)))
+
(define-public ruby-pry-byebug
(package
(name "ruby-pry-byebug")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 30/32] gnu: Add ruby-fog-xml.
(address . 65131@debbugs.gnu.org)
b902be5c091e51169ea82cbe570ba4d512af3892.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-fog-xml): New variable.
---
gnu/packages/ruby.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

Toggle diff (48 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 50f066e17c..e243f7b81a 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -9709,6 +9709,41 @@ services library.")
(home-page "https://github.com/fog/fog-json")
(license license:expat)))
+(define-public ruby-fog-xml
+ (package
+ (name "ruby-fog-xml")
+ (version "0.1.4")
+ (source (origin
+ (method git-fetch) ; for tests
+ (uri (git-reference
+ (url "https://github.com/fog/fog-xml")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0d0n201qzcjxis5wb26bi3s7yfhlmqkwsl6lb9w4szq3b8l1xbwn"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ ;; Run tests via bundler so rake picks up the minitest gem from
+ ;; native-inputs, not the one installed otherwise. This is required
+ ;; since turn@0.9.7 needs minitest@4 and can not be upgraded to
+ ;; minitest@5.
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "bundle" "exec" "rake")))))))
+ (native-inputs (list ruby-minitest-4 ruby-turn ruby-pry ruby-coveralls))
+ (propagated-inputs (list ruby-fog-core ruby-nokogiri))
+ (synopsis "XML parsing tools used by @code{fog} providers")
+ (description "This package containse the XML parsing tools shared between
+a number of providers in the @code{fog} gem. @code{fog} is a Ruby cloud
+services library.")
+ (home-page "https://github.com/fog/fog-xml")
+ (license license:expat)))
+
(define-public ruby-pry-byebug
(package
(name "ruby-pry-byebug")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 31/32] gnu: Add ruby-fog-libvirt.
(address . 65131@debbugs.gnu.org)
1dab11fb05694c627f5773444e4f41ddbf98be23.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/ruby.scm (ruby-fog-libvirt): New variable.
---
gnu/packages/ruby.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index e243f7b81a..3876e91a48 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -89,6 +89,7 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
#:use-module (gnu packages version-control)
+ #:use-module (gnu packages virtualization)
#:use-module (gnu packages web-browsers)
#:use-module (gnu packages serialization)
#:use-module (guix packages)
@@ -9744,6 +9745,32 @@ services library.")
(home-page "https://github.com/fog/fog-xml")
(license license:expat)))
+(define-public ruby-fog-libvirt
+ (package
+ (name "ruby-fog-libvirt")
+ (version "0.11.0")
+ (source (origin
+ (method git-fetch) ; for tests
+ (uri (git-reference
+ (url "https://github.com/fog/fog-libvirt")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "18q83xvv0cr6bsqp73h27xsdiq4b33dzygkilqxzzk76yf1s8965"))))
+ (build-system ruby-build-system)
+ (native-inputs (list ruby-minitest-stub-const ruby-mocha ruby-net-ssh
+ ruby-netrc ruby-octokit ruby-pry ruby-rubocop
+ ruby-shindo ruby-simplecov ruby-yard ))
+ (propagated-inputs (list ruby-fog-core ruby-fog-json ruby-fog-xml
+ ruby-json ruby-libvirt))
+ (synopsis "Ruby libvirt provider, either standalone or as a module for
+@code{fog}")
+ (description "This library can be used as a module for @code{fog} or as
+standalone libvirt provider. @code{fog} is a Ruby cloud services library.")
+ (home-page "https://github.com/fog/fog-libvirt")
+ (license license:expat)))
+
(define-public ruby-pry-byebug
(package
(name "ruby-pry-byebug")
--
2.30.9
H
H
Hartmut Goebel wrote on 7 Aug 2023 20:26
[PATCH 32/32] gnu: Add vagrant-libvirt.
(address . 65131@debbugs.gnu.org)
ddd1b3f86b45d3415c0d1aa539636f9d335667e7.1691432343.git.h.goebel@crazy-compilers.com
* gnu/packages/virtualization.scm (vagrant-libvirt): New variable.
---
gnu/packages/virtualization.scm | 53 +++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)

Toggle diff (66 lines)
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 0742db7cc2..40f19502e7 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -2375,6 +2375,59 @@ managers and Linux distros.")
(home-page "https://github.com/fgrehm/vagrant-cachier")
(license license:expat)))
+(define-public vagrant-libvirt
+ (package
+ (name "vagrant-libvirt")
+ (version "0.12.2")
+ (source (origin
+ (method url-fetch)
+ (uri (rubygems-uri "vagrant-libvirt" version))
+ (sha256
+ (base32
+ "013g6wn24k01lwwkzcb0vvxj959lws8c52bkyqi6b8shnn793j1l"))))
+ (build-system ruby-build-system)
+ (arguments
+ (list
+ #:tests? #f ; tests involve running vagrant, downloading a box and
+ ; access to libvirt socket
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'install-plugin.json
+ (lambda _
+ (let* ((plugins.d (string-append
+ #$output "/share/vagrant-plugins/plugins.d"))
+ (plugin.json (string-append
+ plugins.d "/" #$name ".json")))
+ (mkdir-p plugins.d)
+ #$(with-extensions (list guile-json-4)
+ #~(begin
+ (use-modules (json))
+ (call-with-output-file plugin.json
+ (lambda (port)
+ (scm->json
+ '((#$name
+ .
+ (("ruby_version"
+ . #$(package-version (this-package-input "ruby")))
+ ("vagrant_version"
+ . #$(package-version (this-package-input "vagrant")))
+ ("gem_version" . "")
+ ("require" . "")
+ ("installed_gem_version" . #$version)
+ ("sources" . #()))))
+ port)))))))))))
+ (inputs (list ruby vagrant))
+ (propagated-inputs (list ruby-diffy
+ ruby-fog-core
+ ruby-fog-libvirt
+ ruby-nokogiri
+ ruby-rexml
+ ruby-xml-simple))
+ (synopsis "@code{libvirt} provider for Vagrant")
+ (description "This plugin provides a @code{libvirt} provider for Vagrant.")
+ (home-page "https://github.com/vagrant-libvirt/vagrant-libvirt")
+ (license license:expat)))
+
(define-public vagrant-reload
(package
(name "vagrant-reload")
--
2.30.9
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 65131@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 65131
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch