Generate ICU4X artifacts on tagging #1
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: | |
push: | |
tags: | |
- 'intl4x-v.*' | |
pull_request: # DO NOT SUBMIT | |
env: | |
cratename: icu_capi | |
icu_version: 75cb5b6d114f116894ec4448fe7b7a8f62909876 #set to [email protected] or a similar constraint at some point | |
jobs: | |
dart-libs: | |
name: "Build Dart binaries" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 | |
with: | |
repository: unicode-org/icu4x | |
ref: ${{ env.icu_version }} | |
- name: Install Rust toolchains | |
run: | | |
rustup toolchain install stable | |
- name: Show the selected Rust toolchain | |
run: rustup show | |
- uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d | |
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 | |
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: pub get | |
run: | | |
cd ffi/dart | |
dart --enable-experiment=native-assets pub get | |
cd ../.. | |
- name: Build Linux | |
if: matrix.os == 'ubuntu-latest' | |
run: | | |
mkdir bin | |
dart run ffi/dart/tool/build_libs.dart bin/android_arm android_arm | |
dart run ffi/dart/tool/build_libs.dart bin/android_arm64 android_arm64 | |
dart run ffi/dart/tool/build_libs.dart bin/android_ia32 android_ia32 | |
dart run ffi/dart/tool/build_libs.dart bin/android_x64 android_x64 | |
dart run ffi/dart/tool/build_libs.dart bin/linux_arm linux_arm | |
dart run ffi/dart/tool/build_libs.dart bin/linux_arm64 linux_arm64 | |
dart run ffi/dart/tool/build_libs.dart bin/linux_riscv64 linux_riscv64 | |
dart run ffi/dart/tool/build_libs.dart bin/linux_x64 linux_x64 | |
cargo build -p icu_datagen_dart --target aarch64-unknown-linux-gnu | |
cp target/aarch64-unknown-linux-gnu/icu_datagen_dart bin/linux_arm64-datagen | |
cargo build -p icu_datagen_dart --target riscv64gc-unknown-linux-gnu | |
cp target/riscv64gc-unknown-linux-gnu/icu_datagen_dart bin/linux_riscv64-datagen | |
cargo build -p icu_datagen_dart --target x86_64-unknown-linux-gnu | |
cp target/x86_64-unknown-linux-gnu/icu_datagen_dart bin/linux_x64-datagen | |
cargo run -p icu_datagen -- --locales full --keys all --out bin/full.postcard | |
- name: Build Mac | |
if: matrix.os == 'macos-latest' | |
run: | | |
mkdir bin | |
dart run ffi/dart/tool/build_libs.dart bin/ios_arm ios_arm | |
dart run ffi/dart/tool/build_libs.dart bin/ios_arm64 ios_arm64 | |
dart run ffi/dart/tool/build_libs.dart bin/ios_x64 ios_x64 | |
dart run ffi/dart/tool/build_libs.dart bin/macos_arm64 macos_arm64 | |
dart run ffi/dart/tool/build_libs.dart bin/macos_x64 macos_x64 | |
cargo build -p icu_datagen_dart --target aarch64-apple-darwin | |
cp target/aarch64-apple-darwin/icu_datagen_dart bin/macos_arm64-datagen | |
cargo build -p icu_datagen_dart --target x86_64-apple-darwin | |
cp target/x86_64-apple-darwin/icu_datagen_dart bin/macos_x64-datagen | |
- name: Build Windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
mkdir bin | |
dart run ffi/dart/tool/build_libs.dart bin/windows_arm64 windows_arm64 | |
dart run ffi/dart/tool/build_libs.dart bin/windows_ia32 windows_ia32 | |
dart run ffi/dart/tool/build_libs.dart bin/windows_x64 windows_x64 | |
cargo build -p icu_datagen_dart --target aarch64-pc-windows-msvc | |
cp target/aarch64-pc-windows-msvc/icu_datagen_dart bin/windows_arm64-datagen | |
cargo build -p icu_datagen_dart --target x86_64-pc-windows-msvc | |
cp target/x86_64-pc-windows-msvc/icu_datagen_dart bin/windows_x64-datagen | |
- name: Upload artifacts | |
uses: actions/upload-artifact@ef09cdac3e2d3e60d8ccadda691f4f1cec5035cb | |
with: | |
name: dart-${{matrix.os}}-libs | |
path: bin | |
release: | |
needs: dart-libs | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download binaries | |
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: Release | |
uses: softprops/action-gh-release@d99959edae48b5ffffd7b00da66dcdb0a33a52ee | |
with: | |
files: '**' | |
fail_on_unmatched_files: true | |
body: "Build artifacts for `package:intl4x`, based on ICU4X at ref ${{ env.icu_version }}" |