unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Marius Bakke <mbakke@fastmail.com>
To: guix-devel@gnu.org
Subject: Re: Should we make 'icu4c' identical between platforms?
Date: Thu, 25 Jul 2019 00:18:47 +0200	[thread overview]
Message-ID: <87ftmv3wl4.fsf@devup.no> (raw)
In-Reply-To: <87muh34l9h.fsf@devup.no>

[-- Attachment #1: Type: text/plain, Size: 2479 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> Hello listers and lurkers,
>
> On MIPS and 32-bit ARM platforms, 'icu4c' is built with
> '--with-data-packaging=archive'.  The effect is that the locale data is
> stored in a single "icudt__.dat" instead of in the shared library:
>
> http://userguide.icu-project.org/icudata
>
> There are no comments mentioning why this is the case, and reading the
> commit log gives me the impression that it was added as a workaround.

So I tried removing the workaround on armhf, and it caused weird
problems trying to load the 27M libicudata.so.  Digging around, I found
that most distributions use a different workaround (on all platforms):

        (add-after 'chdir-to-source 'update-LDFLAGS
          (lambda _
            ;; Do not create a "data-only" libicudata.so because it causes
            ;; problems on some platforms (notably armhf and MIPS).
            (substitute* "config/mh-linux"
              (("LDFLAGSICUDT=-nodefaultlibs -nostdlib")
               "LDFLAGSICUDT="))
            #t))

This works fine for armhf without "--with-data-packaging=archive".  The
effect is that libicudata.so is marginally larger because of some new
symbols.

Before:

0000000001a43ef0 d _DYNAMIC
0000000000001000 R icudt64_dat

After:

0000000001a45020 b completed.6992
                 w __cxa_finalize@@GLIBC_2.2.5
0000000000001040 t deregister_tm_clones
00000000000010d0 t __do_global_dtors_aux
0000000001a44dd8 t __do_global_dtors_aux_fini_array_entry
0000000001a45018 d __dso_handle
0000000001a44de0 d _DYNAMIC
000000000000111c t _fini
0000000000001110 t frame_dummy
0000000001a44dd0 t __frame_dummy_init_array_entry
0000000001a43a10 r __FRAME_END__
0000000001a45000 d _GLOBAL_OFFSET_TABLE_
                 w __gmon_start__
0000000000002000 R icudt64_dat
0000000000001000 t _init
                 w _ITM_deregisterTMCloneTable
                 w _ITM_registerTMCloneTable
0000000000001080 t register_tm_clones
0000000001a45020 d __TMC_END__

SUSE on the other hand uses "--with-data-packaging=archive" on all
platforms.  I haven't investigated the differences in depth because of
the test failures that occurs when enabling that.  One tiny benefit
would be that icudt__.dat can be deduplicated in the store, even between
platforms IIUC.

For now, I'm leaning towards adding the above substitution
unconditionally, and remove the "--with-data-packaging=archive" flag, so
that ICU has the same bugs (and builds!) everywhere.

Mark, WDYT?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

  reply	other threads:[~2019-07-24 22:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-24 13:25 Should we make 'icu4c' identical between platforms? Marius Bakke
2019-07-24 22:18 ` Marius Bakke [this message]
2019-07-25  8:25   ` Mark H Weaver
2019-07-31 13:11     ` Marius Bakke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ftmv3wl4.fsf@devup.no \
    --to=mbakke@fastmail.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).