Files
amethyst/docs/plans/2026-04-27-fix-deb-libicu-dependency-plan.md
T
nrobi144 250bb5a1ad feat(multi-account): display names, middle-truncated npub, npub-only account fix
Account switcher dropdown improvements:
- Two-row display: Display Name on top, npub (middle-truncated) below
  e.g. 'Alice' / 'npub1abc...wxyz · Bunker'
- Middle-truncation for npub: shows first 10 + last 6 chars
- Resolves display names from DesktopLocalCache user metadata
- Confirmation dialog also shows display name
- npub-only (view-only) accounts now persist to encrypted storage
  (ensureCurrentAccountInStorage called in onLoginSuccess)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-29 09:35:33 +03:00

71 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Fix: Relax libicu dependency in .deb packages
**Date**: 2026-04-27
**Issue**: [#2579](https://github.com/vitorpamplona/amethyst/issues/2579)
**Branch**: `fix/deb-libicu-dependency`
**Reference**: upstream branch `fix-libicu74-dependency`
## Problem
jpackage runs `dpkg-shlibdeps` against the bundled JDK's native libs (libfontmanager.so links libicu), pinning `Depends:` to the build host's libicu version (libicu74 on ubuntu-24.04). Users on Debian 12 (libicu72), Debian 13 (libicu76), Ubuntu 22.04 (libicu70) etc. cannot install.
Neither jpackage nor Compose Desktop DSL expose a way to override auto-generated Depends.
## Solution
Post-process the .deb after jpackage: extract, rewrite the libicu dependency to accept any version from libicu66libicu77, repack.
## Changes
### 1. Add `scripts/relax-deb-libicu.sh`
Shell script that:
- Takes one or more .deb paths as arguments
- Extracts with `dpkg-deb -R`
- Uses sed to replace `libicuNN` (or alternation) with `libicu66 | libicu67 | libicu70 | libicu72 | libicu74 | libicu76 | libicu77`
- Repacks with `dpkg-deb -b`
- Idempotent — no-op when no libicu dep present
### 2. Update `.github/workflows/build.yml`
Add step after "Build Desktop Distribution" for the `packageDeb` matrix leg:
```yaml
- name: Relax libicu dependency in .deb
if: matrix.task == 'packageDeb'
run: |
set -euo pipefail
chmod +x scripts/relax-deb-libicu.sh
scripts/relax-deb-libicu.sh desktopApp/build/compose/binaries/main/deb/*.deb
```
Insert between "Build Desktop Distribution" (line 160) and "Stop Gradle Daemon" (line 162).
### 3. Update `.github/workflows/create-release.yml`
Add step after "Build desktop artifacts" for the `linux` family leg:
```yaml
- name: Relax libicu dependency in .deb
if: matrix.family == 'linux'
run: |
set -euo pipefail
chmod +x scripts/relax-deb-libicu.sh
scripts/relax-deb-libicu.sh desktopApp/build/compose/binaries/main-release/deb/*.deb
```
Insert between "Build desktop artifacts" (line 99-104) and "Build portable archives" (line 106).
Note: `linux-portable` leg doesn't build .deb so no action needed there.
## Testing
- Script is idempotent — safe to run on any .deb
- CI will validate on next PR build (ubuntu-latest produces .deb artifact)
- Manual: install resulting .deb on Debian 13 (libicu76) to verify
## Unanswered Questions
- Should we also handle RPM libicu deps? (RPM has different dep mechanism, likely not affected since RPM uses `Requires:` from bundled libs differently)
- Should the libicu version list be externalized to a config file for easier updates? (Probably YAGNI — adding a new version is a one-line sed edit)