Fix missing lz4 and bz2; tweak feature projection. (closes #78)

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-06-24 21:23:55 +00:00
parent ca69af97c1
commit 578cf9d2d7
8 changed files with 105 additions and 13 deletions

View File

@@ -362,11 +362,11 @@ git = "https://github.com/matrix-construct/rust-rocksdb"
rev = "225a42519276e502205bdc845cebdb22d70ee245" rev = "225a42519276e502205bdc845cebdb22d70ee245"
default-features = false default-features = false
features = [ features = [
"bzip2",
"lz4",
"multi-threaded-cf", "multi-threaded-cf",
"mt_static", "mt_static",
"lz4",
"zstd", "zstd",
"bzip2",
] ]
[workspace.dependencies.sanitize-filename] [workspace.dependencies.sanitize-filename]

View File

@@ -33,7 +33,7 @@ variable "git_ref_name" {
cargo_feat_sets = { cargo_feat_sets = {
none = "" none = ""
default = "brotli_compression,element_hacks,gzip_compression,io_uring,jemalloc,jemalloc_conf,media_thumbnail,release_max_log_level,systemd,url_preview,zstd_compression" default = "brotli_compression,element_hacks,gzip_compression,io_uring,jemalloc,jemalloc_conf,media_thumbnail,release_max_log_level,systemd,url_preview,zstd_compression"
all = "blurhashing,brotli_compression,tuwunel_mods,console,default,direct_tls,element_hacks,gzip_compression,hardened_malloc,io_uring,jemalloc,jemalloc_conf,jemalloc_prof,jemalloc_stats,ldap,media_thumbnail,perf_measurements,release_max_log_level,sentry_telemetry,systemd,tokio_console,url_preview,zstd_compression" all = "blurhashing,brotli_compression,bzip2_compression,tuwunel_mods,console,default,direct_tls,element_hacks,gzip_compression,hardened_malloc,io_uring,jemalloc,jemalloc_conf,jemalloc_prof,jemalloc_stats,ldap,lz4_compression,media_thumbnail,perf_measurements,release_max_log_level,sentry_telemetry,systemd,tokio_console,url_preview,zstd_compression"
} }
variable "cargo_features_always" { variable "cargo_features_always" {
default = "direct_tls" default = "direct_tls"
@@ -1204,6 +1204,10 @@ target "deps-base" {
join(" ", static_nightly_rustflags), join(" ", static_nightly_rustflags),
join(" ", native_rustflags), join(" ", native_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME "-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
"-C link-arg=-l:liblz4.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
@@ -1220,6 +1224,10 @@ target "deps-base" {
join(" ", static_rustflags), join(" ", static_rustflags),
join(" ", static_nightly_rustflags), join(" ", static_nightly_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME "-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
"-C link-arg=-l:liblz4.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
@@ -1234,6 +1242,10 @@ target "deps-base" {
join(" ", rustflags), join(" ", rustflags),
join(" ", static_rustflags), join(" ", static_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME "-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
"-C link-arg=-l:liblz4.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
@@ -1248,6 +1260,10 @@ target "deps-base" {
join(" ", rustflags), join(" ", rustflags),
join(" ", static_rustflags), join(" ", static_rustflags),
"-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME "-C link-arg=-L/usr/lib/gcc/${sys_target}/14", #FIXME
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-l:libbz2.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
"-C link-arg=-l:liblz4.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-l:libzstd.a": "", "-C link-arg=-l:libzstd.a": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
@@ -1262,6 +1278,10 @@ target "deps-base" {
join(" ", rustflags), join(" ", rustflags),
join(" ", nightly_rustflags), join(" ", nightly_rustflags),
join(" ", dynamic_rustflags), join(" ", dynamic_rustflags),
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")?
"-C link-arg=-lbz2": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")?
"-C link-arg=-llz4": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")?
"-C link-arg=-lzstd": "", "-C link-arg=-lzstd": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? contains(split(",", cargo_feat_sets[feat_set]), "io_uring")?
@@ -1311,6 +1331,8 @@ target "rocksdb-build" {
input = elem("target:kitchen", [feat_set, sys_name, sys_version, sys_target]) input = elem("target:kitchen", [feat_set, sys_name, sys_version, sys_target])
} }
args = { args = {
rocksdb_bz2 = contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? 1: 0
rocksdb_lz4 = contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? 1: 0
rocksdb_zstd = contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? 1: 0 rocksdb_zstd = contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? 1: 0
rocksdb_jemalloc = contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? 1: 0 rocksdb_jemalloc = contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? 1: 0
rocksdb_iouring = contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? 1: 0 rocksdb_iouring = contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? 1: 0
@@ -1544,6 +1566,7 @@ kitchen_packages = [
"cmake", "cmake",
"curl", "curl",
"git", "git",
"gzip",
"libc6-dev", "libc6-dev",
"libssl-dev", "libssl-dev",
"make", "make",
@@ -1567,10 +1590,12 @@ target "kitchen" {
} }
args = { args = {
packages = join(" ", [ packages = join(" ", [
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? "liburing-dev": "", contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? "libbz2-dev": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? "libzstd-dev": "",
contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? "libjemalloc-dev": "",
contains(split(",", cargo_feat_sets[feat_set]), "hardened_malloc")? "g++": "", contains(split(",", cargo_feat_sets[feat_set]), "hardened_malloc")? "g++": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? "liburing-dev": "",
contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? "libjemalloc-dev": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? "liblz4-dev": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? "libzstd-dev": "",
]) ])
} }
} }
@@ -1670,18 +1695,18 @@ target "runtime" {
} }
args = { args = {
packages = join(" ", [ packages = join(" ", [
contains(split(",", cargo_feat_sets[feat_set]), "bzip2_compression")? "bzip2": "",
contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? "liburing2": "", contains(split(",", cargo_feat_sets[feat_set]), "io_uring")? "liburing2": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? "libzstd1": "",
contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? "libjemalloc2": "", contains(split(",", cargo_feat_sets[feat_set]), "jemalloc")? "libjemalloc2": "",
contains(split(",", cargo_feat_sets[feat_set]), "lz4_compression")? "liblz4-1": "",
contains(split(",", cargo_feat_sets[feat_set]), "zstd_compression")? "libzstd1": "",
]) ])
} }
} }
base_pkgs = [ base_pkgs = [
"adduser", "adduser",
"bzip2",
"ca-certificates", "ca-certificates",
"gzip",
] ]
target "base" { target "base" {

View File

@@ -22,6 +22,11 @@ brotli_compression = [
"tuwunel-core/brotli_compression", "tuwunel-core/brotli_compression",
"tuwunel-service/brotli_compression", "tuwunel-service/brotli_compression",
] ]
bzip2_compression = [
"tuwunel-api/bzip2_compression",
"tuwunel-database/bzip2_compression",
"tuwunel-service/bzip2_compression",
]
gzip_compression = [ gzip_compression = [
"tuwunel-api/gzip_compression", "tuwunel-api/gzip_compression",
"tuwunel-core/gzip_compression", "tuwunel-core/gzip_compression",
@@ -56,6 +61,11 @@ jemalloc_stats = [
"tuwunel-database/jemalloc_stats", "tuwunel-database/jemalloc_stats",
"tuwunel-service/jemalloc_stats", "tuwunel-service/jemalloc_stats",
] ]
lz4_compression = [
"tuwunel-api/lz4_compression",
"tuwunel-database/lz4_compression",
"tuwunel-service/lz4_compression",
]
release_max_log_level = [ release_max_log_level = [
"tuwunel-api/release_max_log_level", "tuwunel-api/release_max_log_level",
"tuwunel-core/release_max_log_level", "tuwunel-core/release_max_log_level",

View File

@@ -22,6 +22,9 @@ brotli_compression = [
"tuwunel-service/brotli_compression", "tuwunel-service/brotli_compression",
"reqwest/brotli", "reqwest/brotli",
] ]
bzip2_compression = [
"tuwunel-service/bzip2_compression",
]
element_hacks = [ element_hacks = [
"tuwunel-service/element_hacks", "tuwunel-service/element_hacks",
] ]
@@ -52,6 +55,9 @@ jemalloc_stats = [
ldap = [ ldap = [
"tuwunel-service/ldap", "tuwunel-service/ldap",
] ]
lz4_compression = [
"tuwunel-service/lz4_compression",
]
release_max_log_level = [ release_max_log_level = [
"tuwunel-core/release_max_log_level", "tuwunel-core/release_max_log_level",
"tuwunel-service/release_max_log_level", "tuwunel-service/release_max_log_level",

View File

@@ -17,6 +17,9 @@ crate-type = [
] ]
[features] [features]
bzip2_compression = [
"rust-rocksdb/bzip2",
]
io_uring = [ io_uring = [
"rust-rocksdb/io-uring", "rust-rocksdb/io-uring",
] ]
@@ -33,6 +36,9 @@ jemalloc_prof = [
jemalloc_stats = [ jemalloc_stats = [
"tuwunel-core/jemalloc_stats", "tuwunel-core/jemalloc_stats",
] ]
lz4_compression = [
"rust-rocksdb/lz4",
]
release_max_log_level = [ release_max_log_level = [
"tuwunel-core/release_max_log_level", "tuwunel-core/release_max_log_level",
"log/max_level_trace", "log/max_level_trace",

View File

@@ -70,11 +70,19 @@ blurhashing = [
"tuwunel-service/blurhashing", "tuwunel-service/blurhashing",
] ]
brotli_compression = [ brotli_compression = [
"tuwunel-admin/brotli_compression",
"tuwunel-api/brotli_compression", "tuwunel-api/brotli_compression",
"tuwunel-core/brotli_compression", "tuwunel-core/brotli_compression",
"tuwunel-router/brotli_compression", "tuwunel-router/brotli_compression",
"tuwunel-service/brotli_compression", "tuwunel-service/brotli_compression",
] ]
bzip2_compression = [
"tuwunel-admin/bzip2_compression",
"tuwunel-api/bzip2_compression",
"tuwunel-database/bzip2_compression",
"tuwunel-router/bzip2_compression",
"tuwunel-service/bzip2_compression",
]
console = [ console = [
"tuwunel-service/console", "tuwunel-service/console",
] ]
@@ -86,6 +94,7 @@ element_hacks = [
"tuwunel-service/element_hacks", "tuwunel-service/element_hacks",
] ]
gzip_compression = [ gzip_compression = [
"tuwunel-admin/gzip_compression",
"tuwunel-api/gzip_compression", "tuwunel-api/gzip_compression",
"tuwunel-core/gzip_compression", "tuwunel-core/gzip_compression",
"tuwunel-router/gzip_compression", "tuwunel-router/gzip_compression",
@@ -95,11 +104,27 @@ hardened_malloc = [
"tuwunel-core/hardened_malloc", "tuwunel-core/hardened_malloc",
] ]
io_uring = [ io_uring = [
"tuwunel-admin/io_uring",
"tuwunel-api/io_uring",
"tuwunel-database/io_uring", "tuwunel-database/io_uring",
"tuwunel-router/io_uring",
"tuwunel-service/io_uring",
] ]
jemalloc = [ jemalloc = [
"tuwunel-admin/jemalloc",
"tuwunel-api/jemalloc",
"tuwunel-core/jemalloc", "tuwunel-core/jemalloc",
"tuwunel-database/jemalloc", "tuwunel-database/jemalloc",
"tuwunel-router/jemalloc",
"tuwunel-service/jemalloc",
]
jemalloc_conf = [
"tuwunel-admin/jemalloc_conf",
"tuwunel-api/jemalloc_conf",
"tuwunel-core/jemalloc_conf",
"tuwunel-database/jemalloc_conf",
"tuwunel-router/jemalloc_conf",
"tuwunel-service/jemalloc_conf",
] ]
jemalloc_prof = [ jemalloc_prof = [
"tuwunel-core/jemalloc_prof", "tuwunel-core/jemalloc_prof",
@@ -107,13 +132,17 @@ jemalloc_prof = [
jemalloc_stats = [ jemalloc_stats = [
"tuwunel-core/jemalloc_stats", "tuwunel-core/jemalloc_stats",
] ]
jemalloc_conf = [
"tuwunel-core/jemalloc_conf",
]
ldap = [ ldap = [
"tuwunel-api/ldap", "tuwunel-api/ldap",
"tuwunel-service/ldap", "tuwunel-service/ldap",
] ]
lz4_compression = [
"tuwunel-admin/lz4_compression",
"tuwunel-api/lz4_compression",
"tuwunel-database/lz4_compression",
"tuwunel-router/lz4_compression",
"tuwunel-service/lz4_compression",
]
media_thumbnail = [ media_thumbnail = [
"tuwunel-service/media_thumbnail", "tuwunel-service/media_thumbnail",
] ]
@@ -159,6 +188,7 @@ url_preview = [
"tuwunel-service/url_preview", "tuwunel-service/url_preview",
] ]
zstd_compression = [ zstd_compression = [
"tuwunel-admin/zstd_compression",
"tuwunel-api/zstd_compression", "tuwunel-api/zstd_compression",
"tuwunel-core/zstd_compression", "tuwunel-core/zstd_compression",
"tuwunel-database/zstd_compression", "tuwunel-database/zstd_compression",

View File

@@ -24,6 +24,11 @@ brotli_compression = [
"tuwunel-service/brotli_compression", "tuwunel-service/brotli_compression",
"tower-http/compression-br", "tower-http/compression-br",
] ]
bzip2_compression = [
"tuwunel-admin/bzip2_compression",
"tuwunel-api/bzip2_compression",
"tuwunel-service/bzip2_compression",
]
direct_tls = [ direct_tls = [
"axum-server/tls-rustls", "axum-server/tls-rustls",
"dep:rustls", "dep:rustls",
@@ -40,7 +45,6 @@ io_uring = [
"tuwunel-admin/io_uring", "tuwunel-admin/io_uring",
"tuwunel-api/io_uring", "tuwunel-api/io_uring",
"tuwunel-service/io_uring", "tuwunel-service/io_uring",
"tuwunel-api/io_uring",
] ]
jemalloc = [ jemalloc = [
"tuwunel-admin/jemalloc", "tuwunel-admin/jemalloc",
@@ -66,6 +70,11 @@ jemalloc_stats = [
"tuwunel-core/jemalloc_stats", "tuwunel-core/jemalloc_stats",
"tuwunel-service/jemalloc_stats", "tuwunel-service/jemalloc_stats",
] ]
lz4_compression = [
"tuwunel-admin/lz4_compression",
"tuwunel-api/lz4_compression",
"tuwunel-service/lz4_compression",
]
release_max_log_level = [ release_max_log_level = [
"tuwunel-admin/release_max_log_level", "tuwunel-admin/release_max_log_level",
"tuwunel-api/release_max_log_level", "tuwunel-api/release_max_log_level",

View File

@@ -25,6 +25,9 @@ brotli_compression = [
"tuwunel-core/brotli_compression", "tuwunel-core/brotli_compression",
"reqwest/brotli", "reqwest/brotli",
] ]
bzip2_compression = [
"tuwunel-database/bzip2_compression",
]
console = [ console = [
"dep:rustyline-async", "dep:rustyline-async",
"dep:termimad", "dep:termimad",
@@ -56,6 +59,9 @@ jemalloc_stats = [
ldap = [ ldap = [
"dep:ldap3", "dep:ldap3",
] ]
lz4_compression = [
"tuwunel-database/lz4_compression",
]
media_thumbnail = [ media_thumbnail = [
"dep:image", "dep:image",
] ]