summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2020-05-05 12:08:25 -0400
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2020-05-05 18:28:15 +0200
commitab74e5ea19b1e103daa1d3325f8afc490bf672a3 (patch)
tree357c4544b3280f7505db871e0af014a8aec7d7a8
parentfeb3425ca044d3d33e2891024c3943cc02e915df (diff)
downloadabslibre-ab74e5ea19b1e103daa1d3325f8afc490bf672a3.tar.gz
abslibre-ab74e5ea19b1e103daa1d3325f8afc490bf672a3.tar.bz2
abslibre-ab74e5ea19b1e103daa1d3325f8afc490bf672a3.zip
icu-parabola: add more rationale documentation
Also added myself as a contributor, since I helped Parabola with the parabola-specific portions of this package. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r--libre/icu-parabola/PKGBUILD41
1 files changed, 28 insertions, 13 deletions
diff --git a/libre/icu-parabola/PKGBUILD b/libre/icu-parabola/PKGBUILD
index 3763c73ae..8cbed9676 100644
--- a/libre/icu-parabola/PKGBUILD
+++ b/libre/icu-parabola/PKGBUILD
@@ -1,6 +1,7 @@
# Maintainer (Arch): Andreas Radke <andyrtr@archlinux.org>
# Contributor (Arch): Art Gramlich <art@gramlich-net.com>
# Contributor (Parabola): Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
+# Contributor (Parabola): Eli Schwartz <eschwartz@archlinux.org>
# parabola changes and rationale:
#
@@ -36,21 +37,35 @@
# 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.
+# link against it at runtime. This enables all the Parabola packages to depend
+# only on the ICU version, which is usually the upstream distribution's ICU but
+# is occasionally this ICU if the Parabola package has not yet been rebuilt
+# after an ICU update.
#
-# 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.
+# It is inspired by the admittedly awkward hack of versioned library
+# dependencies more commonly seen in e.g. the AUR as 'icu65' or somesuch which
+# proprietary binaries built against Debian's ICU will depend on, but awkward
+# is 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".
#
-# So the idea is to only use it for libraries that often have this issue.
+# 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.*