diff --git a/.github/workflows/create-ubuntu-distribution-packaging.yml b/.github/workflows/create-ubuntu-distribution-packaging.yml index 837bbfcb..15f089a3 100644 --- a/.github/workflows/create-ubuntu-distribution-packaging.yml +++ b/.github/workflows/create-ubuntu-distribution-packaging.yml @@ -12,7 +12,7 @@ name: Build & Package (Ubuntu) on: push: tags: - - 'v*' + - '*' workflow_dispatch: jobs: @@ -20,6 +20,7 @@ jobs: runs-on: ubuntu-latest env: ICU_VERSION: 77_1 + steps: - name: Checkout uses: actions/checkout@v4 @@ -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' @@ -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) @@ -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 diff --git a/inflection/CMakeLists.txt b/inflection/CMakeLists.txt index 25bd7ca0..7a045b7f 100644 --- a/inflection/CMakeLists.txt +++ b/inflection/CMakeLists.txt @@ -132,9 +132,15 @@ 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") @@ -142,9 +148,9 @@ set(CPACK_PACKAGE_NAME "unicode-inflection") # 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") @@ -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") @@ -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}")