13 Commits

Author SHA1 Message Date
Dave Rolsky
e89db86c83 Fix action name
Some checks failed
Lint / Check that code is lint clean using precious (push) Failing after 7s
Self-test / Test (map[can_test:false expect_cross:--expect-cross expect_file_re:x86-64.+FreeBSD expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:FreeBSD-x86_64 target:x86_64-unknown-freebsd]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:--expect-cross expect_file_re:x86-64.+NetBSD expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:NetBSD-x86_64 target:x86_64-unknown-netbsd]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:--no-expect-cross expect_file_re:Aarch64.+Windows expect_stripped:--no-expect-stripped os:windows-latest platform_name:Windows-aarch64 target:aarch64-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:--no-expect-cross expect_file_re:Mach-O.+arm64 expect_stripped:--expect-stripped os:macOS-latest platform_name:macOS-aarch64 target:aarch64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:32.+ARM expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-arm target:arm-unknown-linux-musleabi]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:32.+PowerPC expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-powerpc target:powerpc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:64.+PowerPC expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-powerpc64 target:powerpc64-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:64.+PowerPC expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-powerpc64le target:powerpc64le-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:64.+RISC-V expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-riscv64 target:riscv64gc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:64.+S/390 expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-s390x target:s390x-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:MIPS32.+mips- expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-mips target:mips-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:MIPS32.+mipsel- expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-mipsel target:mipsel-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:MIPS64 expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-mips64 target:mips64-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:MIPS64 expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-mips64el target:mips64el-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--expect-cross expect_file_re:aarch64 expect_stripped:--no-expect-stripped os:ubuntu-20.04 platform_name:Linux-aarch64 target:aarch64-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--no-expect-cross expect_file_re:80386.+Windows expect_stripped:--expect-stripped os:windows-latest platform_name:Windows-i686 target:i686-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--no-expect-cross expect_file_re:ELF.+80386 expect_stripped:--expect-stripped os:ubuntu-20.04 platform_name:Linux-i586 target:i586-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--no-expect-cross expect_file_re:ELF.+x86-64 expect_stripped:--expect-stripped os:ubuntu-20.04 platform_name:Linux-x86_64 target:x86_64-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:--no-expect-cross expect_file_re:Mach-O.+x86_64 expect_stripped:--expect-stripped os:macOS-latest platform_name:macOS-x86_64 target:x86_64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_file_re:x86-64.+Windows expect_stripped:--expect-stripped os:windows-latest platform_name:Windows-x86_64 target:x86_64-pc-windows-msvc]) (push) Has been cancelled
I didn't mean to change this.
2023-09-10 15:16:02 -05:00
Dave Rolsky
d3cc976c26 Fix typo in README.md 2023-09-10 15:12:49 -05:00
aaronvg
42fe96a4c1 Add support for a "working-directory" parameter
This commit updates the tests to check that this works and also rewrites the
test script from Bash to Perl.

Co-authored-by: Dave Rolsky <autarch@urth.org>
2023-09-10 15:12:49 -05:00
Dave Rolsky
77a5caf54b Add release date for 0.0.8
Some checks failed
Lint / Check that code is lint clean using precious (push) Failing after 8s
Self-test / Test (map[can_test:false expect_cross:false expect_file:Aarch64.+Windows expect_stripped:false os:windows-latest platform_name:Windows-aarch64 target:aarch64-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:false expect_file:Mach-O.+arm64 expect_stripped:true os:macOS-latest platform_name:macOS-aarch64 target:aarch64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:true expect_file:x86-64.+FreeBSD expect_stripped:false os:ubuntu-20.04 platform_name:FreeBSD-x86_64 target:x86_64-unknown-freebsd]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:true expect_file:x86-64.+NetBSD expect_stripped:false os:ubuntu-20.04 platform_name:NetBSD-x86_64 target:x86_64-unknown-netbsd]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:80386.+Windows expect_stripped:true os:windows-latest platform_name:Windows-i686 target:i686-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:ELF.+80386 expect_stripped:true os:ubuntu-20.04 platform_name:Linux-i586 target:i586-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:ELF.+x86-64 expect_stripped:true os:ubuntu-20.04 platform_name:Linux-x86_64 target:x86_64-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:Mach-O.+x86_64 expect_stripped:true os:macOS-latest platform_name:macOS-x86_64 target:x86_64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:x86-64.+Windows expect_stripped:true os:windows-latest platform_name:Windows-x86_64 target:x86_64-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:32.+ARM expect_stripped:false os:ubuntu-20.04 platform_name:Linux-arm target:arm-unknown-linux-musleabi]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:32.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc target:powerpc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc64 target:powerpc64-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc64le target:powerpc64le-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+RISC-V expect_stripped:false os:ubuntu-20.04 platform_name:Linux-riscv64 target:riscv64gc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+S/390 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-s390x target:s390x-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS32.+mips- expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips target:mips-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS32.+mipsel- expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mipsel target:mipsel-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips64 target:mips64-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips64el target:mips64el-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:aarch64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-aarch64 target:aarch64-unknown-linux-musl]) (push) Has been cancelled
2023-07-22 11:32:39 -05:00
Dave Rolsky
7c7b8fbbff Add lint workflow for GH Actions 2023-07-22 11:31:06 -05:00
Dave Rolsky
ab89553767 Update precious config to line wrap all Markdown files 2023-07-22 11:28:43 -05:00
Dave Rolsky
5d15c12d99 Note that Swatinem/rust-cache just works with this action 2023-07-22 11:26:35 -05:00
Dave Rolsky
b1e766fe8f Add caching of the installed cross binary 2023-07-22 11:17:30 -05:00
Dave Rolsky
dd8fb2fac4 Fix tests to always test the commit that was just pushed 2023-07-22 11:14:46 -05:00
Dave Rolsky
ab3f022734 Remove anything related to installing cross on Windows
There are no targets on Windows that require cross so this is never getting
invoked.
2023-07-22 09:51:24 -05:00
Dave Rolsky
e41de97f0a Fix incorrect step name 2023-07-22 09:27:13 -05:00
Dave Rolsky
d788e00f15 Always pass "+toolchain" to cargo or cross
Some checks failed
Self-test / Test (map[can_test:false expect_cross:false expect_file:Aarch64.+Windows expect_stripped:false os:windows-latest platform_name:Windows-aarch64 target:aarch64-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:false expect_file:Mach-O.+arm64 expect_stripped:true os:macOS-latest platform_name:macOS-aarch64 target:aarch64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:true expect_file:x86-64.+FreeBSD expect_stripped:false os:ubuntu-20.04 platform_name:FreeBSD-x86_64 target:x86_64-unknown-freebsd]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:true expect_file:x86-64.+NetBSD expect_stripped:false os:ubuntu-20.04 platform_name:NetBSD-x86_64 target:x86_64-unknown-netbsd]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:80386.+Windows expect_stripped:true os:windows-latest platform_name:Windows-i686 target:i686-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:ELF.+80386 expect_stripped:true os:ubuntu-20.04 platform_name:Linux-i586 target:i586-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:ELF.+x86-64 expect_stripped:true os:ubuntu-20.04 platform_name:Linux-x86_64 target:x86_64-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:Mach-O.+x86_64 expect_stripped:true os:macOS-latest platform_name:macOS-x86_64 target:x86_64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:x86-64.+Windows expect_stripped:true os:windows-latest platform_name:Windows-x86_64 target:x86_64-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:32.+ARM expect_stripped:false os:ubuntu-20.04 platform_name:Linux-arm target:arm-unknown-linux-musleabi]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:32.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc target:powerpc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc64 target:powerpc64-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc64le target:powerpc64le-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+RISC-V expect_stripped:false os:ubuntu-20.04 platform_name:Linux-riscv64 target:riscv64gc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+S/390 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-s390x target:s390x-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS32.+mips- expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips target:mips-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS32.+mipsel- expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mipsel target:mipsel-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips64 target:mips64-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips64el target:mips64el-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:aarch64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-aarch64 target:aarch64-unknown-linux-musl]) (push) Has been cancelled
I don't think this was actually using the specified toolchain, at least not
when cross compiling.
2023-04-21 23:14:21 -05:00
Dave Rolsky
356ca41f7d Make strip script strip all binaries under target
Some checks failed
Self-test / Test (map[can_test:false expect_cross:false expect_file:Aarch64.+Windows expect_stripped:false os:windows-latest platform_name:Windows-aarch64 target:aarch64-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:false expect_file:Mach-O.+arm64 expect_stripped:true os:macOS-latest platform_name:macOS-aarch64 target:aarch64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:true expect_file:x86-64.+FreeBSD expect_stripped:false os:ubuntu-20.04 platform_name:FreeBSD-x86_64 target:x86_64-unknown-freebsd]) (push) Has been cancelled
Self-test / Test (map[can_test:false expect_cross:true expect_file:x86-64.+NetBSD expect_stripped:false os:ubuntu-20.04 platform_name:NetBSD-x86_64 target:x86_64-unknown-netbsd]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:80386.+Windows expect_stripped:true os:windows-latest platform_name:Windows-i686 target:i686-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:ELF.+80386 expect_stripped:true os:ubuntu-20.04 platform_name:Linux-i586 target:i586-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:ELF.+x86-64 expect_stripped:true os:ubuntu-20.04 platform_name:Linux-x86_64 target:x86_64-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:Mach-O.+x86_64 expect_stripped:true os:macOS-latest platform_name:macOS-x86_64 target:x86_64-apple-darwin]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:false expect_file:x86-64.+Windows expect_stripped:true os:windows-latest platform_name:Windows-x86_64 target:x86_64-pc-windows-msvc]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:32.+ARM expect_stripped:false os:ubuntu-20.04 platform_name:Linux-arm target:arm-unknown-linux-musleabi]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:32.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc target:powerpc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc64 target:powerpc64-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+PowerPC expect_stripped:false os:ubuntu-20.04 platform_name:Linux-powerpc64le target:powerpc64le-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+RISC-V expect_stripped:false os:ubuntu-20.04 platform_name:Linux-riscv64 target:riscv64gc-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:64.+S/390 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-s390x target:s390x-unknown-linux-gnu]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS32.+mips- expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips target:mips-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS32.+mipsel- expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mipsel target:mipsel-unknown-linux-musl]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips64 target:mips64-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:MIPS64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-mips64el target:mips64el-unknown-linux-muslabi64]) (push) Has been cancelled
Self-test / Test (map[can_test:true expect_cross:true expect_file:aarch64 expect_stripped:false os:ubuntu-20.04 platform_name:Linux-aarch64 target:aarch64-unknown-linux-musl]) (push) Has been cancelled
If there were both debug & release dirs it would only strip one binary, and if
the debug dir had no binary at all it would error, even if the release dir had
one.
2023-04-21 22:39:30 -05:00
22 changed files with 5418 additions and 167 deletions

25
.github/workflows/lint.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Lint
on: [push, pull_request]
env:
GITHUB_TOKEN: ${{ github.token }}
jobs:
lint:
name: Check that code is lint clean using precious
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Configure Git
run: |
git config --global user.email "jdoe@example.com"
git config --global user.name "J. Doe"
- name: Run install-dev-tools.sh
run: |
set -e
mkdir $HOME/bin
./dev/bin/install-dev-tools.sh
- name: Run precious
run: |
PATH=$PATH:$HOME/bin precious lint -a

View File

@@ -14,161 +14,160 @@ jobs:
- platform_name: FreeBSD-x86_64 - platform_name: FreeBSD-x86_64
os: ubuntu-20.04 os: ubuntu-20.04
target: x86_64-unknown-freebsd target: x86_64-unknown-freebsd
expect_cross: true expect_file_re: "x86-64.+FreeBSD"
expect_file: "x86-64.+FreeBSD" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: false can_test: false
- platform_name: Linux-x86_64 - platform_name: Linux-x86_64
os: ubuntu-20.04 os: ubuntu-20.04
target: x86_64-unknown-linux-musl target: x86_64-unknown-linux-musl
expect_cross: false expect_file_re: "ELF.+x86-64"
expect_file: "ELF.+x86-64" expect_cross: "--no-expect-cross"
expect_stripped: true expect_stripped: "--expect-stripped"
can_test: true can_test: true
- platform_name: Linux-aarch64 - platform_name: Linux-aarch64
os: ubuntu-20.04 os: ubuntu-20.04
target: aarch64-unknown-linux-musl target: aarch64-unknown-linux-musl
expect_cross: true expect_file_re: "aarch64"
expect_file: "aarch64" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-arm - platform_name: Linux-arm
os: ubuntu-20.04 os: ubuntu-20.04
target: arm-unknown-linux-musleabi target: arm-unknown-linux-musleabi
expect_cross: true expect_file_re: "32.+ARM"
expect_file: "32.+ARM" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-i586 - platform_name: Linux-i586
os: ubuntu-20.04 os: ubuntu-20.04
target: i586-unknown-linux-musl target: i586-unknown-linux-musl
expect_cross: false expect_file_re: "ELF.+80386"
expect_file: "ELF.+80386" expect_cross: "--no-expect-cross"
expect_stripped: true expect_stripped: "--expect-stripped"
can_test: true can_test: true
- platform_name: Linux-mips - platform_name: Linux-mips
os: ubuntu-20.04 os: ubuntu-20.04
target: mips-unknown-linux-musl target: mips-unknown-linux-musl
expect_cross: true expect_file_re: "MIPS32.+mips-"
expect_file: "MIPS32.+mips-" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-mipsel - platform_name: Linux-mipsel
os: ubuntu-20.04 os: ubuntu-20.04
target: mipsel-unknown-linux-musl target: mipsel-unknown-linux-musl
expect_cross: true expect_file_re: "MIPS32.+mipsel-"
expect_file: "MIPS32.+mipsel-" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-mips64 - platform_name: Linux-mips64
os: ubuntu-20.04 os: ubuntu-20.04
target: mips64-unknown-linux-muslabi64 target: mips64-unknown-linux-muslabi64
expect_cross: true expect_file_re: "MIPS64"
expect_file: "MIPS64" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-mips64el - platform_name: Linux-mips64el
os: ubuntu-20.04 os: ubuntu-20.04
target: mips64el-unknown-linux-muslabi64 target: mips64el-unknown-linux-muslabi64
expect_cross: true expect_file_re: "MIPS64"
expect_file: "MIPS64" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-powerpc - platform_name: Linux-powerpc
os: ubuntu-20.04 os: ubuntu-20.04
target: powerpc-unknown-linux-gnu target: powerpc-unknown-linux-gnu
expect_cross: true expect_file_re: "32.+PowerPC"
expect_file: "32.+PowerPC" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-powerpc64 - platform_name: Linux-powerpc64
os: ubuntu-20.04 os: ubuntu-20.04
target: powerpc64-unknown-linux-gnu target: powerpc64-unknown-linux-gnu
expect_cross: true expect_file_re: "64.+PowerPC"
expect_file: "64.+PowerPC" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-powerpc64le - platform_name: Linux-powerpc64le
os: ubuntu-20.04 os: ubuntu-20.04
target: powerpc64le-unknown-linux-gnu target: powerpc64le-unknown-linux-gnu
expect_cross: true expect_file_re: "64.+PowerPC"
expect_file: "64.+PowerPC" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-riscv64 - platform_name: Linux-riscv64
os: ubuntu-20.04 os: ubuntu-20.04
target: riscv64gc-unknown-linux-gnu target: riscv64gc-unknown-linux-gnu
expect_cross: true expect_file_re: "64.+RISC-V"
expect_file: "64.+RISC-V" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: Linux-s390x - platform_name: Linux-s390x
os: ubuntu-20.04 os: ubuntu-20.04
target: s390x-unknown-linux-gnu target: s390x-unknown-linux-gnu
expect_cross: true expect_file_re: "64.+S/390"
expect_file: "64.+S/390" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: true can_test: true
- platform_name: NetBSD-x86_64 - platform_name: NetBSD-x86_64
os: ubuntu-20.04 os: ubuntu-20.04
target: x86_64-unknown-netbsd target: x86_64-unknown-netbsd
expect_cross: true expect_file_re: "x86-64.+NetBSD"
expect_file: "x86-64.+NetBSD" expect_cross: "--expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: false can_test: false
- platform_name: Windows-aarch64 - platform_name: Windows-aarch64
os: windows-latest os: windows-latest
target: aarch64-pc-windows-msvc target: aarch64-pc-windows-msvc
expect_cross: false expect_file_re: "Aarch64.+Windows"
expect_file: "Aarch64.+Windows" expect_cross: "--no-expect-cross"
expect_stripped: false expect_stripped: "--no-expect-stripped"
can_test: false can_test: false
- platform_name: Windows-i686 - platform_name: Windows-i686
os: windows-latest os: windows-latest
target: i686-pc-windows-msvc target: i686-pc-windows-msvc
expect_cross: false expect_file_re: "80386.+Windows"
expect_file: "80386.+Windows" expect_cross: "--no-expect-cross"
expect_stripped: true expect_stripped: "--expect-stripped"
can_test: true can_test: true
- platform_name: Windows-x86_64 - platform_name: Windows-x86_64
os: windows-latest os: windows-latest
target: x86_64-pc-windows-msvc target: x86_64-pc-windows-msvc
expect_cross: false expect_file_re: "x86-64.+Windows"
expect_file: "x86-64.+Windows" expect_stripped: "--expect-stripped"
expect_stripped: true
can_test: true can_test: true
- platform_name: macOS-x86_64 - platform_name: macOS-x86_64
os: macOS-latest os: macOS-latest
target: x86_64-apple-darwin target: x86_64-apple-darwin
expect_cross: false expect_file_re: "Mach-O.+x86_64"
expect_file: "Mach-O.+x86_64" expect_cross: "--no-expect-cross"
expect_stripped: true expect_stripped: "--expect-stripped"
can_test: true can_test: true
- platform_name: macOS-aarch64 - platform_name: macOS-aarch64
os: macOS-latest os: macOS-latest
target: aarch64-apple-darwin target: aarch64-apple-darwin
expect_cross: false expect_file_re: "Mach-O.+arm64"
expect_file: "Mach-O.+arm64" expect_cross: "--no-expect-cross"
expect_stripped: true expect_stripped: "--expect-stripped"
can_test: false can_test: false
runs-on: ${{ matrix.platform.os }} runs-on: ${{ matrix.platform.os }}
@@ -181,27 +180,39 @@ jobs:
cp -a test-project/* . cp -a test-project/* .
rm -fr test-project rm -fr test-project
- name: Run both commands - name: Run both commands
uses: "houseabsolute/actions-rust-cross@v0" uses: ./
with: with:
command: both command: both
target: ${{ matrix.platform.target }} target: ${{ matrix.platform.target }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ matrix.platform.can_test }} if: ${{ matrix.platform.can_test }}
- name: Run test command - name: Run test command
uses: "houseabsolute/actions-rust-cross@v0" uses: ./
with: with:
command: test command: test
target: ${{ matrix.platform.target }} target: ${{ matrix.platform.target }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ matrix.platform.can_test }} if: ${{ matrix.platform.can_test }}
- name: Run build command - name: Run build command
uses: "houseabsolute/actions-rust-cross@v0" uses: ./
with: with:
command: build command: build
target: ${{ matrix.platform.target }} target: ${{ matrix.platform.target }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strip: true strip: true
- name: Run build command for subdir
uses: ./
with:
command: build
working-directory: subcrate
target: ${{ matrix.platform.target }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strip: true
- name: Check binary and cross on ${{ matrix.platform.platform_name }} - name: Check binary and cross on ${{ matrix.platform.platform_name }}
shell: bash shell: bash
run: | run: |
tests/check-binary.sh "${{ matrix.platform.target }}" "${{ matrix.platform.expect_cross }}" "${{ matrix.platform.expect_file }}" "${{ matrix.platform.expect_stripped }}" tests/check-binary.pl \
--target "${{ matrix.platform.target }}" \
--expect-file-re "${{ matrix.platform.expect_file_re }}" \
${{ matrix.platform.expect_cross }} \
${{ matrix.platform.expect_stripped }}

2
.gitignore vendored
View File

@@ -3,4 +3,4 @@
/package.json /package.json
.\#* .\#*
\#*\# \#*\#
test-project/target/** test-project/**/target/**

View File

@@ -2,17 +2,15 @@
## Our Pledge ## Our Pledge
In the interest of fostering an open and welcoming environment, we as In the interest of fostering an open and welcoming environment, we as contributors and maintainers
contributors and maintainers pledge to making participation in our project and pledge to making participation in our project and our community a harassment-free experience for
our community a harassment-free experience for everyone, regardless of age, everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level
body size, disability, ethnicity, gender identity and expression, level of of experience, education, socio-economic status, nationality, personal appearance, race, religion,
experience, education, socio-economic status, nationality, personal or sexual identity and orientation.
appearance, race, religion, or sexual identity and orientation.
## Our Standards ## Our Standards
Examples of behavior that contributes to creating a positive environment Examples of behavior that contributes to creating a positive environment include:
include:
- Using welcoming and inclusive language - Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences - Being respectful of differing viewpoints and experiences
@@ -22,53 +20,46 @@ include:
Examples of unacceptable behavior by participants include: Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or - The use of sexualized language or imagery and unwelcome sexual attention or advances
advances
- Trolling, insulting/derogatory comments, and personal or political attacks - Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment - Public or private harassment
- Publishing others' private information, such as a physical or electronic - Publishing others' private information, such as a physical or electronic address, without explicit
address, without explicit permission permission
- Other conduct which could reasonably be considered inappropriate in a - Other conduct which could reasonably be considered inappropriate in a professional setting
professional setting
## Our Responsibilities ## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable Project maintainers are responsible for clarifying the standards of acceptable behavior and are
behavior and are expected to take appropriate and fair corrective action in expected to take appropriate and fair corrective action in response to any instances of unacceptable
response to any instances of unacceptable behavior. behavior.
Project maintainers have the right and responsibility to remove, edit, or Project maintainers have the right and responsibility to remove, edit, or reject comments, commits,
reject comments, commits, code, wiki edits, issues, and other contributions code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or
that are not aligned to this Code of Conduct, or to ban temporarily or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate,
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful. threatening, offensive, or harmful.
## Scope ## Scope
This Code of Conduct applies both within project spaces and in public spaces This Code of Conduct applies both within project spaces and in public spaces when an individual is
when an individual is representing the project or its community. Examples of representing the project or its community. Examples of representing a project or community include
representing a project or community include using an official project e-mail using an official project e-mail address, posting via an official social media account, or acting as
address, posting via an official social media account, or acting as an an appointed representative at an online or offline event. Representation of a project may be
appointed representative at an online or offline event. Representation of a further defined and clarified by project maintainers.
project may be further defined and clarified by project maintainers.
## Enforcement ## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting
reported by contacting the project team at autarch@urth.org. All complaints the project team at autarch@urth.org. All complaints will be reviewed and investigated and will
will be reviewed and investigated and will result in a response that is deemed result in a response that is deemed necessary and appropriate to the circumstances. The project team
necessary and appropriate to the circumstances. The project team is obligated is obligated to maintain confidentiality with regard to the reporter of an incident. Further details
to maintain confidentiality with regard to the reporter of an incident. of specific enforcement policies may be posted separately.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good Project maintainers who do not follow or enforce the Code of Conduct in good faith may face
faith may face temporary or permanent repercussions as determined by other temporary or permanent repercussions as determined by other members of the project's leadership.
members of the project's leadership.
## Attribution ## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at
version 1.4, available at
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org [homepage]: https://www.contributor-covenant.org

View File

@@ -1,22 +1,44 @@
## 0.0.9 - 2023-09-10
- Added a `working-directory` parameter. By default this is the current directory (`.`) but you can
set it to something else to compile a single crate or workspace in a subdirectory of the repo.
This allows you to use this action with monorepos with multiple crates. Based on GH #7 by
@aaronvg.
## 0.0.8 - 2023-07-22
- For builds that need the `cross` binary, this binary is now cached. A cache hit saves about 20
seconds in my tests. Suggested by @timon-schelling. GH #4.
## 0.0.7 - 2023-04-21
- The toolchain argument was (probably) not being respected with cross builds, though it's hard to
be sure since none of the output from past CI runs I've looked at it includes the toolchain
version in the output. But now the toolchain version is explicitly passed to all `cargo` and
`cross` commands.
## 0.0.6 - 2023-04-21
- When the `strip` parameter was true, stripping binaries could fail if there were both
`target/*/debug` and `target/*/release` directories present and the `debug` directory didn't have
a binary. Now it will strip all binaries it finds under `target`.
## 0.0.5 - 2023-03-19 ## 0.0.5 - 2023-03-19
- Fix use of `dtolnay/rust-toolchain` action to allow passing a `toolchain` - Fix use of `dtolnay/rust-toolchain` action to allow passing a `toolchain` input.
input.
## 0.0.4 - 2023-03-19 ## 0.0.4 - 2023-03-19
- Added a new `toolchain` parameter to allow selecting a Rust toolchain other - Added a new `toolchain` parameter to allow selecting a Rust toolchain other than stable. This
than stable. This supports picking on of "stable", "beta", or "nightly". supports picking on of "stable", "beta", or "nightly".
- Fixed binary stripping to work in more situations. Previously it depended on - Fixed binary stripping to work in more situations. Previously it depended on a very specific setup
a very specific setup plus expected to be run in the context of the matrix I plus expected to be run in the context of the matrix I use for my own projects.
use for my own projects. - Fixed a reference to a matrix variable that should have referenced an input variable.
- Fixed a reference to a matrix variable that should have referenced an input
variable.
## 0.0.3 - 2023-03-17 ## 0.0.3 - 2023-03-17
- This action now supports running the `build` and `test` commands, or both, - This action now supports running the `build` and `test` commands, or both, with a new input
with a new input parameter, `command`. The default is `build`. parameter, `command`. The default is `build`.
## 0.0.2 - 2023-03-05 ## 0.0.2 - 2023-03-05

View File

@@ -55,14 +55,15 @@ jobs:
This action takes the following parameters: This action takes the following parameters:
| Key | Type | Required? | Description | | 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 fails with \*BSD targets, non-x86 Windows, and macOS ARM. | | `command` | string (one of `build`, `test`, or `both`) | no | The command(s) to run. The default is `build`. Running the `test` command will fails 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 listed by running `rustup target list`. |
| `toolchain` | string (one of `stable`, `beta`, or `nightly`) | no | The Rust toolchain version to install. The default is `stable` | | `working-directory` | string | no | The working directory in which to run the `cargo` or `cross` commands. Defaults to the current directory (`.`). |
| `GITHUB_TOKEN` | string | no | Defaults to the value of `${{ github.token }}`. | | `toolchain` | string (one of `stable`, `beta`, or `nightly`) | no | The Rust toolchain version to install. The default is `stable`. |
| `args` | string | no | A string-separated list of arguments to be passed to `cross build`, like `--release --locked`. | | `GITHUB_TOKEN` | string | no | Defaults to the value of `${{ github.token }}`. |
| `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. | | `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. |
## How it Works ## How it Works
@@ -83,3 +84,9 @@ 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 binary 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 possible for builds that are not done via `cross`. In addition, Windows builds for `aarch64` cannot
be stripped either. be stripped either.
## Caching Rust Compilation Output
You can use the [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache) action with this one
seemlessly, whether or not a specific build target needs `cross`. There is no special configuration
that you need for this. It just works.

View File

@@ -6,6 +6,9 @@ branding:
description: | description: |
Cross compile your Rust projects with cross (https://github.com/cross-rs/cross). Cross compile your Rust projects with cross (https://github.com/cross-rs/cross).
inputs: inputs:
working-directory:
description: The working directory for each step
default: "."
command: command:
description: | description: |
The commands to run (one of "build", "test", or "both"). The commands to run (one of "build", "test", or "both").
@@ -19,7 +22,7 @@ inputs:
default: stable default: stable
GITHUB_TOKEN: GITHUB_TOKEN:
description: | description: |
A GitHub token, available in the secrets.GITHUB_TOKEN context variable. A GitHub token, available in the secrets.GITHUB_TOKEN working-directory variable.
default: ${{ github.token }} default: ${{ github.token }}
args: args:
description: | description: |
@@ -39,53 +42,72 @@ runs:
id: determine-cross-compile id: determine-cross-compile
shell: bash shell: bash
run: set-cross-compile.sh ${{ inputs.target }} run: set-cross-compile.sh ${{ inputs.target }}
- name: Install toolchain if not cross-compiling - name: Install toolchain
uses: dtolnay/rust-toolchain@master uses: dtolnay/rust-toolchain@master
with: with:
targets: ${{ inputs.target }} targets: ${{ inputs.target }}
toolchain: ${{ inputs.toolchain }} toolchain: ${{ inputs.toolchain }}
if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'false' }} - name: Determine latest cross version
- name: Install cross if cross-compiling (*nix) id: determine-latest-cross-version
shell: bash shell: bash
run: install-cross-nix.sh run: determine-latest-cross-version.sh
if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'true' && runner.os != 'Windows' }}
env: env:
GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
- name: Install cross if cross-compiling (Windows) if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'true' }}
shell: powershell # We need to accesss this in both this YAML config and shell scripts. It
run: install-cross-windows.ps1 # doesn't seem like using ${{ env.RUNNER_TEMP }} works in the YAML config.
if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'true' && runner.os == 'Windows' }} - name: Set directory for installing cross
id: set-cross-dir
shell: bash
run: set-cross-dir.sh
if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'true' }}
- name: Cache cross
id: cache-cross
uses: actions/cache@v3
with:
path: ${{ steps.set-cross-dir.outputs.cross-dir }}/cross
key: ${{ runner.os }}-${{ steps.determine-latest-cross-version.outputs.cross-version }}
if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'true' }}
- name: Install cross if cross-compiling (*nix)
shell: bash
run: install-cross-nix.sh ${{ steps.set-cross-dir.outputs.cross-dir }}
if: ${{ steps.determine-cross-compile.outputs.needs-cross == 'true' && steps.cache-cross.outputs.cache-hit != 'true' }}
env: env:
GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
- name: Set build command - name: Set build command
id: set-build-command id: set-build-command
shell: bash shell: bash
run: set-build-command.sh run: set-build-command.sh ${{ steps.set-cross-dir.outputs.cross-dir }}
- name: Run tests (*nix) - name: Run tests (*nix)
working-directory: ${{ inputs.working-directory }}
shell: bash shell: bash
run: | run: |
${{ steps.set-build-command.outputs.build-command }} test ${{ inputs.args }} --target ${{ inputs.target }} ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} test ${{ inputs.args }} --target ${{ inputs.target }}
if: ${{ inputs.command != 'build' && runner.os != 'Windows' }} if: ${{ inputs.command != 'build' && runner.os != 'Windows' }}
# We want to run in Powershell on Windows to make sure we compile in a # We want to run in Powershell on Windows to make sure we compile in a
# native Windows environment. Some things won't compile properly under # native Windows environment. Some things won't compile properly under
# msys, notably OpenSSL, which is compiled locally when using the # msys, notably OpenSSL, which is compiled locally when using the
# `openssl` crate with the `vendored` feature. # `openssl` crate with the `vendored` feature.
- name: Run tests (Windows) - name: Run tests (Windows)
working-directory: ${{ inputs.working-directory }}
shell: powershell shell: powershell
run: | run: |
& ${{ steps.set-build-command.outputs.build-command }} test ${{ inputs.args }} --target ${{ inputs.target }} & ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} test ${{ inputs.args }} --target ${{ inputs.target }}
if: ${{ inputs.command != 'build' && runner.os == 'Windows' }} if: ${{ inputs.command != 'build' && runner.os == 'Windows' }}
- name: Build binary (*nix) - name: Build binary (*nix)
working-directory: ${{ inputs.working-directory }}
shell: bash shell: bash
run: | run: |
${{ steps.set-build-command.outputs.build-command }} build ${{ inputs.args }} --target ${{ inputs.target }} ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} build ${{ inputs.args }} --target ${{ inputs.target }}
if: ${{ inputs.command != 'test' && runner.os != 'Windows' }} if: ${{ inputs.command != 'test' && runner.os != 'Windows' }}
- name: Build binary (Windows) - name: Build binary (Windows)
working-directory: ${{ inputs.working-directory }}
shell: powershell shell: powershell
run: | run: |
& ${{ steps.set-build-command.outputs.build-command }} build ${{ inputs.args }} --target ${{ inputs.target }} & ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} build ${{ inputs.args }} --target ${{ inputs.target }}
if: ${{ inputs.command != 'test' && runner.os == 'Windows' }} if: ${{ inputs.command != 'test' && runner.os == 'Windows' }}
- name: Strip binary - name: Strip binary
working-directory: ${{ inputs.working-directory }}
shell: bash shell: bash
run: strip-binary.sh ${{ inputs.target }} run: strip-binary.sh ${{ inputs.target }}
# strip doesn't work with cross-arch binaries on Linux or Windows. # strip doesn't work with cross-arch binaries on Linux or Windows.

View File

@@ -0,0 +1,11 @@
set -e
set -x
set -o pipefail
JSON=$( curl \
--request GET \
--header "Authorization: Bearer $GITHUB_TOKEN" \
https://api.github.com/repos/cross-rs/cross/releases/latest )
VERSION=$( echo "$JSON" | jq -r ".tag_name")
echo "cross-version=$VERSION" >> $GITHUB_OUTPUT

View File

@@ -11,9 +11,12 @@ function install_tools () {
curl --silent --location \ curl --silent --location \
https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh | https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh |
sh sh
run "rustup component add clippy"
run "ubi --project houseabsolute/precious --in ~/bin" run "ubi --project houseabsolute/precious --in ~/bin"
run "ubi --project houseabsolute/omegasort --in ~/bin"
run "npm install prettier" run "npm install prettier"
run "curl -L https://cpanmin.us/ -o ~/bin/cpanm"
run "chmod 0755 ~/bin/cpanm"
run "~/bin/cpanm --sudo --notest Perl::Tidy"
} }
if [ "$1" == "-v" ]; then if [ "$1" == "-v" ]; then

View File

@@ -1,7 +1,9 @@
set -e set -e
set -x set -x
set -o pipefail
cd "$RUNNER_TEMP" CROSS_DIR="$1"
cd "$CROSS_DIR"
export TARGET=. export TARGET=.
curl --silent --location \ curl --silent --location \
https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh | https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh |

View File

@@ -1,4 +0,0 @@
cd $Env:RUNNER_TEMP
Invoke-WebRequest -URI 'https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.ps1' -UseBasicParsing | Invoke-Expression
.\ubi --project cross-rs/cross --in .

22
perltidyrc Normal file
View File

@@ -0,0 +1,22 @@
-l=78
-i=4
-ci=4
-se
-b
-bar
-boc
-vt=0
-vtc=0
-cti=0
-pt=1
-bt=1
-sbt=1
-bbt=1
-nolq
-npro
-nsfs
--blank-lines-before-packages=0
--opening-hash-brace-right
--no-outdent-long-comments
--iterations=2
-wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="

View File

@@ -2,9 +2,30 @@ exclude = [
"target", "target",
] ]
[commands.prettier] [commands.perltidy]
type = "both"
include = [ "**/*.{pl,pm,t,psgi}" ]
exclude = "tests/lib/**"
cmd = [ "perltidy", "--profile=$PRECIOUS_ROOT/perltidyrc" ]
lint_flags = [ "--assert-tidy", "--no-standard-output", "--outfile=/dev/null" ]
tidy_flags = [ "--backup-and-modify-in-place", "--backup-file-extension=/" ]
ok_exit_codes = 0
lint_failure_exit_codes = 2
ignore_stderr = "Begin Error Output Stream"
[commands.prettier-md]
type = "both" type = "both"
include = [ "**/*.md", "**/*.yml" ] include = [ "**/*.md" ]
cmd = [ "./node_modules/.bin/prettier", "--no-config", "--print-width", "100", "--prose-wrap", "always" ]
lint_flags = "--check"
tidy_flags = "--write"
ok_exit_codes = 0
lint_failure_exit_codes = 1
ignore_stderr = [ "Code style issues" ]
[commands.prettier-yml]
type = "both"
include = [ "**/*.yml" ]
cmd = [ "./node_modules/.bin/prettier", "--no-config" ] cmd = [ "./node_modules/.bin/prettier", "--no-config" ]
lint_flags = "--check" lint_flags = "--check"
tidy_flags = "--write" tidy_flags = "--write"

View File

@@ -1,8 +1,9 @@
set -e set -e
set -x set -x
if [ -f "$RUNNER_TEMP/cross" ]; then CROSS_DIR="$1"
echo "build-command=$RUNNER_TEMP/cross" >> $GITHUB_OUTPUT if [ -f "$CROSS_DIR/cross" ]; then
echo "build-command=$CROSS_DIR/cross" >> $GITHUB_OUTPUT
else else
echo "build-command=cargo" >> $GITHUB_OUTPUT echo "build-command=cargo" >> $GITHUB_OUTPUT
fi fi

4
set-cross-dir.sh Executable file
View File

@@ -0,0 +1,4 @@
set -e
set -x
echo "cross-dir=$RUNNER_TEMP" >> $GITHUB_OUTPUT

View File

@@ -2,32 +2,32 @@ set -e
set -x set -x
TARGET=$1 TARGET=$1
stripped=""
strip_binary () {
if [[ $( uname -s ) =~ "Darwin" ]]; then
EXE=$( find "$1" -maxdepth 1 -type f -perm +111 )
else
EXE=$( find "$1" -maxdepth 1 -type f -executable )
fi
if [ -z "$EXE" ]; then
echo "Could not find a binary to strip in $1"
else
strip "$EXE"
stripped="$EXE"
fi
}
DIR=""
for type in debug release; do for type in debug release; do
if [ -d "target/$TARGET/$type" ]; then if [ -d "target/$TARGET/$type" ]; then
DIR="target/$TARGET/$type" strip_binary "target/$TARGET/$type"
break
elif [ -d "target/$type" ]; then elif [ -d "target/$type" ]; then
DIR="target/$type" strip_binary "target/$type"
break
fi fi
done done
if [ -z "$DIR" ]; then if [ -z "$stripped" ]; then
echo "Could not find directory with binary in it under target/" echo "No binaries were stripped"
exit 1 exit 1
fi fi
if [[ $( uname -s ) =~ "Darwin" ]]; then
EXE=$( find "$DIR" -maxdepth 1 -type f -perm +111 )
else
EXE=$( find "$DIR" -maxdepth 1 -type f -executable )
fi
if [ -z "$EXE" ]; then
echo "Could not find a binary to strip in $DIR"
exit 2
fi
strip "$EXE"

7
test-project/subcrate/Cargo.lock generated Normal file
View File

@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "subcrate"
version = "0.1.0"

View File

@@ -0,0 +1,8 @@
[package]
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]

View File

@@ -0,0 +1,3 @@
fn main() {
println!("Hello, world (subcrate)!");
}

100
tests/check-binary.pl Executable file
View File

@@ -0,0 +1,100 @@
#!/usr/bin/env perl
use v5.30;
use strict;
use warnings;
no warnings 'experimental::signatures';
use feature 'signatures';
use autodie;
use FindBin qw( $Bin );
use File::Spec;
use lib File::Spec->catdir( $Bin, 'lib' );
use Getopt::Long;
use IPC::System::Simple qw( capturex );
use Path::Tiny qw( path );
use Test::More;
sub main {
my $target;
my $expect_cross;
my $expect_file_re;
my $expect_stripped;
GetOptions(
'target=s' => \$target,
'expect-file-re=s' => \$expect_file_re,
'expect-cross!' => \$expect_cross,
'expect-stripped!' => \$expect_stripped,
);
check_cross( path( $ENV{RUNNER_TEMP} ), $expect_cross );
for my $bin (
path( qw( . target ), $target, qw( debug test-project ) ),
path( qw( . subcrate target ), $target, qw( debug subcrate ) )
) {
check_binary( $bin, $expect_file_re, $expect_stripped );
}
done_testing();
}
sub check_cross ( $bin_dir, $expect_cross ) {
my $cross = $bin_dir->child('cross');
if ($expect_cross) {
ok( $cross->is_file && -x $cross, 'found `cross` in $PATH' );
}
else {
ok( !$cross->exists, 'did not find `cross` in $PATH' );
}
}
sub check_binary ( $bin, $expect_file_re, $expect_stripped ) {
ok( $bin->exists, "Binary at $bin exists" )
or return;
ok( $bin->is_file, "Binary at $bin is a file" )
or return;
ok( -x $bin, "Binary at $bin is executable" )
or return;
my $file = capturex( qw( file --brief ), $bin ) // q{};
chomp $file;
like(
$file, qr/$expect_file_re/,
"`file` output for $bin matches expected output"
);
# The file command on macOS doesn't report whether the binary is stripped
# or not.
return if $^O eq 'darwin';
if ($expect_stripped) {
unlike(
$file, qr/not stripped/,
"`file` does not report $bin as not stripped"
);
like( $file, qr/stripped/, "`file` reports $bin as stripped" );
}
else {
if ( $^O eq 'MSWin32' || $^O eq 'msys' ) {
# On Windows, unstripped binaries don't contain the word
# "stripped" at all.
unlike(
$file, qr/stripped/,
"`file` does not report $bin as stripped"
);
}
else {
like(
$file, qr/not stripped/,
"`file` reports $bin as not stripped"
);
}
}
}
main();

File diff suppressed because it is too large Load Diff

3880
tests/lib/Path/Tiny.pm Normal file

File diff suppressed because it is too large Load Diff