SHA256
1
0
forked from pool/icu

Accepting request 247305 from home:jengelh:ports

- Build both B and L-type endianess variants of icudt53.dat so that
  icu-data really is arch-independent again
- Add icu-error-reporting.diff

OBS-URL: https://build.opensuse.org/request/show/247305
OBS-URL: https://build.opensuse.org/package/show/X11:common:Factory/icu?expand=0&rev=51
This commit is contained in:
Jan Engelhardt 2014-09-02 21:17:18 +00:00 committed by Git OBS Bridge
parent 6a252a6d98
commit dbdfe05c09
3 changed files with 145 additions and 16 deletions

64
icu-error-reporting.diff Normal file
View File

@ -0,0 +1,64 @@
Date: 2014-08-13 15:39:48.523887951 +0200
From: Jan Engelhardt <jengelh@inai.de>
Error messages are totally useless without the actual error cause!
---
source/tools/toolutil/package.cpp | 5 +++--
source/tools/toolutil/writesrc.c | 6 ++++--
2 files changed, 7 insertions(+), 4 deletions(-)
Index: icu/source/tools/toolutil/package.cpp
===================================================================
--- icu.orig/source/tools/toolutil/package.cpp
+++ icu/source/tools/toolutil/package.cpp
@@ -33,6 +33,7 @@
#include "package.h"
#include "cmemory.h"
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -751,7 +752,7 @@ Package::writePackage(const char *filena
// create the file and write its contents
file=fopen(filename, "wb");
if(file==NULL) {
- fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename);
+ fprintf(stderr, "icupkg: unable to create file \"%s\": %s\n", filename, strerror(errno));
exit(U_FILE_ACCESS_ERROR);
}
@@ -1172,7 +1173,7 @@ Package::extractItem(const char *filesPa
makeFullFilenameAndDirs(filesPath, outName, filename, (int32_t)sizeof(filename));
file=fopen(filename, "wb");
if(file==NULL) {
- fprintf(stderr, "icupkg: unable to create file \"%s\"\n", filename);
+ fprintf(stderr, "icupkg: unable to create file \"%s\": %s\n", filename, strerror(errno));
exit(U_FILE_ACCESS_ERROR);
}
fileLength=(int32_t)fwrite(pItem->data, 1, pItem->length, file);
Index: icu/source/tools/toolutil/writesrc.c
===================================================================
--- icu.orig/source/tools/toolutil/writesrc.c
+++ icu/source/tools/toolutil/writesrc.c
@@ -16,7 +16,9 @@
* Helper functions for writing source code for data.
*/
+#include <errno.h>
#include <stdio.h>
+#include <string.h>
#include <time.h>
#include "unicode/utypes.h"
#include "unicode/putil.h"
@@ -64,8 +66,8 @@ usrc_createWithHeader(const char *path,
} else {
fprintf(
stderr,
- "usrc_create(%s, %s): unable to create file\n",
- path!=NULL ? path : "", filename);
+ "usrc_create(%s, %s): unable to create file: %s\n",
+ path!=NULL ? path : "", filename, strerror(errno));
}
return f;
}

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Wed Aug 13 13:55:08 UTC 2014 - jengelh@inai.de
- Build both B and L-type endianess variants of icudt53.dat so that
icu-data really is arch-independent again
- Add icu-error-reporting.diff
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Jul 29 19:44:47 UTC 2014 - coolo@suse.com Tue Jul 29 19:44:47 UTC 2014 - coolo@suse.com

View File

@ -17,6 +17,7 @@
%define lname libicu53_1 %define lname libicu53_1
%define amajor 53
%define aversion 53_1 %define aversion 53_1
Name: icu Name: icu
Version: 53.1 Version: 53.1
@ -35,11 +36,17 @@ Patch2: icu-remove-datetime.patch
Patch3: icu-versioning.diff Patch3: icu-versioning.diff
Patch4: icu-fix-install-mode-files.diff Patch4: icu-fix-install-mode-files.diff
Patch5: icu-fix-tests-depending-on-date.patch Patch5: icu-fix-tests-depending-on-date.patch
Patch6: icu-error-reporting.diff
BuildRequires: fdupes BuildRequires: fdupes
BuildRequires: gcc-c++ BuildRequires: gcc-c++
BuildRequires: pkg-config BuildRequires: pkg-config
BuildRequires: unzip BuildRequires: unzip
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
%ifarch %armb hppa mips mips64 ppc ppc64 %sparc s390 s390x
%define be_platform 1
%else
%define be_platform 0
%endif
%description %description
ICU is a set of C and C++ libraries that provides robust and ICU is a set of C and C++ libraries that provides robust and
@ -55,7 +62,11 @@ This subpackage contains the runtime programs for interacting with ICU.
%package -n %lname %package -n %lname
Summary: International Components for Unicode Summary: International Components for Unicode
Group: System/Libraries Group: System/Libraries
Requires: libicu%aversion-data %if %be_platform
Requires: libicu%{aversion}-bedata
%else
Requires: libicu%{aversion}-ledata
%endif
Requires: timezone Requires: timezone
# Following O/P added in timeframe for 12.2 # Following O/P added in timeframe for 12.2
Provides: libicu = %version Provides: libicu = %version
@ -66,20 +77,49 @@ ICU is a set of C and C++ libraries that provides robust and
full-featured Unicode support. This package contains the runtime full-featured Unicode support. This package contains the runtime
libraries for ICU which include precompiled locale data. libraries for ICU which include precompiled locale data.
%package -n libicu%aversion-data %package -n libicu%aversion-bedata
Summary: International Components for Unicode Summary: Rule databases and tables for ICU
Group: System/Libraries Group: System/Libraries
%if 0%{?suse_version} >= 1210 %if 0%{?suse_version} >= 1210
BuildArch: noarch BuildArch: noarch
%endif %endif
%if %be_platform
# Added for 13.2
Obsoletes: libicu%aversion-data
Provides: libicu%aversion-data
%endif
%description -n libicu%aversion-data %description -n libicu%aversion-bedata
ICU is a set of C and C++ libraries that provides robust and ICU is a set of C and C++ libraries that provides robust and
full-featured Unicode support. This package contains the runtime full-featured Unicode support.
libraries for ICU which include precompiled locale data.
This subpackage contains the precompiled ICU databases that contain ICU makes use of a wide variety of data tables to provide many of its
most of the locale-specific information. services: converter mapping tables, collation rules, transliteration
rules, break iterator rules and dictionaries.
This subpackage contains these data tables, in big-endian format.
%package -n libicu%aversion-ledata
Summary: Rule databases and tables for ICU
Group: System/Libraries
%if 0%{?suse_version} >= 1210
BuildArch: noarch
%endif
%if !%be_platform
# Added for 13.2
Obsoletes: libicu%aversion-data
Provides: libicu%aversion-data
%endif
%description -n libicu%aversion-ledata
ICU is a set of C and C++ libraries that provides robust and
full-featured Unicode support.
ICU makes use of a wide variety of data tables to provide many of its
services: converter mapping tables, collation rules, transliteration
rules, break iterator rules and dictionaries.
This subpackage contains these data tables, in little-endian format.
%package -n libicu-devel %package -n libicu-devel
Summary: International Components for Unicode (development files) Summary: International Components for Unicode (development files)
@ -91,16 +131,16 @@ ICU is a C++ and C library that provides robust and full-featured
Unicode support. This package contains the development files for ICU. Unicode support. This package contains the development files for ICU.
%package -n libicu-doc %package -n libicu-doc
Summary: International Components for Unicode (html documentation) Summary: International Components for Unicode (HTML documentation)
Group: Development/Libraries/C and C++ Group: Documentation/HTML
%description -n libicu-doc %description -n libicu-doc
ICU is a C++ and C library that provides robust and full-featured ICU is a C++ and C library that provides robust and full-featured
Unicode support. This package contains the html documentation. Unicode support. This package contains the HTML documentation.
%package data %package data
Summary: International Components for Unicode (Sources for the Data in ICU) Summary: International Components for Unicode (Sources for the Data in ICU)
Group: System/Libraries Group: Development/Sources
Requires: %lname >= %version Requires: %lname >= %version
%description data %description data
@ -121,7 +161,7 @@ cd html
unzip %SOURCE2 unzip %SOURCE2
cd .. cd ..
%patch -P 1 -P 2 -P 3 -P 4 -p1 -P 5 -p1 %patch -P 1 -P 2 -P 3 -P 4 -P 5 -P 6 -p1
%build %build
cd source cd source
@ -133,6 +173,15 @@ export CFLAGS="$CXXFLAGS"
--disable-samples \ --disable-samples \
--with-data-packaging=archive --with-data-packaging=archive
make %{?_smp_mflags} VERBOSE=1 make %{?_smp_mflags} VERBOSE=1
# Build the other endianess, too.
pushd data/
%if %be_platform
cp in/icudt%{amajor}l.dat out/
%else
LD_LIBRARY_PATH="../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH" \
../bin/icupkg -tb ./in/icudt%{amajor}l.dat ./out/icudt%{amajor}b.dat
%endif
popd
%install %install
mkdir -p "%buildroot/%_docdir/%name" mkdir -p "%buildroot/%_docdir/%name"
@ -143,6 +192,7 @@ find . -name CVS -type d -exec rm -Rf "{}" "+"
cd source cd source
make install DESTDIR="%buildroot" make install DESTDIR="%buildroot"
cp data/out/icudt*.dat "%buildroot/%_datadir/icu/%version/"
# #
# ICU's "pkgdata" utility is really fragile, so icu-versioning.diff # ICU's "pkgdata" utility is really fragile, so icu-versioning.diff
@ -162,7 +212,9 @@ for i in *.so.[0-9]*; do
done done
popd popd
# /usr/lib/rpm/elfdeps requires +x bit and not all had it at one point # /usr/lib/rpm/elfdeps requires +x bit and not all files had it at one point.
# - OpenBSD for example is known to have patched their libtool program
# to kill the x bit on install :(
chmod a+rx "%buildroot/%_libdir"/lib*.so.* chmod a+rx "%buildroot/%_libdir"/lib*.so.*
# install uncompiled source data: # install uncompiled source data:
@ -231,11 +283,17 @@ fi;
%defattr(-, root, root) %defattr(-, root, root)
%_libdir/libicu*.so.* %_libdir/libicu*.so.*
%files -n libicu%aversion-data %files -n libicu%{aversion}-bedata
%defattr(-,root,root) %defattr(-,root,root)
%dir %_datadir/icu %dir %_datadir/icu
%dir %_datadir/icu/%version %dir %_datadir/icu/%version
%_datadir/icu/%version/icudt5*[bl].dat %_datadir/icu/%version/icudt%{amajor}b.dat
%files -n libicu%{aversion}-ledata
%defattr(-,root,root)
%dir %_datadir/icu
%dir %_datadir/icu/%version
%_datadir/icu/%version/icudt%{amajor}l.dat
%files -n libicu-devel %files -n libicu-devel
%defattr(-, root, root) %defattr(-, root, root)