Patchwork [V2,1/1] ICU: upgrade to 50.1

login
register
mail settings
Submitter Qi.Chen@windriver.com
Date Dec. 14, 2012, 10:08 a.m.
Message ID <2ff77d8cdc19c9040f3ede2203700ee91e878e5f.1355479412.git.Qi.Chen@windriver.com>
Download mbox | patch
Permalink /patch/40985/
State New
Headers show

Comments

Qi.Chen@windriver.com - Dec. 14, 2012, 10:08 a.m.
From: Chen Qi <Qi.Chen@windriver.com>

Upgrade ICU to 50.1.
All unnecessary patches of previous version are dropped.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 .../icu/files/fix-parallel-build.patch             |   19 -----
 meta/recipes-support/icu/files/gccfix.patch        |   19 -----
 .../icu/files/icu-add-pkgconfig-support.patch      |   43 ------------
 .../icu/files/larger-cmd-size.patch                |   27 -------
 meta/recipes-support/icu/files/noldlibpath.patch   |   52 --------------
 .../icu/files/use-g++-for-linking.patch            |   74 --------------------
 meta/recipes-support/icu/{icu-3.6.inc => icu.inc}  |   54 ++++----------
 meta/recipes-support/icu/icu_3.6.bb                |    6 --
 meta/recipes-support/icu/icu_50.1.bb               |   11 +++
 9 files changed, 24 insertions(+), 281 deletions(-)
 delete mode 100644 meta/recipes-support/icu/files/fix-parallel-build.patch
 delete mode 100644 meta/recipes-support/icu/files/gccfix.patch
 delete mode 100644 meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch
 delete mode 100644 meta/recipes-support/icu/files/larger-cmd-size.patch
 delete mode 100644 meta/recipes-support/icu/files/noldlibpath.patch
 delete mode 100644 meta/recipes-support/icu/files/use-g++-for-linking.patch
 rename meta/recipes-support/icu/{icu-3.6.inc => icu.inc} (42%)
 delete mode 100644 meta/recipes-support/icu/icu_3.6.bb
 create mode 100644 meta/recipes-support/icu/icu_50.1.bb

\ No newline at end of file
Ross Burton - Dec. 14, 2012, 11:02 a.m.
On 14 December 2012 10:08,  <Qi.Chen@windriver.com> wrote:
> +do_configure_prepend() {
> +    [ -f acinclude.m4 ] || cp aclocal.m4 acinclude.m4

Great to see a version bump that's mostly removing patches and hacks.
Can you add a comment on this prepend to explain what it's doing
(referring to http://bugs.icu-project.org/trac/ticket/9790).

Ross
Martin Jansa - Dec. 14, 2012, 8:52 p.m.
On Fri, Dec 14, 2012 at 06:08:52PM +0800, Qi.Chen@windriver.com wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
> 
> Upgrade ICU to 50.1.
> All unnecessary patches of previous version are dropped.

Here it fails with:

ERROR: Logfile of failure stored in:
/OE/jansa-test/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/icu/50.1-r1/temp/log.do_configure.5863
| configure:3917: checking for gmake
| configure:3935: found /usr/bin/gmake
| configure:3947: result: /usr/bin/gmake
| configure:3983: error: No such directory
/OE/jansa-test/shr-core/tmp-eglibc/work/x86_64-linux/icu-native/50.1-r1/icu/source
supplied as the argument to --with-cross-build. Use an absolute path.

Notice native path when building for target (armv5te). Ah and I'm using
rmwork so maybe it worked for you, because source from native build was
still available when you started target build.

Cheers,

> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>  .../icu/files/fix-parallel-build.patch             |   19 -----
>  meta/recipes-support/icu/files/gccfix.patch        |   19 -----
>  .../icu/files/icu-add-pkgconfig-support.patch      |   43 ------------
>  .../icu/files/larger-cmd-size.patch                |   27 -------
>  meta/recipes-support/icu/files/noldlibpath.patch   |   52 --------------
>  .../icu/files/use-g++-for-linking.patch            |   74 --------------------
>  meta/recipes-support/icu/{icu-3.6.inc => icu.inc}  |   54 ++++----------
>  meta/recipes-support/icu/icu_3.6.bb                |    6 --
>  meta/recipes-support/icu/icu_50.1.bb               |   11 +++
>  9 files changed, 24 insertions(+), 281 deletions(-)
>  delete mode 100644 meta/recipes-support/icu/files/fix-parallel-build.patch
>  delete mode 100644 meta/recipes-support/icu/files/gccfix.patch
>  delete mode 100644 meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch
>  delete mode 100644 meta/recipes-support/icu/files/larger-cmd-size.patch
>  delete mode 100644 meta/recipes-support/icu/files/noldlibpath.patch
>  delete mode 100644 meta/recipes-support/icu/files/use-g++-for-linking.patch
>  rename meta/recipes-support/icu/{icu-3.6.inc => icu.inc} (42%)
>  delete mode 100644 meta/recipes-support/icu/icu_3.6.bb
>  create mode 100644 meta/recipes-support/icu/icu_50.1.bb
> 
> diff --git a/meta/recipes-support/icu/files/fix-parallel-build.patch b/meta/recipes-support/icu/files/fix-parallel-build.patch
> deleted file mode 100644
> index 5b01a4c..0000000
> --- a/meta/recipes-support/icu/files/fix-parallel-build.patch
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -Upstream-Status: pending
> -
> -Fix parallel builds
> -
> -Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
> -
> -Index: source/data/Makefile.in
> -===================================================================
> ---- source.orig/data/Makefile.in	2011-09-02 02:03:37.000000000 +0400
> -+++ source/data/Makefile.in	2011-09-02 02:06:26.000000000 +0400
> -@@ -351,8 +351,8 @@
> - endif
> -
> -
> --build-dir: $(BUILD_DIRS)
> --$(BUILD_DIRS):
> -+$(MAINBUILDDIR) $(BUILD_DIRS): build-dir
> -+build-dir:
> -	-$(MKINSTALLDIRS) $(BUILD_DIRS)
> diff --git a/meta/recipes-support/icu/files/gccfix.patch b/meta/recipes-support/icu/files/gccfix.patch
> deleted file mode 100644
> index 755341f..0000000
> --- a/meta/recipes-support/icu/files/gccfix.patch
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -Fixes an error which prevents compilation
> -
> -Upstream-Status: Pending
> -
> -Signed-off-by: Scott Garman <scott.a.garman@intel.com>
> -
> -Index: source/layoutex/ParagraphLayout.cpp
> -===================================================================
> ---- source.orig/layoutex/ParagraphLayout.cpp	2009-06-30 11:48:47.000000000 +0100
> -+++ source/layoutex/ParagraphLayout.cpp	2009-06-30 11:49:06.000000000 +0100
> -@@ -798,7 +798,7 @@
> - 
> -     return nullLanguageCode;
> - }
> --#elif
> -+#else
> - 
> - // TODO - dummy implementation for right now...
> - le_int32 ParagraphLayout::getLanguageCode(const Locale *locale)
> diff --git a/meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch b/meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch
> deleted file mode 100644
> index c7cd9d5..0000000
> --- a/meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -Upstream-Status: Inappropriate [version]
> -ICU-3.6 has no pkgconfig, so I add it here. 
> -But ICU has had pkgconfig support since 4.6.
> -So this patch is inappropriate to upstream.
> -
> -Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> -
> -Index: configure.in
> -=============================================================
> ---- a/configure.in
> -+++ b/configure.in
> -@@ -1057,4 +1057,7 @@ echo "This may cause ICU to fail to build. Please make sure that GNU make"
> - echo "is in your PATH so that this configure script can detect its location."
> - fi
> - 
> -+AC_CONFIG_FILES([icu.pc])
> -+AC_OUTPUT
> -+
> - $as_unset _CXX_CXXSUFFIX
> -
> -Index: icu.pc.in
> -=============================================================
> ---- /dev/null
> -+++ b/icu.pc.in
> -@@ -0,0 +1,15 @@
> -+# Process this file with autoconf to produce a pkg-config metadata file.
> -+
> -+prefix=@prefix@
> -+exec_prefix=@exec_prefix@
> -+libdir=@libdir@
> -+includedir=@includedir@
> -+unicode_version=@UNICODE_VERSION@
> -+
> -+Name: ICU
> -+Description: International Component for Unicode libraries
> -+Requires:
> -+Version: @VERSION@
> -+Libs: -L${libdir} -licui18n -licuuc -licudata
> -+Libs.private: -L{libdir} -lpthread -lm
> -+Cflags: -I${includedir} -O2 -pipe -g -feliminate-unused-debug-types
> --- 
> -1.7.11.2
> -
> diff --git a/meta/recipes-support/icu/files/larger-cmd-size.patch b/meta/recipes-support/icu/files/larger-cmd-size.patch
> deleted file mode 100644
> index 74a84f1..0000000
> --- a/meta/recipes-support/icu/files/larger-cmd-size.patch
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -Allocate a larger memory size for cmd
> -
> -The length of the command line can be longer than 1024 sometimes,
> -which will cause a "Segmentation fault" error.
> -
> -Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> -
> -Upstream-Status: Pending
> ----
> - tools/pkgdata/pkgdata.c |    2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/tools/pkgdata/pkgdata.c b/tools/pkgdata/pkgdata.c
> ---- a/tools/pkgdata/pkgdata.c
> -+++ b/tools/pkgdata/pkgdata.c
> -@@ -439,7 +439,7 @@ main(int argc, char* argv[]) {
> - /* POSIX - execute makefile */
> - static int executeMakefile(const UPKGOptions *o)
> - {
> --    char cmd[1024];
> -+    char cmd[2048];
> -     /*char pwd[1024];*/
> -     const char *make;
> -     int rc;
> --- 
> -1.7.10.2
> -
> diff --git a/meta/recipes-support/icu/files/noldlibpath.patch b/meta/recipes-support/icu/files/noldlibpath.patch
> deleted file mode 100644
> index 8543044..0000000
> --- a/meta/recipes-support/icu/files/noldlibpath.patch
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -Setting LD_LIBRARY_PATH is a really bad idea when cross compiling. Simplest way
> -to disable this is to rename the variable as per the patch below, then its 
> -harmless. This is a hack.
> -
> -RP 10/6/2010
> -
> -Upstream-Status: Inappropriate [Other]
> -Hacky workaround not likely to be accepted upstream.
> -
> -Signed-off-by: Scott Garman <scott.a.garman@intel.com>
> -
> -Index: source/config/Makefile.inc.in
> -===================================================================
> ---- source.orig/config/Makefile.inc.in	2010-06-10 21:49:19.000000000 +0100
> -+++ source/config/Makefile.inc.in	2010-06-10 21:49:46.000000000 +0100
> -@@ -126,7 +126,7 @@
> - ##################################################################
> - # Environment variable to set a runtime search path
> - #   (Overridden when necessary in -mh files)
> --LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH
> -+LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH2
> - 
> - # Versioned target for a shared library
> - FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION)
> -Index: source/icudefs.mk.in
> -===================================================================
> ---- source.orig/icudefs.mk.in	2010-06-10 21:51:03.000000000 +0100
> -+++ source/icudefs.mk.in	2010-06-10 21:51:09.000000000 +0100
> -@@ -150,7 +150,7 @@
> - SHLIB.cc=     $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared
> - 
> - # Environment variable to set a runtime search path
> --LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH
> -+LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH2
> - 
> - # Versioned target for a shared library.
> - FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION)
> -Index: source/tools/genrb/gendtjar.pl
> -===================================================================
> ---- source.orig/tools/genrb/gendtjar.pl	2010-06-10 21:51:36.000000000 +0100
> -+++ source/tools/genrb/gendtjar.pl	2010-06-10 21:52:03.000000000 +0100
> -@@ -68,8 +68,8 @@
> -         $icuLibDir = abs_path($icuBinDir."/../lib");
> -         $path .=":$icuBinDir:$icuLibDir";
> -         
> --        $libpath = $ENV{'LD_LIBRARY_PATH'}.":$icuLibDir";
> --        $ENV{'LD_LIBRARY_PATH'} = $libpath;
> -+        $libpath = $ENV{'LD_LIBRARY_PATH2'}.":$icuLibDir";
> -+        $ENV{'LD_LIBRARY_PATH2'} = $libpath;
> -         
> -         #print ("#####  LD_LIBRARY_PATH = $ENV{'LD_LIBRARY_PATH'}\n");
> -     
> diff --git a/meta/recipes-support/icu/files/use-g++-for-linking.patch b/meta/recipes-support/icu/files/use-g++-for-linking.patch
> deleted file mode 100644
> index f477dad..0000000
> --- a/meta/recipes-support/icu/files/use-g++-for-linking.patch
> +++ /dev/null
> @@ -1,74 +0,0 @@
> -Use g++ for linking.
> -
> -Upstream-Status: Inappropriate [Other]
> -Build system specific
> -
> -Signed-off-by: Scott Garman <scott.a.garman@intel.com>
> -
> ----
> - tools/genccode/Makefile.in |    2 +-
> - tools/gencmn/Makefile.in   |    2 +-
> - tools/genrb/Makefile.in    |    2 +-
> - tools/pkgdata/Makefile.in  |    2 +-
> - 4 files changed, 4 insertions(+), 4 deletions(-)
> -
> ---- source.orig/tools/genccode/Makefile.in
> -+++ source/tools/genccode/Makefile.in
> -@@ -76,11 +76,11 @@ check-local: all-local
> - Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
> - 	cd $(top_builddir) \
> - 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
> - 
> - $(TARGET) : $(OBJECTS)
> --	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS)
> -+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
> - 
> - 
> - %.$(SECTION): $(srcdir)/%.$(SECTION).in
> - 	cd $(top_builddir) \
> - 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
> ---- source.orig/tools/gencmn/Makefile.in
> -+++ source/tools/gencmn/Makefile.in
> -@@ -76,11 +76,11 @@ check-local: all-local
> - Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
> - 	cd $(top_builddir) \
> - 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
> - 
> - $(TARGET) : $(OBJECTS)
> --	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS)
> -+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
> - 
> - %.$(SECTION): $(srcdir)/%.$(SECTION).in
> - 	cd $(top_builddir) \
> - 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
> - 
> ---- source.orig/tools/genrb/Makefile.in
> -+++ source/tools/genrb/Makefile.in
> -@@ -84,11 +84,11 @@ Makefile: $(srcdir)/Makefile.in  $(top_b
> - 
> - $(TARGET) : $(OBJECTS)
> - 	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS) 
> - 
> - $(DERB) : $(DERB_OBJ)
> --	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS) 
> -+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
> - 
> - 
> - # This line is needed to serialize builds when the gmake -j option is used.
> - $(TARGET_STUB_NAME).$(SECTION): $(DERB_STUB_NAME).$(SECTION)
> - 
> ---- source.orig/tools/pkgdata/Makefile.in
> -+++ source/tools/pkgdata/Makefile.in
> -@@ -81,11 +81,11 @@ check-local: all-local
> - Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
> - 	cd $(top_builddir) \
> - 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
> - 
> - $(TARGET) : $(OBJECTS)
> --	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS) 
> -+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
> - 
> - 
> - %.$(SECTION): $(srcdir)/%.$(SECTION).in
> - 	cd $(top_builddir) \
> - 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
> diff --git a/meta/recipes-support/icu/icu-3.6.inc b/meta/recipes-support/icu/icu.inc
> similarity index 42%
> rename from meta/recipes-support/icu/icu-3.6.inc
> rename to meta/recipes-support/icu/icu.inc
> index 8caf71c..e7d6189 100644
> --- a/meta/recipes-support/icu/icu-3.6.inc
> +++ b/meta/recipes-support/icu/icu.inc
> @@ -1,61 +1,34 @@
>  SUMMARY = "International Component for Unicode libraries"
>  DESCRIPTION = "The International Component for Unicode (ICU) is a mature, portable set of C/C++ and Java libraries for Unicode support, software internationalization (I18N) and globalization (G11N), giving applications the same results on all platforms."
> -HOMEPAGE = "http://www-01.ibm.com/software/globalization/icu/index.jsp"
> -
> -BASE_SRC_URI = "ftp://ftp.software.ibm.com/software/globalization/icu/3.6/icu4c-3_6-src.tgz \
> -           file://gccfix.patch \
> -           file://fix-parallel-build.patch \
> -           file://use-g++-for-linking.patch \
> -           file://larger-cmd-size.patch \
> -	   file://icu-add-pkgconfig-support.patch \
> -           "
> -SRC_URI = "${BASE_SRC_URI} \
> -           file://noldlibpath.patch \
> -           "
> -SRC_URI_class-native = "${BASE_SRC_URI}"
> +HOMEPAGE = "http://site.icu-project.org/"
>  
>  LICENSE = "ICU"
> -LIC_FILES_CHKSUM = "file://../license.html;md5=5c94767cedb5d6987c902ac850ded2c6"
>  DEPENDS = "icu-native"
>  DEPENDS_class-native = ""
>  
>  S = "${WORKDIR}/icu/source"
> +STAGING_ICU_SOURCE_DIR_NATIVE = "${STAGING_DATADIR_NATIVE}/icu"
>  
>  PARALLEL_MAKE = ""
>  FULL_OPTIMIZATION_arm = "-Os"
>  
>  inherit autotools pkgconfig binconfig
>  
> -do_configure() {
> -	libtoolize --force
> -	gnu-configize --force
> -	if [ "${PN}" != "icu-native" ]; then
> -		OLD=`pwd`
> -		cd ${S}
> -		autoconf
> -		cd ${OLD}
> -	fi
> -	oe_runconf
> -	if [ "${PN}" != "icu-native" ]; then
> -		# In the non-native case we need to make substitutions to use
> -		# the native versions of the tools
> -		for i in */Makefile* */*.inc */*/Makefile* */*/*.inc */*/*.inc.in ; do
> -			sed -i -e 's:$(INVOKE) $(BINDIR)/:$(INVOKE) :g' $i 
> -			sed -i -e 's:$(BINDIR)/::g' $i 
> -		done
> -	fi
> -}
> +# ICU needs the native build directory as an argument to its --with-cross-build option when
> +# cross-compiling. Taken the situation that different builds may share a common sstate-cache
> +# into consideration, the native build directory needs to be staged.
> +EXTRA_OECONF = "--with-cross-build=${STAGING_DATADIR_NATIVE}/icu/source"
> +EXTRA_OECONF_class-native = ""
>  
> -do_compile() {
> -	oe_runmake 'CXX=${CXX}'
> +do_configure_prepend() {
> +    [ -f acinclude.m4 ] || cp aclocal.m4 acinclude.m4
>  }
>  
>  do_install_append() {
> -        chmod +x ${D}${libdir}/lib*
> -	if [ "${PN}" != "icu-native" ]; then
> -		install -d ${D}/${libdir}/pkgconfig
> -        	install -m 0644 ${S}/icu.pc ${D}/${libdir}/pkgconfig
> -	fi
> +    if [ ${PN} == 'icu-native' ]; then
> +	mkdir -p ${D}/${STAGING_ICU_SOURCE_DIR_NATIVE}
> +	cp -r ${S} ${D}/${STAGING_ICU_SOURCE_DIR_NATIVE}
> +    fi
>  }
>  
>  PACKAGES =+ "libicudata libicuuc libicui18n libicule libiculx libicutu libicuio"
> @@ -72,4 +45,3 @@ FILES_libicuio = "${libdir}/libicuio.so.*"
>  
>  BBCLASSEXTEND = "native"
>  
> -SSTATE_SCAN_FILES += "Makefile.inc"
> diff --git a/meta/recipes-support/icu/icu_3.6.bb b/meta/recipes-support/icu/icu_3.6.bb
> deleted file mode 100644
> index f50abe2..0000000
> --- a/meta/recipes-support/icu/icu_3.6.bb
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -require icu-3.6.inc
> -
> -PR = "r10"
> -
> -SRC_URI[md5sum] = "6243f7a19e03e05403ce84e597510d4c"
> -SRC_URI[sha256sum] = "5135e8d69d6206d320515df7aeee7027711ab1aef9d8dbf29571a97a9746b041"
> diff --git a/meta/recipes-support/icu/icu_50.1.bb b/meta/recipes-support/icu/icu_50.1.bb
> new file mode 100644
> index 0000000..8f65c6d
> --- /dev/null
> +++ b/meta/recipes-support/icu/icu_50.1.bb
> @@ -0,0 +1,11 @@
> +require icu.inc
> +
> +LIC_FILES_CHKSUM = "file://../license.html;md5=4ee45701e87d34303281978e3b78ecda"
> +
> +PR = "r1"
> +
> +BASE_SRC_URI = "http://download.icu-project.org/files/icu4c/50.1/icu4c-50_1-src.tgz"
> +SRC_URI = "${BASE_SRC_URI}"
> +
> +SRC_URI[md5sum] = "cf7bf9e56aa6c2057a8b6f464046483e"
> +SRC_URI[sha256sum] = "68592b3c07d9b86100f41d0172eb1a81f3ffb2a8fef1104d7395099079ba7350"
> \ No newline at end of file
> -- 
> 1.7.9.5
> 
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Qi.Chen@windriver.com - Dec. 17, 2012, 2:23 a.m.
On 12/15/2012 04:52 AM, Martin Jansa wrote:
> On Fri, Dec 14, 2012 at 06:08:52PM +0800, Qi.Chen@windriver.com wrote:
>> From: Chen Qi<Qi.Chen@windriver.com>
>>
>> Upgrade ICU to 50.1.
>> All unnecessary patches of previous version are dropped.
> Here it fails with:
>
> ERROR: Logfile of failure stored in:
> /OE/jansa-test/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/icu/50.1-r1/temp/log.do_configure.5863
> | configure:3917: checking for gmake
> | configure:3935: found /usr/bin/gmake
> | configure:3947: result: /usr/bin/gmake
> | configure:3983: error: No such directory
> /OE/jansa-test/shr-core/tmp-eglibc/work/x86_64-linux/icu-native/50.1-r1/icu/source
> supplied as the argument to --with-cross-build. Use an absolute path.
>
> Notice native path when building for target (armv5te). Ah and I'm using
> rmwork so maybe it worked for you, because source from native build was
> still available when you started target build.
>
> Cheers,
>

Thank you for testing it :)
This failure should have been fixed in version 2. Are you using version 
1 of this patch?

Thanks,
Chen Qi
Martin Jansa - Dec. 17, 2012, 7:42 p.m.
On Mon, Dec 17, 2012 at 10:23:44AM +0800, ChenQi wrote:
> On 12/15/2012 04:52 AM, Martin Jansa wrote:
> > On Fri, Dec 14, 2012 at 06:08:52PM +0800, Qi.Chen@windriver.com wrote:
> >> From: Chen Qi<Qi.Chen@windriver.com>
> >>
> >> Upgrade ICU to 50.1.
> >> All unnecessary patches of previous version are dropped.
> > Here it fails with:
> >
> > ERROR: Logfile of failure stored in:
> > /OE/jansa-test/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/icu/50.1-r1/temp/log.do_configure.5863
> > | configure:3917: checking for gmake
> > | configure:3935: found /usr/bin/gmake
> > | configure:3947: result: /usr/bin/gmake
> > | configure:3983: error: No such directory
> > /OE/jansa-test/shr-core/tmp-eglibc/work/x86_64-linux/icu-native/50.1-r1/icu/source
> > supplied as the argument to --with-cross-build. Use an absolute path.
> >
> > Notice native path when building for target (armv5te). Ah and I'm using
> > rmwork so maybe it worked for you, because source from native build was
> > still available when you started target build.
> >
> > Cheers,
> >
> 
> Thank you for testing it :)
> This failure should have been fixed in version 2. Are you using version 
> 1 of this patch?

Ah you're right, it was probably from version 1 you've sent me off list..

BTW: can we stage only parts of native build which are really needed
instead of whole workdir?

Cheers,
Qi.Chen@windriver.com - Dec. 18, 2012, 2:16 a.m.
On 12/18/2012 03:42 AM, Martin Jansa wrote:
> On Mon, Dec 17, 2012 at 10:23:44AM +0800, ChenQi wrote:
>> On 12/15/2012 04:52 AM, Martin Jansa wrote:
>>> On Fri, Dec 14, 2012 at 06:08:52PM +0800, Qi.Chen@windriver.com wrote:
>>>> From: Chen Qi<Qi.Chen@windriver.com>
>>>>
>>>> Upgrade ICU to 50.1.
>>>> All unnecessary patches of previous version are dropped.
>>> Here it fails with:
>>>
>>> ERROR: Logfile of failure stored in:
>>> /OE/jansa-test/shr-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/icu/50.1-r1/temp/log.do_configure.5863
>>> | configure:3917: checking for gmake
>>> | configure:3935: found /usr/bin/gmake
>>> | configure:3947: result: /usr/bin/gmake
>>> | configure:3983: error: No such directory
>>> /OE/jansa-test/shr-core/tmp-eglibc/work/x86_64-linux/icu-native/50.1-r1/icu/source
>>> supplied as the argument to --with-cross-build. Use an absolute path.
>>>
>>> Notice native path when building for target (armv5te). Ah and I'm using
>>> rmwork so maybe it worked for you, because source from native build was
>>> still available when you started target build.
>>>
>>> Cheers,
>>>
>> Thank you for testing it :)
>> This failure should have been fixed in version 2. Are you using version
>> 1 of this patch?
> Ah you're right, it was probably from version 1 you've sent me off list..
>
> BTW: can we stage only parts of native build which are really needed
> instead of whole workdir?

I though about that too. In fact, I tried it out. I finally decided not 
to do so because:
1) The source dir is not very large.
2) Copying all those necessary directories would make the code look 
strange. After all, at least the following directories have to be 
copied, config, bin, lib, stubdata, tools. I'd rather prefer a one-line 
solution.


Cheers,
Chen Qi
> Cheers,
>

Patch

diff --git a/meta/recipes-support/icu/files/fix-parallel-build.patch b/meta/recipes-support/icu/files/fix-parallel-build.patch
deleted file mode 100644
index 5b01a4c..0000000
--- a/meta/recipes-support/icu/files/fix-parallel-build.patch
+++ /dev/null
@@ -1,19 +0,0 @@ 
-Upstream-Status: pending
-
-Fix parallel builds
-
-Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
-
-Index: source/data/Makefile.in
-===================================================================
---- source.orig/data/Makefile.in	2011-09-02 02:03:37.000000000 +0400
-+++ source/data/Makefile.in	2011-09-02 02:06:26.000000000 +0400
-@@ -351,8 +351,8 @@
- endif
-
-
--build-dir: $(BUILD_DIRS)
--$(BUILD_DIRS):
-+$(MAINBUILDDIR) $(BUILD_DIRS): build-dir
-+build-dir:
-	-$(MKINSTALLDIRS) $(BUILD_DIRS)
diff --git a/meta/recipes-support/icu/files/gccfix.patch b/meta/recipes-support/icu/files/gccfix.patch
deleted file mode 100644
index 755341f..0000000
--- a/meta/recipes-support/icu/files/gccfix.patch
+++ /dev/null
@@ -1,19 +0,0 @@ 
-Fixes an error which prevents compilation
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
-Index: source/layoutex/ParagraphLayout.cpp
-===================================================================
---- source.orig/layoutex/ParagraphLayout.cpp	2009-06-30 11:48:47.000000000 +0100
-+++ source/layoutex/ParagraphLayout.cpp	2009-06-30 11:49:06.000000000 +0100
-@@ -798,7 +798,7 @@
- 
-     return nullLanguageCode;
- }
--#elif
-+#else
- 
- // TODO - dummy implementation for right now...
- le_int32 ParagraphLayout::getLanguageCode(const Locale *locale)
diff --git a/meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch b/meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch
deleted file mode 100644
index c7cd9d5..0000000
--- a/meta/recipes-support/icu/files/icu-add-pkgconfig-support.patch
+++ /dev/null
@@ -1,43 +0,0 @@ 
-Upstream-Status: Inappropriate [version]
-ICU-3.6 has no pkgconfig, so I add it here. 
-But ICU has had pkgconfig support since 4.6.
-So this patch is inappropriate to upstream.
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
-Index: configure.in
-=============================================================
---- a/configure.in
-+++ b/configure.in
-@@ -1057,4 +1057,7 @@ echo "This may cause ICU to fail to build. Please make sure that GNU make"
- echo "is in your PATH so that this configure script can detect its location."
- fi
- 
-+AC_CONFIG_FILES([icu.pc])
-+AC_OUTPUT
-+
- $as_unset _CXX_CXXSUFFIX
-
-Index: icu.pc.in
-=============================================================
---- /dev/null
-+++ b/icu.pc.in
-@@ -0,0 +1,15 @@
-+# Process this file with autoconf to produce a pkg-config metadata file.
-+
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+unicode_version=@UNICODE_VERSION@
-+
-+Name: ICU
-+Description: International Component for Unicode libraries
-+Requires:
-+Version: @VERSION@
-+Libs: -L${libdir} -licui18n -licuuc -licudata
-+Libs.private: -L{libdir} -lpthread -lm
-+Cflags: -I${includedir} -O2 -pipe -g -feliminate-unused-debug-types
--- 
-1.7.11.2
-
diff --git a/meta/recipes-support/icu/files/larger-cmd-size.patch b/meta/recipes-support/icu/files/larger-cmd-size.patch
deleted file mode 100644
index 74a84f1..0000000
--- a/meta/recipes-support/icu/files/larger-cmd-size.patch
+++ /dev/null
@@ -1,27 +0,0 @@ 
-Allocate a larger memory size for cmd
-
-The length of the command line can be longer than 1024 sometimes,
-which will cause a "Segmentation fault" error.
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
-Upstream-Status: Pending
----
- tools/pkgdata/pkgdata.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/pkgdata/pkgdata.c b/tools/pkgdata/pkgdata.c
---- a/tools/pkgdata/pkgdata.c
-+++ b/tools/pkgdata/pkgdata.c
-@@ -439,7 +439,7 @@ main(int argc, char* argv[]) {
- /* POSIX - execute makefile */
- static int executeMakefile(const UPKGOptions *o)
- {
--    char cmd[1024];
-+    char cmd[2048];
-     /*char pwd[1024];*/
-     const char *make;
-     int rc;
--- 
-1.7.10.2
-
diff --git a/meta/recipes-support/icu/files/noldlibpath.patch b/meta/recipes-support/icu/files/noldlibpath.patch
deleted file mode 100644
index 8543044..0000000
--- a/meta/recipes-support/icu/files/noldlibpath.patch
+++ /dev/null
@@ -1,52 +0,0 @@ 
-Setting LD_LIBRARY_PATH is a really bad idea when cross compiling. Simplest way
-to disable this is to rename the variable as per the patch below, then its 
-harmless. This is a hack.
-
-RP 10/6/2010
-
-Upstream-Status: Inappropriate [Other]
-Hacky workaround not likely to be accepted upstream.
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
-Index: source/config/Makefile.inc.in
-===================================================================
---- source.orig/config/Makefile.inc.in	2010-06-10 21:49:19.000000000 +0100
-+++ source/config/Makefile.inc.in	2010-06-10 21:49:46.000000000 +0100
-@@ -126,7 +126,7 @@
- ##################################################################
- # Environment variable to set a runtime search path
- #   (Overridden when necessary in -mh files)
--LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH
-+LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH2
- 
- # Versioned target for a shared library
- FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION)
-Index: source/icudefs.mk.in
-===================================================================
---- source.orig/icudefs.mk.in	2010-06-10 21:51:03.000000000 +0100
-+++ source/icudefs.mk.in	2010-06-10 21:51:09.000000000 +0100
-@@ -150,7 +150,7 @@
- SHLIB.cc=     $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared
- 
- # Environment variable to set a runtime search path
--LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH
-+LDLIBRARYPATH_ENVVAR = LD_LIBRARY_PATH2
- 
- # Versioned target for a shared library.
- FINAL_SO_TARGET = $(SO_TARGET).$(SO_TARGET_VERSION)
-Index: source/tools/genrb/gendtjar.pl
-===================================================================
---- source.orig/tools/genrb/gendtjar.pl	2010-06-10 21:51:36.000000000 +0100
-+++ source/tools/genrb/gendtjar.pl	2010-06-10 21:52:03.000000000 +0100
-@@ -68,8 +68,8 @@
-         $icuLibDir = abs_path($icuBinDir."/../lib");
-         $path .=":$icuBinDir:$icuLibDir";
-         
--        $libpath = $ENV{'LD_LIBRARY_PATH'}.":$icuLibDir";
--        $ENV{'LD_LIBRARY_PATH'} = $libpath;
-+        $libpath = $ENV{'LD_LIBRARY_PATH2'}.":$icuLibDir";
-+        $ENV{'LD_LIBRARY_PATH2'} = $libpath;
-         
-         #print ("#####  LD_LIBRARY_PATH = $ENV{'LD_LIBRARY_PATH'}\n");
-     
diff --git a/meta/recipes-support/icu/files/use-g++-for-linking.patch b/meta/recipes-support/icu/files/use-g++-for-linking.patch
deleted file mode 100644
index f477dad..0000000
--- a/meta/recipes-support/icu/files/use-g++-for-linking.patch
+++ /dev/null
@@ -1,74 +0,0 @@ 
-Use g++ for linking.
-
-Upstream-Status: Inappropriate [Other]
-Build system specific
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
----
- tools/genccode/Makefile.in |    2 +-
- tools/gencmn/Makefile.in   |    2 +-
- tools/genrb/Makefile.in    |    2 +-
- tools/pkgdata/Makefile.in  |    2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
---- source.orig/tools/genccode/Makefile.in
-+++ source/tools/genccode/Makefile.in
-@@ -76,11 +76,11 @@ check-local: all-local
- Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
- 	cd $(top_builddir) \
- 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
- 
- $(TARGET) : $(OBJECTS)
--	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS)
-+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
- 
- 
- %.$(SECTION): $(srcdir)/%.$(SECTION).in
- 	cd $(top_builddir) \
- 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
---- source.orig/tools/gencmn/Makefile.in
-+++ source/tools/gencmn/Makefile.in
-@@ -76,11 +76,11 @@ check-local: all-local
- Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
- 	cd $(top_builddir) \
- 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
- 
- $(TARGET) : $(OBJECTS)
--	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS)
-+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
- 
- %.$(SECTION): $(srcdir)/%.$(SECTION).in
- 	cd $(top_builddir) \
- 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
- 
---- source.orig/tools/genrb/Makefile.in
-+++ source/tools/genrb/Makefile.in
-@@ -84,11 +84,11 @@ Makefile: $(srcdir)/Makefile.in  $(top_b
- 
- $(TARGET) : $(OBJECTS)
- 	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS) 
- 
- $(DERB) : $(DERB_OBJ)
--	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS) 
-+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
- 
- 
- # This line is needed to serialize builds when the gmake -j option is used.
- $(TARGET_STUB_NAME).$(SECTION): $(DERB_STUB_NAME).$(SECTION)
- 
---- source.orig/tools/pkgdata/Makefile.in
-+++ source/tools/pkgdata/Makefile.in
-@@ -81,11 +81,11 @@ check-local: all-local
- Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
- 	cd $(top_builddir) \
- 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
- 
- $(TARGET) : $(OBJECTS)
--	$(LINK.c) $(OUTOPT)$@ $^ $(LIBS) 
-+	$(LINK.cc) $(OUTOPT)$@ $^ $(LIBS)
- 
- 
- %.$(SECTION): $(srcdir)/%.$(SECTION).in
- 	cd $(top_builddir) \
- 	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
diff --git a/meta/recipes-support/icu/icu-3.6.inc b/meta/recipes-support/icu/icu.inc
similarity index 42%
rename from meta/recipes-support/icu/icu-3.6.inc
rename to meta/recipes-support/icu/icu.inc
index 8caf71c..e7d6189 100644
--- a/meta/recipes-support/icu/icu-3.6.inc
+++ b/meta/recipes-support/icu/icu.inc
@@ -1,61 +1,34 @@ 
 SUMMARY = "International Component for Unicode libraries"
 DESCRIPTION = "The International Component for Unicode (ICU) is a mature, portable set of C/C++ and Java libraries for Unicode support, software internationalization (I18N) and globalization (G11N), giving applications the same results on all platforms."
-HOMEPAGE = "http://www-01.ibm.com/software/globalization/icu/index.jsp"
-
-BASE_SRC_URI = "ftp://ftp.software.ibm.com/software/globalization/icu/3.6/icu4c-3_6-src.tgz \
-           file://gccfix.patch \
-           file://fix-parallel-build.patch \
-           file://use-g++-for-linking.patch \
-           file://larger-cmd-size.patch \
-	   file://icu-add-pkgconfig-support.patch \
-           "
-SRC_URI = "${BASE_SRC_URI} \
-           file://noldlibpath.patch \
-           "
-SRC_URI_class-native = "${BASE_SRC_URI}"
+HOMEPAGE = "http://site.icu-project.org/"
 
 LICENSE = "ICU"
-LIC_FILES_CHKSUM = "file://../license.html;md5=5c94767cedb5d6987c902ac850ded2c6"
 DEPENDS = "icu-native"
 DEPENDS_class-native = ""
 
 S = "${WORKDIR}/icu/source"
+STAGING_ICU_SOURCE_DIR_NATIVE = "${STAGING_DATADIR_NATIVE}/icu"
 
 PARALLEL_MAKE = ""
 FULL_OPTIMIZATION_arm = "-Os"
 
 inherit autotools pkgconfig binconfig
 
-do_configure() {
-	libtoolize --force
-	gnu-configize --force
-	if [ "${PN}" != "icu-native" ]; then
-		OLD=`pwd`
-		cd ${S}
-		autoconf
-		cd ${OLD}
-	fi
-	oe_runconf
-	if [ "${PN}" != "icu-native" ]; then
-		# In the non-native case we need to make substitutions to use
-		# the native versions of the tools
-		for i in */Makefile* */*.inc */*/Makefile* */*/*.inc */*/*.inc.in ; do
-			sed -i -e 's:$(INVOKE) $(BINDIR)/:$(INVOKE) :g' $i 
-			sed -i -e 's:$(BINDIR)/::g' $i 
-		done
-	fi
-}
+# ICU needs the native build directory as an argument to its --with-cross-build option when
+# cross-compiling. Taken the situation that different builds may share a common sstate-cache
+# into consideration, the native build directory needs to be staged.
+EXTRA_OECONF = "--with-cross-build=${STAGING_DATADIR_NATIVE}/icu/source"
+EXTRA_OECONF_class-native = ""
 
-do_compile() {
-	oe_runmake 'CXX=${CXX}'
+do_configure_prepend() {
+    [ -f acinclude.m4 ] || cp aclocal.m4 acinclude.m4
 }
 
 do_install_append() {
-        chmod +x ${D}${libdir}/lib*
-	if [ "${PN}" != "icu-native" ]; then
-		install -d ${D}/${libdir}/pkgconfig
-        	install -m 0644 ${S}/icu.pc ${D}/${libdir}/pkgconfig
-	fi
+    if [ ${PN} == 'icu-native' ]; then
+	mkdir -p ${D}/${STAGING_ICU_SOURCE_DIR_NATIVE}
+	cp -r ${S} ${D}/${STAGING_ICU_SOURCE_DIR_NATIVE}
+    fi
 }
 
 PACKAGES =+ "libicudata libicuuc libicui18n libicule libiculx libicutu libicuio"
@@ -72,4 +45,3 @@  FILES_libicuio = "${libdir}/libicuio.so.*"
 
 BBCLASSEXTEND = "native"
 
-SSTATE_SCAN_FILES += "Makefile.inc"
diff --git a/meta/recipes-support/icu/icu_3.6.bb b/meta/recipes-support/icu/icu_3.6.bb
deleted file mode 100644
index f50abe2..0000000
--- a/meta/recipes-support/icu/icu_3.6.bb
+++ /dev/null
@@ -1,6 +0,0 @@ 
-require icu-3.6.inc
-
-PR = "r10"
-
-SRC_URI[md5sum] = "6243f7a19e03e05403ce84e597510d4c"
-SRC_URI[sha256sum] = "5135e8d69d6206d320515df7aeee7027711ab1aef9d8dbf29571a97a9746b041"
diff --git a/meta/recipes-support/icu/icu_50.1.bb b/meta/recipes-support/icu/icu_50.1.bb
new file mode 100644
index 0000000..8f65c6d
--- /dev/null
+++ b/meta/recipes-support/icu/icu_50.1.bb
@@ -0,0 +1,11 @@ 
+require icu.inc
+
+LIC_FILES_CHKSUM = "file://../license.html;md5=4ee45701e87d34303281978e3b78ecda"
+
+PR = "r1"
+
+BASE_SRC_URI = "http://download.icu-project.org/files/icu4c/50.1/icu4c-50_1-src.tgz"
+SRC_URI = "${BASE_SRC_URI}"
+
+SRC_URI[md5sum] = "cf7bf9e56aa6c2057a8b6f464046483e"
+SRC_URI[sha256sum] = "68592b3c07d9b86100f41d0172eb1a81f3ffb2a8fef1104d7395099079ba7350"