Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c9b9d6490 | ||
|
|
778bb6075f | ||
|
|
1bbdab0f68 | ||
|
|
c40662f61a | ||
|
|
7d5643fe34 | ||
|
|
3be49880a3 | ||
|
|
070eee0271 | ||
|
|
d4b2d5201c | ||
|
|
e1ea800ed7 | ||
|
|
fc51bd6dfd | ||
|
|
d02a87e838 |
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
name: Check that code is lint clean using precious
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.email "jdoe@example.com"
|
||||
|
||||
32
.github/workflows/test.yml
vendored
32
.github/workflows/test.yml
vendored
@@ -57,38 +57,14 @@ jobs:
|
||||
os: ubuntu-20.04
|
||||
target: i586-unknown-linux-musl
|
||||
expect_file_re: "ELF.+80386"
|
||||
expect_cross: "--no-expect-cross"
|
||||
expect_stripped: "--expect-stripped"
|
||||
can_test: true
|
||||
|
||||
- platform_name: Linux-mips
|
||||
os: ubuntu-20.04
|
||||
target: mips-unknown-linux-musl
|
||||
expect_file_re: "MIPS32.+mips-"
|
||||
expect_cross: "--expect-cross"
|
||||
expect_stripped: "--no-expect-stripped"
|
||||
can_test: true
|
||||
|
||||
- platform_name: Linux-mipsel
|
||||
- platform_name: Linux-i686
|
||||
os: ubuntu-20.04
|
||||
target: mipsel-unknown-linux-musl
|
||||
expect_file_re: "MIPS32.+mipsel-"
|
||||
expect_cross: "--expect-cross"
|
||||
expect_stripped: "--no-expect-stripped"
|
||||
can_test: true
|
||||
|
||||
- platform_name: Linux-mips64
|
||||
os: ubuntu-20.04
|
||||
target: mips64-unknown-linux-muslabi64
|
||||
expect_file_re: "MIPS64"
|
||||
expect_cross: "--expect-cross"
|
||||
expect_stripped: "--no-expect-stripped"
|
||||
can_test: true
|
||||
|
||||
- platform_name: Linux-mips64el
|
||||
os: ubuntu-20.04
|
||||
target: mips64el-unknown-linux-muslabi64
|
||||
expect_file_re: "MIPS64"
|
||||
target: i686-unknown-linux-musl
|
||||
expect_file_re: "ELF.+80386"
|
||||
expect_cross: "--expect-cross"
|
||||
expect_stripped: "--no-expect-stripped"
|
||||
can_test: true
|
||||
@@ -183,7 +159,7 @@ jobs:
|
||||
runs-on: ${{ matrix.platform.os }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Copy test project to root
|
||||
shell: bash
|
||||
run: |
|
||||
|
||||
11
Changes.md
11
Changes.md
@@ -1,3 +1,14 @@
|
||||
## 0.0.12 - 2024-02-25
|
||||
|
||||
- Bumped the version of `actions/cache` used in this action to v4. The v3 version uses Node 16,
|
||||
which causes warnings when run.
|
||||
|
||||
## 0.0.11 - 2023-12-17
|
||||
|
||||
- Use `cross` when compiling for 32-bit Linux targets. While in theory this should work without
|
||||
`cross`, compiling `openssl` with the `vendored` feature fails when we run
|
||||
`cargo build --target i686-unknown-linux-musl`.
|
||||
|
||||
## 0.0.10 - 2023-12-10
|
||||
|
||||
- Fixed handling of crates with multiple binaries. Attempting to strip binaries for such a crate
|
||||
|
||||
@@ -58,17 +58,17 @@ This action takes the following parameters:
|
||||
| Key | Type | Required? | Description |
|
||||
| ------------------- | ---------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `command` | string (one of `build`, `test`, or `both`) | no | The command(s) to run. The default is `build`. Running the `test` command will fail with \*BSD targets, non-x86 Windows, and macOS ARM. |
|
||||
| `target` | string | yes | The target triple to compile for. This should be one of the targets listed by running `rustup target list`. |
|
||||
| `target` | string | yes | The target triple to compile for. This should be one of the targets found by running `rustup target list`. |
|
||||
| `working-directory` | string | no | The working directory in which to run the `cargo` or `cross` commands. Defaults to the current directory (`.`). |
|
||||
| `toolchain` | string (one of `stable`, `beta`, or `nightly`) | no | The Rust toolchain version to install. The default is `stable`. |
|
||||
| `GITHUB_TOKEN` | string | no | Defaults to the value of `${{ github.token }}`. |
|
||||
| `args` | string | no | A string-separated list of arguments to be passed to `cross build`, like `--release --locked`. |
|
||||
| `strip` | boolean (`true` or `false`) | no | If this is true, then the resulting binary will be stripped if possible. This is only possible for binaries which weren't cross-compiled. |
|
||||
| `strip` | boolean (`true` or `false`) | no | If this is true, then the resulting binaries will be stripped if possible. This is only possible for binaries which weren't cross-compiled. |
|
||||
| `cross-version` | string | no | This can be used to set the version of `cross` to use. If specified, it should be a specific `cross` release tag. If this is not set then the latest version will always be used. |
|
||||
|
||||
## How it Works
|
||||
|
||||
Under the hood, this action will compile your binary with either `cargo` or `cross`, depending on
|
||||
Under the hood, this action will compile your binaries with either `cargo` or `cross`, depending on
|
||||
the host machine and target. For Linux builds, it will always use `cross` except for builds
|
||||
targeting an x86 architecture like `x86_64` or `i686`.
|
||||
|
||||
@@ -82,7 +82,7 @@ build `cross`.
|
||||
When compiling on Windows, it will do so in a Powershell environment, which can matter in some
|
||||
corner cases, like compiling the `openssl` crate with the `vendored` feature.
|
||||
|
||||
Finally, it will run `strip` to strip the binary if the `strip` parameter is true. This is only
|
||||
Finally, it will run `strip` to strip the binaries if the `strip` parameter is true. This is only
|
||||
possible for builds that are not done via `cross`. In addition, Windows builds for `aarch64` cannot
|
||||
be stripped either.
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ runs:
|
||||
if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'true' }}
|
||||
- name: Cache cross
|
||||
id: cache-cross
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ steps.set-cross-dir.outputs.cross-dir }}/cross
|
||||
key: ${{ runner.os }}-${{ steps.determine-cross-version.outputs.cross-version }}
|
||||
|
||||
@@ -10,7 +10,11 @@ if uname -a | grep --quiet --extended-regexp -i "darwin|msys|windows"; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if echo "$TARGET" | grep --quiet --extended-regexp -i '(x86_64|586|686).+linux-(gnu|musl)'; then
|
||||
# On Linux, we should be able to cross-compile to i586 and i686, but in
|
||||
# practice this fails with some crates, notably openssl with the "vendored"
|
||||
# feature. This feature makes it compile openssl itself, which fails without
|
||||
# cross.
|
||||
if echo "$TARGET" | grep --quiet --extended-regexp -i 'x86_64.+linux-(gnu|musl)'; then
|
||||
echo "needs-cross=false" >> $GITHUB_OUTPUT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@@ -14,3 +14,14 @@ path = "src/bin1.rs"
|
||||
[[bin]]
|
||||
name = "bin2"
|
||||
path = "src/bin2.rs"
|
||||
|
||||
# workaround for https://github.com/cross-rs/cross/issues/1345
|
||||
[package.metadata.cross.target.x86_64-unknown-netbsd]
|
||||
pre-build = [
|
||||
"mkdir -p /tmp/netbsd",
|
||||
"curl https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.2/amd64/binary/sets/base.tar.xz -O",
|
||||
"tar -C /tmp/netbsd -xJf base.tar.xz",
|
||||
"cp /tmp/netbsd/usr/lib/libexecinfo.so /usr/local/x86_64-unknown-netbsd/lib",
|
||||
"rm base.tar.xz",
|
||||
"rm -rf /tmp/netbsd",
|
||||
]
|
||||
|
||||
@@ -3,6 +3,13 @@ name = "subcrate"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
# workaround for https://github.com/cross-rs/cross/issues/1345
|
||||
[package.metadata.cross.target.x86_64-unknown-netbsd]
|
||||
pre-build = [
|
||||
"mkdir -p /tmp/netbsd",
|
||||
"curl https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.2/amd64/binary/sets/base.tar.xz -O",
|
||||
"tar -C /tmp/netbsd -xJf base.tar.xz",
|
||||
"cp /tmp/netbsd/usr/lib/libexecinfo.so /usr/local/x86_64-unknown-netbsd/lib",
|
||||
"rm base.tar.xz",
|
||||
"rm -rf /tmp/netbsd",
|
||||
]
|
||||
|
||||
@@ -32,7 +32,8 @@ sub main {
|
||||
);
|
||||
|
||||
check_cross(
|
||||
path( $ENV{RUNNER_TEMP} ), $expect_cross,
|
||||
path( $ENV{RUNNER_TEMP} ),
|
||||
$expect_cross,
|
||||
$expect_cross_version
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user