@@ -1147,146 +1147,108 @@ jobs:
1147
1147
run : |
1148
1148
bash util/test_locale_regression.sh
1149
1149
1150
- l10n_locale_embedding_regression_test :
1151
- name : L10n/Locale Embedding Regression Test
1150
+ l10n_locale_embedding_cat :
1151
+ name : L10n/Locale Embedding - Cat Utility
1152
1152
runs-on : ubuntu-latest
1153
- env :
1154
- SCCACHE_GHA_ENABLED : " true"
1155
- RUSTC_WRAPPER : " sccache"
1156
1153
steps :
1157
1154
- uses : actions/checkout@v5
1158
1155
with :
1159
1156
persist-credentials : false
1160
1157
- uses : dtolnay/rust-toolchain@stable
1161
1158
- uses : Swatinem/rust-cache@v2
1162
- - name : Run sccache-cache
1163
- uses :
mozilla-actions/[email protected]
1164
- - name : Install/setup prerequisites
1165
- shell : bash
1166
- run : |
1167
- ## Install/setup prerequisites
1168
- sudo apt-get -y update ; sudo apt-get -y install libselinux1-dev build-essential
1169
- - name : Build binaries for locale embedding test
1170
- shell : bash
1171
- run : |
1172
- ## Build individual utilities and multicall binary for locale embedding test
1173
- echo "Building binaries with different locale embedding configurations..."
1174
- mkdir -p target
1175
-
1176
- # Build cat utility with targeted locale embedding
1177
- echo "Building cat utility with targeted locale embedding..."
1178
- echo "cat" > target/uucore_target_util.txt
1179
- cargo build -p uu_cat --release
1180
-
1181
- # Build ls utility with targeted locale embedding
1182
- echo "Building ls utility with targeted locale embedding..."
1183
- echo "ls" > target/uucore_target_util.txt
1184
- cargo build -p uu_ls --release
1185
-
1186
- # Build multicall binary (should have all locales)
1187
- echo "Building multicall binary (should have all locales)..."
1188
- echo "multicall" > target/uucore_target_util.txt
1189
- cargo build --release
1190
-
1191
- echo "✓ All binaries built successfully"
1192
- env :
1193
- RUST_BACKTRACE : " 1"
1194
-
1195
- - name : Analyze embedded locale files
1196
- shell : bash
1159
+ with :
1160
+ # Use different cache key for each build to avoid conflicts
1161
+ key : cat-locale-embedding
1162
+ - name : Install prerequisites
1163
+ run : sudo apt-get -y update && sudo apt-get -y install libselinux1-dev build-essential
1164
+ - name : Build cat with targeted locale embedding
1165
+ run : UUCORE_TARGET_UTIL=cat cargo build -p uu_cat --release
1166
+ - name : Verify cat locale count
1197
1167
run : |
1198
- ## Extract and analyze .ftl files embedded in each binary
1199
- echo "=== Embedded Locale File Analysis ==="
1200
-
1201
- # Analyze cat binary
1202
- echo "--- cat binary embedded .ftl files ---"
1203
- cat_ftl_files=$(strings target/release/cat | grep -o "[a-z_][a-z_]*/en-US\.ftl" | sort | uniq)
1204
- cat_locales=$(echo "$cat_ftl_files" | wc -l)
1205
- if [ -n "$cat_ftl_files" ]; then
1206
- echo "$cat_ftl_files"
1207
- else
1208
- echo "(no locale keys found)"
1209
- fi
1210
- echo "Total: $cat_locales files"
1211
- echo
1212
-
1213
- # Analyze ls binary
1214
- echo "--- ls binary embedded .ftl files ---"
1215
- ls_ftl_files=$(strings target/release/ls | grep -o "[a-z_][a-z_]*/en-US\.ftl" | sort | uniq)
1216
- ls_locales=$(echo "$ls_ftl_files" | wc -l)
1217
- if [ -n "$ls_ftl_files" ]; then
1218
- echo "$ls_ftl_files"
1219
- else
1220
- echo "(no locale keys found)"
1168
+ locale_file=$(find target/release/build -name "embedded_locales.rs" | head -1)
1169
+ if [ -z "$locale_file" ]; then
1170
+ echo "ERROR: Could not find embedded_locales.rs"
1171
+ exit 1
1221
1172
fi
1222
- echo "Total: $ls_locales files"
1223
- echo
1224
-
1225
- # Analyze multicall binary
1226
- echo "--- multicall binary embedded .ftl files (first 10) ---"
1227
- multi_ftl_files=$(strings target/release/coreutils | grep -o "[a-z_][a-z_]*/en-US\.ftl" | sort | uniq)
1228
- multi_locales=$(echo "$multi_ftl_files" | wc -l)
1229
- if [ -n "$multi_ftl_files" ]; then
1230
- echo "$multi_ftl_files" | head -10
1231
- echo "... (showing first 10 of $multi_locales total files)"
1173
+ locale_count=$(grep -c '/en-US\.ftl' "$locale_file")
1174
+ echo "Cat binary has $locale_count embedded locales"
1175
+ if [ "$locale_count" -le 5 ]; then
1176
+ echo "✓ SUCCESS: Cat uses targeted locale embedding ($locale_count files)"
1232
1177
else
1233
- echo "(no locale keys found)"
1178
+ echo "✗ FAILURE: Cat has too many locale files ($locale_count). Expected ≤ 5"
1179
+ exit 1
1234
1180
fi
1235
- echo
1236
-
1237
- # Store counts for validation step
1238
- echo "cat_locales=$cat_locales" >> $GITHUB_ENV
1239
- echo "ls_locales=$ls_locales" >> $GITHUB_ENV
1240
- echo "multi_locales=$multi_locales" >> $GITHUB_ENV
1241
1181
1242
- - name : Validate cat binary locale embedding
1243
- shell : bash
1182
+ l10n_locale_embedding_ls :
1183
+ name : L10n/Locale Embedding - Ls Utility
1184
+ runs-on : ubuntu-latest
1185
+ steps :
1186
+ - uses : actions/checkout@v5
1187
+ with :
1188
+ persist-credentials : false
1189
+ - uses : dtolnay/rust-toolchain@stable
1190
+ - uses : Swatinem/rust-cache@v2
1191
+ with :
1192
+ # Use different cache key for each build to avoid conflicts
1193
+ key : ls-locale-embedding
1194
+ - name : Install prerequisites
1195
+ run : sudo apt-get -y update && sudo apt-get -y install libselinux1-dev build-essential
1196
+ - name : Build ls with targeted locale embedding
1197
+ run : UUCORE_TARGET_UTIL=ls cargo build -p uu_ls --release
1198
+ - name : Verify ls locale count
1244
1199
run : |
1245
- ## Validate that cat binary only embeds its own locale files
1246
- echo "Validating cat binary locale embedding..."
1247
- if [ "$cat_locales" -le 5 ]; then
1248
- echo "✓ SUCCESS: cat binary uses targeted locale embedding ($cat_locales files)"
1249
- else
1250
- echo "✗ FAILURE: cat binary has too many embedded locale files ($cat_locales). Expected ≤ 5."
1251
- echo "This indicates LOCALE EMBEDDING REGRESSION - all locales are being embedded instead of just the target utility's locale."
1252
- echo "The optimization is not working correctly!"
1200
+ locale_file=$(find target/release/build -name "embedded_locales.rs" | head -1)
1201
+ if [ -z "$locale_file" ]; then
1202
+ echo "ERROR: Could not find embedded_locales.rs"
1253
1203
exit 1
1254
1204
fi
1255
-
1256
- - name : Validate ls binary locale embedding
1257
- shell : bash
1258
- run : |
1259
- ## Validate that ls binary only embeds its own locale files
1260
- echo "Validating ls binary locale embedding..."
1261
- if [ "$ls_locales" -le 5 ]; then
1262
- echo "✓ SUCCESS: ls binary uses targeted locale embedding ($ls_locales files)"
1205
+ locale_count=$(grep -c '/en-US\.ftl' "$locale_file")
1206
+ echo "Ls binary has $locale_count embedded locales"
1207
+ if [ "$locale_count" -le 5 ]; then
1208
+ echo "✓ SUCCESS: Ls uses targeted locale embedding ($locale_count files)"
1263
1209
else
1264
- echo "✗ FAILURE: ls binary has too many embedded locale files ($ls_locales). Expected ≤ 5."
1265
- echo "This indicates LOCALE EMBEDDING REGRESSION - all locales are being embedded instead of just the target utility's locale."
1266
- echo "The optimization is not working correctly!"
1210
+ echo "✗ FAILURE: Ls has too many locale files ($locale_count). Expected ≤ 5"
1267
1211
exit 1
1268
1212
fi
1269
1213
1270
- - name : Validate multicall binary locale embedding
1271
- shell : bash
1214
+ l10n_locale_embedding_multicall :
1215
+ name : L10n/Locale Embedding - Multicall Binary
1216
+ runs-on : ubuntu-latest
1217
+ steps :
1218
+ - uses : actions/checkout@v5
1219
+ with :
1220
+ persist-credentials : false
1221
+ - uses : dtolnay/rust-toolchain@stable
1222
+ - uses : Swatinem/rust-cache@v2
1223
+ with :
1224
+ # Use different cache key for each build to avoid conflicts
1225
+ key : multicall-locale-embedding
1226
+ - name : Install prerequisites
1227
+ run : sudo apt-get -y update && sudo apt-get -y install libselinux1-dev build-essential
1228
+ - name : Build multicall binary with all locales
1229
+ run : cargo build --release
1230
+ - name : Verify multicall locale count
1272
1231
run : |
1273
- ## Validate that multicall binary embeds all utility locale files
1274
- echo "Validating multicall binary locale embedding..."
1275
- if [ "$multi_locales" -ge 80 ]; then
1276
- echo "✓ SUCCESS: multicall binary has all locales ($multi_locales files)"
1232
+ locale_file=$(find target/release/build -name "embedded_locales.rs" | head -1)
1233
+ if [ -z "$locale_file" ]; then
1234
+ echo "ERROR: Could not find embedded_locales.rs"
1235
+ exit 1
1236
+ fi
1237
+ locale_count=$(grep -c '/en-US\.ftl' "$locale_file")
1238
+ echo "Multicall binary has $locale_count embedded locales"
1239
+ echo "First 10 locales:"
1240
+ grep -o '[a-z_][a-z_0-9]*/en-US\.ftl' "$locale_file" | head -10
1241
+ if [ "$locale_count" -ge 80 ]; then
1242
+ echo "✓ SUCCESS: Multicall has all locales ($locale_count files)"
1277
1243
else
1278
- echo "✗ FAILURE: multicall binary has too few embedded locale files ($multi_locales). Expected ≥ 80."
1279
- echo "This indicates the multicall binary is not getting all required locales."
1244
+ echo "✗ FAILURE: Multicall has too few locale files ($locale_count). Expected ≥ 80"
1280
1245
exit 1
1281
1246
fi
1282
1247
1283
- - name : Finalize locale embedding tests
1284
- shell : bash
1285
- run : |
1286
- ## Clean up and report overall test results
1287
- rm -f test.txt target/uucore_target_util.txt
1288
- echo "✓ All locale embedding regression tests passed"
1289
- echo "Summary:"
1290
- echo " - cat binary: $cat_locales locale files (targeted embedding)"
1291
- echo " - ls binary: $ls_locales locale files (targeted embedding)"
1292
- echo " - multicall binary: $multi_locales locale files (full embedding)"
1248
+ l10n_locale_embedding_regression_test :
1249
+ name : L10n/Locale Embedding Regression Test
1250
+ runs-on : ubuntu-latest
1251
+ needs : [l10n_locale_embedding_cat, l10n_locale_embedding_ls, l10n_locale_embedding_multicall]
1252
+ steps :
1253
+ - name : All locale embedding tests passed
1254
+ run : echo "✓ All locale embedding tests passed successfully"
0 commit comments