Strange fact regarding ICU* packages on Haiku 64bit (x86_64)

Ahoy folks,

Some latest upgrades had not succeed well, so I wanted to revert them.
I rememberd the icu74 package was among them, but there were no icu* package in the affected state directory.

/boot/system/packages/administrative> ls -ltrd sta*|tail -5
drwxr-xr-x 1 user root 2048 febr.   3 07:00 state_2024-02-03_07:00:48
drwxr-xr-x 1 user root 2048 febr.   3 22:15 state_2024-02-03_22:15:00
drwxr-xr-x 1 user root 2048 febr.   5 20:41 state_2024-02-05_20:41:26
drwxr-xr-x 1 user root 2048 febr.   6 20:39 state_2024-02-06_20:39:34
drwxr-xr-x 1 user root 2048 febr.   7 07:43 state_2024-02-07_07:43:41
/boot/system/packages/administrative> ls -l state_2024-02-05_20:41:26
total 353964
-rw-r--r-- 1 user root    24816 febr.   5 20:41 activated-packages
-rw-r--r-- 1 user root 54124900 jan.   14 03:16 qemu_arm-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root 12719850 jan.   14 03:16 qemu_m68k-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root 74204638 jan.   14 03:17 qemu_mips-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root 41876502 jan.   14 03:17 qemu_ppc-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root 37522095 jan.   14 03:18 qemu_riscv-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root 27767630 jan.   14 03:18 qemu_sparc-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root 39020678 jan.   13 19:52 qemu_x86-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root 32803428 jan.   13 19:51 qemu-8.1.3-1-x86_64.hpkg
-rw-r--r-- 1 user root  5879643 jan.   12 09:43 wireshark_gui-4.2.0-1-x86_64.hpkg
-rw-r--r-- 1 user root 36480641 dec.   15 01:03 wireshark-4.2.0-1-x86_64.hpkg
/boot/system/packages/administrative> ls -l state_2024-02-06_20:39:34
total 19030
-rw-r--r-- 1 user root   24816 febr.   6 20:39 activated-packages
-rw-r--r-- 1 user root 5377824 jan.   12 09:34 filezilla-3.66.1-1-x86_64.hpkg
-rw-r--r-- 1 user root  196207 jan.   21 00:56 libepubgen-0.1.1-2-x86_64.hpkg
-rw-r--r-- 1 user root  201511 jan.   21 00:56 libmspub-0.1.4-4-x86_64.hpkg
-rw-r--r-- 1 user root 4111929 jan.   21 00:56 libmwaw-0.3.22-1-x86_64.hpkg
-rw-r--r-- 1 user root   87134 jan.   21 00:56 libpagemaker-0.0.4-2-x86_64.hpkg
-rw-r--r-- 1 user root  254288 jan.   21 00:56 libqxp-0.0.2-3-x86_64.hpkg
-rw-r--r-- 1 user root  295624 jan.   12 09:27 librevenge-0.0.5-1-x86_64.hpkg
-rw-r--r-- 1 user root 5511183 jan.   12 09:27 libvisio-0.1.7-4-x86_64.hpkg
-rw-r--r-- 1 user root 3394966 jan.   12 09:36 putty-0.79-1-x86_64.hpkg
/boot/system/packages/administrative> ls -l state_2024-02-07_07:43:41
total 3470
-rw-r--r-- 1 user root   24816 febr.   7 07:43 activated-packages
-rw-r--r-- 1 user root   62809 jan.   21 03:35 **harfbuzz_debuginfo-8.3.0-1-x86_64.hpkg**
-rw-r--r-- 1 user root 1488012 jan.   18 23:29 **harfbuzz-8.3.0-1-x86_64.hpkg**
-rw-r--r-- 1 user root 1965616 nov.   26 23:10 **libxml2-2.10.4-3-x86_64.hpkg**
/boot/system/packages/administrative> ls -l state_2024-02-03_22:15:00
total 4466
-rw-r--r-- 1 user root   24814 febr.   3 22:15 activated-packages
-rw-r--r-- 1 user root 4542157 jan.   25 07:09 artpaint-2.7-1-x86_64.hpkg
/boot/system/packages/administrative> ls -l state_2024-02-03_07:00:48
total 28
-rw-r--r-- 1 user root 24730 febr.   3 07:00 activated-packages
/boot/system/packages/administrative>  ls -ltr ./sta*/icu*
ls: cannot access './sta*/icu*': No such file or directory

Then I thought a dare one … and took a look at the ‘packages’ directory – and I got a surprise :
ALL of the icu* packages were THERE !..

/boot/system/packages/administrative> ls -l ../icu*
-rw-r--r-- 1 user root 13918581 nov.   17 13:27 ../icu66-66.1-3-x86_64.hpkg
-rw-r--r-- 1 user root 15343319 dec.    4 23:55 ../icu73-73.2-1-x86_64.hpkg
-rw-r--r-- 1 user root 15068405 febr.   7 07:43 ../icu74-74.1-3-x86_64.hpkg

Isn’t it a bit strange ?
Shouldn’t be there only one version of it ?
Or is it intended to leave the earlier version as well ?

Perhaps because it affects a lot of packages and you can’t remove it until all installed packages have been rebuilt to use the new version and replaced.
Despite being on Haikuports repo icu is also part of Haiku. There are probably packages that have a dependency on a specific icu version because they needed a newer version of icu when they were introduced but others that have only a dependency on haiku rev introducing the new version.
That makes it hard to know when you can remove it or not.

I see, this way hard to revert it , if shit happens -

Anyway I hope it would be enough if libxml2 and harfbuzz packages were downgraded to stop odd behaviour of apps and Haiku.

It is fine. Multiple ICU versions can coexist and be needed to different software.

“Thanks. I reverted what I could - since then I had not recognized such strange behaviours I was getting lately.”

I was written that some days earlier …
Unfortunately too soon.
Still I have got some regressions - strange crashes , Haiku instability, and such questioned my solutions to revert back updates would resolv things everytime.

In this case as icu came from Haikuports I could not “resolve” only by ununstalling. It removed some other packages, and when i wanted those reinstall, then they wanted to reinstall unwanted icu version.

I understand that it is not meaningful to keep a stable and an unstable Haikuports repository, but in thisa case

shouldn’t Haikuports also prevent dependency a new version in package recipes for shorter -testing - period ?

I can accept that some new version of haikuports libraries comes and use it in some new version of apps - but without glued them.
So this way Haiku also became unstable in some points even the kernel or other system parts carefully updated in a Beta release …
It cannot avoid anyone to installing a new version … and after they have to remove some library then other apps removing altogether the suspected “problematic” new version of software.
This way remaining on a Beta hardly defense our system stability if we trust in Haikuports software and cannot be reverted if we want to try out : does it help or not ?..
… as in case in Haikuports software the thorough tests we are …

I do not critic at all … but should you create a rule for recipe creation or some enhancement on pkgman to force or pinpoint one package remove or downgrade instead of dependency ?
Some package versioned in its name some is not - so if I want to revert an older one - it turned it : it is impossible, as in case dependency reduced to new version only.
It was icu73 in Haiku but inkscape and Libreoffice wanted icu74 by any means.
Finally I left it that way as those apps are not so important actually.