From c194b180d614989a51c8cbef4656dce0c6986fda Mon Sep 17 00:00:00 2001 From: Mats Date: Sat, 25 Sep 2021 00:02:37 +0200 Subject: [PATCH] Add automated ci --- .gitlab-ci.yml | 73 +++++++++++++++++++++++++++++++++++++++++ about.hbs | 9 +++++ about.toml | 7 ++++ mist/src/main.rs | 5 ++- steamworks-sys/build.rs | 17 ++++++++-- 5 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 about.hbs create mode 100644 about.toml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..7392190 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,73 @@ +stages: + - build + - package + +image: $CI_SERVER_HOST:5050/libretro-steam/rust-build-image:latest + +.build-common: + stage: build + needs: + - project: libretro-steam/steamworks + job: package + ref: master + artifacts: true + script: &build_common_script + - STEAMWORKS_SDK="$(pwd)/steamworks" cargo build --release --target=$RUST_TARGET --bin mist --features=steamworks + - cargo build --release --target=$RUST_TARGET --lib --package mist + +build-linux-x64: + extends: .build-common + artifacts: + paths: + - mist-linux-x64 + expire_in: 1 hour + variables: + RUST_TARGET: x86_64-unknown-linux-gnu + script: + - *build_common_script + - STEAMWORKS_SDK="$(pwd)/steamworks" cargo build --release --target=$RUST_TARGET --bin app_install_dir + - mkdir -p mist-linux-x64/mist + - cp ./target/$RUST_TARGET/release/libmist.so ./mist-linux-x64 + - cp ./target/$RUST_TARGET/release/mist ./mist-linux-x64/mist + - cp ./target/$RUST_TARGET/release/app_install_dir ./mist-linux-x64/mist + - cp ./steamworks/redistributable_bin/linux64/libsteam_api.so ./mist-linux-x64/mist + +build-windows-x64: + extends: .build-common + artifacts: + paths: + - mist-windows-x64 + expire_in: 1 hour + variables: + RUST_TARGET: x86_64-pc-windows-gnu + script: + - *build_common_script + - mkdir -p ./mist-windows-x64/mist + - cp ./target/$RUST_TARGET/release/mist.dll ./mist-windows-x64 + - cp ./target/$RUST_TARGET/release/mist.exe ./mist-windows-x64/mist + - cp ./steamworks/redistributable_bin/win64/steam_api64.dll ./mist-windows-x64/mist + +package: + stage: package + needs: + - job: build-windows-x64 + artifacts: true + - job: build-linux-x64 + artifacts: true + artifacts: + paths: + - mist + expire_in: 1 hour + script: + # Generate third party licenses + - cargo install cargo-about + - cargo about generate about.hbs > ./mist-ThirdPartyLicenses.txt + - rm -rf mist/ && mkdir -p mist/ + # Linux + - cp -r ./mist-linux-x64 ./mist/ + - cp ./LICENSE ./mist/mist-linux-x64/mist/mist-LICENSE.txt + - cp ./mist-ThirdPartyLicenses.txt ./mist/mist-linux-x64/mist/ + # Windows + - cp -r ./mist-windows-x64 ./mist/ + - cp ./LICENSE ./mist/mist-windows-x64/mist/mist-LICENSE.txt + - cp ./mist-ThirdPartyLicenses.txt ./mist/mist-windows-x64/mist/ diff --git a/about.hbs b/about.hbs new file mode 100644 index 0000000..cc4d411 --- /dev/null +++ b/about.hbs @@ -0,0 +1,9 @@ +{{#each licenses ~}} +{{#each used_by ~}} +{{crate.name}} {{crate.version}} {{#if crate.repository}} {{crate.repository}} {{else}} https://crates.io/crates/{{crate.name}} {{/if}} +{{/each}} +{{{text}}} + +================================================================================ + +{{/each ~}} diff --git a/about.toml b/about.toml new file mode 100644 index 0000000..e6f93eb --- /dev/null +++ b/about.toml @@ -0,0 +1,7 @@ +accepted = [ + "Apache-2.0", + "MIT", +] + +ignore-build-dependencies = true +ignore-dev-dependencies = true diff --git a/mist/src/main.rs b/mist/src/main.rs index 1769804..1f609a2 100644 --- a/mist/src/main.rs +++ b/mist/src/main.rs @@ -51,7 +51,10 @@ fn run() -> Result<()> { let mut server = MistServer::create(service, std::io::stdin(), std::io::stdout()); // Tell the library that we have initialized if let Err(err) = server.write_data(&MistServiceToLibrary::Initialized) { - eprintln!("[mist] Error writing intialized message to library: {}", err); + eprintln!( + "[mist] Error writing intialized message to library: {}", + err + ); std::process::exit(1); } diff --git a/steamworks-sys/build.rs b/steamworks-sys/build.rs index e45ef7d..644a4a4 100644 --- a/steamworks-sys/build.rs +++ b/steamworks-sys/build.rs @@ -9,7 +9,9 @@ fn main() { PathBuf::from(env::var("STEAMWORKS_SDK").expect("The STEAMWORKS_SDK variable is missing")); let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); - match env::var("TARGET").unwrap().as_str() { + let target = env::var("TARGET").unwrap(); + + match target.as_str() { // Linux 64-bit "x86_64-unknown-linux-gnu" => { fs::copy( @@ -45,7 +47,7 @@ fn main() { other => panic!("Unsupported target: {}", other), }; - let bindings = bindgen::Builder::default() + let mut bindings_builder = bindgen::Builder::default() .header( sdk_path .join("public/steam/steam_api_flat.h") @@ -55,7 +57,16 @@ fn main() { "-I{}", Path::new(&sdk_path).join("public").to_string_lossy() )) - .clang_args(&["-xc++"]) + .clang_args(&["-xc++"]); + + #[cfg(unix)] + { + if target == "x86_64-pc-windows-gnu" { + bindings_builder = bindings_builder.clang_arg("-I/usr/x86_64-w64-mingw32/include/"); + } + } + + let bindings = bindings_builder .generate() .expect("Unable to generate bindings");