Skip to content

feat: Vendor libicu as a BOSH package to fix postgres-16/17/18 on Ubuntu Resolute - #99

Open
ZPascal wants to merge 2 commits into
mainfrom
issue-98
Open

ZPascal wants to merge 2 commits into
mainfrom
issue-98

Conversation

@ZPascal

@ZPascal ZPascal commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds a new postgres-libicu BOSH package that compiles ICU4C from a vendored source tarball, removing the dependency on libicu-dev which was dropped from the Ubuntu Resolute stemcell
  • Updates postgres-16, postgres-17, and postgres-18 to declare postgres-libicu as a dependency and use ${BOSH_PACKAGES_PATH}/postgres-libicu in their configure flags instead of hardcoded system paths
  • Adds a bump-libicu-package CI task and icu-src Concourse resource so ICU blob bumps are automated in the bump-packages pipeline job
  • Fixes packaging script shebang pattern for postgres-16/17/18: replaces ignored #!/bin/bash -exu with #!/bin/bash + set -euo pipefail per BOSH conventions

Closes #98

Test Plan

  • Trigger the bump-packages CI job to verify the bump-libicu-package task runs without errors
  • Deploy postgres-16, postgres-17, and postgres-18 on a Resolute stemcell and verify initdb / pg_ctl start succeed
  • Test the new setup on a Noble and Jammy stemcell
  • Verify postgres-15 is unaffected (no ICU dependency, no packaging changes)
  • Confirm libicui18n.so is not present in the package install target (only .a static libs, due to --disable-shared)

@ZPascal
ZPascal marked this pull request as draft September 21, 2026 10:22
@ZPascal ZPascal changed the title feat: vendor libicu as a BOSH package to fix postgres-16/17/18 on Ubuntu Resolute feat: Vendor libicu as a BOSH package to fix postgres-16/17/18 on Ubuntu Resolute Sep 21, 2026
@ZPascal
ZPascal force-pushed the issue-98 branch 2 times, most recently from 4fe1601 to aee3d10 Compare September 21, 2026 12:05
@ZPascal ZPascal self-assigned this Sep 22, 2026
@ZPascal
ZPascal force-pushed the issue-98 branch 2 times, most recently from fdb8c5d to c3cf45e Compare September 22, 2026 21:24
…tu Resolute

libicu-dev was dropped from the Ubuntu Resolute stemcell, breaking
postgres-16/17/18 compilation which requires ICU at build time.

- Add postgres-libicu BOSH package that compiles ICU4C 78.3 from a vendored
  source tarball (static-only, --disable-shared) so postgres links ICU
  statically with no runtime .so dependency
- Update postgres-15, -16, -17, -18 to support aarch64 in packaging scripts
- Update postgres-16, -17, -18 to declare postgres-libicu as a dependency
  and use ${BOSH_PACKAGES_PATH:-/var/vcap/packages}/postgres-libicu in
  configure flags with -lstdc++ to satisfy C++ runtime symbols from static ICU

Closes #98
@ZPascal
ZPascal marked this pull request as ready for review September 23, 2026 05:53
@ZPascal
ZPascal requested review from a team and colins September 23, 2026 05:54

@Jobsby Jobsby left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Please check the ICU release version and name changes between 77 and 78.

Comment thread ci/pipeline.yml
trigger: true
params:
globs:
- icu4c-*-src.tgz

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

globs does not match ICU 78+ asset names

globs:

  • icu4c-*-src.tgz

ICU also renamed their source tarball starting with version 78 (sources instead of src).
You can verify this directly on the GitHub releases page: https://github.com/unicode-org/icu/releases

  • release-78.3 -> icu4c-78.3-sources.tgz -> does not match
  • release-77-1 -> icu4c-77_1-src.tgz -> matches

That might become a problem.

Comment thread ci/pipeline.yml Outdated
source:
owner: unicode-org
repository: icu
tag_filter: release-([0-9]+-[0-9]+)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

tag_filter does not match ICU 78+ tags (see comment above)

tag_filter: release-([0-9]+-[0-9]+)

ICU changed their tag format starting with version 78 (dot instead of dash separator):

  • ICU ≤ 77: release-77-1 -> matches
  • ICU ≥ 78: release-78.3 -> does not match

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

Ubuntu Resolute stemcell: Missing "postgres-17/bin/initdb" script

2 participants