Skip to content

Commit 359f198

Browse files
Move artifacts build from Dart to a bash script (#7319)
I broke the Dart script 🙄
1 parent ed5898e commit 359f198

File tree

5 files changed

+68
-49
lines changed

5 files changed

+68
-49
lines changed

.github/workflows/artifacts-build.yml

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ jobs:
648648
runs-on: ${{ matrix.os }}
649649
env:
650650
FEATURES: ${{ matrix.include_data == true && 'default_components,experimental,buffer_provider,compiled_data' || 'default_components,experimental,buffer_provider' }}
651-
FILENAME_SUFFIX: ${{ matrix.compiletype == 'static' && matrix.include_data == true && '-with_data' || '' }}
651+
FILENAME_SUFFIX: ${{ matrix.include_data == true && '-with_data' || '' }}
652652

653653
steps:
654654
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
@@ -661,13 +661,10 @@ jobs:
661661
- name: Show the selected Rust toolchain
662662
run: rustup show
663663

664-
- uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
665-
with:
666-
sdk: main
667-
668664
- name: Setup additional linkers
669665
if: matrix.os == 'ubuntu-latest'
670666
run: |
667+
sudo apt-get update
671668
sudo apt-get install gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-riscv64-linux-gnu gcc-i686-linux-gnu
672669
mkdir -p .cargo
673670
echo "[target]" >> .cargo/config.toml
@@ -683,18 +680,16 @@ jobs:
683680
- name: Build Linux
684681
if: matrix.os == 'ubuntu-latest'
685682
run: |
686-
(cd ffi/dart && dart pub get)
687-
688683
mkdir bin
689-
690-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-armv7-linux-androideabi --target armv7-linux-androideabi --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
691-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-linux-android --target aarch64-linux-android --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
692-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-i686-linux-android --target i686-linux-android --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
693-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-linux-android --target x86_64-linux-android --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
694-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-armv7-unknown-linux-gnueabihf --target armv7-unknown-linux-gnueabihf --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
695-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-unknown-linux-gnu --target aarch64-unknown-linux-gnu --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
696-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-riscv64gc-unknown-linux-gnu --target riscv64gc-unknown-linux-gnu --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
697-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-unknown-linux-gnu --target x86_64-unknown-linux-gnu --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
684+
685+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--armv7-linux-androideabi" TARGET="armv7-linux-androideabi" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
686+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--aarch64-linux-android" TARGET="aarch64-linux-android" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
687+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--i686-linux-android" TARGET="i686-linux-android" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
688+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--x86_64-linux-android" TARGET="x86_64-linux-android" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
689+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--armv7-unknown-linux-gnueabihf" TARGET="armv7-unknown-linux-gnueabihf" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
690+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--aarch64-unknown-linux-gnu" TARGET="aarch64-unknown-linux-gnu" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
691+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--riscv64gc-unknown-linux-gnu" TARGET="riscv64gc-unknown-linux-gnu" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
692+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}--x86_64-unknown-linux-gnu" TARGET="x86_64-unknown-linux-gnu" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
698693
699694
- name: Build Linux data
700695
if: matrix.os == 'ubuntu-latest' && matrix.compiletype == 'static' && matrix.include_data == false
@@ -715,14 +710,12 @@ jobs:
715710
- name: Build Mac
716711
if: matrix.os == 'macos-latest'
717712
run: |
718-
(cd ffi/dart && dart pub get)
719-
720713
mkdir bin
721714
722-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-apple-ios --target aarch64-apple-ios --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
723-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-apple-ios --target x86_64-apple-ios --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
724-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-apple-darwin --target aarch64-apple-darwin --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
725-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-apple-darwin --target x86_64-apple-darwin --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
715+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-apple-ios" TARGET="aarch64-apple-ios" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
716+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-apple-ios" TARGET="x86_64-apple-ios" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
717+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-apple-darwin" TARGET="aarch64-apple-darwin" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
718+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-apple-darwin" TARGET="x86_64-apple-darwin" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
726719
727720
- name: Build Mac data
728721
if: matrix.os == 'macos-latest' && matrix.compiletype == 'static' && matrix.include_data == false
@@ -741,20 +734,15 @@ jobs:
741734
742735
- name: Build Windows
743736
if: matrix.os == 'windows-latest'
737+
shell: bash
744738
run: |
745-
pushd ffi/dart
746-
dart pub get
747-
popd
748-
749739
mkdir bin
750740
751-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-pc-windows-msvc --target aarch64-pc-windows-msvc --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
752-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-i686-pc-windows-msvc --target i686-pc-windows-msvc --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
753-
dart ffi/dart/lib/src/hook_helpers/build_libs.dart --working_directory . --file bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-pc-windows-msvc --target x86_64-pc-windows-msvc --compile_type ${{ matrix.compiletype }} --cargo_features ${{ env.FEATURES }}
741+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-aarch64-pc-windows-msvc" TARGET="aarch64-pc-windows-msvc" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
742+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-i686-pc-windows-msvc" TARGET="i686-pc-windows-msvc" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
743+
OUT="bin/icu4x-2-${{ matrix.compiletype }}${{ env.FILENAME_SUFFIX }}-x86_64-pc-windows-msvc" TARGET="x86_64-pc-windows-msvc" TYPE="${{ matrix.compiletype }}" bash ffi/capi/build.sh
754744
755-
DEL bin\*.dll.exp
756-
DEL bin\*.dll.lib
757-
DEL bin\*.pdb
745+
rm -f bin/*{.dll.exp,.dll.lib,.pdb}
758746
759747
- name: Build Windows data
760748
if: matrix.os == 'windows-latest' && matrix.compiletype == 'static' && matrix.include_data == false

.github/workflows/build-test.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,10 @@ jobs:
341341

342342
# Actual job
343343
- name: Run `cargo make ci-job-test-dart`
344-
run: cargo make ci-job-test-dart
344+
shell: bash
345+
run: |
346+
export PATH=$PATH:/c/Program\ Files/Git/bin # make bash available on Windows
347+
cargo make ci-job-test-dart
345348
346349
- name: Run `cargo make ci-job-test-dart` in local mode
347350
run: |

ffi/capi/build.sh

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
NIGHTLY="${PINNED_CI_NIGHTLY:=nightly-2025-09-27}"
2+
3+
case $TARGET in
4+
"riscv64-linux-android" | "riscv64gc-unknown-linux-gnu" | "wasm32-unknown-unknown")
5+
NO_STD="1" ;;
6+
*)
7+
NO_STD="0" ;;
8+
esac
9+
10+
if [[ "$TYPE" = "static" ]] || [[ $NO_STD == 1 ]]; then
11+
rustup toolchain install --no-self-update $NIGHTLY --component rust-src
12+
rustup target add $TARGET --toolchain $NIGHTLY
13+
else
14+
rustup target add $TARGET
15+
fi
16+
17+
if [[ $NO_STD == 1 ]]; then
18+
RUSTFLAGS="-Zunstable-options -Cpanic=immediate-abort $RUSTFLAGS"
19+
fi
20+
21+
cargo \
22+
$( ([[ $TYPE == "static" ]] || [[ $NO_STD == 1 ]]) && echo "+$NIGHTLY" ) \
23+
"rustc" \
24+
"--manifest-path=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )/Cargo.toml" \
25+
"--crate-type=$( [[ "$TYPE" == "static" ]] && echo "staticlib" || echo "cdylib" )" \
26+
"--release" \
27+
"--config=profile.release.panic=\"abort\"" \
28+
"--config=profile.release.codegen-units=1" \
29+
"--no-default-features" \
30+
"--features=$( [[ $NO_STD == 1 ]] && echo "libc_alloc,looping_panic_handler" || echo "simple_logger"),$FEATURES" \
31+
$( [[ $NO_STD = 1 ]] && echo "-Zbuild-std=core,alloc") \
32+
$( ( [[ $TYPE = "static" ]] || [[ $NO_STD == 1 ]] ) && echo "-Zbuild-std=std,panic_abort" ) \
33+
"--target=$TARGET" \
34+
"--" \
35+
"--emit" "link=$OUT"

ffi/dart/hook/build.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ final class CheckoutMode extends BuildMode {
207207
final buildStatic = input.config.buildStatic;
208208
final workingDirectory = Directory.fromUri(checkoutPath!);
209209

210+
// TODO: use build.sh
211+
210212
final isNoStd = _isNoStdTarget(rustTarget);
211213

212214
final nightly =

ffi/npm/Makefile

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,18 @@
55
.DEFAULT_GOAL := build
66
FORCE:
77

8-
PINNED_CI_NIGHTLY ?= "nightly-2025-09-27"
98
FEATURES ?= "compiled_data,buffer_provider,default_components,experimental,logging"
109

1110
# 100 KiB, working around a bug in older rustc
1211
# https://github.com/unicode-org/icu4x/issues/2753
1312
WASM_STACK_SIZE := 100000
1413

15-
../../target/wasm32-unknown-unknown/release/icu_capi.wasm: FORCE
16-
rustup toolchain install ${PINNED_CI_NIGHTLY}
17-
rustup component add rust-src --toolchain ${PINNED_CI_NIGHTLY}
18-
RUSTFLAGS="-Zunstable-options -Cpanic=immediate-abort -Copt-level=s -C link-args=-zstack-size=${WASM_STACK_SIZE} -Clto -Cembed-bitcode -Zwasm-c-abi=spec" \
19-
cargo +${PINNED_CI_NIGHTLY} rustc \
20-
-Z build-std=std,panic_abort \
21-
--target wasm32-unknown-unknown \
22-
--release \
23-
-p icu_capi \
24-
--crate-type cdylib \
25-
--no-default-features \
26-
--features ${FEATURES}
27-
28-
icu_capi.wasm: ../../target/wasm32-unknown-unknown/release/icu_capi.wasm
29-
cp ../../target/wasm32-unknown-unknown/release/icu_capi.wasm icu_capi.wasm
14+
icu_capi.wasm: FORCE
15+
RUSTFLAGS="-Copt-level=s -Clink-args=-zstack-size=${WASM_STACK_SIZE} -Zwasm-c-abi=spec" \
16+
TARGET="wasm32-unknown-unknown" \
17+
TYPE="dynamic" \
18+
OUT="$(realpath .)/icu_capi.wasm" \
19+
FEATURES=${FEATURES} \
20+
bash ../capi/build.sh
3021

3122
build: icu_capi.wasm

0 commit comments

Comments
 (0)