Skip to content

Create distribution packages for ubuntu (.deb release v0.0.1) #129

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

dockerh
Copy link
Collaborator

@dockerh dockerh commented Jun 11, 2025

This PR introduces a workflow for building and packaging the Unicode Inflection library on Ubuntu using CPack. It generates .deb and .tar.gz artifacts and uploads them via GitHub Actions on tag push. ICU 77.1 is built from source as a prerequisite.

Key Changes

Added CPack configuration in CMakeLists.txt to generate:

  • unicode-inflection-.deb
  • unicode-inflection-.tar.gz

Added GitHub Actions workflow:

  • Builds ICU 77.1 from source
  • Uses Clang for compilation
  • Runs tests via make check
  • Generates and uploads release artifacts using CPack
  • Triggered on tags (e.g., v0.0.1)

Workflow File:

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

Release Target:

Ubuntu .deb package only for now


set(CPACK_PACKAGE_NAME "unicode-inflection")
set(CPACK_PACKAGE_VENDOR "Unicode Consortium")
set(CPACK_PACKAGE_CONTACT "[email protected]")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to find another contact. I'm not sure that I'm ready to have my email address here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that a mandatory field? If we have to have it, we can use the [email protected] one.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’d prefer just listing the official GitHub project. The discussion page can be used for communication.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree.


# DEB-specific options
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Unicode Consortium <[email protected]>")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libicu-dev (>= 77.1)")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The dev part is only needed for building. The non-dev dependency is needed for runtime.

Copy link
Contributor

@nciric nciric left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good in general with some comments.

- 'v*'
workflow_dispatch:
pull_request:
branches: [ main, master ]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we need the master part. It's obsolete and our repo doesn't have it.

with:
lfs: true

- name: Setup Git LFS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can land it as is for now, but fix it after Frank lands 128 (LFS caching).

sudo apt update
sudo apt install -y cmake build-essential clang pkg-config

- name: Install ICU 77.1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ICU caching already landed - we can use it here to save bandwidth.


set(CPACK_PACKAGE_NAME "unicode-inflection")
set(CPACK_PACKAGE_VENDOR "Unicode Consortium")
set(CPACK_PACKAGE_CONTACT "[email protected]")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that a mandatory field? If we have to have it, we can use the [email protected] one.

- name: Install ICU 77.1
run: |
cd /tmp
wget https://github.com/unicode-org/icu/releases/download/release-77-1/icu4c-77_1-src.tgz
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we download and compile sources? Why not just download and install binary release for Ubuntu? It takes time to compile ICU.

One needs to only copy the $download_location/usr tree to /usr/local/ folder

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants