Handle multiple binaries in one crate
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
## 0.0.10
|
||||
|
||||
- Fixed handling of crates with multiple binaries. Attempting to strip binaries for such a crate
|
||||
caused the build to fail. Reported by Tomaž Hribernik. GH #8
|
||||
- Added a new `cross-version` parameter. This can be specified to make this action use a specific
|
||||
version of `cross`. If this is not specified, the latest version will be used.
|
||||
|
||||
|
||||
@@ -2,20 +2,29 @@ set -e
|
||||
set -x
|
||||
|
||||
TARGET=$1
|
||||
stripped=""
|
||||
did_strip=""
|
||||
|
||||
strip_binary () {
|
||||
if [[ $( uname -s ) =~ "Darwin" ]]; then
|
||||
EXE=$( find "$1" -maxdepth 1 -type f -perm +111 )
|
||||
stripped=$(
|
||||
find "$1" -maxdepth 1 -type f -perm +111 | while read exe; do
|
||||
strip "$exe"
|
||||
echo "stripped $exe"
|
||||
done
|
||||
)
|
||||
else
|
||||
EXE=$( find "$1" -maxdepth 1 -type f -executable )
|
||||
stripped=$(
|
||||
find "$1" -maxdepth 1 -type f -executable | while read exe; do
|
||||
strip "$exe"
|
||||
echo "stripped $exe"
|
||||
done
|
||||
)
|
||||
fi
|
||||
|
||||
if [ -z "$EXE" ]; then
|
||||
echo "Could not find a binary to strip in $1"
|
||||
if [ -z "$stripped" ]; then
|
||||
echo "Could not find any binaries to strip in $1"
|
||||
else
|
||||
strip "$EXE"
|
||||
stripped="$EXE"
|
||||
did_strip="true"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -27,7 +36,7 @@ for type in debug release; do
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$stripped" ]; then
|
||||
if [ -z "$did_strip" ]; then
|
||||
echo "No binaries were stripped"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -3,4 +3,14 @@ name = "test-project"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
# For testing it would be nice to create a binary with spaces in the name, but
|
||||
# right now the `name` value must be a valid crate name, and there's no
|
||||
# separate setting for the compiled executable's name. See
|
||||
# https://github.com/rust-lang/cargo/issues/9778.
|
||||
[[bin]]
|
||||
name = "bin1"
|
||||
path = "src/bin1.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "bin2"
|
||||
path = "src/bin2.rs"
|
||||
|
||||
11
test-project/src/bin2.rs
Normal file
11
test-project/src/bin2.rs
Normal file
@@ -0,0 +1,11 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
#[test]
|
||||
fn test_something() {
|
||||
assert_eq!(1, 1);
|
||||
}
|
||||
}
|
||||
@@ -37,7 +37,8 @@ sub main {
|
||||
);
|
||||
|
||||
for my $bin (
|
||||
path( qw( . target ), $target, qw( debug test-project ) ),
|
||||
path( qw( . target ), $target, qw( debug bin1 ) ),
|
||||
path( qw( . target ), $target, qw( debug bin2 ) ),
|
||||
path( qw( . subcrate target ), $target, qw( debug subcrate ) )
|
||||
) {
|
||||
check_binary( $bin, $expect_file_re, $expect_stripped );
|
||||
|
||||
Reference in New Issue
Block a user