aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/debian.yml25
-rw-r--r--.github/workflows/ppa.yml33
-rw-r--r--debian/.gitignore2
-rw-r--r--debian/Makefile90
-rw-r--r--debian/README.Debian54
-rw-r--r--debian/Vagrantfile101
-rw-r--r--debian/changelog298
-rw-r--r--debian/control14
-rw-r--r--debian/copyright31
-rw-r--r--debian/gbp.conf15
-rwxr-xr-xdebian/rules3
-rw-r--r--debian/source/format1
12 files changed, 667 insertions, 0 deletions
diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml
new file mode 100644
index 0000000..a6599c7
--- /dev/null
+++ b/.github/workflows/debian.yml
@@ -0,0 +1,25 @@
+name: Packages (Debian)
+
+on:
+ push:
+ workflow_dispatch:
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ name: Binary package
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v7
+ with:
+ fetch-depth: 0
+ - name: Install dependencies
+ run: sudo make -C debian deps
+ - name: Build binary package
+ run: make -C debian bin/test
+ - name: Upload binary package
+ uses: actions/upload-artifact@v7
+ with:
+ name: build-area
+ path: debian/build-area/
+ if-no-files-found: error
diff --git a/.github/workflows/ppa.yml b/.github/workflows/ppa.yml
new file mode 100644
index 0000000..2394062
--- /dev/null
+++ b/.github/workflows/ppa.yml
@@ -0,0 +1,33 @@
+name: Publish (Launchpad)
+
+on:
+ push:
+ workflow_dispatch:
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ name: Upload to PPA
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v7
+ with:
+ fetch-depth: 0
+ - name: Import GPG key
+ uses: crazy-max/ghaction-import-gpg@v7
+ with:
+ gpg_private_key: '${{ secrets.GPG_PRIVATE_KEY }}'
+ passphrase: '${{ secrets.GPG_PASSPHRASE }}'
+ - name: Install dependencies
+ run: sudo make -C debian deps
+ - name: Create cowbuilder image
+ run: sudo make -C debian dist/create
+ - name: Build binary package
+ run: make -C debian dist
+ - name: Clean the build area
+ run: make -C debian clean
+ - name: Build source package
+ run: make -C debian src
+ - name: Upload to PPA
+ if: startsWith(github.ref, 'refs/tags/debian/')
+ run: make -C debian upload
diff --git a/debian/.gitignore b/debian/.gitignore
new file mode 100644
index 0000000..3eb2fb2
--- /dev/null
+++ b/debian/.gitignore
@@ -0,0 +1,2 @@
+build-area/
+.vagrant/
diff --git a/debian/Makefile b/debian/Makefile
new file mode 100644
index 0000000..085e306
--- /dev/null
+++ b/debian/Makefile
@@ -0,0 +1,90 @@
+include ../prelude.mk
+
+NAME ?= Egor Tensin
+EMAIL ?= egor@tensin.name
+PPA_OWNER ?= egor-tensin
+PPA_NAME ?= config-links
+GPG_KEY ?= 09AEA2BAD52882A1AF9D6042F218DB829A9905B5
+DIST ?= focal
+
+$(eval $(call noexpand,NAME))
+$(eval $(call noexpand,EMAIL))
+$(eval $(call noexpand,PPA_OWNER))
+$(eval $(call noexpand,PPA_NAME))
+$(eval $(call noexpand,GPG_KEY))
+$(eval $(call noexpand,DIST))
+
+export NAME
+export EMAIL
+
+this_dir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+root := $(this_dir)/..
+build_area := $(this_dir)/build-area
+
+.PHONY: deps
+deps:
+ apt update
+ DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
+ build-essential \
+ cowbuilder \
+ devscripts \
+ dh-make \
+ dput \
+ git-buildpackage \
+ vim
+
+.PHONY: dch
+dch:
+ gbp dch --distribution=unstable --commit
+
+.PHONY: changelog
+changelog: dch
+
+.PHONY: tag
+tag:
+ gbp tag
+
+.PHONY: push
+push:
+ env GIT_SSH_COMMAND='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' gbp push
+
+.PHONY: src/test
+src/test:
+ cd -- '$(call escape,$(root))' && gbp buildpackage -S --no-sign --git-ignore-new
+
+.PHONY: src
+src:
+ cd -- '$(call escape,$(root))' && gbp buildpackage -S '-k0x$(call escape,$(GPG_KEY))' --changes-option=-sa
+
+.PHONY: bin/test
+bin/test:
+ cd -- '$(call escape,$(root))' && gbp buildpackage -b --no-sign --git-ignore-new
+
+.PHONY: bin
+bin:
+ cd -- '$(call escape,$(root))' && gbp buildpackage -b '-k0x$(call escape,$(GPG_KEY))'
+
+.PHONY: dist/create
+dist/create:
+ cd -- '$(call escape,$(root))' && env 'DIST=$(call escape,$(DIST))' git-pbuilder create
+
+.PHONY: dist/update
+dist/update:
+ cd -- '$(call escape,$(root))' && env 'DIST=$(call escape,$(DIST))' git-pbuilder update
+
+.PHONY: dist/test
+dist/test:
+ cd -- '$(call escape,$(root))' && gbp buildpackage --git-pbuilder '--git-dist=$(call escape,$(DIST))' --git-ignore-new
+
+.PHONY: dist
+dist:
+ cd -- '$(call escape,$(root))' && gbp buildpackage --git-pbuilder '--git-dist=$(call escape,$(DIST))'
+ cd -- '$(call escape,$(root))' && debsign '-k0x$(call escape,$(GPG_KEY))' --debs-dir '$(call escape,$(build_area))'
+
+.PHONY: upload
+upload:
+ find '$(call escape,$(build_area))' -type f -name '*.changes' -exec dput '$(call escape,ppa:$(PPA_OWNER)/$(PPA_NAME)/ubuntu/$(DIST))' {} ';'
+
+.PHONY: clean
+clean:
+ rm -rf -- '$(call escape,$(build_area))'
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..0a1f9b4
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,54 @@
+config-links for Debian
+----------------------
+
+There's a Vagrantfile to make maintenance easier. To start, use `vagrant up`,
+then `vagrant ssh`. The project will be in /vagrant; kill the VM using
+`vagrant destroy -f` when you're done.
+
+There're a bunch of useful one-liners in Makefile. Everything is built in
+debian/build-area/.
+
+ * Merge the new version to the debian branch (cannot be a lightweight tag for
+ the gbp tools to work):
+
+ git merge TAG
+
+ * Add a changelog entry & tag it:
+
+ make changelog
+ make tag
+
+ * To test, make a source package:
+
+ make src # Or:
+ make src/test # Ignores uncommitted changes.
+
+ * To test, make a binary package:
+
+ make bin # Or:
+ make bin/test # Ignores uncommmited changes.
+
+ * You can push the changes to GitHub now:
+
+ make push
+
+ The rest should be taken care of by GitHub Actions. Otherwise, you can
+ upload the package to Launchpad manually as described below.
+
+ * Upload the source package to the PPA:
+
+ make upload
+
+ To make the package available for different Ubuntu distributions, copy the
+ package binaries on Launchpad. I dread the day when this becomes
+ impossible.
+
+ * Make a binary package using pbuilder (useful for testing that the package
+ builds on a particular distribution):
+
+ make DIST=focal dist/create
+ make DIST=focal dist/update
+ make DIST=focal dist
+ make DIST=focal dist/test # Ignores uncommitted changes.
+
+ -- Egor Tensin <egor@tensin.name> Wed, 28 Apr 2021 21:14:04 +0000
diff --git a/debian/Vagrantfile b/debian/Vagrantfile
new file mode 100644
index 0000000..2b38b0f
--- /dev/null
+++ b/debian/Vagrantfile
@@ -0,0 +1,101 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+NAME = 'Egor Tensin'
+EMAIL = 'egor@tensin.name'
+GPG_KEY = '09AEA2BAD52882A1AF9D6042F218DB829A9905B5'
+UID = Process.euid
+
+REQUIRED_PLUGINS = %w(
+ vagrant-libvirt
+ vagrant-reload
+)
+exit unless REQUIRED_PLUGINS.all? do |plugin|
+ Vagrant.has_plugin?(plugin) || (
+ puts "The #{plugin} plugin is required. Please install it with:"
+ puts " vagrant plugin install #{plugin}"
+ false
+ )
+end
+
+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",
+ nfs_udp: false,
+ nfs_version: "4"
+
+ 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
+#!/usr/bin/env bash
+set -o errexit -o nounset -o pipefail
+git config --global user.name '#{NAME}'
+git config --global user.email '#{EMAIL}'
+ SHELL
+ config.ssh.forward_agent = true
+
+ # Set DEB* environment variables:
+ config.vm.provision "shell", privileged: false, inline: <<-SHELL
+#!/usr/bin/env bash
+set -o errexit -o nounset -o pipefail
+tee -a ~/.bashrc <<'EOF'
+export DEBFULLNAME='#{NAME}'
+export DEBEMAIL='#{EMAIL}'
+EOF
+ SHELL
+
+ # gpg-agent forwarding (https://wiki.gnupg.org/AgentForwarding):
+ config.vm.provision "shell", privileged: false, inline: <<-SHELL
+#!/usr/bin/env bash
+set -o errexit -o nounset -o pipefail
+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
+#!/usr/bin/env bash
+set -o errexit -o nounset -o pipefail
+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
+#!/usr/bin/env bash
+set -o errexit -o nounset -o pipefail
+apt update
+DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends make
+cd /vagrant/debian
+make deps
+ 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
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..3a1c95e
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,298 @@
+config-links (2.1.7-1) unstable; urgency=medium
+
+ * Makefile: do nothing on all:
+
+ -- Egor Tensin <egor@tensin.name> Mon, 28 Sep 2026 09:03:24 +0000
+
+config-links (2.1.6-1) unstable; urgency=medium
+
+ * Makefile: add install: target
+ * workflows/ci: don't publish to AUR on Debian tags
+ * debian/Makefile: remove unused stuff
+ * debian: use `make install`
+
+ -- Egor Tensin <egor@tensin.name> Mon, 28 Sep 2026 08:56:47 +0000
+
+config-links (2.1.5-1) unstable; urgency=medium
+
+ * debian: clean up dependencies
+ * debian/README: update
+ * debian/README: fix a typo
+ * test/local: allow filtering tests
+ * test: move the linux-home test to test/local/
+ * test/local/ -> test/
+ * test: add tst-root.sh
+
+ -- Egor Tensin <egor@tensin.name> Sun, 27 Sep 2026 11:08:22 +0000
+
+config-links (2.1.4-3) unstable; urgency=medium
+
+ * debian: make push should be non-interactive
+
+ -- Egor Tensin <egor@tensin.name> Wed, 23 Sep 2026 16:31:29 +0000
+
+config-links (2.1.4-2) unstable; urgency=medium
+
+ * Revert "debian: remove --ignore-branch"
+ * debian: add a comment to gbp.conf
+ * debian: add make push target
+ * debian/README: update
+
+ -- Egor Tensin <egor@tensin.name> Wed, 23 Sep 2026 16:26:34 +0000
+
+config-links (2.1.4-1) unstable; urgency=medium
+
+ * test/docker: apt-get -> apt
+ * debian: remove --ignore-branch
+ * debian: prettier Makefile
+ * debian/README: update
+ * debian: add changelog target for make
+ * Revert "debian: use dput-ng"
+ * debian: set --upstream-branch for gbp
+
+ -- Egor Tensin <egor@tensin.name> Wed, 23 Sep 2026 15:51:29 +0000
+
+config-links (2.1.2-2) unstable; urgency=medium
+
+ * debian: apt-get -> apt
+ * debian: use gbp dch w/ the --commit option
+ * debian: use gbp tag
+ * debian: use dput-ng
+
+ -- Egor Tensin <egor@tensin.name> Wed, 23 Sep 2026 10:01:16 +0000
+
+config-links (2.1.2-1) unstable; urgency=medium
+
+ [ Egor Tensin ]
+ * workflows/ci: passwordless sudo for builder
+
+ [ dependabot[bot] ]
+ * Bump actions/checkout from 6 to 7
+
+ [ dependabot[bot] ]
+ * Bump actions/checkout from 6 to 7
+ * remove annoying trailing period from repo URLs
+ * test/local: split test.sh into many files
+ * test/local: refactor things a little bit
+ * db.sh: fix findutils warnings
+ * test/local: tests summary & output tweaks
+ * test/local: split lib/common.sh, add logging routines, tweak output, etc.
+ * test/local: clean up lib/test.sh routines a little bit
+
+ -- Egor Tensin <egor@tensin.name> Wed, 23 Sep 2026 05:53:28 +0000
+
+config-links (2.1.1-1) unstable; urgency=medium
+
+ [ Egor Tensin ]
+ * workflows: upgrade actions
+ * dependabot: enable for branch "debian"
+
+ [ dependabot[bot] ]
+ * Bump actions/checkout from 6 to 7
+
+ [ dependabot[bot] ]
+ * Bump actions/checkout from 6 to 7
+ * workflows/ci: add job to update AUR branch
+
+ -- Egor Tensin <egor@tensin.name> Sat, 20 Jun 2026 15:56:39 +0000
+
+config-links (2.1.0-1) unstable; urgency=medium
+
+ * add dependabot.yml
+ * workflows/ci: remove on: pull_request
+ * workflows: remove on: pull_request
+ * reorganize files
+ * debian: update install rules
+
+ -- Egor Tensin <egor@tensin.name> Sat, 06 Jun 2026 16:25:54 +0000
+
+config-links (2.0.6-1) unstable; urgency=medium
+
+ * modernize Compose usage
+ * Makefile: fix a typo
+ * workflows/ci: upgrade actions
+ * debian: update GPG key
+ * workflows: upgrade actions
+ * debian: error out if required Vagrant plugins are not installed
+ * switch to egor@tensin.name
+ * switch to egor@tensin.name
+
+ -- Egor Tensin <egor@tensin.name> Tue, 16 Dec 2025 22:39:39 +0000
+
+config-links (2.0.5-1) unstable; urgency=medium
+
+ * Makefile: add a comment
+ * Makefile: move the prelude to prelude.mk
+ * debian/Makefile: move the prelude to prelude.mk
+ * debian/README: update
+ * debian/vagrant: fix NFS mounting
+ * workflows/ci: upgrade actions
+ * workflows: upgrade actions
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sun, 28 Jan 2024 11:29:16 +0000
+
+config-links (2.0.4-1) unstable; urgency=medium
+
+ * realpath -> readlink
+ * test: shuffle files around
+ * t/d: move docker-compose.yml to docker/
+ * t/l: fail unless $CI is set
+ * use `--progress plain` with docker-compose build
+ * move comments from links-update to README
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sun, 21 May 2023 20:40:27 +0200
+
+config-links (2.0.3-5) unstable; urgency=medium
+
+ * workflows: prettify?
+ * debian/Makefile: use cd instead of pushd
+ * debian/Makefile: escape entire argument (including $(DIST))
+ * debian/Makefile: use long options
+ * debian/Makefile: --build=X doesn't work?
+ * debian/Makefile: install vim as a dependency
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sat, 04 Feb 2023 20:01:27 +0000
+
+config-links (2.0.3-4) unstable; urgency=medium
+
+ * debian: upgrade cowbuilder image to Focal
+ * debian: force inclusion of the original sources
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sat, 04 Feb 2023 19:18:40 +0000
+
+config-links (2.0.3-3) unstable; urgency=medium
+
+ * workflows/ppa: do it on commits also
+ * debian: shut up dh_auto_build
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sat, 04 Feb 2023 18:18:37 +0000
+
+config-links (2.0.3-2) unstable; urgency=medium
+
+ * debian: disable build system auto-detection
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sat, 04 Feb 2023 12:36:48 +0000
+
+config-links (2.0.3-1) unstable; urgency=medium
+
+ * debian/README: update
+ * accomodate older bash-es
+ * add Docker tests for older bash-es
+ * move unit tests to test/unit/
+ * test/unit: fix path to links-* tools
+ * fix Docker tests
+ * properly rebuild Docker images
+ * README: update
+ * README: update
+ * Makefile: add a comment
+ * add an "integration" test
+ * db.sh: fix Xenial tests
+ * t/i: call links-update twice, just in case
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sat, 04 Feb 2023 11:42:19 +0000
+
+config-links (2.0.2-1) unstable; urgency=medium
+
+ * workflows/ci: upgrade actions
+ * workflows: upgrade actions
+ * fix .gitattributes
+ * workflows/ci: test on macOS
+ * os.sh: no need to use uname here
+ * test: fix macOS runs
+ * README: update
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Tue, 24 Jan 2023 11:18:40 +0100
+
+config-links (2.0.1-3) unstable; urgency=medium
+
+ * debian/Makefile: export NAME and EMAIL
+ * debian/Makefile: add commit target
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sat, 30 Apr 2022 00:35:34 +0200
+
+config-links (2.0.1-2) unstable; urgency=medium
+
+ * debian/README: rearrange items
+ * debian/Makefile: consistent prelude
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Wed, 06 Apr 2022 08:22:28 +0000
+
+config-links (2.0.1-1) unstable; urgency=medium
+
+ * test: refactoring
+ * test: add a test case
+ * bash best practices & linting
+ * README: update
+ * test: update comments
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Tue, 05 Apr 2022 19:19:52 +0000
+
+config-links (2.0-1) unstable; urgency=medium
+
+ * db.sh: consistent logging
+ * db.sh: add parse_mode function
+ * links-chmod: mode parameter is mandatory
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Thu, 06 Jan 2022 17:32:23 +0000
+
+config-links (1.1-2) unstable; urgency=medium
+
+ * debian: add links-chmod
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Thu, 25 Nov 2021 19:13:59 +0000
+
+config-links (1.1-1) unstable; urgency=medium
+
+ * update script names in comments
+ * add links-chmod
+ * links-chmod: tweak the help message
+ * db.sh: add more logging
+ * test/test.sh: best practices
+ * links-update: add --mode parameter
+ * README: update
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Thu, 25 Nov 2021 19:07:06 +0000
+
+config-links (1.0.1-1) unstable; urgency=medium
+
+ * README: update
+ * workflows/test: tweak step names
+ * workflows/test: use ubuntu-latest
+ * workflows/test -> workflows/ci
+ * workflows/ci: rename to "CI"
+ * .ci/ -> test/
+ * debian/Makefile: apt scripting best practices
+ * debian/README: update
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Sun, 03 Oct 2021 16:20:54 +0000
+
+config-links (1.0-2) unstable; urgency=medium
+
+ * debian: fix package description
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Thu, 29 Apr 2021 10:15:54 +0000
+
+config-links (1.0-1) unstable; urgency=medium
+
+ * debian: require bash 4 or higher
+ * rename the scripts
+ * README: add more badges
+ * README: update
+ * README: add "Installation"
+ * rename the project
+ * debian: scripts were renamed
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Thu, 29 Apr 2021 08:35:34 +0000
+
+config-links (0.2-1) unstable; urgency=medium
+
+ * debian: add GitHub workflows
+ * blacklist aux files for `git archive`
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Thu, 29 Apr 2021 00:30:39 +0000
+
+config-links (0.1-1) unstable; urgency=medium
+
+ * Initial release.
+
+ -- Egor Tensin <Egor.Tensin@gmail.com> Wed, 28 Apr 2021 21:14:04 +0000
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..1068a38
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,14 @@
+Source: config-links
+Section: utils
+Priority: optional
+Maintainer: Egor Tensin <egor@tensin.name>
+Build-Depends: debhelper-compat (= 10)
+Standards-Version: 4.4.1
+Homepage: https://github.com/egor-tensin/config-links
+
+Package: config-links
+Architecture: all
+Depends: bash (>= 4.0), ${misc:Depends}
+Description: Config file sharing
+ Store your files in a repository, checkout it on any machine, and easily
+ create & maintain symlinks to all of them.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..c9da74f
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,31 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: config-links
+Upstream-Contact: Egor Tensin <egor@tensin.name>
+Source: https://github.com/egor-tensin/config-links
+
+Files: *
+Copyright: 2016-2021 Egor Tensin <egor@tensin.name>
+License: MIT
+
+Files: debian/*
+Copyright: 2021 Egor Tensin <egor@tensin.name>
+License: MIT
+
+License: MIT
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..a752c4b
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,15 @@
+[DEFAULT]
+upstream-branch = master
+upstream-tag = v%(version)s
+ignore-branch = True
+# ^^^ Needed for GitHub Actions runs, because they check out in detached HEAD
+# mode.
+debian-branch = debian
+debian-tag = debian/v%(version)s
+pristine-tar = False
+export-dir = debian/build-area/
+
+[dch]
+dch-opt = --upstream
+# ^^^ Don't append "ubuntu1" to the version.
+commit-msg = debian: v%(version)s
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..cbe925d
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,3 @@
+#!/usr/bin/make -f
+%:
+ dh $@
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)