diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e29e969..3c35154 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,6 +5,9 @@ on: branches: [ main ] pull_request: branches: [ main ] + +env: + ICU_SOURCE_ZIP_URL: https://github.com/unicode-org/icu/archive/refs/tags/release-77-1.zip jobs: build_unoicu: @@ -33,8 +36,6 @@ jobs: - uses: actions/checkout@v2 - name: Build icudt.dat - env: - ICU_SOURCE_ZIP_URL: https://github.com/unicode-org/icu/archive/refs/tags/release-77-1.zip run: | pushd src/cldr_data docker build --build-arg ICU_SOURCE_ZIP_URL=${ICU_SOURCE_ZIP_URL} --output type=local,dest=. . @@ -46,8 +47,64 @@ jobs: name: icudt.dat path: ./src/cldr_data/icudt.dat + build_libicu_darwin: + strategy: + matrix: + arch: [ 'x86_64','arm64' ] + runs-on: ${{ matrix.arch == 'x86_64' && 'macos-15-intel' || 'macos-15' }} + steps: + - uses: actions/checkout@v2 + + - name: Build icudt.dat + run: | + curl -L -o icu.zip ${ICU_SOURCE_ZIP_URL} + mkdir icu + unzip -d icu icu.zip + export ICU_DATA_FILTER_FILE="$PWD/src/cldr_data/filters_macosios.json" + pushd icu/$(ls icu)/icu4c/source + ./runConfigureICU macOS + make -j $(sysctl -n hw.physicalcpu) + popd + mkdir artifacts + cp icu/$(ls icu)/icu4c/source/lib/libicuuc.dylib icu/$(ls icu)/icu4c/source/lib/libicudata.dylib artifacts + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: libicu-darwin-${{ matrix.arch }} + path: ./artifacts + + build_libicu_darwin_universal: + needs: [build_libicu_darwin] + runs-on: 'macos-15' + steps: + - name: Merge libicu binaries + uses: actions/upload-artifact/merge@v4 + with: + name: libicu-darwin-merged + pattern: 'libicu-darwin-*' + separate-directories: true + + - name: Download merged libicu binaries + uses: actions/download-artifact@v4 + with: + name: libicu-darwin-merged + path: ./libicu-darwin-merged + + - name: Create universal libicu binaries + run: | + mkdir libicu_darwin_universal + lipo -create libicu-darwin-merged/**/libicuuc.dylib -output libicu_darwin_universal/libicuuc.dylib + lipo -create libicu-darwin-merged/**/libicudata.dylib -output libicu_darwin_universal/libicudata.dylib + + - name: Upload universal libicu binaries + uses: actions/upload-artifact@v4 + with: + name: libicu_darwin_universal + path: ./libicu_darwin_universal/* + package: - needs: [build_unoicu, build_icudt] + needs: [build_unoicu, build_icudt, build_libicu_darwin_universal] runs-on: windows-latest steps: @@ -55,19 +112,45 @@ jobs: with: fetch-depth: 0 - - name: Merge artifacts + - name: Download universal libicu binaries + uses: actions/download-artifact@v4 + with: + name: libicu_darwin_universal + path: . + + - name: List files + run: | + Get-ChildItem -Recurse . + + - name: Move binaries to correct locations + shell: bash + run: | + mkdir nuget/uno.icu-macos/libicu + mv {libicuuc,libicudata}.dylib ./nuget/uno.icu-macos/libicu + + - name: List files + run: | + Get-ChildItem -Recurse . + + - name: Merge unoicu.a artifacts uses: actions/upload-artifact/merge@v4 with: - name: merged-artifacts - pattern: '*' + name: unoicu-merged + pattern: 'unoicu-*' separate-directories: true - - name: Download merged artifacts + - name: Download merged unoicu.a artifacts uses: actions/download-artifact@v4 with: - name: merged-artifacts + name: unoicu-merged path: ./merged-artifacts + - name: Download icudt.dat + uses: actions/download-artifact@v4 + with: + name: icudt.dat + path: ./merged-artifacts/icudt.dat + - uses: dotnet/nbgv@f088059084cb5d872e9d1a994433ca6440c2bf72 # v0.4.2 id: nbgv with: @@ -81,14 +164,14 @@ jobs: - name: Move downloaded artifacts to correct locations shell: bash run: | - mv ./merged-artifacts/icudt.dat/icudt.dat ./nuget/build + mv ./merged-artifacts/icudt.dat/icudt.dat ./nuget/uno.icu-wasm/build - mkdir -p ./nuget/buildTransitive/native/unoicu.a + mkdir -p ./nuget/uno.icu-wasm/buildTransitive/native/unoicu.a pushd merged-artifacts for dir in unoicu-*; do new_name="${dir#unoicu-}" - mkdir -p ../nuget/buildTransitive/native/unoicu.a/"$new_name"/st - cp -r "$dir"/unoicu.a ../nuget/buildTransitive/native/unoicu.a/"$new_name"/st/unoicu.a + mkdir -p ../nuget/uno.icu-wasm/buildTransitive/native/unoicu.a/"$new_name"/st + cp -r "$dir"/unoicu.a ../nuget/uno.icu-wasm/buildTransitive/native/unoicu.a/"$new_name"/st/unoicu.a done popd @@ -104,7 +187,8 @@ jobs: - name: Build nuget run: | pushd nuget - .\nuget.exe pack uno.icu-wasm.nuspec -version ${{ steps.nbgv.outputs.SemVer2 }} + .\nuget.exe pack uno.icu-wasm/uno.icu-wasm.nuspec -version ${{ steps.nbgv.outputs.SemVer2 }} + .\nuget.exe pack uno.icu-macos/uno.icu-macos.nuspec -version ${{ steps.nbgv.outputs.SemVer2 }} popd - uses: actions/upload-artifact@v4 @@ -152,6 +236,10 @@ jobs: tenant-id: ${{ secrets.SIGN_AZURE_TENANT_ID }} subscription-id: ${{ secrets.SIGN_AZURE_SUBSCRIPTION_ID }} + - name: List files + run: | + Get-ChildItem -Recurse . + # Run the signing command - name: Sign artifacts shell: pwsh diff --git a/nuget/buildTransitive/Uno.icu-wasm.targets b/nuget/buildTransitive/Uno.icu-wasm.targets deleted file mode 100644 index dd200d1..0000000 --- a/nuget/buildTransitive/Uno.icu-wasm.targets +++ /dev/null @@ -1,11 +0,0 @@ - - - - - $(UnoFeatures.ToLowerInvariant()) - - - - - - \ No newline at end of file diff --git a/nuget/uno.icu-macos/uno.icu-macos.nuspec b/nuget/uno.icu-macos/uno.icu-macos.nuspec new file mode 100644 index 0000000..3bde256 --- /dev/null +++ b/nuget/uno.icu-macos/uno.icu-macos.nuspec @@ -0,0 +1,20 @@ + + + + Uno.icu-macos + 0.0.1 + Uno ICU for MacOS + Uno Platform + unoplatform + false + https://github.com/unoplatform/uno.icu + https://nv-assets.azurewebsites.net/logos/uno.png + The International Components for Unicode for macOS + Copyright (C) 2015-2025 Uno Platform inc. - all rights reserved + + + + + + + \ No newline at end of file diff --git a/nuget/build/Uno.icu-wasm.targets b/nuget/uno.icu-wasm/build/Uno.icu-wasm.targets similarity index 73% rename from nuget/build/Uno.icu-wasm.targets rename to nuget/uno.icu-wasm/build/Uno.icu-wasm.targets index 804a837..41d7c98 100644 --- a/nuget/build/Uno.icu-wasm.targets +++ b/nuget/uno.icu-wasm/build/Uno.icu-wasm.targets @@ -1,7 +1,7 @@ - + diff --git a/nuget/uno.icu-wasm/buildTransitive/Uno.icu-wasm.targets b/nuget/uno.icu-wasm/buildTransitive/Uno.icu-wasm.targets new file mode 100644 index 0000000..383fa86 --- /dev/null +++ b/nuget/uno.icu-wasm/buildTransitive/Uno.icu-wasm.targets @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/nuget/uno.icu-wasm.nuspec b/nuget/uno.icu-wasm/uno.icu-wasm.nuspec similarity index 100% rename from nuget/uno.icu-wasm.nuspec rename to nuget/uno.icu-wasm/uno.icu-wasm.nuspec diff --git a/src/cldr_data/Dockerfile b/src/cldr_data/Dockerfile index 3bbc5a0..be4a198 100644 --- a/src/cldr_data/Dockerfile +++ b/src/cldr_data/Dockerfile @@ -8,8 +8,8 @@ RUN apt-get update && apt-get install -y make git python3 doxygen zip wget g++ WORKDIR /icu -ENV ICU_DATA_FILTER_FILE=/icu/filters.json -COPY filters.json . +ENV ICU_DATA_FILTER_FILE=/icu/filters_wasm.json +COPY filters_wasm.json . RUN wget ${ICU_SOURCE_ZIP_URL} RUN unzip release-77-1.zip diff --git a/src/cldr_data/filters_macosios.json b/src/cldr_data/filters_macosios.json new file mode 100644 index 0000000..254cea4 --- /dev/null +++ b/src/cldr_data/filters_macosios.json @@ -0,0 +1,220 @@ +{ + "strategy": "additive", + "featureFilters": { + "brkitr_rules": { + "filterType": "regex", + "excludelist": [ + "^.*loose.*$", + "^.*char.*$", + "^.*word.*$", + "^.*sent.*$", + "^.*title.*$" + ] + }, + "brkitr_dictionaries": { + "excludelist": [ + "burmesedict", + "khmerdict", + "laodict" + ] + }, + "brkitr_tree": "include", + "uemoji": "include", + "cnvalias": "include", + "locales_tree": "include" + }, + "localeFilter": { + "filterType": "locale", + "includeScripts": false, + "includeChildren": false, + "whitelist": [ + "ar_SA", + "am_ET", + "bg_BG", + "bn_BD", + "bn_IN", + "ca_AD", + "ca_ES", + "cs_CZ", + "da_DK", + "de_AT", + "de_BE", + "de_CH", + "de_DE", + "de_IT", + "de_LI", + "de_LU", + "el_CY", + "el_GR", + "en_AE", + "en_AG", + "en_AI", + "en_AS", + "en_AT", + "en_AU", + "en_BB", + "en_BE", + "en_BI", + "en_BM", + "en_BS", + "en_BW", + "en_BZ", + "en_CA", + "en_CC", + "en_CH", + "en_CK", + "en_CM", + "en_CX", + "en_CY", + "en_DE", + "en_DK", + "en_DM", + "en_ER", + "en_FI", + "en_FJ", + "en_FK", + "en_FM", + "en_GB", + "en_GD", + "en_GG", + "en_GH", + "en_GI", + "en_GM", + "en_GU", + "en_GY", + "en_HK", + "en_IE", + "en_IL", + "en_IM", + "en_IN", + "en_IO", + "en_JE", + "en_JM", + "en_KE", + "en_KI", + "en_KN", + "en_KY", + "en_LC", + "en_LR", + "en_LS", + "en_MG", + "en_MH", + "en_MO", + "en_MP", + "en_MS", + "en_MT", + "en_MU", + "en_MW", + "en_MY", + "en_NA", + "en_NF", + "en_NG", + "en_NL", + "en_NR", + "en_NU", + "en_NZ", + "en_PG", + "en_PH", + "en_PK", + "en_PN", + "en_PR", + "en_PW", + "en_RW", + "en_SB", + "en_SC", + "en_SD", + "en_SE", + "en_SG", + "en_SH", + "en_SI", + "en_SL", + "en_SS", + "en_SX", + "en_SZ", + "en_TC", + "en_TK", + "en_TO", + "en_TT", + "en_TV", + "en_TZ", + "en_UG", + "en_UM", + "en_US", + "en_VC", + "en_VG", + "en_VI", + "en_VU", + "en_WS", + "en_ZA", + "en_ZM", + "en_ZW", + "en_US", + "es_419", + "es_ES", + "es_MX", + "et_EE", + "fa_IR", + "fi_FI", + "fil_PH", + "fr_BE", + "fr_CA", + "fr_CH", + "fr_FR", + "gu_IN", + "he_IL", + "hi_IN", + "hr_BA", + "hr_HR", + "hu_HU", + "id_ID", + "it_CH", + "it_IT", + "ja_JP", + "kn_IN", + "ko_KR", + "lt_LT", + "lv_LV", + "ml_IN", + "mr_IN", + "ms_BN", + "ms_MY", + "ms_SG", + "nb_NO", + "no", + "no_NO", + "nl_AW", + "nl_BE", + "nl_NL", + "pl_PL", + "pt_BR", + "pt_PT", + "ro_RO", + "ru_RU", + "sk_SK", + "sl_SI", + "sr_Cyrl_RS", + "sr_Latn_RS", + "sv_AX", + "sv_SE", + "sw_CD", + "sw_KE", + "sw_TZ", + "sw_UG", + "ta_IN", + "ta_LK", + "ta_MY", + "ta_SG", + "te_IN", + "th_TH", + "tr_CY", + "tr_TR", + "uk_UA", + "vi_VN", + "zh_CN", + "zh_Hans_HK", + "zh_SG", + "zh_HK", + "zh_TW" + ] + } +} \ No newline at end of file diff --git a/src/cldr_data/filters.json b/src/cldr_data/filters_wasm.json similarity index 100% rename from src/cldr_data/filters.json rename to src/cldr_data/filters_wasm.json