From 62ce4e36969ad30b8040689403bef4f0bd224527 Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Fri, 24 Jul 2026 14:32:47 +0200 Subject: [PATCH] deb: remove sbuild build mode --- .github/workflows/ci.yml | 2 +- README.md | 4 ++-- snap/snapcraft.yaml | 1 - src/deb/mod.rs | 12 ----------- src/deb/sbuild.rs | 44 ---------------------------------------- src/main.rs | 5 ++--- 6 files changed, 5 insertions(+), 63 deletions(-) delete mode 100644 src/deb/sbuild.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 370977b..a3fdfff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: - name: Install runtime system dependencies run: | sudo apt-get update - sudo apt-get install -y git pristine-tar sbuild mmdebstrap util-linux dpkg-dev + sudo apt-get install -y git pristine-tar mmdebstrap util-linux dpkg-dev - name: Setup subuid/subgid run: | usermod --add-subuids 100000-200000 --add-subgids 100000-200000 ${USER:-root} diff --git a/README.md b/README.md index ebfe68f..64ae9bc 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Missing features: - [x] Build for a specific architecture - [ ] Three build modes: - [ ] Build locally (discouraged) - - [x] Build using sbuild+unshare, with binary emulation (default) + - [x] Build using unshare chroot, with binary emulation (default) - [x] Cross-compilation - [ ] Async build - [ ] `pkh status` @@ -111,7 +111,7 @@ Missing features: - [ ] Lint the package - [ ] `pkh test` - [ ] Run autopkgtest - - [ ] Provide options: local (discouraged), sbuild/VM?, ppa + - [ ] Provide options: local (discouraged), chroot, VM?, ppa - [ ] Async test ## Nice-to-have features diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 16ff394..3fc4503 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -31,7 +31,6 @@ parts: - git - curl - pristine-tar - - sbuild - mmdebstrap - util-linux - dpkg-dev diff --git a/src/deb/mod.rs b/src/deb/mod.rs index 06a175d..8fdc41b 100644 --- a/src/deb/mod.rs +++ b/src/deb/mod.rs @@ -1,7 +1,6 @@ mod cross; mod ephemeral; mod local; -mod sbuild; use crate::context::{self, Context}; use std::error::Error; @@ -11,8 +10,6 @@ use std::sync::Arc; /// Build mode for the binary build #[derive(PartialEq)] pub enum BuildMode { - /// Use `sbuild` for the build, configured in unshare mode - Sbuild, /// Local build, directly on the context Local, } @@ -110,15 +107,6 @@ pub async fn build_binary_package( ) .await? } - BuildMode::Sbuild => sbuild::build( - &package, - &version, - arch, - series, - &build_root, - cross, - build_ctx.clone(), - )?, }; // Retrieve produced .deb files diff --git a/src/deb/sbuild.rs b/src/deb/sbuild.rs deleted file mode 100644 index 0458085..0000000 --- a/src/deb/sbuild.rs +++ /dev/null @@ -1,44 +0,0 @@ -/// Sbuild binary package building -/// Call 'sbuild' with the dsc file to build the package with unshare -use crate::context::Context; -use std::error::Error; -use std::path::Path; -use std::sync::Arc; - -pub fn build( - package: &str, - version: &str, - arch: &str, - series: &str, - build_root: &str, - cross: bool, - ctx: Arc, -) -> Result<(), Box> { - // Find the actual package directory - let package_dir = - crate::deb::find_package_directory(Path::new(build_root), package, version, &ctx)?; - let package_dir_str = package_dir - .to_str() - .ok_or("Invalid package directory path")?; - - let mut cmd = ctx.command("sbuild"); - cmd.current_dir(package_dir_str); - cmd.arg("--chroot-mode=unshare"); - cmd.arg("--no-clean-source"); - - if cross { - cmd.arg(format!("--host={}", arch)); - } else { - cmd.arg(format!("--arch={}", arch)); - } - cmd.arg(format!("--dist={}", series)); - - // Add output directory argument - cmd.arg(format!("--build-dir={}", build_root)); - - let status = cmd.status()?; - if !status.success() { - return Err(format!("sbuild failed with status: {}", status).into()); - } - Ok(()) -} diff --git a/src/main.rs b/src/main.rs index ee57a01..e5ae3ca 100644 --- a/src/main.rs +++ b/src/main.rs @@ -71,8 +71,8 @@ fn main() { .long_help("Inject a package into the build environment before build-dep. Can be a .deb file path, a package name from the archive, or a package from a previously added PPA. Can be specified multiple times.").required(false).action(clap::ArgAction::Append)) .arg(arg!(--cross "Cross-compile for target architecture (instead of qemu-binfmt)") .long_help("Cross-compile for target architecture (instead of using qemu-binfmt)\nNote that most packages cannot be cross-compiled").required(false)) - .arg(arg!(--mode "Change build mode [sbuild, local]").required(false) - .long_help("Change build mode [sbuild, local]\nDefault will chose depending on other parameters, don't provide if unsure")), + .arg(arg!(--mode "Change build mode [local]").required(false) + .long_help("Change build mode [local]\nDefault will chose depending on other parameters, don't provide if unsure")), ) .subcommand( Command::new("context") @@ -211,7 +211,6 @@ fn main() { }; let mode: Option<&str> = sub_matches.get_one::("mode").map(|s| s.as_str()); let mode: Option = match mode { - Some("sbuild") => Some(pkh::deb::BuildMode::Sbuild), Some("local") => Some(pkh::deb::BuildMode::Local), _ => None, };