Merge branch 'release' into 'master'

Use Cargo release flag

See merge request Librem5/squeekboard!256
This commit is contained in:
David Boddie
2019-11-29 15:33:00 +00:00
6 changed files with 49 additions and 22 deletions

View File

@ -114,7 +114,7 @@ Use the `cargo.sh` script for maintaining the Cargo part of the build. The scrip
``` ```
cd build_dir cd build_dir
sh /source_path/cargo.sh '' test sh /source_path/cargo.sh test
``` ```
### Cargo dependencies ### Cargo dependencies
@ -125,6 +125,6 @@ Dependencies must be specified in `Cargo.toml` with 2 numbers: "major.minor". Si
``` ```
cd build_dir cd build_dir
sh /source_path/cargo.sh '' update sh /source_path/cargo.sh update
ninja test ninja test
``` ```

View File

@ -11,21 +11,7 @@ SOURCE_DIR="$(dirname "$SCRIPT_PATH")"
CARGO_TARGET_DIR="$(pwd)" CARGO_TARGET_DIR="$(pwd)"
export CARGO_TARGET_DIR export CARGO_TARGET_DIR
if [ "${1}" = "--rename" ]; then
shift
FILENAME="${1}"
shift
OUT_PATH="$(realpath "${1}")"
elif [ "${1}" = "--output" ]; then
shift
OUT_PATH="$(realpath "${1}")"
FILENAME="$(basename "${OUT_PATH}")"
fi
shift
cd "$SOURCE_DIR" cd "$SOURCE_DIR"
cargo "$@" cargo "$@"
if [ -n "${OUT_PATH}" ]; then
cp -a "${CARGO_TARGET_DIR}"/debug/"${FILENAME}" "${OUT_PATH}"
fi

34
cargo_build.sh Executable file
View File

@ -0,0 +1,34 @@
#!/bin/sh
# This script manages Cargo builds
# while keeping the artifact directory within the build tree
# instead of the source tree
set -e
SCRIPT_PATH="$(realpath "$0")"
SOURCE_DIR="$(dirname "$SCRIPT_PATH")"
RELEASE=""
BINARY_DIR="debug"
if [ "${1}" = "--release" ]; then
shift
BINARY_DIR="release"
RELEASE="--release"
fi
if [ "${1}" = "--rename" ]; then
shift
FILENAME="${1}"
shift
fi
OUT_PATH="$(realpath "${1}")"
shift
OUT_BASENAME="$(basename "${OUT_PATH}")"
FILENAME="${FILENAME:-"${OUT_BASENAME}"}"
sh "$SOURCE_DIR"/cargo.sh build $RELEASE "$@"
if [ -n "${OUT_PATH}" ]; then
cp -a ./"${BINARY_DIR}"/"${FILENAME}" "${OUT_PATH}"
fi

View File

@ -33,6 +33,11 @@ endif
if get_option('buildtype') != 'plain' if get_option('buildtype') != 'plain'
add_project_arguments('-fstack-protector-strong', language: 'c') add_project_arguments('-fstack-protector-strong', language: 'c')
endif endif
if get_option('buildtype') == 'release'
cargo_build_flags = ['--release'] # for artifacts
else
cargo_build_flags = []
endif
prefix = get_option('prefix') prefix = get_option('prefix')
datadir = join_paths(prefix, get_option('datadir')) datadir = join_paths(prefix, get_option('datadir'))
@ -54,8 +59,9 @@ summary = [
] ]
message('\n'.join(summary)) message('\n'.join(summary))
cargo = find_program('cargo') dep_cargo = find_program('cargo')
cargo_script = find_program('cargo.sh') cargo_script = find_program('cargo.sh')
cargo_build = find_program('cargo_build.sh')
subdir('data') subdir('data')
subdir('protocols') subdir('protocols')

View File

@ -58,7 +58,7 @@ rslibs = custom_target(
output: ['librs.a'], output: ['librs.a'],
install: false, install: false,
console: true, console: true,
command: [cargo_script, '--output', '@OUTPUT@', 'build', '--lib'] command: [cargo_build] + cargo_build_flags + ['@OUTPUT@', '--lib']
) )
build_rstests = custom_target( build_rstests = custom_target(
@ -72,14 +72,14 @@ build_rstests = custom_target(
output: ['src'], output: ['src'],
install: false, install: false,
console: true, console: true,
command: [cargo_script, '', 'test', '--no-run'], command: [cargo_script, 'test', '--no-run'],
depends: rslibs, # no point building tests if the code itself fails depends: rslibs, # no point building tests if the code itself fails
) )
test( test(
'rstest', 'rstest',
cargo_script, cargo_script,
args: ['', 'test'], args: ['test'],
# this is a whole Carg-based test suite, let it run for a while # this is a whole Carg-based test suite, let it run for a while
timeout: 900, timeout: 900,
depends: build_rstests, depends: build_rstests,
@ -131,7 +131,8 @@ test_layout = custom_target('squeekboard-test-layout',
build_always_stale: true, build_always_stale: true,
output: ['squeekboard-test-layout'], output: ['squeekboard-test-layout'],
console: true, console: true,
command: [cargo_script, '--rename', 'test_layout', '@OUTPUT@', 'build', '--bin', 'test_layout'], command: [cargo_build] + cargo_build_flags
+ ['--rename', 'test_layout', '@OUTPUT@', '--bin', 'test_layout'],
install: true, install: true,
install_dir: bindir, install_dir: bindir,
) )

View File

@ -62,7 +62,7 @@ foreach layout : [
test( test(
'test_layout_' + layout, 'test_layout_' + layout,
cargo_script, cargo_script,
args: ['', 'run', '--example', 'test_layout', layout] args: ['run', '--example', 'test_layout', layout]
) )
endforeach endforeach