diff --git a/.fluentci/plugin/src/helpers.rs b/.fluentci/plugin/src/helpers.rs index cb34c73d9a..28e6a97d2f 100644 --- a/.fluentci/plugin/src/helpers.rs +++ b/.fluentci/plugin/src/helpers.rs @@ -17,3 +17,117 @@ pub fn detect_system() -> Result<(String, String), Error> { Ok((os.into(), arch.into())) } + +pub fn download_release(version: String) -> Result { + dag() + .pipeline("mkdir")? + .pkgx()? + .with_exec(vec!["rm", "-rf", "/tmp/rbrelease"])? + .with_exec(vec!["mkdir", "/tmp/rbrelease"])? + .stdout()?; + + let stdout = dag() + .pipeline("download-release")? + .pkgx()? + .with_workdir("/tmp/rbrelease")? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox_{}_x86_64-linux.tar.gz", version, version)])? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockboxd_{}_x86_64-linux.tar.gz", version, version)])? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox-codecs-{}-x86_64-linux.tar.gz", version, version)])? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox-assets-{}-x86_64-linux.tar.gz", version, version)])? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox_{}_aarch64-linux.tar.gz", version, version)])? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockboxd_{}_aarch64-linux.tar.gz", version, version)])? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox-codecs-{}-aarch64-linux.tar.gz", version, version)])? + .with_exec(vec!["pkgx", "wget@1.21.4", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox-assets-{}-aarch64-linux.tar.gz", version, version)])? + .with_exec(vec!["mkdir", "-p", "amd64/bin", "amd64/lib/rockbox", "amd64/share/rockbox", "arm64/bin", "arm64/lib/rockbox", "arm64/share/rockbox"])? + .stdout()?; + + dag() + .pipeline("extract-bin-amd64")? + .pkgx()? + .with_workdir("/tmp/rbrelease/amd64/bin")? + .with_exec(vec![ + "tar", + "xzvf", + &format!("/tmp/rbrelease/rockbox_{}_x86_64-linux.tar.gz", version), + ])? + .with_exec(vec![ + "tar", + "xzvf", + &format!("/tmp/rbrelease/rockboxd_{}_x86_64-linux.tar.gz", version), + ])? + .stdout()?; + + dag() + .pipeline("extract-lib-amd64")? + .pkgx()? + .with_workdir("/tmp/rbrelease/amd64/lib/rockbox")? + .with_exec(vec![ + "tar", + "xzvf", + &format!( + "/tmp/rbrelease/rockbox-codecs-{}-x86_64-linux.tar.gz", + version + ), + ])? + .stdout()?; + + dag() + .pipeline("extract-share-amd64")? + .pkgx()? + .with_workdir("/tmp/rbrelease/amd64/share/rockbox")? + .with_exec(vec![ + "tar", + "xzvf", + &format!( + "/tmp/rbrelease/rockbox-assets-{}-x86_64-linux.tar.gz", + version + ), + ])? + .stdout()?; + + dag() + .pipeline("extract-bin-arm64")? + .pkgx()? + .with_workdir("/tmp/rbrelease/arm64/bin")? + .with_exec(vec![ + "tar", + "xzvf", + &format!("/tmp/rbrelease/rockbox_{}_aarch64-linux.tar.gz", version), + ])? + .with_exec(vec![ + "tar", + "xzvf", + &format!("/tmp/rbrelease/rockboxd_{}_aarch64-linux.tar.gz", version), + ])? + .stdout()?; + + dag() + .pipeline("extract-lib-arm64")? + .pkgx()? + .with_workdir("/tmp/rbrelease/arm64/lib/rockbox")? + .with_exec(vec![ + "tar", + "xzvf", + &format!( + "/tmp/rbrelease/rockbox-codecs-{}-aarch64-linux.tar.gz", + version + ), + ])? + .stdout()?; + + dag() + .pipeline("extract-share-arm64")? + .pkgx()? + .with_workdir("/tmp/rbrelease/arm64/share/rockbox")? + .with_exec(vec![ + "tar", + "xzvf", + &format!( + "/tmp/rbrelease/rockbox-assets-{}-aarch64-linux.tar.gz", + version + ), + ])? + .stdout()?; + + Ok(stdout) +} diff --git a/.fluentci/plugin/src/lib.rs b/.fluentci/plugin/src/lib.rs index 3650ac9584..1d166d6c75 100644 --- a/.fluentci/plugin/src/lib.rs +++ b/.fluentci/plugin/src/lib.rs @@ -4,7 +4,7 @@ use fluentci_pdk::dag; mod helpers; -use helpers::detect_system; +use helpers::{detect_system, download_release}; #[plugin_fn] pub fn build(_arg: String) -> FnResult { @@ -84,6 +84,81 @@ pub fn build(_arg: String) -> FnResult { Ok(stdout) } +#[plugin_fn] +pub fn deb(version: String) -> FnResult { + download_release(version.clone())?; + dag() + .pipeline("copy-src-deb")? + .pkgx()? + .with_exec(vec!["mkdir", "-p", "dist/debian/amd64/usr/local"])? + .with_exec(vec![ + "cp", + "-r", + "/tmp/rbrelease/amd64/*", + "dist/debian/amd64/usr/local", + ])? + .with_exec(vec!["mkdir", "-p", "dist/debian/arm64/usr/local"])? + .with_exec(vec![ + "cp", + "-r", + "/tmp/rbrelease/arm64/*", + "dist/debian/arm64/usr/local", + ])? + .stdout()?; + + let stdout = dag() + .pipeline("deb")? + .pkgx()? + .with_workdir("dist/debian")? + .with_exec(vec!["dpkg-deb", "--build", "arm64"])? + .with_exec(vec!["dpkg-deb", "--build", "amd64"])? + .with_exec(vec![ + "mv", + "arm64.deb", + &format!("rockbox_{}_arm64.deb", version), + ])? + .with_exec(vec![ + "mv", + "amd64.deb", + &format!("rockbox_{}_amd64.deb", version), + ])? + .stdout()?; + + Ok(stdout) +} + +#[plugin_fn] +pub fn rpm(version: String) -> FnResult { + download_release(version.clone())?; + dag() + .pipeline("copy-src-rpm")? + .pkgx()? + .with_exec(vec!["mkdir", "-p", "~/rpmbuild/SOURCES/amd64/usr/local"])? + .with_exec(vec!["mkdir", "-p", "~/rpmbuild/SOURCES/arm64/usr/local"])? + .with_exec(vec![ + "cp", + "-r", + "/tmp/rbrelease/amd64/*", + "~/rpmbuild/SOURCES/amd64/usr/local", + ])? + .with_exec(vec![ + "cp", + "-r", + "/tmp/rbrelease/arm64/*", + "~/rpmbuild/SOURCES/arm64/usr/local", + ])? + .stdout()?; + + let stdout = dag() + .pipeline("rpm")? + .pkgx()? + .with_workdir("dist/rpm")? + .with_exec(vec!["rpmbuild", "--bb", "amd64/rockbox.spec"])? + .stdout()?; + + Ok(stdout) +} + #[plugin_fn] pub fn release(_args: String) -> FnResult { let tag = dag().get_env("TAG")?;