chiark / gitweb /
distorted-chroot
3 years agoMakefile: Don't insist on `/usr/lib/.../coreutils/'. master
Mark Wooding [Tue, 4 Aug 2020 22:47:32 +0000 (23:47 +0100)]
Makefile: Don't insist on `/usr/lib/.../coreutils/'.

It turns out that sid has moved `stdlib.so' to `/usr/libexec/', which
sucks for two reasons: (a) it means we need countermeasures to avoid
the cross-tools extraction from failing, and (b) there's no multiarch
triplet any more so we can't have multiple versions.

I think this is actually a Debian bug, but I have to deal with it right
now and this seems like the least terrible approach.  I'll just hope
that nothing is relying on `stdbuf' in the build scripts.

3 years agobin/chroot-maint: Enhance the `CROSS_TOOLS' pattern machinery.
Mark Wooding [Tue, 4 Aug 2020 22:40:35 +0000 (23:40 +0100)]
bin/chroot-maint: Enhance the `CROSS_TOOLS' pattern machinery.

There's now a way to list alternative and optional patterns.

3 years agoMakefile: Include C++ headers in the cross-tools bundle.
Mark Wooding [Mon, 15 Jun 2020 17:01:06 +0000 (18:01 +0100)]
Makefile: Include C++ headers in the cross-tools bundle.

3 years agoMakefile: Use buster's Qemu on stretch.
Mark Wooding [Mon, 8 Jun 2020 18:57:39 +0000 (19:57 +0100)]
Makefile: Use buster's Qemu on stretch.

There's a persistent problem with installing `gnome-icon-theme' on
emulated ARM platforms, resulting in

Unpacking gnome-icon-theme (3.12.0-2) ...
dpkg: error processing archive /tmp/apt-dpkg-install-AtXukB/100-gnome-icon-theme_3.12.0-2_all.deb (--unpack):
 corrupted filesystem tarfile - corrupted package archive

Upgrading to buster's Qemu let to a successful build once, so maybe this
helps.

3 years agoMakefile, bin/chroot-maint: Allow source distribution selection for Qemu.
Mark Wooding [Mon, 8 Jun 2020 18:56:53 +0000 (19:56 +0100)]
Makefile, bin/chroot-maint: Allow source distribution selection for Qemu.

Now we don't always take the corresponding distribution, though this is
the default.

3 years agobin/chroot-maint: Add missing format argument to diagnostic.
Mark Wooding [Mon, 8 Jun 2020 18:55:58 +0000 (19:55 +0100)]
bin/chroot-maint: Add missing format argument to diagnostic.

Apparently I've never tripped that one before.

3 years agoMakefile, bin/chroot-maint: Keep `/usr/local/include' mostly empty.
Mark Wooding [Sat, 9 May 2020 16:00:19 +0000 (17:00 +0100)]
Makefile, bin/chroot-maint: Keep `/usr/local/include' mostly empty.

Oh, this is annoying.  GCC prefers `/usr/local/include/...' over
`/usr/include', so old versions of header files, e.g., from local
package builds, take precedence over system versions of the same headers
installed through APT, which obviously breaks `sbuild' builds.

Fix this by introducing a new `/usr/local/include.aside' directory where
headers actually live, and bind-mounting this into `/usr/local/include'
when we're actually trying to build a local package.

3 years agoetc/sbuild.conf.in: Don't run complicated Debian testing by default.
Mark Wooding [Thu, 7 May 2020 01:24:41 +0000 (02:24 +0100)]
etc/sbuild.conf.in: Don't run complicated Debian testing by default.

3 years agoMakefile: Add a new thing for running arbitrary commands.
Mark Wooding [Tue, 5 May 2020 19:48:32 +0000 (20:48 +0100)]
Makefile: Add a new thing for running arbitrary commands.

3 years agoMakefile: Change the tag for maintenance to be `MAINT'.
Mark Wooding [Tue, 5 May 2020 19:48:18 +0000 (20:48 +0100)]
Makefile: Change the tag for maintenance to be `MAINT'.

3 years agoMakefile: Fix `squote' to have the right number of `\'s.
Mark Wooding [Tue, 5 May 2020 19:47:56 +0000 (20:47 +0100)]
Makefile: Fix `squote' to have the right number of `\'s.

3 years agobin/chroot-maint: Run `ldconfig' after an update.
Mark Wooding [Tue, 5 May 2020 19:20:55 +0000 (20:20 +0100)]
bin/chroot-maint: Run `ldconfig' after an update.

3 years agobin/chroot-maint: Fix mistakenly indented file-contents literals.
Mark Wooding [Tue, 5 May 2020 19:19:59 +0000 (20:19 +0100)]
bin/chroot-maint: Fix mistakenly indented file-contents literals.

Also, sneakily use a tab in the `apt.conf' file.

4 years agosrc/jobclient.c: Cope if the jobserver pipe is set nonblocking.
Mark Wooding [Sun, 19 Apr 2020 17:47:31 +0000 (18:47 +0100)]
src/jobclient.c: Cope if the jobserver pipe is set nonblocking.

The GNU Make manual says this doesn't happen, but the source code and
actual behaviour say differently.

4 years agobin/chroot-maint: Force `--no-merged-usr'.
Mark Wooding [Sun, 19 Apr 2020 17:13:12 +0000 (18:13 +0100)]
bin/chroot-maint: Force `--no-merged-usr'.

Otherwise things go excitingly wrong.  The crosstools tree has split
root and `/usr', so when we try to copy the tools into the target
chroot, the corresponding paths start fighting each other, and only one
`.../lib/x86_x64-linux-gnu' symlink can win.

Also, you can't make good package builds with merged `/usr'.

Also also, it's just a really bad idea.

4 years agobin/chroot-maint: Update the path correctly when following a symlink.
Mark Wooding [Sun, 19 Apr 2020 17:12:37 +0000 (18:12 +0100)]
bin/chroot-maint: Update the path correctly when following a symlink.

Oops.  This was just embarrassing.

4 years agobin/chroot-maint: Don't forget to copy symlinks to directories.
Mark Wooding [Sun, 19 Apr 2020 17:11:59 +0000 (18:11 +0100)]
bin/chroot-maint: Don't forget to copy symlinks to directories.

Just because they look like directories superficially doesn't mean we
should skip them.

4 years agoMakefile: Set default freshness to 1 week.
Mark Wooding [Sun, 19 Apr 2020 12:10:53 +0000 (13:10 +0100)]
Makefile: Set default freshness to 1 week.

4 years agobin/chroot-maint: Prevent debconf from messing things up.
Mark Wooding [Sun, 29 Sep 2019 13:00:49 +0000 (14:00 +0100)]
bin/chroot-maint: Prevent debconf from messing things up.

4 years agoetc/sbuild.conf.in: Keep failed build trees for diagnostics.
Mark Wooding [Sat, 21 Sep 2019 21:35:17 +0000 (22:35 +0100)]
etc/sbuild.conf.in: Keep failed build trees for diagnostics.

4 years agoMaintain a separate ccache directory for each target.
Mark Wooding [Sat, 21 Sep 2019 19:08:07 +0000 (20:08 +0100)]
Maintain a separate ccache directory for each target.

Otherwise they interfere with each other.  How did I not notice this
before?

4 years agoMakefile: Don't commit to `PROXY' before we know `$(APTCONF)'.
Mark Wooding [Fri, 20 Sep 2019 10:11:38 +0000 (11:11 +0100)]
Makefile: Don't commit to `PROXY' before we know `$(APTCONF)'.

4 years agobin/chroot-maint (mkdir_p): Create absolute paths correctly.
Mark Wooding [Fri, 20 Sep 2019 10:01:14 +0000 (11:01 +0100)]
bin/chroot-maint (mkdir_p): Create absolute paths correctly.

4 years agoMakefile: Capture `$(shell ...)' results in simply-expanded variables.
Mark Wooding [Fri, 20 Sep 2019 02:35:37 +0000 (03:35 +0100)]
Makefile: Capture `$(shell ...)' results in simply-expanded variables.

4 years agomess/: Delete the old mess.
Mark Wooding [Thu, 19 Sep 2019 23:42:08 +0000 (00:42 +0100)]
mess/: Delete the old mess.

4 years agoKill the old chroot-maintenance tools.
Mark Wooding [Thu, 19 Sep 2019 23:36:48 +0000 (00:36 +0100)]
Kill the old chroot-maintenance tools.

`chroot-maint' has replaced all three of them.

4 years agoMakefile: Abolish `$(HERE)' as a bad idea.
Mark Wooding [Thu, 19 Sep 2019 23:35:06 +0000 (00:35 +0100)]
Makefile: Abolish `$(HERE)' as a bad idea.

Instead, there is `$(ABSLOCAL)', which was all it was being used for
anyway.

4 years agobin/chroot-maint: Program for maintaining chroots.
Mark Wooding [Wed, 11 Sep 2019 16:52:48 +0000 (17:52 +0100)]
bin/chroot-maint: Program for maintaining chroots.

4 years agoMakefile: Create `$(LOCAL)/share/man/'.
Mark Wooding [Thu, 19 Sep 2019 01:47:26 +0000 (02:47 +0100)]
Makefile: Create `$(LOCAL)/share/man/'.

So the symlinks in `$(LOCAL)/$a/man' aren't remade every time.

4 years agoetc/aptsrc.conf: Cope with `bullseye' having different security URL.
Mark Wooding [Thu, 19 Sep 2019 01:46:50 +0000 (02:46 +0100)]
etc/aptsrc.conf: Cope with `bullseye' having different security URL.

Why?

4 years agoMakefile: Making the configuration file is `GEN', not `STAMP'.
Mark Wooding [Wed, 11 Sep 2019 16:52:19 +0000 (17:52 +0100)]
Makefile: Making the configuration file is `GEN', not `STAMP'.

4 years agoMakefile: Use `squote' when printing variable lists.
Mark Wooding [Wed, 11 Sep 2019 16:52:04 +0000 (17:52 +0100)]
Makefile: Use `squote' when printing variable lists.

4 years agobin/mkbuildchroot: `$LVPREFIX$d-$a' is better spelled `$lv'.
Mark Wooding [Fri, 13 Sep 2019 19:17:17 +0000 (20:17 +0100)]
bin/mkbuildchroot: `$LVPREFIX$d-$a' is better spelled `$lv'.

4 years agoMakefile: Maintain generated configuration under `$(LOCAL)'.
Mark Wooding [Fri, 13 Sep 2019 19:14:30 +0000 (20:14 +0100)]
Makefile: Maintain generated configuration under `$(LOCAL)'.

4 years agoMakefile: Keep unnecessary spaces out of `$(foreach ...)' forms.
Mark Wooding [Fri, 13 Sep 2019 19:13:17 +0000 (20:13 +0100)]
Makefile: Keep unnecessary spaces out of `$(foreach ...)' forms.

4 years agoMakefiles: Consistently add `CLEANFILES' at the end of a stanza.
Mark Wooding [Fri, 13 Sep 2019 19:11:54 +0000 (20:11 +0100)]
Makefiles: Consistently add `CLEANFILES' at the end of a stanza.

4 years agosrc/jobclient.c: Low-level magic for GNU Make's jobserver protocol.
Mark Wooding [Wed, 11 Sep 2019 11:05:39 +0000 (12:05 +0100)]
src/jobclient.c: Low-level magic for GNU Make's jobserver protocol.

4 years agobin/update-cross-tools: Don't try to substitute GnuPG.
Mark Wooding [Tue, 10 Sep 2019 01:46:46 +0000 (02:46 +0100)]
bin/update-cross-tools: Don't try to substitute GnuPG.

It really doesn't work.  Something sees that `/usr/bin/gpg' exists, and
then expects the whole thing to work.  Don't bother.

4 years agoMakefile: Don't try to rebuild chroots when cross tools are updated.
Mark Wooding [Tue, 10 Sep 2019 01:44:46 +0000 (02:44 +0100)]
Makefile: Don't try to rebuild chroots when cross tools are updated.

The chroot maintenance doesn't work as make(1).  This needs rethinking.
Stashing these dependencies as recursive make(1) invocations is
hopelessly unsafe.

4 years agoMakefile: Checks for things that sbuild specifically wants.
Mark Wooding [Tue, 10 Sep 2019 01:43:57 +0000 (02:43 +0100)]
Makefile: Checks for things that sbuild specifically wants.

A configuration file is fair enough.  I'm not really sure why it thinks
`apt-get' should be the same on both sides of the wall.

4 years agoMore work in progress.
Mark Wooding [Mon, 9 Sep 2019 12:51:56 +0000 (13:51 +0100)]
More work in progress.

I think it can make native chroots now.  We're most of the way towards
foreign chroots, but the work's not finished yet.

4 years agoAdd in the mess from the original symbiosisware version.
Mark Wooding [Sun, 8 Sep 2019 19:49:01 +0000 (20:49 +0100)]
Add in the mess from the original symbiosisware version.

4 years agoVery rough work-in-progress.
Mark Wooding [Sun, 8 Sep 2019 19:44:58 +0000 (20:44 +0100)]
Very rough work-in-progress.

Doesn't work at all yet.