Proto commits in distr1/distri

These 47 commits are when the Protocol Buffers files have changed:

Commit:e630b71
Author:Michael Stapelberg
Committer:Michael Stapelberg

add pull.force_semver override

The documentation is generated from this commit.

Commit:f13c7bd
Author:Michael Stapelberg

fix tests after bump

Commit:07837c2
Author:Michael Stapelberg

add pull: stanza to 21 packages, fixing their upstream check

Commit:4f404f8
Author:Michael Stapelberg
Committer:Michael Stapelberg

re-generate protos with protoc-gen-go v1.20.1

Commit:8a18880
Author:Michael Stapelberg
Committer:Michael Stapelberg

add knob to not fail the build for DWARF copying problems This documents the fault in the most proximate location (the build.textproto) and retains the desirable default behavior of failing the build when DWARF copying doesn’t work.

Commit:1663f6c
Author:Michael Stapelberg
Committer:Michael Stapelberg

rename copy_to_builddir to writable_sourcedir This captures intent, not mechanism.

Commit:708459a
Author:Michael Stapelberg

make in-tree-build configurable, enable where necessary Enabling copy_to_builddir in a previous commit made this necessary, as it changes the default behavior from building out-of-tree to building in-tree. This doesn’t work in some packages (e.g. i3), so a separate knob is necessary.

Commit:6c77ac6
Author:Michael Stapelberg

Use /usr/src/<pkg>-<version> as b.BuildDir with copy_to_builddir This makes sources available when debugging (via srcfs) for an additional 38 distri packages. Also remove cbuilder and cmakebuilder copy_to_builddir to make this effective for all packages.

Commit:21581ab
Author:Michael Stapelberg
Committer:Michael Stapelberg

make copy_to_builddir a top-level concept, definition now in 1 place

Commit:3b0458e
Author:Michael Stapelberg

check: make URL configurable This adds support for projects which have a download page, but it is not reachable as the parent directory of the source.

Commit:3a32cd9
Author:Michael Stapelberg

batch: compute and store input digest, rebuild when stale This is not only more reliable than using the mtime, but required where the mtime is not set appropriately, e.g. after git cloning the distr repository (like the autobuilder does).

Commit:975580b
Author:Michael Stapelberg
Committer:Michael Stapelberg

scaffold: implement -pull for pulling in a new upstream revision Currently only implemented for .deb packages.

Commit:a0041ff
Author:Michael Stapelberg
Committer:Michael Stapelberg

build: actually mount source dir read-only From https://unix.stackexchange.com/a/128388/181634: To achieve the desired result one needs to run two commands […]: mount SRC DST -o bind mount DST -o remount,ro,bind

Commit:273f68f
Author:Michael Stapelberg

update package-format.asciidoc

Commit:58d572a
Author:Michael Stapelberg

update/synchronize build.proto and docs/building.asciidoc

Commit:e10e570
Author:Michael Stapelberg
Committer:Michael Stapelberg

distri1: build with CGO_ENABLED=0 again screwed this up in commit 64bd922468979fab8987bffbf75d65d7dc7e08e8

Commit:8b95746
Author:Michael Stapelberg

package spotify (+deps) Not sure how long this will be kept, but I wanted to verify it works as an example for the upcoming article.

Commit:64bd922
Author:Michael Stapelberg

add a Go builder, use it in distri1 and fzf

Commit:4c1190f
Author:Michael Stapelberg

build: implement extra_file and install: file related to #18

Commit:e2287bb
Author:Michael Stapelberg
Committer:Michael Stapelberg

builder.proto: remark some TODOs

Commit:ff7a643
Author:Michael Stapelberg

add builder gRPC proto

Commit:5fd28e1
Author:Michael Stapelberg

plumb through extra cmake flags

Commit:20dc2b4
Author:Michael Stapelberg
Committer:Michael Stapelberg

implement setting file capabilities tested using: % sudo strace -f unsquashfs ~/distri/build/distri/pkg/i3status-amd64-2.12.squashfs |& grep lsetxattr [pid 7097] lsetxattr("squashfs-root/bin/i3status", "security.capability", "\1\0\0\2\0\20\0\0\0\0\0\0\0\0\0\0\0\0\0", 20, 0 <unfinished ...> [pid 7097] <... lsetxattr resumed> ) = 0

Commit:ec5ee36
Author:Michael Stapelberg

add meson builder, make most packages use it

Commit:83a089e
Author:Michael Stapelberg

install: add chmod Currently, only the setuid bool and name field are supported.

Commit:729c192
Author:Michael Stapelberg

implement install.empty_dir

Commit:b672e79
Author:Michael Stapelberg

fuse: implement runtime_union support

Commit:2ab75be
Author:Michael Stapelberg

introduce runtime_overlay field

Commit:d9f60ac
Author:Michael Stapelberg

add a cmake builder

Commit:80a4cce
Author:Michael Stapelberg
Committer:Michael Stapelberg

add gomodbuilder

Commit:c2207fa
Author:Michael Stapelberg
Committer:Michael Stapelberg

cbuilder: add autoreconf option

Commit:750d61a
Author:Michael Stapelberg

add python builder to simplify using meson

Commit:45fee16
Author:Michael Stapelberg
Committer:Michael Stapelberg

allow specifying a destination directory for split packages This is useful for gcc, whose libraries all need to go into out/lib64, not e.g. out/lib/gcc/x86_64-pc-linux-gnu/8.2.0.

Commit:100aa98
Author:Michael Stapelberg
Committer:Michael Stapelberg

build: allow splitting packages out (e.g. gcc-libs from gcc) This is useful for large packages on which many other packages depend, such as gcc (>800 MB). We can now split out a <70 MB gcc-libs package to reduce disk space. Note that the files which are split out must be relocatable, i.e. they must not depend on the location to which they are installed. This is because the package is built only once, with the --prefix= configure flag pointing to the main package’s name, not the split packages name. An example looks like this: split_package: < name: "gcc-libs" claim_glob: "out/lib64/libgcc_s.so*" claim_glob: "out/lib64/libstdc++*" claim_glob: "out/lib64/libgomp*" claim_glob: "out/lib/gcc/x86_64-pc-linux-gnu/8.2.0/crt*" > This feature should be used sparingly: the default expectation is that the package name matches DISTRIROOT/pkgs/<name>.

Commit:99b6abd
Author:Michael Stapelberg

store package version in .meta.textproto files This is in preparation for creating unversioned symlinks.

Commit:2ff9592
Author:Michael Stapelberg
Committer:Michael Stapelberg

install: notify fuse daemon of new packages This obsoletes a manual killall -USR1 $(pidof /init)

Commit:44fb1a8
Author:Michael Stapelberg

build: bind mount /dest/tmp to /ro/<pkg> This allows us to get rid of the circular dependency kludge we’ve been using thus far.

Commit:213b169
Author:Michael Stapelberg

fuse: serve GRPC requests on UNIX socket /ro/ctl This paves the way for programmatically interacting with the fuse daemon.

Commit:edb0f42
Author:Michael Stapelberg

meta: store the source package

Commit:bded047
Author:Michael Stapelberg

add mirror command

Commit:1ee1915
Author:Michael Stapelberg

build git with NO_INSTALL_HARDLINKS=1 to reduce size Our SquashFS writer doesn’t support hard links yet, so the package clocked in at 1.4GB due to a lot of unnecessary copies of the git executable.

Commit:a9e4505
Author:Michael Stapelberg

explicitly specify ld so that packages run e.g. on Ubuntu

Commit:3faea80
Author:Michael Stapelberg

add perl builder, package XML-Parser

Commit:d7ad48e
Author:Michael Stapelberg

add and plumb runtime_dep field

Commit:c8aa7df
Author:Michael Stapelberg
Committer:Michael Stapelberg

add symlink farm for /lib/systemd/system, add install.symlink

Commit:21327a2
Author:Michael Stapelberg

build: add install.systemd_unit for installing e.g. service files

Commit:f9f9fdb
Author:Michael Stapelberg

Initial commit