guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Should we make 'icu4c' identical between platforms?


From: Marius Bakke
Subject: Re: Should we make 'icu4c' identical between platforms?
Date: Thu, 25 Jul 2019 00:18:47 +0200
User-agent: Notmuch/0.29.1 (https://notmuchmail.org) Emacs/26.2 (x86_64-pc-linux-gnu)

Marius Bakke <address@hidden> 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: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]