Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP2:Update
icu.18168
icu-versioning.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File icu-versioning.diff of Package icu.18168
From: Jan Engelhardt <jengelh@inai.de> Date: 2013-06-11 03:36:48.480850779 +0200 References: http://bugzilla.novell.com/824262 Directions: drop patch if unable to forward-port ICU sometimes changes their ABI without updating the SO numbers. They did that before, and they did it again with 51.1->51.2. In part, this is owed to how C++ is compiled on the contemporary implementations. Thus, we will use the full version as the SO identifier in openSUSE. Details: U_ICU_VERSION_SHORT was (example) "51" before when there was a libicui18n.so.51. Now, since there is a libicui18n.so.51.2, we need to change U_ICU_VERSION_SHORT. But the define's documentation says "without dots", and I do not know how much downstream code depends on the non-dot feature, if at all. Anyhow, to bypass this question to which we have no definite answer, U_ICU_VERSION_SHORT is instead simply defined to "51_2" and we "fix" (read like: hack) it with symlinks. However, the ICU source also uses U_ICU_VERSION_SHORT to construct the path to its data files. However, as there is no "icudt51_2l.dat", but only a "icudt51l.dat", U_ICU_VERSION_MAJOR_STR is introduced for ICU-internal use, so that I do not have to edit more dirty Makefiles to produce a "icudt51_2l.dat" instead. In fact, placing the version number in "icudt51l" seems redundant, since that file is in a version-specific directory anyway (/usr/share/icu/51.2/) — another point where ICU development seems to not pay enough attention. --- source/common/icuplug.cpp | 2 +- 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 + source/extra/uconv/pkgdataMakefile.in | 1 + source/icudefs.mk.in | 1 + source/test/testdata/pkgdataMakefile.in | 1 + source/tools/pkgdata/pkgdata.cpp | 4 ++-- 10 files changed, 16 insertions(+), 8 deletions(-) Index: icu/source/common/icuplug.cpp =================================================================== --- icu.orig/source/common/icuplug.cpp +++ icu/source/common/icuplug.cpp @@ -760,7 +760,7 @@ uplug_init(UErrorCode *status) { pluginFile.append(plugin_dir, *status); pluginFile.append(U_FILE_SEP_STRING, -1, *status); pluginFile.append("icuplugins", -1, *status); - pluginFile.append(U_ICU_VERSION_SHORT, -1, *status); + pluginFile.append(U_ICU_VERSION_MAJOR_STR, -1, *status); pluginFile.append(".txt", -1, *status); #endif Index: icu/source/common/unicode/utypes.h =================================================================== --- icu.orig/source/common/unicode/utypes.h +++ icu/source/common/unicode/utypes.h @@ -136,9 +136,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 0 /**< @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 @@ -61,6 +61,7 @@ * @stable ICU 2.4 */ #define U_ICU_VERSION_MAJOR_NUM 65 +#define U_ICU_VERSION_MAJOR_STR "65" /** The current ICU minor version as an integer. * This value will change in the subsequent releases of ICU @@ -86,7 +87,9 @@ * This value will change in the subsequent releases of ICU * @stable ICU 2.6 */ -#define U_ICU_VERSION_SUFFIX _65 +#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 @@ -152,7 +155,7 @@ * * @stable ICU 2.6 */ -#define U_ICU_VERSION_SHORT "65" +#define U_ICU_VERSION_SHORT "65_1" #ifndef U_HIDE_INTERNAL_API /** Data version in ICU4C. Index: icu/source/config/mh-linux =================================================================== --- icu.orig/source/config/mh-linux +++ icu/source/config/mh-linux @@ -27,7 +27,7 @@ LDFLAGSICUDT=-nodefaultlibs -nostdlib ## Compiler switch to embed a library name # The initial tab in the next line is to prevent icu-config from reading it. - LD_SONAME = -Wl,-soname -Wl,$(notdir $(MIDDLE_SO_TARGET)) + LD_SONAME = -Wl,-soname -Wl,$(notdir $(FULL_SO_TARGET)) #SH# # We can't depend on MIDDLE_SO_TARGET being set. #SH# LD_SONAME= Index: icu/source/config/pkgdataMakefile.in =================================================================== --- icu.orig/source/config/pkgdataMakefile.in +++ icu/source/config/pkgdataMakefile.in @@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk OUTPUTFILE=pkgdata.inc MIDDLE_SO_TARGET= +FULL_SO_TARGET= PKGDATA_TRAILING_SPACE=" " all : clean Index: icu/source/data/pkgdataMakefile.in =================================================================== --- icu.orig/source/data/pkgdataMakefile.in +++ icu/source/data/pkgdataMakefile.in @@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk OUTPUTFILE=icupkg.inc MIDDLE_SO_TARGET= +FULL_SO_TARGET= PKGDATA_TRAILING_SPACE=" " all : clean Index: icu/source/extra/uconv/pkgdataMakefile.in =================================================================== --- icu.orig/source/extra/uconv/pkgdataMakefile.in +++ icu/source/extra/uconv/pkgdataMakefile.in @@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk OUTPUTFILE=pkgdata.inc MIDDLE_SO_TARGET= +FULL_SO_TARGET= PKGDATA_TRAILING_SPACE=" " all : clean Index: icu/source/icudefs.mk.in =================================================================== --- icu.orig/source/icudefs.mk.in +++ icu/source/icudefs.mk.in @@ -202,6 +202,7 @@ LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH # Versioned target for a shared library. FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION) +FULL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION) MIDDLE_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION_MAJOR) SHARED_OBJECT = $(FINAL_SO_TARGET) Index: icu/source/test/testdata/pkgdataMakefile.in =================================================================== --- icu.orig/source/test/testdata/pkgdataMakefile.in +++ icu/source/test/testdata/pkgdataMakefile.in @@ -16,6 +16,7 @@ include $(top_builddir)/icudefs.mk OUTPUTFILE=pkgdata.inc MIDDLE_SO_TARGET= +FULL_SO_TARGET= PKGDATA_TRAILING_SPACE=" " all : clean Index: icu/source/tools/pkgdata/pkgdata.cpp =================================================================== --- icu.orig/source/tools/pkgdata/pkgdata.cpp +++ icu/source/tools/pkgdata/pkgdata.cpp @@ -1379,7 +1379,7 @@ static int32_t pkg_generateLibraryFile(c length = static_cast<int32_t>(uprv_strlen(pkgDataFlags[GENLIB]) + uprv_strlen(pkgDataFlags[LDICUDTFLAGS]) + ((uprv_strlen(targetDir) + uprv_strlen(libFileNames[LIB_FILE_VERSION_TMP])) * 2) + uprv_strlen(objectFile) + uprv_strlen(pkgDataFlags[LD_SONAME]) + - uprv_strlen(pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION_MAJOR]) + + uprv_strlen(pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION]) + uprv_strlen(pkgDataFlags[RPATH_FLAGS]) + uprv_strlen(pkgDataFlags[BIR_FLAGS]) + BUFFER_PADDING_SIZE); #if U_PLATFORM == U_PF_CYGWIN length += static_cast<int32_t>(uprv_strlen(targetDir) + uprv_strlen(libFileNames[LIB_FILE_CYGWIN_VERSION])); @@ -1426,7 +1426,7 @@ static int32_t pkg_generateLibraryFile(c #endif objectFile, pkgDataFlags[LD_SONAME], - pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION_MAJOR], + pkgDataFlags[LD_SONAME][0] == 0 ? "" : libFileNames[LIB_FILE_VERSION], pkgDataFlags[RPATH_FLAGS], pkgDataFlags[BIR_FLAGS]);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor