From 45a4708eae5ce3ef7395cfca4acecbc7f4690e74 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Fri, 3 Jun 2022 17:30:48 +0200 Subject: libre: Add icu-compat-70 Signed-off-by: Denis 'GNUtoo' Carikli --- libre/icu-compat-70/PKGBUILD | 130 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 libre/icu-compat-70/PKGBUILD (limited to 'libre') diff --git a/libre/icu-compat-70/PKGBUILD b/libre/icu-compat-70/PKGBUILD new file mode 100644 index 000000000..96598e950 --- /dev/null +++ b/libre/icu-compat-70/PKGBUILD @@ -0,0 +1,130 @@ +# Maintainer (Arch): Andreas Radke +# Contributor (Arch): Art Gramlich +# Contributor: Denis 'GNUtoo' Carikli +# Contributor: Eli Schwartz +# Contributor: bill-auger + + +# parabola changes and rationale: +# +# Several Parabola packages depends on ICU, and the ICU soname changes often. +# This means that if we don't rebuild all the Parabola packages which depend +# on ICU, as soon as the new ArchLinux, ArchLinux32, and ArchLinuxARM ICU +# packages are synchronized into the Parabola repositories, we have a problem. +# The repo server synchronizes with the upstream repos un-attended; so this +# is a wonderful surprise each time; and we hustle frantucally to get the +# system sane again. We could watch the testing and staging repos of each +# upstream, and start re-building everything in a Parabola staging repo; +# but that could result in discarded work, if those exact versions are not the +# ones which are eventually released into [core]. +# +# At first nothing was done to fix or workaround that issue. In practice, +# once a new ICU was synchronized, many users were upgrading before the +# Parabola packages had the time to be rebuilt. For such users, it +# broke all the installed Parabola packages that were depending on the old ICU. +# This means that users had to find a way to downgrade packages manually or wait +# until developers would finally have rebuilt all the packages that were broken. +# +# Then such packages were modified to make them depend on the exact version of +# the ICU packages they were built against. This way, once the new ICU package +# was synchronized, users could not upgrade if they had packages that were not +# rebuilt yet against the new ICU package. However this workaround also prevents +# installing packages that depends on the new ICU. +# +# The correct fix would probably be to automatically build all the Packages +# instead of relying on Arch Linux Packages. Still, a staging repo would be +# required to hold the new packages, until they all can be released together sanely. +# However we don't have the code, configuration and/or infrastructure to run +# an automatic builder for all packages yet even if there is work in this +# direction. +# +# In the meantime, this version of ICU exists for Parabola packages to link against +# at runtime. In this way, Parabola packages can depend only on the "sodeps" exposed +# by ICU, which is usually provided by the upstream distribution's ICU; but may be +# this ICU, if the Parabola package has yet to be rebuilt agianst the upgraded ICU. +# +# It is inspired by the admittedly awkward hack of versioned library +# dependencies more commonly seen (e.g. in the AUR as 'icu65') on which +# proprietary binaries built against Debian's ICU will depend. It is awkward, +# in the eyes of the beholder and this elegantly scales to Parabola's needs, +# without consuming increasing resources, which is the best definition of "not +# awkward". +# +# To use it, simply add the following dependency to any package which parabola +# has built or rebuilt: +# +# depends=('libicui18n.so') +# +# or whichever shared library is reported by readelf -d /path/to/compiled/ELF/file +# and, every time the upstream distribution upgrades ICU, update this package +# as well, to ensure it always stays exactly one version behind. +# +# This works well for ICU, even for packages which link to both the older and +# newer versions of libicu*.so, since ICU uses versioned symbols as reported by +# +# nm -D --demangle --with-symbol-versions /path/to/library +# +# However, caution must be taken before implementing the same idea for other +# libraries. So the idea is to only use it for libraries that often have this +# issue. +# +# Changes: +# - remove all files other than libicu*.so.* +# - depend on icu; this is needed because if the package is installed on its +# own, ldconfig will create untracked symlinks which were supposed to be +# installed by the icu package. + + +_pkgname=icu # 'pkgver' should always be one major version behind core/icu +pkgname=${_pkgname}-compat +pkgver=70.1 +pkgrel=1 +pkgrel+=.parabola1 +pkgdesc="International Components for Unicode library" +pkgdesc+=" (compatibility libraries for the previous release)" +arch=(x86_64) +arch+=(armv7h i686) +url="https://icu.unicode.org" +license=('custom:icu') +depends=('gcc-libs' 'sh') +depends+=("icu>${pkgver}") # core/icu should always be one major version ahead +conflicts=("icu<=${pkgver}") # core/icu should always be one major version ahead +makedepends=('python') +provides=(libicu{data,i18n,io,test,tu,uc}.so) +source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/${_pkgname}4c-${pkgver//./_}-src.tgz{,.asc}) +# https://github.com/unicode-org/icu/releases/download/release-70-1/SHASUM512.txt +sha512sums=('0b26ae7207155cb65a8fdb25f7b2fa4431e74b12bccbed0884a17feaae3c96833d12451064dd152197fd6ea5fd3adfd95594284a463e66c82e0d860f645880c9' + 'SKIP') +#validpgpkeys=('BA90283A60D67BA0DD910A893932080F4FB419E3') # "Steven R. Loomis (filfla-signing) " +#validpgpkeys+=('9731166CD8E23A83BEE7C6D3ACA5DBE1FD8FABF1') # "Steven R. Loomis (ICU Project) " +#validpgpkeys+=('FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7') # "Fredrik Roubert " +#validpgpkeys+=('E4098B78AFC94394F3F49AA903996C7C83F12F11') # "keybase.io/srl295 " +#validpgpkeys+=('4569BBC09DA846FC91CBD21CE1BBA44593CF2AE0') # "Steven R. Loomis (codesign-qormi) " +validpgpkeys=('0E51E7F06EF719FBD072782A5F56E5AFA63CCD33') #"Craig Cornelius (For use with ICU releases) " + +build() { + cd icu/source + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --sbindir=/usr/bin + make +} + +check() { + cd icu/source + make -k check +} + +package() { + cd icu/source + make -j1 DESTDIR="${pkgdir}" install + + # Install license + install -Dm644 "${srcdir}"/icu/LICENSE "${pkgdir}"/usr/share/licenses/"${pkgname}"/LICENSE + + # to avoid conflicts against the preferred 'icu' package, we remove all files + # except the actual shared libraries + rm -r "${pkgdir}"/usr/{bin,include,lib/{icu,pkgconfig},share} + rm "${pkgdir}"/usr/lib/*.so +} -- cgit v1.2.3