--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: ikiwiki-hosting@packages.debian.org
Control: affects -1 + src:ikiwiki-hosting
Please unblock package ikiwiki-hosting
[ Reason ]
Fix `ikisite backup` and related commands
[ Impact ]
The daily backup cron job doesn't work in the version in testing.
[ Tests ]
Manually tested on a web server recently upgraded to bookworm.
I also expanded the existing autopkgtest smoke-test to cover the most
important ikisite commands.
[ Risks ]
Low risk, the patch is simple (and the package is not widely used).
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
unblock ikiwiki-hosting/0.20220716-2
diffstat for ikiwiki-hosting-0.20220716 ikiwiki-hosting-0.20220716
debian/changelog | 14 +++
debian/control | 1
debian/patches/ikisite-backup-Create-the-bundle-as-the-site-s-user.patch | 29 +++++++
debian/patches/ikiwiki-hosting.conf-Indicate-that-systemd-unit-needs-to-.patch | 1
debian/patches/series | 1
debian/tests/create-delete | 39 +++++++---
ikisite | 4 -
7 files changed, 79 insertions(+), 10 deletions(-)
diff -Nru ikiwiki-hosting-0.20220716/debian/changelog ikiwiki-hosting-0.20220716/debian/changelog
--- ikiwiki-hosting-0.20220716/debian/changelog 2023-01-29 20:00:40.000000000 +0000
+++ ikiwiki-hosting-0.20220716/debian/changelog 2023-03-30 10:56:12.000000000 +0100
@@ -1,3 +1,17 @@
+ikiwiki-hosting (0.20220716-2) unstable; urgency=medium
+
+ * d/p/ikisite-backup-Create-the-bundle-as-the-site-s-user.patch:
+ Add patch fixing `ikisite backup` with bookworm's git version
+ (Closes: #1033692)
+ - d/tests/create-delete: Add a regression test for `ikisite backup`,
+ among other subcommands
+ * d/p/ikiwiki-hosting.conf-Indicate-that-systemd-unit-needs-to-.patch:
+ Mark patch as forwarded
+ * d/control: Add missing dependency on rsync, detected by this version's
+ additional test coverage
+
+ -- Simon McVittie <smcv@debian.org> Thu, 30 Mar 2023 10:56:12 +0100
+
ikiwiki-hosting (0.20220716-1) unstable; urgency=medium
* New upstream release
diff -Nru ikiwiki-hosting-0.20220716/debian/control ikiwiki-hosting-0.20220716/debian/control
--- ikiwiki-hosting-0.20220716/debian/control 2023-01-29 20:00:40.000000000 +0000
+++ ikiwiki-hosting-0.20220716/debian/control 2023-03-30 10:56:12.000000000 +0100
@@ -101,6 +101,7 @@
polygen-data,
python3,
python3-docutils,
+ rsync,
uuid,
${misc:Depends},
${perl:Depends},
diff -Nru ikiwiki-hosting-0.20220716/debian/patches/ikisite-backup-Create-the-bundle-as-the-site-s-user.patch ikiwiki-hosting-0.20220716/debian/patches/ikisite-backup-Create-the-bundle-as-the-site-s-user.patch
--- ikiwiki-hosting-0.20220716/debian/patches/ikisite-backup-Create-the-bundle-as-the-site-s-user.patch 1970-01-01 01:00:00.000000000 +0100
+++ ikiwiki-hosting-0.20220716/debian/patches/ikisite-backup-Create-the-bundle-as-the-site-s-user.patch 2023-03-30 10:56:12.000000000 +0100
@@ -0,0 +1,29 @@
+From: Simon McVittie <smcv@debian.org>
+Date: Thu, 30 Mar 2023 09:30:19 +0100
+Subject: ikisite backup: Create the bundle as the site's user
+
+Newer versions of git refuse to act on a repository not owned by the
+current uid.
+
+Bug-Debian: https://bugs.debian.org/1033692
+Signed-off-by: Simon McVittie <smcv@debian.org>
+Forwarded: https://ikiwiki-hosting.branchable.com/bugs/ikisite_backup_fails_on_Debian_12___40__git_2.39.2__41__/
+---
+ ikisite | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/ikisite b/ikisite
+index 4663fd9..88a3def 100755
+--- a/ikisite
++++ b/ikisite
+@@ -214,7 +214,9 @@ sub backup {
+ # will either see the new or old refs, and not no refs.
+ # Also, this relies on git writing objects before
+ # updating the refs to point to them.
+- shell("git", "bundle", "create", $dump, "--all");
++ runas(username($hostname), sub {
++ shell("git", "bundle", "create", $dump, "--all");
++ });
+ # git bundle does not preserve git's config file,
+ # so that will be backed up separately.
+ push @tobackup, repository($hostname)."/config";
diff -Nru ikiwiki-hosting-0.20220716/debian/patches/ikiwiki-hosting.conf-Indicate-that-systemd-unit-needs-to-.patch ikiwiki-hosting-0.20220716/debian/patches/ikiwiki-hosting.conf-Indicate-that-systemd-unit-needs-to-.patch
--- ikiwiki-hosting-0.20220716/debian/patches/ikiwiki-hosting.conf-Indicate-that-systemd-unit-needs-to-.patch 2023-01-29 20:00:40.000000000 +0000
+++ ikiwiki-hosting-0.20220716/debian/patches/ikiwiki-hosting.conf-Indicate-that-systemd-unit-needs-to-.patch 2023-03-30 10:56:12.000000000 +0100
@@ -3,6 +3,7 @@
Subject: ikiwiki-hosting.conf: Indicate that systemd unit needs to be in sync
Signed-off-by: Simon McVittie <smcv@debian.org>
+Forwarded: https://ikiwiki-hosting.branchable.com/todo/use_a_native_systemd_unit_to_run_git-daemon/
---
ikiwiki-hosting.conf | 6 ++++++
1 file changed, 6 insertions(+)
diff -Nru ikiwiki-hosting-0.20220716/debian/patches/series ikiwiki-hosting-0.20220716/debian/patches/series
--- ikiwiki-hosting-0.20220716/debian/patches/series 2023-01-29 20:00:40.000000000 +0000
+++ ikiwiki-hosting-0.20220716/debian/patches/series 2023-03-30 10:56:12.000000000 +0100
@@ -1 +1,2 @@
ikiwiki-hosting.conf-Indicate-that-systemd-unit-needs-to-.patch
+ikisite-backup-Create-the-bundle-as-the-site-s-user.patch
diff -Nru ikiwiki-hosting-0.20220716/debian/tests/create-delete ikiwiki-hosting-0.20220716/debian/tests/create-delete
--- ikiwiki-hosting-0.20220716/debian/tests/create-delete 2023-01-29 20:00:40.000000000 +0000
+++ ikiwiki-hosting-0.20220716/debian/tests/create-delete 2023-03-30 10:56:12.000000000 +0100
@@ -10,16 +10,33 @@
chdir($ENV{AUTOPKGTEST_TMP}) or die "chdir: $!\n";
+sub assert_present {
+ my ($name) = @_;
+ ok(-d "/home/e-$name");
+ ok(-f "/home/e-$name/ikiwiki.setup");
+ ok(-f "/home/e-$name/public_html/ikiwiki/index.html");
+
+ my $uid = getpwnam("e-$name");
+ my $stat = stat("/home/e-$name");
+ is($stat->uid, $uid);
+}
+
+sub assert_absent {
+ my ($name) = @_;
+ ok(! -e "/home/e-$name");
+}
+
# This assumes that ikiwiki-hosting.conf still has prefix_e=example.com.
ok(! system(qw(ikisite create foo.example.com --admin=root@localhost)));
-ok(-d '/home/e-foo');
-ok(-f '/home/e-foo/ikiwiki.setup');
-ok(-f '/home/e-foo/public_html/ikiwiki/index.html');
-
-my $uid = `id -u e-foo`;
-chomp $uid;
-my $stat = stat('/home/e-foo');
-is($stat->uid, $uid);
+assert_present('foo');
+
+my $backup = $ENV{AUTOPKGTEST_TMP}.'/backup';
+
+ok(! system(qw(ikisite backup), '--filename='.$backup, qw(foo.example.com)));
+ok(! system(qw(ikisite compact foo.example.com)));
+ok(! system(qw(ikisite rename foo.example.com baz.example.com)));
+ok(! system(qw(ikisite restore foo.example.com), '--filename='.$backup));
+ok(! system(qw(ikisite branch foo.example.com bar.example.com)));
ok(! system('getent passwd "$(id -nu)" > passwd'));
ok(! system('getent group "$(id -ng)" > group'));
@@ -50,6 +67,10 @@
};
ok(! system(qw(ikisite delete foo.example.com)));
-ok(! -e '/home/e-foo');
+ok(! system(qw(ikisite delete bar.example.com)));
+ok(! system(qw(ikisite delete baz.example.com)));
+assert_absent('foo');
+assert_absent('bar');
+assert_absent('baz');
done_testing;
diff -Nru ikiwiki-hosting-0.20220716/ikisite ikiwiki-hosting-0.20220716/ikisite
--- ikiwiki-hosting-0.20220716/ikisite 2022-08-01 16:37:58.000000000 +0100
+++ ikiwiki-hosting-0.20220716/ikisite 2023-03-30 11:37:52.000000000 +0100
@@ -214,7 +214,9 @@
# will either see the new or old refs, and not no refs.
# Also, this relies on git writing objects before
# updating the refs to point to them.
- shell("git", "bundle", "create", $dump, "--all");
+ runas(username($hostname), sub {
+ shell("git", "bundle", "create", $dump, "--all");
+ });
# git bundle does not preserve git's config file,
# so that will be backed up separately.
push @tobackup, repository($hostname)."/config";
--- End Message ---