From: Jan Engelhardt Date: 2013-06-11 03:36:48.480850779 +0200 References: http://bugzilla.novell.com/824262 I've had it with ICU always changing their ABI without updating the SO numbers. They did that before, and they have done it with 51.1->51.2 again. !@# (Will icu-project ever get their act together?) Thus, we will use the full version as the SO identifier in openSUSE. --- 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 ++-- 7 files changed, 8 insertions(+), 3 deletions(-) Index: icu/source/config/mh-linux =================================================================== --- icu.orig/source/config/mh-linux +++ icu/source/config/mh-linux @@ -25,7 +25,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 @@ -14,6 +14,7 @@ include $(top_builddir)/icudefs.mk OUTPUTFILE=pkgdata.inc MIDDLE_SO_TARGET= +FULL_SO_TARGET= all : clean @echo GENCCODE_ASSEMBLY_TYPE=$(GENCCODE_ASSEMBLY) >> $(OUTPUTFILE) Index: icu/source/data/pkgdataMakefile.in =================================================================== --- icu.orig/source/data/pkgdataMakefile.in +++ icu/source/data/pkgdataMakefile.in @@ -14,6 +14,7 @@ include $(top_builddir)/icudefs.mk OUTPUTFILE=icupkg.inc MIDDLE_SO_TARGET= +FULL_SO_TARGET= all : clean @echo GENCCODE_ASSEMBLY_TYPE=$(GENCCODE_ASSEMBLY) >> $(OUTPUTFILE) Index: icu/source/extra/uconv/pkgdataMakefile.in =================================================================== --- icu.orig/source/extra/uconv/pkgdataMakefile.in +++ icu/source/extra/uconv/pkgdataMakefile.in @@ -13,6 +13,7 @@ top_builddir = ../.. include $(top_builddir)/icudefs.mk MIDDLE_SO_TARGET= +FULL_SO_TARGET= OUTPUTFILE=pkgdata.inc Index: icu/source/icudefs.mk.in =================================================================== --- icu.orig/source/icudefs.mk.in +++ icu/source/icudefs.mk.in @@ -196,6 +196,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 @@ -13,6 +13,7 @@ top_builddir = ../.. include $(top_builddir)/icudefs.mk MIDDLE_SO_TARGET= +FULL_SO_TARGET= OUTPUTFILE=pkgdata.inc Index: icu/source/tools/pkgdata/pkgdata.cpp =================================================================== --- icu.orig/source/tools/pkgdata/pkgdata.cpp +++ icu/source/tools/pkgdata/pkgdata.cpp @@ -1273,7 +1273,7 @@ static int32_t pkg_generateLibraryFile(c length = 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 += uprv_strlen(targetDir) + uprv_strlen(libFileNames[LIB_FILE_CYGWIN_VERSION]); @@ -1320,7 +1320,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]);