aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2021-03-08 01:33:57 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2021-03-08 01:33:57 +0300
commit1b1c1fc97c6e33eb58339b20ee68c8d7c6994ebe (patch)
treea27c90d5a5b1d33590de5b38345e5829723121df
parentdebian: lower debhelper-compat level (diff)
downloadlinux-status-1b1c1fc97c6e33eb58339b20ee68c8d7c6994ebe.tar.gz
linux-status-1b1c1fc97c6e33eb58339b20ee68c8d7c6994ebe.zip
debian: add Vagrantfile for building packages
-rw-r--r--debian/.gitignore1
-rw-r--r--debian/Vagrantfile66
2 files changed, 67 insertions, 0 deletions
diff --git a/debian/.gitignore b/debian/.gitignore
index 96bfb9e..3eb2fb2 100644
--- a/debian/.gitignore
+++ b/debian/.gitignore
@@ -1 +1,2 @@
build-area/
+.vagrant/
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