Skip to content

Commit

Permalink
Merge pull request #101 from tsirysndr/fluentci-deb-rpm
Browse files Browse the repository at this point in the history
ci: add fluentci functions for generating deb and rpm files
  • Loading branch information
tsirysndr authored Jan 19, 2025
2 parents 7c2b4f2 + 0289bed commit 2d21246
Show file tree
Hide file tree
Showing 2 changed files with 190 additions and 1 deletion.
114 changes: 114 additions & 0 deletions .fluentci/plugin/src/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,117 @@ pub fn detect_system() -> Result<(String, String), Error> {

Ok((os.into(), arch.into()))
}

pub fn download_release(version: String) -> Result<String, Error> {
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", "[email protected]", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox_{}_x86_64-linux.tar.gz", version, version)])?
.with_exec(vec!["pkgx", "[email protected]", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockboxd_{}_x86_64-linux.tar.gz", version, version)])?
.with_exec(vec!["pkgx", "[email protected]", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox-codecs-{}-x86_64-linux.tar.gz", version, version)])?
.with_exec(vec!["pkgx", "[email protected]", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox-assets-{}-x86_64-linux.tar.gz", version, version)])?
.with_exec(vec!["pkgx", "[email protected]", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox_{}_aarch64-linux.tar.gz", version, version)])?
.with_exec(vec!["pkgx", "[email protected]", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockboxd_{}_aarch64-linux.tar.gz", version, version)])?
.with_exec(vec!["pkgx", "[email protected]", &format!("https://github.com/tsirysndr/rockbox-zig/releases/download/{}/rockbox-codecs-{}-aarch64-linux.tar.gz", version, version)])?
.with_exec(vec!["pkgx", "[email protected]", &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)
}
77 changes: 76 additions & 1 deletion .fluentci/plugin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> {
Expand Down Expand Up @@ -84,6 +84,81 @@ pub fn build(_arg: String) -> FnResult<String> {
Ok(stdout)
}

#[plugin_fn]
pub fn deb(version: String) -> FnResult<String> {
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<String> {
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<String> {
let tag = dag().get_env("TAG")?;
Expand Down

0 comments on commit 2d21246

Please sign in to comment.