I’ve noticed that some of the upstream Debian patches patch out some Atuin features that should be gated behind feature-flags. We already should have some feature flags that allow for compiling out specific features:
disable-atuin-ai.patchshould be gated through an explicit--feature ai.disable-benches.patchshould only be enabled with the appropriate flag.disable-opentelemetry.patchpatches out localatuinopentelemtry and it’s only gated through aprofiling-tracedbuild.disable-vendor.patchdisables the vendored version ofreqwest.disable-tree-sitters.patchdisables the tree sitters atuin relies on for syntax highlighting.disable-self-update.patchdisables automatic updating.disable-other-platforms.patchdisables Windows builds.
I am wondering whether we could make it easier for @ncts to build Atuin with some sort of build flag array I researched this and it seems the root cause is how cargo build --no-default-features --features ... and help avoid maintaining the large array of upstream patches.debcargo resolves dependencies — even if a dependency is optional = true, debcargo will check to find an appropriate dpkg for it.
There are some clear improvements on our end we could do:
- The syntax highlighting is not gated behind a feature flag. It should be.
ReplacingDone indaemonizewithdaemonixseems like a no-brainer.#4099.- Loosening the dependency version restrictions seems like it’s easy and correct to do.
- Loosening the rust compiler version should be relatively safe/easy to do too.
- Simplifying benches by adding
required-featuresto avoid compiling it.
It looks like that’s about it with respect to what we could do on our end to make packaging just a smidge easier for Debian/Ubuntu.
Let me know if I’m missing something, @ncts!
Thanks!