From 558ef25ab311d0159b7d4f0eb62d9faa3a5fc753 Mon Sep 17 00:00:00 2001 From: jb-alvarado Date: Tue, 12 Apr 2022 21:39:53 +0200 Subject: [PATCH] add debian and rhel packages --- Cargo.toml | 34 +++++++++++++++++++ assets/ffplayout.yml | 2 +- cross_compile_all.sh | 14 ++++++++ docs/developer.md | 16 +++++++++ .../common/ffplayout-engine.service | 4 +-- .../common/ffplayout-engine.service.preset | 1 + src/utils/arg_parse.rs | 2 +- 7 files changed, 69 insertions(+), 4 deletions(-) rename assets/ffplayout_engine.service => package/common/ffplayout-engine.service (67%) create mode 100644 package/common/ffplayout-engine.service.preset diff --git a/Cargo.toml b/Cargo.toml index d6dc10ee..50fb70fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,8 @@ name = "ffplayout-rs" description = "24/7 playout based on rust and ffmpeg" license = "GPL-3.0" +authors = ["Jonathan Baecker jonbae77@gmail.com"] +readme = "README.md" version = "0.9.2" edition = "2021" @@ -36,3 +38,35 @@ path = "src/main.rs" opt-level = 3 strip = true lto = true + +# DEBIAN DEB PACKAGE +[package.metadata.deb] +name = "ffplayout-engine" +priority = "optional" +section = "net" +license-file = ["LICENSE", "3"] +depends = "" +suggests = "ffmpeg" +maintainer-scripts = "package/debian/" +copyright = "Copyright (c) 2022, Jonathan Baecker. All rights reserved." +assets = [ + ["target/x86_64-unknown-linux-musl/release/ffplayout", "/usr/bin/ffplayout", "755"], + ["assets/ffplayout.yml", "/etc/ffplayout/ffplayout.yml", "644"], + ["assets/logo.png", "/usr/share/ffplayout/logo.png", "644"], + ["README.md", "/usr/share/doc/ffplayout-engine/README", "644"], + ["package/common/ffplayout-engine.service.preset", "/lib/systemd/system-preset/50-ffplayout-engine.preset", "644"], +] +systemd-units = { unit-name = "ffplayout-engine", unit-scripts = "package/common", enable = false } + +# REHL RPM PACKAGE +[package.metadata.generate-rpm] +name = "ffplayout-engine" +license = "GPL-3.0" +assets = [ + { source = "target/x86_64-unknown-linux-musl/release/ffplayout", dest = "/usr/bin/ffplayout", mode = "755" }, + { source = "assets/ffplayout.yml", dest = "/etc/ffplayout/ffplayout.yml", mode = "644" }, + { source = "package/common/ffplayout-engine.service", dest = "/lib/systemd/system/ffplayout-engine.service", mode = "644" }, + { source = "README.md", dest = "/usr/share/doc/ffplayout-engine/README", mode = "644", doc = true }, + { source = "LICENSE", dest = "/usr/share/doc/ffplayout-engine/LICENSE", mode = "644" }, + { source = "assets/logo.png", dest = "/usr/share/ffplayout/logo.png", mode = "644" }, +] diff --git a/assets/ffplayout.yml b/assets/ffplayout.yml index 028eefba..d04bc270 100644 --- a/assets/ffplayout.yml +++ b/assets/ffplayout.yml @@ -36,7 +36,7 @@ logging: log_to_file: false backup_count: 7 local_time: true - timestamp: true + timestamp: false log_path: /var/log/ffplayout/ log_level: DEBUG ffmpeg_level: error diff --git a/cross_compile_all.sh b/cross_compile_all.sh index 17900ecd..d359124a 100755 --- a/cross_compile_all.sh +++ b/cross_compile_all.sh @@ -39,3 +39,17 @@ for target in "${targets[@]}"; do echo "" done + +echo "Create debian package" +echo "" + +cargo deb --target=x86_64-unknown-linux-musl + +mv ./target/x86_64-unknown-linux-musl/debian/ffplayout-engine_${version}_amd64.deb . + +echo "Create rhel package" +echo "" + +cargo generate-rpm --target=x86_64-unknown-linux-musl + +mv ./target/x86_64-unknown-linux-musl/generate-rpm/ffplayout-engine-${version}-1.x86_64.rpm . diff --git a/docs/developer.md b/docs/developer.md index 749a3e95..30d99aa2 100644 --- a/docs/developer.md +++ b/docs/developer.md @@ -66,3 +66,19 @@ CC="aarch64-apple-darwin20.4-clang -arch arm64e" cargo build --release --target= # for x86_64 CC="o64-clang" cargo build --release --target=x86_64-apple-darwin ``` + +### Create debian DEB and RHEL RPM packages + +install: +- `cargo install cargo-deb` +- `cargo install cargo-generate-rpm` + +And run with: + +```Bash +# for debian based systems: +cargo deb --target=x86_64-unknown-linux-musl + +# for rhel based systems: +cargo generate-rpm --target=x86_64-unknown-linux-musl +``` diff --git a/assets/ffplayout_engine.service b/package/common/ffplayout-engine.service similarity index 67% rename from assets/ffplayout_engine.service rename to package/common/ffplayout-engine.service index a4445d45..0471626a 100644 --- a/assets/ffplayout_engine.service +++ b/package/common/ffplayout-engine.service @@ -1,9 +1,9 @@ [Unit] -Description=python and ffmpeg based playout +Description=Rust based 24/7 playout solution After=network.target [Service] -ExecStart= /usr/local/bin/ffplayout +ExecStart= /usr/bin/ffplayout ExecReload=/bin/kill -1 $MAINPID Restart=always RestartSec=1 diff --git a/package/common/ffplayout-engine.service.preset b/package/common/ffplayout-engine.service.preset new file mode 100644 index 00000000..e922c231 --- /dev/null +++ b/package/common/ffplayout-engine.service.preset @@ -0,0 +1 @@ +disable ffplayout-engine.service diff --git a/src/utils/arg_parse.rs b/src/utils/arg_parse.rs index 426de023..11f8ed69 100644 --- a/src/utils/arg_parse.rs +++ b/src/utils/arg_parse.rs @@ -2,7 +2,7 @@ use clap::Parser; #[derive(Parser, Debug)] #[clap(version, - about = "ffplayout, the rust playout solution", + about = "ffplayout, Rust based 24/7 playout solution", long_about = None)] pub struct Args { #[clap(short, long, help = "file path to ffplayout.conf")]