From ccebf13043e20ef9d92a18d3c331f5de76b66687 Mon Sep 17 00:00:00 2001 From: Raphael Groner Date: Tue, 1 Mar 2016 16:51:37 +0100 Subject: [PATCH] Attempt to fix rhbz#1307633 build for i686 Apply patches https://bugzilla.redhat.com/attachment.cgi?id=1131224 https://bugzilla.redhat.com/attachment.cgi?id=1131225 minus the general cleanup split out. --- icu-56.1-codes-cache-extend.patch | 128 ++++++++++++++++++++++++++++++ icu.spec | 29 ++++++- 2 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 icu-56.1-codes-cache-extend.patch diff --git a/icu-56.1-codes-cache-extend.patch b/icu-56.1-codes-cache-extend.patch new file mode 100644 index 0000000..4d40ebd --- /dev/null +++ b/icu-56.1-codes-cache-extend.patch @@ -0,0 +1,128 @@ +--- icu/source/common/udata.orig 2016-02-28 08:21:34.766455512 +0100 ++++ icu/source/common/udata.cpp 2016-02-28 08:21:56.526493756 +0100 +@@ -101,7 +101,7 @@ static UDataMemory *udata_findCachedData + * that they really need, reducing the size of binaries that take advantage + * of this. + */ +-static UDataMemory *gCommonICUDataArray[10] = { NULL }; // Access protected by icu global mutex. ++static UDataMemory *gCommonICUDataArray[32] = { NULL }; // Access protected by icu global mutex. + + static u_atomic_int32_t gHaveTriedToLoadCommonData = ATOMIC_INT32_T_INITIALIZER(0); // See extendICUData(). + +@@ -114,7 +114,7 @@ static UDataFileAccess gDataFileAccess + static UBool U_CALLCONV + udata_cleanup(void) + { +- int32_t i; ++ uint32_t i; + + if (gCommonDataCache) { /* Delete the cache of user data mappings. */ + uhash_close(gCommonDataCache); /* Table owns the contents, and will delete them. */ +@@ -135,7 +135,7 @@ static UBool U_CALLCONV + findCommonICUDataByName(const char *inBasename) + { + UBool found = FALSE; +- int32_t i; ++ uint32_t i; + + UDataMemory *pData = udata_findCachedData(inBasename); + if (pData == NULL) +@@ -165,7 +165,7 @@ setCommonICUData(UDataMemory *pData, + UErrorCode *pErr) + { + UDataMemory *newCommonData = UDataMemory_createNewInstance(pErr); +- int32_t i; ++ uint32_t i; + UBool didUpdate = FALSE; + if (U_FAILURE(*pErr)) { + return FALSE; +@@ -318,7 +318,7 @@ static UDataMemory *udata_findCachedData + static UDataMemory *udata_cacheDataItem(const char *path, UDataMemory *item, UErrorCode *pErr) { + DataCacheElement *newElement; + const char *baseName; +- int32_t nameLen; ++ uint32_t nameLen; + UHashtable *htable; + DataCacheElement *oldValue = NULL; + UErrorCode subErr = U_ZERO_ERROR; +@@ -343,7 +343,7 @@ static UDataMemory *udata_cacheDataItem( + UDatamemory_assign(newElement->item, item); + + baseName = findBasename(path); +- nameLen = (int32_t)uprv_strlen(baseName); ++ nameLen = (uint32_t)uprv_strlen(baseName); + newElement->name = (char *)uprv_malloc(nameLen+1); + if (newElement->name == NULL) { + *pErr = U_MEMORY_ALLOCATION_ERROR; +@@ -456,13 +456,13 @@ UDataPathIterator::UDataPathIterator(con + + /** Item **/ + basename = findBasename(item); +- basenameLen = (int32_t)uprv_strlen(basename); ++ basenameLen = (uint32_t)uprv_strlen(basename); + + /** Item path **/ + if(basename == item) { + nextPath = path; + } else { +- itemPath.append(item, (int32_t)(basename-item), *pErrorCode); ++ itemPath.append(item, (uint32_t)(basename-item), *pErrorCode); + nextPath = itemPath.data(); + } + #ifdef UDATA_DEBUG +@@ -519,16 +519,16 @@ const char *UDataPathIterator::next(UErr + + if(nextPath == itemPath.data()) { /* we were processing item's path. */ + nextPath = path; /* start with regular path next tm. */ +- pathLen = (int32_t)uprv_strlen(currentPath); ++ pathLen = (uint32_t)uprv_strlen(currentPath); + } else { + /* fix up next for next time */ + nextPath = uprv_strchr(currentPath, U_PATH_SEP_CHAR); + if(nextPath == NULL) { + /* segment: entire path */ +- pathLen = (int32_t)uprv_strlen(currentPath); ++ pathLen = (uint32_t)uprv_strlen(currentPath); + } else { + /* segment: until next segment */ +- pathLen = (int32_t)(nextPath - currentPath); ++ pathLen = (uint32_t)(nextPath - currentPath); + /* skip divider */ + nextPath ++; + } +@@ -672,7 +672,7 @@ openCommonData(const char *path, + if(gCommonICUDataArray[commonDataIndex] != NULL) { + return gCommonICUDataArray[commonDataIndex]; + } +- int32_t i; ++ uint32_t i; + for(i = 0; i < commonDataIndex; ++i) { + if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) { + /* The linked-in data is already in the list. */ +@@ -1022,7 +1022,7 @@ static UDataMemory *doLoadFromCommonData + UDataMemory *pEntryData; + const DataHeader *pHeader; + UDataMemory *pCommonData; +- int32_t commonDataIndex; ++ uint32_t commonDataIndex; + UBool checkedExtendedICUData = FALSE; + /* try to get common data. The loop is for platforms such as the 390 that do + * not initially load the full set of ICU data. If the lookup of an ICU data item +@@ -1127,7 +1127,7 @@ doOpenChoice(const char *path, const cha + + const char *dataPath; + +- int32_t tocEntrySuffixIndex; ++ uint32_t tocEntrySuffixIndex; + const char *tocEntryPathSuffix; + UErrorCode subErrorCode=U_ZERO_ERROR; + const char *treeChar; +@@ -1191,7 +1191,7 @@ doOpenChoice(const char *path, const cha + if(isICUData) { + pkgName.append(U_ICUDATA_NAME, *pErrorCode); + } else { +- pkgName.append(path, (int32_t)(treeChar-path), *pErrorCode); ++ pkgName.append(path, (uint32_t)(treeChar-path), *pErrorCode); + if (first == NULL) { + /* + This user data has no path, but there is a tree name. diff --git a/icu.spec b/icu.spec index 55be56f..bdb8eae 100644 --- a/icu.spec +++ b/icu.spec @@ -1,6 +1,8 @@ +#%%global debugtrace 1 + Name: icu Version: 56.1 -Release: 4%{?dist} +Release: 5%{?dist} Summary: International Components for Unicode Group: Development/Tools License: MIT and UCD and Public Domain @@ -16,6 +18,7 @@ Patch3: icu.7601.Indic-ccmp.patch Patch4: gennorm2-man.patch Patch5: icuinfo-man.patch Patch6: armv7hl-disable-tests.patch +Patch7: %{name}-%{version}-codes-cache-extend.patch %description Tools and utilities for developing with icu. @@ -66,9 +69,11 @@ BuildArch: noarch %ifarch armv7hl %patch6 -p1 -b .armv7hl-disable-tests.patch %endif +%patch7 -p1 -b .codes-cache-extend.patch + %build -cd source +pushd source autoconf CFLAGS='%optflags -fno-strict-aliasing' CXXFLAGS='%optflags -fno-strict-aliasing' @@ -76,8 +81,14 @@ CXXFLAGS='%optflags -fno-strict-aliasing' %if ! 0%{?endian} CPPFLAGS='-DU_IS_BIG_ENDIAN=1' %endif + #rhbz856594 do not use --disable-renaming or cope with the mess -%configure --with-data-packaging=library --disable-samples +OPTIONS='--with-data-packaging=library --disable-samples' +%if 0%{?debugtrace} +OPTIONS=$OPTIONS' --enable-debug --enable-tracing' +%endif +%configure $OPTIONS + #rhbz#225896 sed -i 's|-nodefaultlibs -nostdlib||' config/mh-linux #rhbz#681941 @@ -97,6 +108,9 @@ sed -i '/^\s\+\$(INSTALL_DATA) \$(docsrchfiles) \$(DESTDIR)\$(docdir)\/\$(docsub # icu/source/common/unicode/uconfig.h to propagate to consumer packages. test -f uconfig.h.prepend && sed -e '/^#define __UCONFIG_H__/ r uconfig.h.prepend' -i common/unicode/uconfig.h +# more verbosity for build.log +sed -i -r 's|(PKGDATA_OPTS = )|\1-v |' data/Makefile + make %{?_smp_mflags} VERBOSE=1 make %{?_smp_mflags} doc @@ -118,6 +132,11 @@ if grep -q @VERSION@ source/tools/*/*.8 source/tools/*/*.1 source/config/*.1; th fi make %{?_smp_mflags} -C source check ||: +# log available codes +pushd source +LD_LIBRARY_PATH=lib:stubdata:tools/ctestfw:$LD_LIBRARY_PATH bin/uconv -l + + %post -n lib%{name} -p /sbin/ldconfig %postun -n lib%{name} -p /sbin/ldconfig @@ -174,6 +193,10 @@ make %{?_smp_mflags} -C source check ||: %doc source/__docs/%{name}/html/* %changelog +* Sun Feb 28 2016 Raphael Groner - 56.1-5 +- even more verbosity and debug output +- add path to extend ICU's internal cache of codes + * Sat Feb 27 2016 Rex Dieter - 56.1-4 - %%build: make VERBOSE=1 - %%check: keep 'make check' non-fatal while investigating rhbz#1307633