Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 17 additions & 8 deletions .github/workflows/create-ubuntu-distribution-packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ name: Build & Package (Ubuntu)
on:
push:
tags:
- 'v*'
- '*'
workflow_dispatch:

jobs:
build-and-package:
runs-on: ubuntu-latest
env:
ICU_VERSION: 77_1

steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -40,8 +41,11 @@ jobs:
uses: actions/cache@v4
id: cache-icu
with:
path: /usr/local
key: icu-${{ env.ICU_VERSION }}-ubuntu-${{ runner.os }}
path: /usr/local/icu-${{ env.ICU_VERSION }}
key: icu-${{ env.ICU_VERSION }}-${{ runner.os }}
restore-keys: |
icu-${{ env.ICU_VERSION }}-
icu-

- name: Install ICU (Binary)
if: steps.cache-icu.outputs.cache-hit != 'true'
Expand All @@ -50,7 +54,8 @@ jobs:
wget https://github.com/unicode-org/icu/releases/download/release-${ICU_VERSION//_/-}/icu4c-${ICU_VERSION}-Ubuntu22.04-x64.tgz
mkdir icu-install
tar -xzf icu4c-${ICU_VERSION}-Ubuntu22.04-x64.tgz -C icu-install
sudo cp -r icu-install/icu/usr/local/* /usr/local/
sudo mkdir -p /usr/local/icu-${ICU_VERSION}
sudo cp -r icu-install/icu/usr/local/* /usr/local/icu-${ICU_VERSION}/
sudo ldconfig

- name: Setup ICU (from cache)
Expand All @@ -60,18 +65,22 @@ jobs:

- name: Configure & Build
run: |
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH
export PKG_CONFIG_PATH=/usr/local/icu-${ICU_VERSION}/lib/pkgconfig:$PKG_CONFIG_PATH
export CPLUS_INCLUDE_PATH=/usr/local/icu-${ICU_VERSION}/include:$CPLUS_INCLUDE_PATH
export LD_LIBRARY_PATH=/usr/local/icu-${ICU_VERSION}/lib:$LD_LIBRARY_PATH
mkdir -p inflection/build
cd inflection/build
CC=clang CXX=clang++ cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DICU_ROOT=/usr/local \
-DCMAKE_PREFIX_PATH=/usr/local
-DICU_ROOT=/usr/local/icu-${ICU_VERSION} \
-DCMAKE_PREFIX_PATH=/usr/local/icu-${ICU_VERSION}
make -j$(nproc)

- name: Run tests
run: |
export PKG_CONFIG_PATH=/usr/local/icu-${ICU_VERSION}/lib/pkgconfig:$PKG_CONFIG_PATH
export CPLUS_INCLUDE_PATH=/usr/local/icu-${ICU_VERSION}/include:$CPLUS_INCLUDE_PATH
export LD_LIBRARY_PATH=/usr/local/icu-${ICU_VERSION}/lib:$LD_LIBRARY_PATH
cd inflection/build
make -j$(nproc) check

Expand Down
16 changes: 12 additions & 4 deletions inflection/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,19 +132,25 @@ install(TARGETS inflection LIBRARY COMPONENT inflection_
install(DIRECTORY ${INFLECTION_INCLUDE_ROOT}/ TYPE INCLUDE COMPONENT inflection_headers)
install(DIRECTORY ${INFLECTION_DATA_ROOT}/ TYPE DATA COMPONENT inflection_data)



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

set(CPACK_PACKAGE_NAME "unicode-inflection")

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

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

# Set defaults to avoid list index errors
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
Expand All @@ -160,6 +166,7 @@ if(_len GREATER 2)
list(GET INFLECTION_VERSION_LIST 2 CPACK_PACKAGE_VERSION_PATCH)
endif()

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

# Source package
# Source package config

set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;/.vscode/;/.idea/")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${INFLECTION_VERSION}")
Expand Down
Loading