Commit Graph

14 Commits

Author SHA1 Message Date
Francesco Mazzoli ac77d763a3 Limit third-party make concurrency 2025-09-03 23:11:12 +01:00
Francesco Mazzoli 4096e73818 Kill all references to internal services 2025-09-03 10:35:40 +00:00
Nick Chapman 56b9dc192b Bump go version 1.18 --> 1.22. (#335)
The main change here is the updated go version in go.mod and the new
Docker build images which explicitly install go1.22 instead of relying
on the default 1.18 installation.
2024-09-10 17:05:03 +01:00
Joshua Leahy 37a205b71e Docker networking seems to not work on new arch snaps, this is fine 2024-02-19 14:38:52 +00:00
Francesco Mazzoli 2a95b345d2 Many changes to make CI work on new runner
Most notably, we now run the non-kmod integration tests in docker.
The kmod tests are already in their own environment (qemu).
2024-01-18 11:57:17 +00:00
Francesco Mazzoli 2ad278adaa Add ubuntu image to build, use jemalloc in release build
I want to use the introspection capabilities of jemalloc, and it
should also be much faster. Preserve alpine build for go build,
it's also really useful to test inside the kmod.
2023-11-13 15:44:55 +00:00
Francesco Mazzoli 0055575f71 alpine-debug -> alpinedebug, new cmake doesn't like dashes 2023-08-03 07:09:41 +00:00
Francesco Mazzoli 016c4bf162 First GH workflow attempt 2023-06-15 15:56:34 +00:00
Francesco Mazzoli 6addbdee6a First version of kernel module
Initial version really by Pawel, but many changes in between.

Big outstanding issues:

* span cache reclamation (unbounded memory otherwise...)
* bad block service detection and workarounds
* corrupted blocks detection and workaround

Co-authored-by: Paweł Dziepak <pawel.dziepak@xtxmarkets.com>
2023-05-18 15:29:41 +00:00
Francesco Mazzoli b771c12763 Static go builds 2023-03-10 16:23:30 +00:00
Francesco Mazzoli ffa7c6c5e9 cleanup docker containers after building 2023-03-10 16:23:30 +00:00
Francesco Mazzoli 507f9b4565 More improvement to the web UI 2023-02-01 15:58:50 +00:00
Francesco Mazzoli 85889266b1 Various housekeeping while I get ready to deploy...
...most notably we now produce fully static binaries in an alpine
image.

A few assorted thoughts:

* I really like static binaries, ideally I'd like to run EggsFS
    deployments with just systemd scripts and a few binaries.

* Go already does this, which is great.

* C++ does not, which is less great.

* Linking statically against `glibc` works, but is unsupported.
    Not only stuff like NSS (which `gethostbyname` requires)
    straight up does not work, unless you build `glibc` with
    unsupported and currently apparently broken flags
    (`--enable-static-nss`), but also other stuff is subtly
    broken (I couldn't remember exactly what was broken,
    but see comments such as
    <https://github.com/haskell/haskell-language-server/issues/2431#issuecomment-985880838>).

* So we're left with alternative libcs -- the most popular being
    musl.

* The simplest way to build a C++ application using musl is to just
    build on a system where musl is already the default libc -- such
    as alpine linux.

The backtrace support is in a bit of a bad state. Exception stacktraces
work on musl, but DWARF seems to be broken on the normal release build.

Moreover, libunwind doesn't play well with musl's signal handler:
<https://maskray.me/blog/2022-04-10-unwinding-through-signal-handler>.

Keeping it working seems to be a bit of a chore, and I'm going to revisit
it later.

In the meantime, gdb stack traces do work fine.
2023-01-29 21:41:40 +00:00
Francesco Mazzoli 9adca070ba Convert build system to cmake
Also, produce fully static binaries. This means that `gethostname`
does not work (doesn't work with static glibc unless you build it
with `--enable-static-nss`, which no distro builds glibc with).
2023-01-26 23:20:58 +00:00