Fix artifact building workflows (#956) #121
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Generate artifacts for intl4x | |
permissions: | |
contents: write | |
on: | |
pull_request: | |
branches: [ main ] | |
paths: | |
- pkgs/intl4x/src/hook_helpers/hashes.dart | |
- .github/workflows/intl4x_artifacts.yml | |
push: | |
tags: | |
- 'intl4x-icu*' | |
schedule: | |
- cron: '0 0 * * 0' # weekly | |
workflow_dispatch: | |
jobs: | |
dart-libs: | |
name: Build Dart binaries | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
compiletype: [ dynamic, static ] | |
runs-on: ${{ matrix.os }} | |
env: | |
DATA: ${{ matrix.compiletype == 'dynamic' && ',compiled_data' || '' }} | |
steps: | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 | |
with: | |
submodules: true | |
- name: Install Rust toolchains | |
run: | | |
rustup toolchain install stable | |
rustup toolchain install nightly | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
- uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c | |
with: | |
sdk: dev | |
- name: Setup additional linkers | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
sudo apt-get install gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-riscv64-linux-gnu gcc-i686-linux-gnu | |
mkdir .cargo | |
echo "[target]" >> .cargo/config.toml | |
echo "aarch64-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang\"" >> .cargo/config.toml | |
echo "armv7-linux-androideabi.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi30-clang\"" >> .cargo/config.toml | |
echo "i686-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android30-clang\"" >> .cargo/config.toml | |
echo "x86_64-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android30-clang\"" >> .cargo/config.toml | |
echo "riscv64-linux-android.linker=\"$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/riscv64-linux-android35-clang\"" >> .cargo/config.toml | |
echo "aarch64-unknown-linux-gnu.linker=\"aarch64-linux-gnu-gcc\"" >> .cargo/config.toml | |
echo "armv7-unknown-linux-gnueabihf.linker=\"arm-linux-gnueabihf-gcc\"" >> .cargo/config.toml | |
echo "riscv64gc-unknown-linux-gnu.linker=\"riscv64-linux-gnu-gcc\"" >> .cargo/config.toml | |
- name: Build Linux | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu | |
(cd pkgs/intl4x && dart pub get) | |
mkdir submodules/icu4x/bin | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/android_arm_${{ matrix.compiletype }} --os android --architecture arm --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/android_arm64_${{ matrix.compiletype }} --os android --architecture arm64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/android_ia32_${{ matrix.compiletype }} --os android --architecture ia32 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/android_x64_${{ matrix.compiletype }} --os android --architecture x64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/linux_arm_${{ matrix.compiletype }} --os linux --architecture arm --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/linux_arm64_${{ matrix.compiletype }} --os linux --architecture arm64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/linux_riscv64_${{ matrix.compiletype }} --os linux --architecture riscv64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/linux_x64_${{ matrix.compiletype }} --os linux --architecture x64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
- name: Build Linux data | |
if: matrix.os == 'ubuntu-latest' && matrix.compiletype == 'static' | |
run: | | |
cd submodules/icu4x | |
cargo run -p icu_datagen -- --locales full --keys all --format blob --out bin/full.postcard | |
cd provider/datagen # avoid global feature resolution | |
rustup target add aarch64-unknown-linux-gnu | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target aarch64-unknown-linux-gnu | |
rustup target add riscv64gc-unknown-linux-gnu | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target riscv64gc-unknown-linux-gnu | |
rustup target add x86_64-unknown-linux-gnu | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target x86_64-unknown-linux-gnu | |
cd ../.. | |
cp target/aarch64-unknown-linux-gnu/release/icu4x-datagen bin/linux_arm64-datagen | |
cp target/riscv64gc-unknown-linux-gnu/release/icu4x-datagen bin/linux_riscv64-datagen | |
cp target/x86_64-unknown-linux-gnu/release/icu4x-datagen bin/linux_x64-datagen | |
- name: Build Mac | |
if: matrix.os == 'macos-latest' | |
run: | | |
rustup component add rust-src --toolchain nightly-aarch64-apple-darwin | |
(cd pkgs/intl4x && dart pub get) | |
mkdir submodules/icu4x/bin | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/ios_arm64_${{ matrix.compiletype }} --os ios --architecture arm64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/ios_x64_${{ matrix.compiletype }} --os ios --architecture x64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/macos_arm64_${{ matrix.compiletype }} --os macos --architecture arm64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/macos_x64_${{ matrix.compiletype }} --os macos --architecture x64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
- name: Build Mac data | |
if: matrix.os == 'macos-latest' && matrix.compiletype == 'static' | |
run: | | |
cd submodules/icu4x/provider/datagen # avoid global feature resolution | |
rustup target add aarch64-apple-darwin | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target aarch64-apple-darwin | |
rustup target add x86_64-apple-darwin | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target x86_64-apple-darwin | |
cd ../.. | |
cp target/aarch64-apple-darwin/release/icu4x-datagen bin/macos_arm64-datagen | |
cp target/x86_64-apple-darwin/release/icu4x-datagen bin/macos_x64-datagen | |
- name: Build Windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
rustup component add rust-src --toolchain nightly-x86_64-pc-windows-msvc | |
pushd pkgs/intl4x | |
dart pub get | |
popd | |
mkdir submodules/icu4x/bin | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/windows_arm64_${{ matrix.compiletype }} --os windows --architecture arm64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/windows_ia32_${{ matrix.compiletype }} --os windows --architecture ia32 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
dart pkgs/intl4x/tool/build_libs.g.dart --working_directory submodules/icu4x --file submodules/icu4x/bin/windows_x64_${{ matrix.compiletype }} --os windows --architecture x64 --compile_type ${{ matrix.compiletype }} --cargo_features icu_collator,icu_datetime,icu_list,icu_decimal,icu_plurals,experimental_components${{ env.DATA }} | |
- name: Build Windows data | |
if: matrix.os == 'windows-latest' && matrix.compiletype == 'static' | |
run: | | |
cd submodules/icu4x/provider/datagen # avoid global feature resolution | |
rustup target add aarch64-pc-windows-msvc | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target aarch64-pc-windows-msvc | |
rustup target add x86_64-pc-windows-msvc | |
cargo build --release --bin icu4x-datagen --no-default-features --features bin,blob_exporter,blob_input,rayon,experimental_components --target x86_64-pc-windows-msvc | |
cd ../.. | |
cp target/aarch64-pc-windows-msvc/release/icu4x-datagen.exe bin/windows_arm64-datagen.exe | |
cp target/x86_64-pc-windows-msvc/release/icu4x-datagen.exe bin/windows_x64-datagen.exe | |
- name: Upload artifacts | |
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 | |
with: | |
name: dart-${{matrix.os}}-${{ matrix.compiletype }}-libs | |
path: submodules/icu4x/bin | |
check_hashes: | |
needs: dart-libs | |
runs-on: ubuntu-latest | |
env: | |
ICU4X_BUILD_MODE: local | |
steps: | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 | |
with: | |
submodules: true | |
- name: Download binaries | |
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 | |
with: | |
merge-multiple: true | |
- name: Display structure of downloaded files | |
run: ls -R | |
- uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c | |
with: | |
sdk: dev | |
- name: Check hashes of released artifacts | |
run: | | |
cd pkgs/intl4x | |
dart pub get | |
dart --enable-experiment=native-assets tool/regenerate_hashes.dart | |
git diff --exit-code | |
release: | |
needs: dart-libs | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' | |
steps: | |
- name: Download binaries | |
uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: Release | |
uses: softprops/action-gh-release@c95fe1489396fe8a9eb87c0abf8aa5b2ef267fda | |
with: | |
files: '**' | |
fail_on_unmatched_files: true | |
body: "Build artifacts for `package:intl4x`, based on ICU4X at ref ${{ github.ref_name }}" |