From 1b1c1fc97c6e33eb58339b20ee68c8d7c6994ebe Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Mon, 8 Mar 2021 01:33:57 +0300 Subject: debian: add Vagrantfile for building packages --- debian/.gitignore | 1 + debian/Vagrantfile | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 debian/Vagrantfile 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 -- cgit v1.2.3