Skip to content

Commit 561f381

Browse files
authored
Fix GitHub Release Trigger, ICU Cache Cleanup, and Artifact Upload (#166)
* Github workflow for Ubuntu Packaging * Github workflow for Ubuntu Packaging. * Github workflow for Ubuntu Packaging! * Refactor packaging workflow based on the feedback * Fix CPack versioning: derive major/minor/patch from INFLECTION_VERSION * Fixing Version Issue * Fixing the Cmake Version * Fix: Cpack Version Handling * Add CPack-based Ubuntu packaging and GitHub Actions release workflow * Fix GitHub release workflow, fix cache key and release upload * Update workflow trigger to release on v* tags * Fix release workflow: use stable ICU cache key * Fix release workflow - Ubuntu * Fix release workflow - Ubuntu Packaging * Fix Ubuntu packaging workflow: ensure ICU env vars are exported for all build/test steps
1 parent 5118918 commit 561f381

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

.github/workflows/create-ubuntu-distribution-packaging.yml

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ name: Build & Package (Ubuntu)
1212
on:
1313
push:
1414
tags:
15-
- 'v*'
15+
- '*'
1616
workflow_dispatch:
1717

1818
jobs:
1919
build-and-package:
2020
runs-on: ubuntu-latest
2121
env:
2222
ICU_VERSION: 77_1
23+
2324
steps:
2425
- name: Checkout
2526
uses: actions/checkout@v4
@@ -40,8 +41,11 @@ jobs:
4041
uses: actions/cache@v4
4142
id: cache-icu
4243
with:
43-
path: /usr/local
44-
key: icu-${{ env.ICU_VERSION }}-ubuntu-${{ runner.os }}
44+
path: /usr/local/icu-${{ env.ICU_VERSION }}
45+
key: icu-${{ env.ICU_VERSION }}-${{ runner.os }}
46+
restore-keys: |
47+
icu-${{ env.ICU_VERSION }}-
48+
icu-
4549
4650
- name: Install ICU (Binary)
4751
if: steps.cache-icu.outputs.cache-hit != 'true'
@@ -50,7 +54,8 @@ jobs:
5054
wget https://github.com/unicode-org/icu/releases/download/release-${ICU_VERSION//_/-}/icu4c-${ICU_VERSION}-Ubuntu22.04-x64.tgz
5155
mkdir icu-install
5256
tar -xzf icu4c-${ICU_VERSION}-Ubuntu22.04-x64.tgz -C icu-install
53-
sudo cp -r icu-install/icu/usr/local/* /usr/local/
57+
sudo mkdir -p /usr/local/icu-${ICU_VERSION}
58+
sudo cp -r icu-install/icu/usr/local/* /usr/local/icu-${ICU_VERSION}/
5459
sudo ldconfig
5560
5661
- name: Setup ICU (from cache)
@@ -60,18 +65,22 @@ jobs:
6065
6166
- name: Configure & Build
6267
run: |
63-
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
64-
export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH
68+
export PKG_CONFIG_PATH=/usr/local/icu-${ICU_VERSION}/lib/pkgconfig:$PKG_CONFIG_PATH
69+
export CPLUS_INCLUDE_PATH=/usr/local/icu-${ICU_VERSION}/include:$CPLUS_INCLUDE_PATH
70+
export LD_LIBRARY_PATH=/usr/local/icu-${ICU_VERSION}/lib:$LD_LIBRARY_PATH
6571
mkdir -p inflection/build
6672
cd inflection/build
6773
CC=clang CXX=clang++ cmake .. \
6874
-DCMAKE_BUILD_TYPE=Release \
69-
-DICU_ROOT=/usr/local \
70-
-DCMAKE_PREFIX_PATH=/usr/local
75+
-DICU_ROOT=/usr/local/icu-${ICU_VERSION} \
76+
-DCMAKE_PREFIX_PATH=/usr/local/icu-${ICU_VERSION}
7177
make -j$(nproc)
7278
7379
- name: Run tests
7480
run: |
81+
export PKG_CONFIG_PATH=/usr/local/icu-${ICU_VERSION}/lib/pkgconfig:$PKG_CONFIG_PATH
82+
export CPLUS_INCLUDE_PATH=/usr/local/icu-${ICU_VERSION}/include:$CPLUS_INCLUDE_PATH
83+
export LD_LIBRARY_PATH=/usr/local/icu-${ICU_VERSION}/lib:$LD_LIBRARY_PATH
7584
cd inflection/build
7685
make -j$(nproc) check
7786

inflection/CMakeLists.txt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,19 +132,25 @@ install(TARGETS inflection LIBRARY COMPONENT inflection_
132132
install(DIRECTORY ${INFLECTION_INCLUDE_ROOT}/ TYPE INCLUDE COMPONENT inflection_headers)
133133
install(DIRECTORY ${INFLECTION_DATA_ROOT}/ TYPE DATA COMPONENT inflection_data)
134134

135-
136-
135+
# ----------------------------------------------------------------------------------------
137136
# CPack Configuration for Ubuntu Packaging
137+
#
138+
# To update ICU version:
139+
# 1. Update ICU_VERSION in the GitHub Actions workflow (.github/workflows/create-ubuntu-distribution-packaging.yml)
140+
# 2. Make sure the downloaded ICU binary file matches the filename format
141+
# (e.g., icu4c-78_1-Ubuntu22.04-x64.tgz)
142+
# 3. Update the line below to match the correct ICU dependency in Debian packaging
143+
# ----------------------------------------------------------------------------------------
138144

139145
set(CPACK_PACKAGE_NAME "unicode-inflection")
140146

141147
# Apply the current tagged Inflection version to the CPack version.
142148
# CPack may inherit a default or cached version, so we explicitly set it here.
143149
set(CPACK_PACKAGE_VERSION "${INFLECTION_VERSION}")
144150

151+
# Extract version components
145152
string(REPLACE "." ";" INFLECTION_VERSION_LIST "${INFLECTION_VERSION}")
146153

147-
# Set defaults to avoid list index errors
148154
set(CPACK_PACKAGE_VERSION_MAJOR "0")
149155
set(CPACK_PACKAGE_VERSION_MINOR "0")
150156
set(CPACK_PACKAGE_VERSION_PATCH "0")
@@ -160,6 +166,7 @@ if(_len GREATER 2)
160166
list(GET INFLECTION_VERSION_LIST 2 CPACK_PACKAGE_VERSION_PATCH)
161167
endif()
162168

169+
# Basic package metadata
163170
set(CPACK_PACKAGE_VENDOR "Unicode Consortium")
164171
set(CPACK_PACKAGE_CONTACT "https://github.com/unicode-org/inflection")
165172
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Unicode Inflection Library")
@@ -172,7 +179,8 @@ set(CPACK_DEBIAN_PACKAGE_SECTION "libs")
172179
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
173180
set(CPACK_DEBIAN_PACKAGE_VERSION "${INFLECTION_VERSION}")
174181

175-
# Source package
182+
# Source package config
183+
176184
set(CPACK_SOURCE_GENERATOR "TGZ")
177185
set(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;/.vscode/;/.idea/")
178186
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${INFLECTION_VERSION}")

0 commit comments

Comments
 (0)