From dbe4afcf233ab3fd571309af5d434998444633f9e4c98acaf44d3eba60b90168 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Sun, 14 Jul 2013 15:27:58 +0000 Subject: [PATCH] Accepting request 183017 from home:jengelh:icu - Change icu-versioning.diff: Resolve libqt4 emitting a warning that it cannot dlopen libicui18n.so - Build I18N data as a plain file rather than as an arch-dependent huge shared library - Add icu-fix-install-mode-files.diff OBS-URL: https://build.opensuse.org/request/show/183017 OBS-URL: https://build.opensuse.org/package/show/X11:common:Factory/icu?expand=0&rev=30 --- icu-fix-install-mode-files.diff | 51 ++++++++++++++++++ icu-versioning.diff | 93 ++++++++++++++++++++++++++++++++- icu.changes | 9 ++++ icu.spec | 48 ++++++++++++----- 4 files changed, 188 insertions(+), 13 deletions(-) create mode 100644 icu-fix-install-mode-files.diff diff --git a/icu-fix-install-mode-files.diff b/icu-fix-install-mode-files.diff new file mode 100644 index 0000000..30b15ba --- /dev/null +++ b/icu-fix-install-mode-files.diff @@ -0,0 +1,51 @@ +From: Jan Engelhardt +Date: 2013-06-28 12:54:31.002040372 +0200 + +build: fix abort of install procedure with packaging=files + +When ./configure --with-data-packaging=files, make install aborts +because the previous developer did not test it with a normal +user account/DESTDIR install. + + make[1]: Entering directory `/home/abuild/rpmbuild/BUILD/icu/source/data' + LD_LIBRARY_PATH=../stubdata:../tools/ctestfw:../lib:$LD_LIBRARY_PATH ../bin/pkgdata -O ../data/icupkg.inc -q -c -s /home/abuild/rpmbuild/BUILD/icu/source/data/out/build/icudt51l -d ./out -e icudt51 -T ./out/tmp -p icudt51l -m files -r 51.2 ./out/tmp/icudata.lst + /bin/sh ../mkinstalldirs /home/abuild/rpmbuild/BUILDROOT/icu-51.2-0.x86_64/usr/share/icu/51.2 + mkdir /home/abuild/rpmbuild/BUILDROOT/icu-51.2-0.x86_64/usr/share/icu + mkdir /home/abuild/rpmbuild/BUILDROOT/icu-51.2-0.x86_64/usr/share/icu/51.2 + /bin/sh ../mkinstalldirs /usr/share/icu/51.2/icudt51l + mkdir /usr/share/icu + mkdir: cannot create directory '/usr/share/icu': Permission denied + +--- + source/data/Makefile.in | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +Index: icu/source/data/Makefile.in +=================================================================== +--- icu.orig/source/data/Makefile.in ++++ icu/source/data/Makefile.in +@@ -191,15 +191,15 @@ endif + install-local: $(PKGDATA_LIST) ./icupkg.inc packagedata $(OS390INSTALL) + $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(ICUPKGDATA_DIR) + ifeq ($(PKGDATA_MODE),files) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(CURR_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(LANG_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(REGION_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(ZONE_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(BREAK_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(COLLATION_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(RBNF_TREE) +- $(MKINSTALLDIRS) $(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(TRANSLIT_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(CURR_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(LANG_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(REGION_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(ZONE_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(BREAK_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(COLLATION_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(RBNF_TREE) ++ $(MKINSTALLDIRS) $(DESTDIR)$(ICUPKGDATA_DIR)/$(ICUDATA_NAME)/$(TRANSLIT_TREE) + endif + ifneq ($(ENABLE_STATIC),) + ifeq ($(PKGDATA_MODE),dll) diff --git a/icu-versioning.diff b/icu-versioning.diff index bdbdc3c..4faaaf4 100644 --- a/icu-versioning.diff +++ b/icu-versioning.diff @@ -10,6 +10,10 @@ SO numbers. They did that before, and they have done it with Thus, we will use the full version as the SO identifier in openSUSE. --- + source/common/icuplug.c | 2 +- + source/common/umapfile.c | 6 +++--- + source/common/unicode/utypes.h | 4 ++-- + source/common/unicode/uvernum.h | 7 +++++-- source/config/mh-linux | 2 +- source/config/pkgdataMakefile.in | 1 + source/data/pkgdataMakefile.in | 1 + @@ -17,8 +21,95 @@ Thus, we will use the full version as the SO identifier in openSUSE. source/icudefs.mk.in | 1 + source/test/testdata/pkgdataMakefile.in | 1 + source/tools/pkgdata/pkgdata.cpp | 4 ++-- - 7 files changed, 8 insertions(+), 3 deletions(-) + 11 files changed, 19 insertions(+), 11 deletions(-) +Index: icu/source/common/icuplug.c +=================================================================== +--- icu.orig/source/common/icuplug.c ++++ icu/source/common/icuplug.c +@@ -744,7 +744,7 @@ uplug_init(UErrorCode *status) { + uprv_strncpy(plugin_file, plugin_dir, 2047); + uprv_strncat(plugin_file, U_FILE_SEP_STRING,2047); + uprv_strncat(plugin_file, "icuplugins",2047); +- uprv_strncat(plugin_file, U_ICU_VERSION_SHORT ,2047); ++ uprv_strncat(plugin_file, U_ICU_VERSION_MAJOR_STR, 2047); + uprv_strncat(plugin_file, ".txt" ,2047); + #endif + +Index: icu/source/common/umapfile.c +=================================================================== +--- icu.orig/source/common/umapfile.c ++++ icu/source/common/umapfile.c +@@ -58,7 +58,7 @@ + # define LIB_PREFIX "lib" + # define LIB_SUFFIX ".dll" + /* This is inconvienient until we figure out what to do with U_ICUDATA_NAME in utypes.h */ +-# define U_ICUDATA_ENTRY_NAME "icudt" U_ICU_VERSION_SHORT U_LIB_SUFFIX_C_NAME_STRING "_dat" ++# define U_ICUDATA_ENTRY_NAME "icudt" U_ICU_VERSION_MAJOR_STR U_LIB_SUFFIX_C_NAME_STRING "_dat" + # endif + #elif MAP_IMPLEMENTATION==MAP_STDIO + # include +@@ -411,10 +411,10 @@ + /* BUT FOR BATCH MODE IT IS AN EXCEPTION BECAUSE */ + /* THE FIRST THREE LETTERS ARE PREASSIGNED TO THE */ + /* PROJECT!!!!! */ +- uprv_strcpy(pathBuffer, "IXMI" U_ICU_VERSION_SHORT "DA"); ++ uprv_strcpy(pathBuffer, "IXMI" U_ICU_VERSION_MAJOR_STR "DA"); + # else + /* set up the library name */ +- uprv_strcpy(basename, LIB_PREFIX U_LIBICUDATA_NAME U_ICU_VERSION_SHORT LIB_SUFFIX); ++ uprv_strcpy(basename, LIB_PREFIX U_LIBICUDATA_NAME U_ICU_VERSION_MAJOR_STR LIB_SUFFIX); + # endif + + # ifdef UDATA_DEBUG +Index: icu/source/common/unicode/utypes.h +=================================================================== +--- icu.orig/source/common/unicode/utypes.h ++++ icu/source/common/unicode/utypes.h +@@ -134,9 +134,9 @@ + * ICU 1.8.x on EBCDIC, etc.. + * @stable ICU 2.0 + */ +-#define U_ICUDATA_NAME "icudt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER ++#define U_ICUDATA_NAME "icudt" U_ICU_VERSION_MAJOR_STR U_ICUDATA_TYPE_LETTER + #ifndef U_HIDE_INTERNAL_API +-#define U_USRDATA_NAME "usrdt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER /**< @internal */ ++#define U_USRDATA_NAME "usrdt" U_ICU_VERSION_MAJOR_STR U_ICUDATA_TYPE_LETTER /**< @internal */ + #define U_USE_USRDATA 1 /**< @internal */ + #endif /* U_HIDE_INTERNAL_API */ + +Index: icu/source/common/unicode/uvernum.h +=================================================================== +--- icu.orig/source/common/unicode/uvernum.h ++++ icu/source/common/unicode/uvernum.h +@@ -58,6 +58,7 @@ + * @stable ICU 2.4 + */ + #define U_ICU_VERSION_MAJOR_NUM 51 ++#define U_ICU_VERSION_MAJOR_STR "51" + + /** The current ICU minor version as an integer. + * This value will change in the subsequent releases of ICU +@@ -83,7 +84,9 @@ + * This value will change in the subsequent releases of ICU + * @stable ICU 2.6 + */ +-#define U_ICU_VERSION_SUFFIX _51 ++#define ___icu_version_expand(major, minor) _ ## major ## _ ## minor ++#define ___icu_version_glue(major, minor) ___icu_version_expand(major, minor) ++#define U_ICU_VERSION_SUFFIX ___icu_version_glue(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM) + + /** + * \def U_DEF2_ICU_ENTRY_POINT_RENAME +@@ -124,7 +127,7 @@ + * This value will change in the subsequent releases of ICU + * @stable ICU 2.6 + */ +-#define U_ICU_VERSION_SHORT "51" ++#define U_ICU_VERSION_SHORT "51_2" + + #ifndef U_HIDE_INTERNAL_API + /** Data version in ICU4C. Index: icu/source/config/mh-linux =================================================================== --- icu.orig/source/config/mh-linux diff --git a/icu.changes b/icu.changes index 1f4a821..6081378 100644 --- a/icu.changes +++ b/icu.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Sun Jul 14 13:50:44 UTC 2013 - jengelh@inai.de + +- Change icu-versioning.diff: Resolve libqt4 emitting a warning + that it cannot dlopen libicui18n.so +- Build I18N data as a plain file rather than as an arch-dependent + huge shared library +- Add icu-fix-install-mode-files.diff + ------------------------------------------------------------------- Sat Jun 15 20:05:05 UTC 2013 - jengelh@inai.de diff --git a/icu.spec b/icu.spec index 0bebaab..a5c8ac4 100644 --- a/icu.spec +++ b/icu.spec @@ -33,6 +33,7 @@ Source3: sanitize_docs.sh Patch1: icu-rpmlint.diff Patch2: icu-remove-datetime.patch Patch3: icu-versioning.diff +Patch4: icu-fix-install-mode-files.diff BuildRequires: fdupes BuildRequires: gcc-c++ BuildRequires: pkg-config @@ -51,10 +52,8 @@ line, and sentence breaking, etc. This subpackage contains the runtime programs for interacting with ICU. %package -n %lname -# Splitting this package is of no significant benefit: -# icudata (largest part) is always needed. -Summary: International Components for Unicode (development files) -Group: Development/Libraries/C and C++ +Summary: International Components for Unicode +Group: System/Libraries %ifarch ppc64 # bug437293 Obsoletes: libicu-64bit @@ -64,12 +63,28 @@ Obsoletes: icu-i18ndata # Following O/P added in timeframe for 12.2 Provides: libicu = %version-%release Obsoletes: libicu < %version-%release +Requires: libicu%aversion-data %description -n %lname ICU is a set of C and C++ libraries that provides robust and full-featured Unicode support. This package contains the runtime libraries for ICU which include precompiled locale data. +%package -n libicu%aversion-data +Summary: International Components for Unicode +Group: System/Libraries +%if 0%{?suse_version} >= 1210 +BuildArch: noarch +%endif + +%description -n libicu%aversion-data +ICU is a set of C and C++ libraries that provides robust and +full-featured Unicode support. This package contains the runtime +libraries for ICU which include precompiled locale data. + +This subpackage contains the precompiled ICU databases that contain +most of the locale-specific information. + %package -n libicu-devel Summary: International Components for Unicode (development files) Group: Development/Libraries/C and C++ @@ -104,21 +119,19 @@ found in the "icu" package. This data describes the Unicode data (normative and informative) and also all the table-based converters provided in the ICU distribution. -This package contains uncompiled source data. Precompiled data is in -the "%lname" package. +This package contains uncompiled source data. %prep %setup -qn icu -a2 -%patch -P 1 -P 2 -P 3 -p1 +%patch -P 1 -P 2 -P 3 -P 4 -p1 %build cd source export CXXFLAGS="%optflags -DICU_DATA_DIR=\\\"/usr/share/icu/%version/\\\"" export CFLAGS="$CXXFLAGS" -%configure --disable-static \ - --enable-shared \ - --disable-samples -make %{?_smp_mflags} VERBOSE=1 +%configure --disable-static --enable-shared --disable-samples \ + --with-data-packaging=archive +make %{?_smp_mflags} %install b="%buildroot" @@ -156,12 +169,13 @@ rm "$b/%_datadir/icu/%version/install-sh" %fdupes %buildroot/%_prefix %check +#ln source/data/in/icudt51l.dat source/data/in/icudt%{version}l.dat cd source %if !0%{?qemu_user_space_build:1} # Checks disabled in qemu because of races happening when we emulate # multi-threaded programs, and some check tests atomic instructions in # multi-threaded icu invocations -make check VERBOSE=1 +ICU_DATA="%buildroot/%_datadir/icu/%version" make check VERBOSE=1 %endif # This should be run by whatever owns /usr/lib64/icu - @@ -210,11 +224,19 @@ fi; %defattr(-, root, root) %_libdir/libicu*.so.* +%files -n libicu%aversion-data +%defattr(-,root,root) +%dir %_datadir/icu +%dir %_datadir/icu/%version +%_datadir/icu/%version/icudt51l.dat + %files -n libicu-devel %defattr(-, root, root) %_libdir/libicu*.so %_includedir/unicode/ %_includedir/layout/ +%dir %_libdir/icu/ +%dir %_libdir/icu/%version/ %_libdir/icu/%version/Makefile.inc %_libdir/icu/%version/pkgdata.inc %_libdir/icu/Makefile.inc @@ -233,6 +255,8 @@ fi; %files data %defattr(-, root, root) +%dir %_datadir/icu/ +%dir %_datadir/icu/%version/ %_datadir/icu/%version/unidata/ %_datadir/icu/%version/UnicodeData.txt