# Maintainer (Arch): Andreas Radke # Contributor (Arch): Art Gramlich # Contributor (Parabola): Denis 'GNUtoo' Carikli # 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 is meant to enable Parabola packages to # link against it. This enables all the Parabola packages to depend only on this # ICU version while the packages coming from upstream distributions would only # depend on that distribution's ICU. # # The downside of this workaround is that it consumes more resources and it # doesn't scale: If we want to avoid all the breakages introduced by that issue, # we would then need to have a Parabola version of all the dependencies of the # Parabola packages, which has many issues: # - It would increase the work of Parabola maintainers as we would need to # manually sync with upstream and build the PKGBUILDs of each dependency. # - Without compression or deduplication, such libraries would use twice the # amount of storage, or even RAM if two programs depending on two different # version of the library are running at the same time. # # So the idea is to only use it for libraries that often have this issue. # # Changes: # - Changed the configure prefix (to allow both sets of libraries to be co-exist) # - Added icu-parabola.conf and a .install to run ldconfig after installation in # order to take into account the path of this library version. pkgname=icu-parabola _pkgname=icu pkgver=67.1 pkgrel=1 pkgrel=.parabola1 pkgdesc="International Components for Unicode library" arch=(x86_64) arch+=(armv7h i686) url="http://site.icu-project.org/home" license=('custom:icu') depends=('gcc-libs' 'sh') makedepends=('python') # provides=(libicu{data,i18n,io,test,tu,uc}.so) # TODO: is this needed - or will it break stuff? install="${pkgname}.install" 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-65-1/SHASUM512.txt - no checksum file for v67 release sha512sums=('4779f1ce1ca7976f6fad6768853ea8c540da54d11509e3b6cfd864a04b5f2db1c3d4b546387f91ad02fb90804525bc37d2543173f0d705d6ca11dc6f2b7640a8' '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) " prepare() { cd icu # icu-parabola.conf will go in /etc/ld.so.conf.d echo "/opt/parabola/icu/lib" > icu-parabola.conf } build() { cd icu/source ./configure --prefix=/opt/parabola/icu \ --mandir=/usr/share/man \ --sbindir=/opt/parabola/icu/bin make } check() { cd icu/source make -k check } package() { cd icu/source make -j1 DESTDIR="${pkgdir}" install # Add install -d ${pkgdir}/etc/ld.so.conf.d/ install -Dm644 "${srcdir}"/icu/icu-parabola.conf "${pkgdir}/etc/ld.so.conf.d/icu-parabola.conf" # Install license install -Dm644 "${srcdir}"/icu/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" }