Skip to content

Commit 8d51287

Browse files
committed
test: add cargo xtask spec to configure bootc.spec
Signed-off-by: Xiaofeng Wang <[email protected]>
1 parent f2de4ce commit 8d51287

File tree

2 files changed

+41
-11
lines changed

2 files changed

+41
-11
lines changed

.packit.yaml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,14 @@ srpm_build_deps:
2020

2121
actions:
2222
create-archive:
23-
- bash -c "sed -i \"s/0.1/${PACKIT_PROJECT_VERSION}/\" contrib/packaging/bootc.spec"
24-
- bash -c "mkdir -p target/man"
25-
- bash -c "cargo run --features=docgen -- man --directory target/man"
26-
- bash -c "git archive --format=tar --prefix=bootc-${PACKIT_PROJECT_VERSION}/ HEAD > contrib/packaging/${PACKIT_PROJECT_NAME_VERSION}.tar"
27-
- bash -c "tar -r -C target -f contrib/packaging/${PACKIT_PROJECT_NAME_VERSION}.tar man"
2823
- bash -c "cargo install cargo-vendor-filterer"
29-
- bash -c "cargo vendor-filterer --prefix=vendor --format=tar contrib/packaging/${PACKIT_PROJECT_NAME_VERSION}-vendor.tar"
30-
- bash -c "cat contrib/packaging/bootc.spec"
31-
- bash -c "ls -1 contrib/packaging/${PACKIT_PROJECT_NAME_VERSION}.tar"
24+
- bash -c "cargo xtask spec"
25+
- bash -c "cat target/bootc.spec"
26+
- bash -c "cp target/bootc* contrib/packaging/"
27+
- bash -c "ls -1 target/bootc*.tar.zstd | grep -v 'vendor'"
3228
fix-spec-file:
33-
- bash -c "echo $PACKIT_RPMSPEC_RELEASE $PACKIT_PROJECT_VERSION $PACKIT_PROJECT_COMMIT $PACKIT_PROJECT_ARCHIVE"
34-
- bash -c "sed -i \"s/https.*}.tar.zstd/${PACKIT_PROJECT_NAME_VERSION}.tar/\" contrib/packaging/bootc.spec"
35-
- bash -c "sed -i \"s/https.*}-vendor.tar.zstd/${PACKIT_PROJECT_NAME_VERSION}-vendor.tar/\" contrib/packaging/bootc.spec"
3629
- bash -c "cat contrib/packaging/bootc.spec"
30+
- bash -c "ls -al contrib/packaging/"
3731

3832
jobs:
3933
- job: copr_build

xtask/src/xtask.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const TASKS: &[(&str, fn(&Shell) -> Result<()>)] = &[
2222
("man2markdown", man2markdown),
2323
("package", package),
2424
("package-srpm", package_srpm),
25+
("spec", spec),
2526
("custom-lints", custom_lints),
2627
("test-tmt", test_tmt),
2728
];
@@ -244,6 +245,41 @@ fn package(sh: &Shell) -> Result<()> {
244245
Ok(())
245246
}
246247

248+
fn update_spec(sh: &Shell) -> Result<Utf8PathBuf> {
249+
let p = Utf8Path::new("target");
250+
let pkg = impl_package(sh)?;
251+
let srcpath = pkg.srcpath.file_name().unwrap();
252+
let v = pkg.version;
253+
let src_vendorpath = pkg.vendorpath.file_name().unwrap();
254+
{
255+
let specin = File::open(format!("contrib/packaging/{NAME}.spec"))
256+
.map(BufReader::new)
257+
.context("Opening spec")?;
258+
let mut o = File::create(p.join(format!("{NAME}.spec"))).map(BufWriter::new)?;
259+
for line in specin.lines() {
260+
let line = line?;
261+
if line.starts_with("Version:") {
262+
writeln!(o, "# Replaced by cargo xtask spec")?;
263+
writeln!(o, "Version: {v}")?;
264+
} else if line.starts_with("Source0") {
265+
writeln!(o, "Source0: {srcpath}")?;
266+
} else if line.starts_with("Source1") {
267+
writeln!(o, "Source1: {src_vendorpath}")?;
268+
} else {
269+
writeln!(o, "{}", line)?;
270+
}
271+
}
272+
}
273+
let spec_path = p.join(format!("{NAME}.spec"));
274+
Ok(spec_path)
275+
}
276+
277+
fn spec(sh: &Shell) -> Result<()> {
278+
let s = update_spec(sh)?;
279+
println!("Generated: {s}");
280+
Ok(())
281+
}
282+
247283
fn impl_srpm(sh: &Shell) -> Result<Utf8PathBuf> {
248284
{
249285
let _g = sh.push_dir("target");

0 commit comments

Comments
 (0)