# Maintainer (arch): Andreas Radke <andyrtr@archlinux.org>
# Contributor: Art Gramlich <art@gramlich-net.com>
# Contributor: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
# Contributor: Eli Schwartz <eschwartz@archlinux.org>
# Contributor: bill-auger <bill-auger@programmer.net>
# Maintainer: Parabola Hackers <dev@lists.parabola.nu>


# 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-compat-69
pkgver=69.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}")
conflicts=("icu<=${pkgver}")
makedepends=('python')
provides=(libicu{data,i18n,io,test,tu,uc}.so)
source=(https://github.com/unicode-org/icu/releases/download/release-${pkgver//./-}/icu4c-${pkgver//./_}-src.tgz{,.asc})
# https://github.com/unicode-org/icu/releases/download/release-69-1/SHASUM512.txt
sha512sums=('d4aeb781715144ea6e3c6b98df5bbe0490bfa3175221a1d667f3e6851b7bd4a638fa4a37d4a921ccb31f02b5d15a6dded9464d98051964a86f7b1cde0ff0aab7'
            'SKIP')
#validpgpkeys=('BA90283A60D67BA0DD910A893932080F4FB419E3') #  "Steven R. Loomis (filfla-signing) <srloomis@us.ibm.com>" 
#validpgpkeys+=('9731166CD8E23A83BEE7C6D3ACA5DBE1FD8FABF1') #  "Steven R. Loomis (ICU Project) <srl@icu-project.org>" 
#validpgpkeys+=('FFA9129A180D765B7A5BEA1C9B432B27D1BA20D7') # "Fredrik Roubert <fredrik@roubert.name>"
#validpgpkeys+=('E4098B78AFC94394F3F49AA903996C7C83F12F11') # "keybase.io/srl295 <srl295@keybase.io>"
#validpgpkeys+=('4569BBC09DA846FC91CBD21CE1BBA44593CF2AE0') # "Steven R. Loomis (codesign-qormi) <srloomis@us.ibm.com>"
validpgpkeys=('0E51E7F06EF719FBD072782A5F56E5AFA63CCD33') #"Craig Cornelius (For use with ICU releases) <ccornelius@google.com>"

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
}
