diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2021-03-08 01:33:57 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2021-03-08 01:33:57 +0300 |
commit | 1b1c1fc97c6e33eb58339b20ee68c8d7c6994ebe (patch) | |
tree | a27c90d5a5b1d33590de5b38345e5829723121df /debian/Vagrantfile | |
parent | debian: lower debhelper-compat level (diff) | |
download | linux-status-1b1c1fc97c6e33eb58339b20ee68c8d7c6994ebe.tar.gz linux-status-1b1c1fc97c6e33eb58339b20ee68c8d7c6994ebe.zip |
debian: add Vagrantfile for building packages
Diffstat (limited to '')
-rw-r--r-- | debian/Vagrantfile | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/debian/Vagrantfile b/debian/Vagrantfile new file mode 100644 index 0000000..427be1d --- /dev/null +++ b/debian/Vagrantfile @@ -0,0 +1,66 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +GIT_NAME = 'Egor Tensin' +GIT_EMAIL = 'Egor.Tensin@gmail.com' +GPG_KEY = '3B3EF1235420917E0DB0723991D679FB92B036CB' +UID = Process.euid + +Vagrant.configure("2") do |config| + config.vm.box = "generic/ubuntu2004" + + # Weirdly enough, VirtualBox's shared folders didn't quite work for me. + # gbp buildpackage would just exit with FileExistsError, which doesn't + # happen with NFS shares. + config.vm.synced_folder "../", "/vagrant", type: "nfs" + + config.vm.provider "libvirt" do |v| + v.cpus = 2 + v.memory = 4096 + end + + # Working with the git repository: + config.vm.provision "shell", privileged: false, inline: <<-SHELL + git config --global user.name '#{GIT_NAME}' + git config --global user.email '#{GIT_EMAIL}' + SHELL + config.ssh.forward_agent = true + + # gpg-agent forwarding (https://wiki.gnupg.org/AgentForwarding): + config.vm.provision "shell", privileged: false, inline: <<-SHELL + gpg --keyserver hkp://keyserver.ubuntu.com/ --recv-keys '0x#{GPG_KEY}' + gpg --import-ownertrust <<'EOF' +#{GPG_KEY}:6: +EOF + SHELL + config.vm.provision "shell", inline: <<-SHELL + echo 'StreamLocalBindUnlink yes' >> /etc/ssh/sshd_config + SHELL + # "agent-extra-socket" on the host. + local_gpg_socket = one_line(run('gpgconf', '--list-dirs', 'agent-extra-socket')) + # "agent-socket" on the VM. + remote_gpg_socket = "/run/user/#{UID}/gnupg/S.gpg-agent" + config.ssh.extra_args = ['-R', "#{remote_gpg_socket}:#{local_gpg_socket}"] + + # Install the required packages: + config.vm.provision "shell", inline: <<-SHELL + apt-get update + apt-get install -y build-essential devscripts dh-make git-buildpackage + SHELL + + config.vm.provision :reload +end + +require "open3" + +def run(*cmd) + stdout, stderr, status = Open3.capture3(*cmd) + abort stderr unless status.success? + stdout +end + +def one_line(output) + lines = output.lines.map(&:chomp) + abort "Must be a single line: #{lines}" unless lines.length == 1 + lines.first +end |