Handle multiple binaries in one crate

This commit is contained in:
Dave Rolsky
2023-12-10 11:03:10 -06:00
parent 9fb7236944
commit c507aeb1b5
6 changed files with 43 additions and 10 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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
View File

@@ -0,0 +1,11 @@
fn main() {
println!("Hello, world!");
}
#[cfg(test)]
mod test {
#[test]
fn test_something() {
assert_eq!(1, 1);
}
}

View File

@@ -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 );