From 23dc09ec14b8da04e1c0e5daf28c2b23871e8b10 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Fri, 1 Jul 2022 13:25:33 -0400 Subject: [PATCH] feat: linux aarch64 build (#15) --- .github/workflows/ci.yml | 23 ++++++++++++++++++++++- scripts/create_plugin_file.ts | 1 + src/handler.rs | 3 +-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a96360c..2733407 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ jobs: outputs: LINUX_X86_64_ZIP_CHECKSUM: ${{steps.linux_x86_64_pre_release.outputs.ZIP_CHECKSUM}} + LINUX_AARCH64_ZIP_CHECKSUM: ${{steps.linux_aarch64_pre_release.outputs.ZIP_CHECKSUM}} MAC_X86_64_ZIP_CHECKSUM: ${{steps.mac_x86_64_pre_release.outputs.ZIP_CHECKSUM}} MAC_AARCH64_ZIP_CHECKSUM: ${{steps.mac_aarch64_pre_release.outputs.ZIP_CHECKSUM}} WINDOWS_X86_64_ZIP_CHECKSUM: ${{steps.windows_x86_64_pre_release.outputs.ZIP_CHECKSUM}} @@ -48,6 +49,13 @@ jobs: - name: Build release if: matrix.config.kind == 'test_release' run: cargo build --release --all-targets --locked --verbose + - name: Build release (Linux aarch64) + if: startsWith(matrix.config.os, 'ubuntu') && matrix.config.kind == 'test_release' + run: | + sudo apt-get install -y gcc-aarch64-linux-gnu + rustup target add aarch64-unknown-linux-gnu + export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc + cargo build --locked --all-features --release --target aarch64-unknown-linux-gnu - name: Build release (Mac aarch64) if: startsWith(matrix.config.os, 'macOS') && matrix.config.kind == 'test_release' run: | @@ -71,6 +79,14 @@ jobs: cd target/release zip -r dprint-plugin-exec-x86_64-unknown-linux-gnu.zip dprint-plugin-exec echo "::set-output name=ZIP_CHECKSUM::$(shasum -a 256 dprint-plugin-exec-x86_64-unknown-linux-gnu.zip | awk '{print $1}')" + - name: Pre-release (Linux aarch64) + id: linux_aarch64_pre_release + if: startsWith(matrix.config.os, 'ubuntu') && matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/') + run: | + cd target/aarch64-unknown-linux-gnu/release + zip -r dprint-plugin-exec-aarch64-unknown-linux-gnu.zip dprint-plugin-exec + echo "::set-output name=ZIP_CHECKSUM::$(shasum -a 256 dprint-plugin-exec-aarch64-unknown-linux-gnu.zip | awk '{print $1}')" + mv dprint-plugin-exec-aarch64-unknown-linux-gnu.zip ../../release - name: Pre-release (Mac) id: mac_x86_64_pre_release if: startsWith(matrix.config.os, 'macOS') && matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/') @@ -100,7 +116,9 @@ jobs: if: startsWith(matrix.config.os, 'ubuntu') && matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/') with: name: linux-artifacts - path: target/release/dprint-plugin-exec-x86_64-unknown-linux-gnu.zip + path: | + target/release/dprint-plugin-exec-x86_64-unknown-linux-gnu.zip + target/release/dprint-plugin-exec-aarch64-unknown-linux-gnu.zip - name: Upload Artifacts (Mac) uses: actions/upload-artifact@v2 if: startsWith(matrix.config.os, 'macOS') && matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/') @@ -134,6 +152,7 @@ jobs: - name: Move downloaded artifacts run: | mv linux-artifacts/dprint-plugin-exec-x86_64-unknown-linux-gnu.zip . + mv linux-artifacts/dprint-plugin-exec-aarch64-unknown-linux-gnu.zip . mv mac-artifacts/dprint-plugin-exec-x86_64-apple-darwin.zip . mv mac-artifacts/dprint-plugin-exec-aarch64-apple-darwin.zip . mv windows-artifacts/dprint-plugin-exec-x86_64-pc-windows-msvc.zip . @@ -141,6 +160,7 @@ jobs: - name: Output checksums run: | echo "Linux x86_64 zip: ${{needs.build.outputs.LINUX_X86_64_ZIP_CHECKSUM}}" + echo "Linux aarch64 zip: ${{needs.build.outputs.LINUX_AARCH64_ZIP_CHECKSUM}}" echo "Mac x86_64 zip: ${{needs.build.outputs.MAC_X86_64_ZIP_CHECKSUM}}" echo "Mac aarch64 zip: ${{needs.build.outputs.MAC_AARCH64_ZIP_CHECKSUM}}" echo "Windows x86_64 zip: ${{needs.build.outputs.WINDOWS_X86_64_ZIP_CHECKSUM}}" @@ -169,6 +189,7 @@ jobs: dprint-plugin-exec-x86_64-apple-darwin.zip dprint-plugin-exec-aarch64-apple-darwin.zip dprint-plugin-exec-x86_64-unknown-linux-gnu.zip + dprint-plugin-exec-aarch64-unknown-linux-gnu.zip dprint-plugin-exec-x86_64-pc-windows-msvc.zip plugin.json deployment/schema.json diff --git a/scripts/create_plugin_file.ts b/scripts/create_plugin_file.ts index 276ff15..a46ea36 100644 --- a/scripts/create_plugin_file.ts +++ b/scripts/create_plugin_file.ts @@ -11,6 +11,7 @@ await processPlugin.createDprintOrgProcessPlugin({ "darwin-aarch64", "darwin-x86_64", "linux-x86_64", + "linux-aarch64", "windows-x86_64", ], isTest: Deno.args.some(a => a == "--test"), diff --git a/src/handler.rs b/src/handler.rs index fb052ca..bc70839 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -146,8 +146,7 @@ pub async fn format_text( .ok_or_else(|| anyhow!("Cannot open formatter stdin"))? .write_all(file_text.as_bytes()) .await - .map_err(|err| anyhow!("Cannot write into formatter stdin. {}", err)) - .unwrap(); + .map_err(|err| anyhow!("Cannot write into formatter stdin. {}", err))?; } // Ensure the child process is spawned in the runtime so it can