Add automated ci

This commit is contained in:
Mats committed 2021-09-25 12:52:55 +02:00
1 parent f4584a3be0
commit c194b180d6
5 files changed
+107 -4

No files matched your search

+73
View File
@@ -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/
+9
View File
@@ -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 ~}}
+7
View File
@@ -0,0 +1,7 @@
accepted = [
"Apache-2.0",
"MIT",
]
ignore-build-dependencies = true
ignore-dev-dependencies = true
+4 -1
View File
@@ -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);
}
+14 -3
View File
@@ -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");