Patchwork boost: Split out bjam build tool and add real native support

login
register
mail settings
Submitter Stefan Herbrechtsmeier
Date March 7, 2013, 4:37 p.m.
Message ID <1362674233-7210-1-git-send-email-stefan@herbrechtsmeier.net>
Download mbox | patch
Permalink /patch/45669/
State New
Headers show

Comments

Stefan Herbrechtsmeier - March 7, 2013, 4:37 p.m.
The current boost recipe only creates the bjam build tool during
a native run and thereby is not usable for other native programs
that depend on a boost library. Split out the build tool into its
own bjam recipe and add real native support to the boost recipe.
This allows recipes to depend on native boost libraries without
increase of the build time for other use cases.

Native compilation of bzip2 isn't working and therefore disabled.

Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
---
 meta/recipes-support/boost/bjam_1.53.0.bb   |   21 +++++++++++
 meta/recipes-support/boost/boost-1.53.0.inc |   21 +++++++++++
 meta/recipes-support/boost/boost.inc        |   49 ++-------------------------
 meta/recipes-support/boost/boost_1.53.0.bb  |    6 +--
 4 files changed, 47 insertions(+), 50 deletions(-)
 create mode 100644 meta/recipes-support/boost/bjam_1.53.0.bb
 create mode 100644 meta/recipes-support/boost/boost-1.53.0.inc
Saul Wold - March 11, 2013, 11:44 p.m.
On 03/07/2013 08:37 AM, Stefan Herbrechtsmeier wrote:
> The current boost recipe only creates the bjam build tool during
> a native run and thereby is not usable for other native programs
> that depend on a boost library. Split out the build tool into its
> own bjam recipe and add real native support to the boost recipe.
> This allows recipes to depend on native boost libraries without
> increase of the build time for other use cases.
>
> Native compilation of bzip2 isn't working and therefore disabled.
>
> Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
> ---
>   meta/recipes-support/boost/bjam_1.53.0.bb   |   21 +++++++++++
>   meta/recipes-support/boost/boost-1.53.0.inc |   21 +++++++++++
>   meta/recipes-support/boost/boost.inc        |   49 ++-------------------------
>   meta/recipes-support/boost/boost_1.53.0.bb  |    6 +--
>   4 files changed, 47 insertions(+), 50 deletions(-)
>   create mode 100644 meta/recipes-support/boost/bjam_1.53.0.bb
>   create mode 100644 meta/recipes-support/boost/boost-1.53.0.inc
>
This change seems to have caused a failure on my test build:

> Log data follows:
> | DEBUG: Executing shell function do_compile
> | + cd /srv/hdd/builds/world/tmp/work/armv5te-poky-linux-gnueabi/bjam/1.53.0-r0/boost_1_53_0/tools/build/v2/engine
> | + rm -rf bin.*
> | + ./build.sh gcc
> | ###
> | ### Using 'gcc' toolset.
> | ###
> | rm -rf bootstrap
> | mkdir bootstrap
> | gcc -o bootstrap/jam0 command.c compile.c constants.c debug.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c fileunix.c
> | function.c: In function 'argument_list_print':
> | function.c:3109:17: warning: format '%s' expects argument of type 'char *', but argument 2 has type 'struct OBJECT *' [-Wformat]
> | ./bootstrap/jam0 -f build.jam --toolset=gcc --toolset-root= clean
> | build.jam:185: in module scope
> | *** argument error
> | * rule toolset ( name command .type ? : opt.out + : opt.define * : flags * : linklibs * )
> | * called with: ( cc arm-poky-linux-gnueabi-gcc -march=armv5te -marm -mthumb-interwork --sysroot=/srv/hdd/builds/world/tmp/sysroots/qemuarm : -o  : -D : -O2 -pipe -g -feliminate-unused-debug-types -s -O :  )
> | * extra argument -marm
> | build.jam:149:see definition of rule 'toolset' being called
> | ERROR: Function failed: do_compile (see /srv/hdd/builds/world/tmp/work/armv5te-poky-linux-gnueabi/bjam/1.53.0-r0/temp/log.do_compile.18164 for further information)
> ERROR: Task 123 (/srv/hdd/poky/meta/recipes-support/boost/bjam_1.53.0.bb, do_compile) failed with exit code '1'


Can you please verify that it builds correctly.

Thanks
	Sau!

> diff --git a/meta/recipes-support/boost/bjam_1.53.0.bb b/meta/recipes-support/boost/bjam_1.53.0.bb
> new file mode 100644
> index 0000000..d97d550
> --- /dev/null
> +++ b/meta/recipes-support/boost/bjam_1.53.0.bb
> @@ -0,0 +1,21 @@
> +include boost-${PV}.inc
> +
> +DESCRIPTION = "Portable build tool for boost"
> +SECTION = "devel"
> +
> +do_compile() {
> +	set -ex
> +	cd ${S}/tools/build/v2/engine
> +	rm -rf bin.*
> +	./build.sh gcc
> +}
> +
> +# This is too terrible - the build script doesn't give any good
> +# way I can see to find out where the binaries are placed, so
> +# rely on only one bin.foo directory being created.
> +do_install() {
> +	set -ex
> +	cd ${S}/tools/build/v2/engine
> +	install -d ${D}${bindir}/
> +	install -c -m 755 bin.*/bjam ${D}${bindir}/
> +}
> diff --git a/meta/recipes-support/boost/boost-1.53.0.inc b/meta/recipes-support/boost/boost-1.53.0.inc
> new file mode 100644
> index 0000000..19152a7
> --- /dev/null
> +++ b/meta/recipes-support/boost/boost-1.53.0.inc
> @@ -0,0 +1,21 @@
> +# The Boost web site provides free peer-reviewed portable
> +# C++ source libraries. The emphasis is on libraries which
> +# work well with the C++ Standard Library. The libraries are
> +# intended to be widely useful, and are in regular use by
> +# thousands of programmers across a broad spectrum of applications.
> +HOMEPAGE = "http://www.boost.org/"
> +LICENSE = "BSL-1.0 & MIT & Python-2.0"
> +LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
> +
> +BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
> +BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
> +BOOST_P = "boost_${BOOST_VER}"
> +
> +SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
> +
> +SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
> +SRC_URI[sha256sum] = "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
> +
> +S = "${WORKDIR}/${BOOST_P}"
> +
> +BBCLASSEXTEND = "native"
> diff --git a/meta/recipes-support/boost/boost.inc b/meta/recipes-support/boost/boost.inc
> index 1266666..328676d 100644
> --- a/meta/recipes-support/boost/boost.inc
> +++ b/meta/recipes-support/boost/boost.inc
> @@ -1,25 +1,9 @@
> -# The Boost web site provides free peer-reviewed portable
> -# C++ source libraries. The emphasis is on libraries which
> -# work well with the C++ Standard Library. The libraries are
> -# intended to be widely useful, and are in regular use by
> -# thousands of programmers across a broad spectrum of applications.
>   DESCRIPTION = "Free peer-reviewed portable C++ source libraries"
> -HOMEPAGE = "http://www.boost.org/"
>   SECTION = "libs"
> -DEPENDS = "boost-native zlib bzip2"
> -DEPENDS_class-native = ""
> -LICENSE = "BSL-1.0 & MIT & Python-2.0"
> +DEPENDS = "bjam-native zlib bzip2"
>
>   ARM_INSTRUCTION_SET = "arm"
>
> -BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
> -BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
> -BOOST_P = "boost_${BOOST_VER}"
> -
> -SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
> -
> -S = "${WORKDIR}/${BOOST_P}"
> -
>   BOOST_LIBS = "\
>   	date_time \
>   	filesystem \
> @@ -126,6 +110,8 @@ BJAM_OPTS    = '${PARALLEL_MAKE} \
>   		--disable-icu \
>   		${BJAM_EXTRA}'
>
> +# Native compilation of bzip2 isn't working
> +BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1'
>
>   do_boostconfig() {
>   	cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp
> @@ -168,32 +154,3 @@ do_install() {
>   	done
>
>   }
> -
> -BBCLASSEXTEND = "native"
> -
> -do_configure_class-native() {
> -	:
> -}
> -
> -do_boostconfig_class-native() {
> -	:
> -}
> -
> -do_compile_class-native() {
> -	set -ex
> -	cd ${S}/tools/build/v2/engine
> -	rm -rf bin.*
> -	./build.sh gcc
> -}
> -
> -# This is too terrible - the build script doesn't give any good
> -# way I can see to find out where the binaries are placed, so
> -# rely on only one bin.foo directory being created.
> -do_install_class-native () {
> -	set -ex
> -	cd ${S}/tools/build/v2/engine
> -	install -d ${D}${bindir}/
> -	install -c -m 755 bin.*/bjam ${D}${bindir}/
> -}
> -
> -
> diff --git a/meta/recipes-support/boost/boost_1.53.0.bb b/meta/recipes-support/boost/boost_1.53.0.bb
> index de721c5..407ce92 100644
> --- a/meta/recipes-support/boost/boost_1.53.0.bb
> +++ b/meta/recipes-support/boost/boost_1.53.0.bb
> @@ -1,9 +1,7 @@
> +include boost-${PV}.inc
>   include boost.inc
>
> -LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
> -
>   SRC_URI += "file://arm-intrinsics.patch \
>              "
>
> -SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
> -SRC_URI[sha256sum] = "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
> +PR = "r1"
>
Stefan Herbrechtsmeier - March 12, 2013, 10:19 a.m.
Am 12.03.2013 00:44, schrieb Saul Wold:
> On 03/07/2013 08:37 AM, Stefan Herbrechtsmeier wrote:
>> The current boost recipe only creates the bjam build tool during
>> a native run and thereby is not usable for other native programs
>> that depend on a boost library. Split out the build tool into its
>> own bjam recipe and add real native support to the boost recipe.
>> This allows recipes to depend on native boost libraries without
>> increase of the build time for other use cases.
>>
>> Native compilation of bzip2 isn't working and therefore disabled.
>>
>> Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
>> ---
>>   meta/recipes-support/boost/bjam_1.53.0.bb   |   21 +++++++++++
>>   meta/recipes-support/boost/boost-1.53.0.inc |   21 +++++++++++
>>   meta/recipes-support/boost/boost.inc        |   49 
>> ++-------------------------
>>   meta/recipes-support/boost/boost_1.53.0.bb  |    6 +--
>>   4 files changed, 47 insertions(+), 50 deletions(-)
>>   create mode 100644 meta/recipes-support/boost/bjam_1.53.0.bb
>>   create mode 100644 meta/recipes-support/boost/boost-1.53.0.inc
>>
> This change seems to have caused a failure on my test build:
Sorry, I missed the no native case. I rename bjam to bjam-native and 
send a new patch. Bjam make no sense on the target as it is only used 
for compiling.

>
>
>> Log data follows:
>> | DEBUG: Executing shell function do_compile
>> | + cd 
>> /srv/hdd/builds/world/tmp/work/armv5te-poky-linux-gnueabi/bjam/1.53.0-r0/boost_1_53_0/tools/build/v2/engine
>> | + rm -rf bin.*
>> | + ./build.sh gcc
>> | ###
>> | ### Using 'gcc' toolset.
>> | ###
>> | rm -rf bootstrap
>> | mkdir bootstrap
>> | gcc -o bootstrap/jam0 command.c compile.c constants.c debug.c 
>> function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c 
>> jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c 
>> pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c 
>> variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c 
>> native.c md5.c w32_getreg.c modules/set.c modules/path.c 
>> modules/regex.c modules/property-set.c modules/sequence.c 
>> modules/order.c execunix.c fileunix.c
>> | function.c: In function 'argument_list_print':
>> | function.c:3109:17: warning: format '%s' expects argument of type 
>> 'char *', but argument 2 has type 'struct OBJECT *' [-Wformat]
>> | ./bootstrap/jam0 -f build.jam --toolset=gcc --toolset-root= clean
>> | build.jam:185: in module scope
>> | *** argument error
>> | * rule toolset ( name command .type ? : opt.out + : opt.define * : 
>> flags * : linklibs * )
>> | * called with: ( cc arm-poky-linux-gnueabi-gcc -march=armv5te -marm 
>> -mthumb-interwork 
>> --sysroot=/srv/hdd/builds/world/tmp/sysroots/qemuarm : -o  : -D : -O2 
>> -pipe -g -feliminate-unused-debug-types -s -O :  )
>> | * extra argument -marm
>> | build.jam:149:see definition of rule 'toolset' being called
>> | ERROR: Function failed: do_compile (see 
>> /srv/hdd/builds/world/tmp/work/armv5te-poky-linux-gnueabi/bjam/1.53.0-r0/temp/log.do_compile.18164 
>> for further information)
>> ERROR: Task 123 
>> (/srv/hdd/poky/meta/recipes-support/boost/bjam_1.53.0.bb, do_compile) 
>> failed with exit code '1'
>
>
> Can you please verify that it builds correctly.
>
> Thanks
>     Sau!
>
>> diff --git a/meta/recipes-support/boost/bjam_1.53.0.bb 
>> b/meta/recipes-support/boost/bjam_1.53.0.bb
>> new file mode 100644
>> index 0000000..d97d550
>> --- /dev/null
>> +++ b/meta/recipes-support/boost/bjam_1.53.0.bb
>> @@ -0,0 +1,21 @@
>> +include boost-${PV}.inc
>> +
>> +DESCRIPTION = "Portable build tool for boost"
>> +SECTION = "devel"
>> +
>> +do_compile() {
>> +    set -ex
>> +    cd ${S}/tools/build/v2/engine
>> +    rm -rf bin.*
>> +    ./build.sh gcc
>> +}
>> +
>> +# This is too terrible - the build script doesn't give any good
>> +# way I can see to find out where the binaries are placed, so
>> +# rely on only one bin.foo directory being created.
>> +do_install() {
>> +    set -ex
>> +    cd ${S}/tools/build/v2/engine
>> +    install -d ${D}${bindir}/
>> +    install -c -m 755 bin.*/bjam ${D}${bindir}/
>> +}
>> diff --git a/meta/recipes-support/boost/boost-1.53.0.inc 
>> b/meta/recipes-support/boost/boost-1.53.0.inc
>> new file mode 100644
>> index 0000000..19152a7
>> --- /dev/null
>> +++ b/meta/recipes-support/boost/boost-1.53.0.inc
>> @@ -0,0 +1,21 @@
>> +# The Boost web site provides free peer-reviewed portable
>> +# C++ source libraries. The emphasis is on libraries which
>> +# work well with the C++ Standard Library. The libraries are
>> +# intended to be widely useful, and are in regular use by
>> +# thousands of programmers across a broad spectrum of applications.
>> +HOMEPAGE = "http://www.boost.org/"
>> +LICENSE = "BSL-1.0 & MIT & Python-2.0"
>> +LIC_FILES_CHKSUM = 
>> "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
>> +
>> +BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
>> +BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
>> +BOOST_P = "boost_${BOOST_VER}"
>> +
>> +SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
>> +
>> +SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
>> +SRC_URI[sha256sum] = 
>> "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
>> +
>> +S = "${WORKDIR}/${BOOST_P}"
>> +
>> +BBCLASSEXTEND = "native"
>> diff --git a/meta/recipes-support/boost/boost.inc 
>> b/meta/recipes-support/boost/boost.inc
>> index 1266666..328676d 100644
>> --- a/meta/recipes-support/boost/boost.inc
>> +++ b/meta/recipes-support/boost/boost.inc
>> @@ -1,25 +1,9 @@
>> -# The Boost web site provides free peer-reviewed portable
>> -# C++ source libraries. The emphasis is on libraries which
>> -# work well with the C++ Standard Library. The libraries are
>> -# intended to be widely useful, and are in regular use by
>> -# thousands of programmers across a broad spectrum of applications.
>>   DESCRIPTION = "Free peer-reviewed portable C++ source libraries"
>> -HOMEPAGE = "http://www.boost.org/"
>>   SECTION = "libs"
>> -DEPENDS = "boost-native zlib bzip2"
>> -DEPENDS_class-native = ""
>> -LICENSE = "BSL-1.0 & MIT & Python-2.0"
>> +DEPENDS = "bjam-native zlib bzip2"
>>
>>   ARM_INSTRUCTION_SET = "arm"
>>
>> -BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
>> -BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
>> -BOOST_P = "boost_${BOOST_VER}"
>> -
>> -SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
>> -
>> -S = "${WORKDIR}/${BOOST_P}"
>> -
>>   BOOST_LIBS = "\
>>       date_time \
>>       filesystem \
>> @@ -126,6 +110,8 @@ BJAM_OPTS    = '${PARALLEL_MAKE} \
>>           --disable-icu \
>>           ${BJAM_EXTRA}'
>>
>> +# Native compilation of bzip2 isn't working
>> +BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1'
>>
>>   do_boostconfig() {
>>       cp -f boost/config/platform/linux.hpp 
>> boost/config/platform/linux-gnueabi.hpp
>> @@ -168,32 +154,3 @@ do_install() {
>>       done
>>
>>   }
>> -
>> -BBCLASSEXTEND = "native"
>> -
>> -do_configure_class-native() {
>> -    :
>> -}
>> -
>> -do_boostconfig_class-native() {
>> -    :
>> -}
>> -
>> -do_compile_class-native() {
>> -    set -ex
>> -    cd ${S}/tools/build/v2/engine
>> -    rm -rf bin.*
>> -    ./build.sh gcc
>> -}
>> -
>> -# This is too terrible - the build script doesn't give any good
>> -# way I can see to find out where the binaries are placed, so
>> -# rely on only one bin.foo directory being created.
>> -do_install_class-native () {
>> -    set -ex
>> -    cd ${S}/tools/build/v2/engine
>> -    install -d ${D}${bindir}/
>> -    install -c -m 755 bin.*/bjam ${D}${bindir}/
>> -}
>> -
>> -
>> diff --git a/meta/recipes-support/boost/boost_1.53.0.bb 
>> b/meta/recipes-support/boost/boost_1.53.0.bb
>> index de721c5..407ce92 100644
>> --- a/meta/recipes-support/boost/boost_1.53.0.bb
>> +++ b/meta/recipes-support/boost/boost_1.53.0.bb
>> @@ -1,9 +1,7 @@
>> +include boost-${PV}.inc
>>   include boost.inc
>>
>> -LIC_FILES_CHKSUM = 
>> "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
>> -
>>   SRC_URI += "file://arm-intrinsics.patch \
>>              "
>>
>> -SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
>> -SRC_URI[sha256sum] = 
>> "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
>> +PR = "r1"
>>
Koen Kooi - March 12, 2013, 10:48 a.m.
Op 12 mrt. 2013, om 11:19 heeft Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net> het volgende geschreven:

> Am 12.03.2013 00:44, schrieb Saul Wold:
>> On 03/07/2013 08:37 AM, Stefan Herbrechtsmeier wrote:
>>> The current boost recipe only creates the bjam build tool during
>>> a native run and thereby is not usable for other native programs
>>> that depend on a boost library. Split out the build tool into its
>>> own bjam recipe and add real native support to the boost recipe.
>>> This allows recipes to depend on native boost libraries without
>>> increase of the build time for other use cases.
>>> 
>>> Native compilation of bzip2 isn't working and therefore disabled.
>>> 
>>> Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
>>> ---
>>>  meta/recipes-support/boost/bjam_1.53.0.bb   |   21 +++++++++++
>>>  meta/recipes-support/boost/boost-1.53.0.inc |   21 +++++++++++
>>>  meta/recipes-support/boost/boost.inc        |   49 ++-------------------------
>>>  meta/recipes-support/boost/boost_1.53.0.bb  |    6 +--
>>>  4 files changed, 47 insertions(+), 50 deletions(-)
>>>  create mode 100644 meta/recipes-support/boost/bjam_1.53.0.bb
>>>  create mode 100644 meta/recipes-support/boost/boost-1.53.0.inc
>>> 
>> This change seems to have caused a failure on my test build:
> Sorry, I missed the no native case. I rename bjam to bjam-native and send a new patch. Bjam make no sense on the target as it is only used for compiling.

And what if you need bjam to compile something on the target?
Stefan Herbrechtsmeier - March 12, 2013, 11:58 a.m.
Am 12.03.2013 11:48, schrieb Koen Kooi:
> Op 12 mrt. 2013, om 11:19 heeft Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net> het volgende geschreven:
>
>> Am 12.03.2013 00:44, schrieb Saul Wold:
>>> On 03/07/2013 08:37 AM, Stefan Herbrechtsmeier wrote:
>>>> The current boost recipe only creates the bjam build tool during
>>>> a native run and thereby is not usable for other native programs
>>>> that depend on a boost library. Split out the build tool into its
>>>> own bjam recipe and add real native support to the boost recipe.
>>>> This allows recipes to depend on native boost libraries without
>>>> increase of the build time for other use cases.
>>>>
>>>> Native compilation of bzip2 isn't working and therefore disabled.
>>>>
>>>> Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
>>>> ---
>>>>   meta/recipes-support/boost/bjam_1.53.0.bb   |   21 +++++++++++
>>>>   meta/recipes-support/boost/boost-1.53.0.inc |   21 +++++++++++
>>>>   meta/recipes-support/boost/boost.inc        |   49 ++-------------------------
>>>>   meta/recipes-support/boost/boost_1.53.0.bb  |    6 +--
>>>>   4 files changed, 47 insertions(+), 50 deletions(-)
>>>>   create mode 100644 meta/recipes-support/boost/bjam_1.53.0.bb
>>>>   create mode 100644 meta/recipes-support/boost/boost-1.53.0.inc
>>>>
>>> This change seems to have caused a failure on my test build:
>> Sorry, I missed the no native case. I rename bjam to bjam-native and send a new patch. Bjam make no sense on the target as it is only used for compiling.
> And what if you need bjam to compile something on the target?

Then you need to add cross compile support to bjam which is outside of 
the scope of this patch.
Stefan Herbrechtsmeier - March 12, 2013, 2:55 p.m.
Am 12.03.2013 12:58, schrieb Stefan Herbrechtsmeier:
> Am 12.03.2013 11:48, schrieb Koen Kooi:
>> Op 12 mrt. 2013, om 11:19 heeft Stefan Herbrechtsmeier 
>> <stefan@herbrechtsmeier.net> het volgende geschreven:
>>
>>> Am 12.03.2013 00:44, schrieb Saul Wold:
>>>> On 03/07/2013 08:37 AM, Stefan Herbrechtsmeier wrote:
>>>>> The current boost recipe only creates the bjam build tool during
>>>>> a native run and thereby is not usable for other native programs
>>>>> that depend on a boost library. Split out the build tool into its
>>>>> own bjam recipe and add real native support to the boost recipe.
>>>>> This allows recipes to depend on native boost libraries without
>>>>> increase of the build time for other use cases.
>>>>>
>>>>> Native compilation of bzip2 isn't working and therefore disabled.
>>>>>
>>>>> Signed-off-by: Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
>>>>> ---
>>>>>   meta/recipes-support/boost/bjam_1.53.0.bb   |   21 +++++++++++
>>>>>   meta/recipes-support/boost/boost-1.53.0.inc |   21 +++++++++++
>>>>>   meta/recipes-support/boost/boost.inc        |   49 
>>>>> ++-------------------------
>>>>>   meta/recipes-support/boost/boost_1.53.0.bb  |    6 +--
>>>>>   4 files changed, 47 insertions(+), 50 deletions(-)
>>>>>   create mode 100644 meta/recipes-support/boost/bjam_1.53.0.bb
>>>>>   create mode 100644 meta/recipes-support/boost/boost-1.53.0.inc
>>>>>
>>>> This change seems to have caused a failure on my test build:
>>> Sorry, I missed the no native case. I rename bjam to bjam-native and 
>>> send a new patch. Bjam make no sense on the target as it is only 
>>> used for compiling.
>> And what if you need bjam to compile something on the target?
>
> Then you need to add cross compile support to bjam which is outside of 
> the scope of this patch.
I have realised that boost always compile bjam during do_boostconfig. I 
have rework the recipe to use this bjam version as this simplify the 
recipe and the update path.

Patch

diff --git a/meta/recipes-support/boost/bjam_1.53.0.bb b/meta/recipes-support/boost/bjam_1.53.0.bb
new file mode 100644
index 0000000..d97d550
--- /dev/null
+++ b/meta/recipes-support/boost/bjam_1.53.0.bb
@@ -0,0 +1,21 @@ 
+include boost-${PV}.inc
+
+DESCRIPTION = "Portable build tool for boost"
+SECTION = "devel"
+
+do_compile() {
+	set -ex
+	cd ${S}/tools/build/v2/engine
+	rm -rf bin.*
+	./build.sh gcc
+}
+
+# This is too terrible - the build script doesn't give any good
+# way I can see to find out where the binaries are placed, so
+# rely on only one bin.foo directory being created.
+do_install() {
+	set -ex
+	cd ${S}/tools/build/v2/engine
+	install -d ${D}${bindir}/
+	install -c -m 755 bin.*/bjam ${D}${bindir}/
+}
diff --git a/meta/recipes-support/boost/boost-1.53.0.inc b/meta/recipes-support/boost/boost-1.53.0.inc
new file mode 100644
index 0000000..19152a7
--- /dev/null
+++ b/meta/recipes-support/boost/boost-1.53.0.inc
@@ -0,0 +1,21 @@ 
+# The Boost web site provides free peer-reviewed portable
+# C++ source libraries. The emphasis is on libraries which
+# work well with the C++ Standard Library. The libraries are
+# intended to be widely useful, and are in regular use by
+# thousands of programmers across a broad spectrum of applications.
+HOMEPAGE = "http://www.boost.org/"
+LICENSE = "BSL-1.0 & MIT & Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
+BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
+BOOST_P = "boost_${BOOST_VER}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
+
+SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
+SRC_URI[sha256sum] = "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
+
+S = "${WORKDIR}/${BOOST_P}"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/boost/boost.inc b/meta/recipes-support/boost/boost.inc
index 1266666..328676d 100644
--- a/meta/recipes-support/boost/boost.inc
+++ b/meta/recipes-support/boost/boost.inc
@@ -1,25 +1,9 @@ 
-# The Boost web site provides free peer-reviewed portable
-# C++ source libraries. The emphasis is on libraries which
-# work well with the C++ Standard Library. The libraries are
-# intended to be widely useful, and are in regular use by
-# thousands of programmers across a broad spectrum of applications.
 DESCRIPTION = "Free peer-reviewed portable C++ source libraries"
-HOMEPAGE = "http://www.boost.org/"
 SECTION = "libs"
-DEPENDS = "boost-native zlib bzip2"
-DEPENDS_class-native = ""
-LICENSE = "BSL-1.0 & MIT & Python-2.0"
+DEPENDS = "bjam-native zlib bzip2"
 
 ARM_INSTRUCTION_SET = "arm"
 
-BOOST_VER = "${@"_".join(d.getVar("PV",1).split("."))}"
-BOOST_MAJ = "${@"_".join(d.getVar("PV",1).split(".")[0:2])}"
-BOOST_P = "boost_${BOOST_VER}"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BOOST_P}.tar.bz2"
-
-S = "${WORKDIR}/${BOOST_P}"
-
 BOOST_LIBS = "\
 	date_time \
 	filesystem \
@@ -126,6 +110,8 @@  BJAM_OPTS    = '${PARALLEL_MAKE} \
 		--disable-icu \
 		${BJAM_EXTRA}'
 
+# Native compilation of bzip2 isn't working
+BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1'
 
 do_boostconfig() {
 	cp -f boost/config/platform/linux.hpp boost/config/platform/linux-gnueabi.hpp
@@ -168,32 +154,3 @@  do_install() {
 	done
 
 }
-
-BBCLASSEXTEND = "native"
-
-do_configure_class-native() {
-	:
-}
-
-do_boostconfig_class-native() {
-	:
-}
-
-do_compile_class-native() {
-	set -ex
-	cd ${S}/tools/build/v2/engine
-	rm -rf bin.*
-	./build.sh gcc
-}
-
-# This is too terrible - the build script doesn't give any good
-# way I can see to find out where the binaries are placed, so
-# rely on only one bin.foo directory being created.
-do_install_class-native () {
-	set -ex
-	cd ${S}/tools/build/v2/engine
-	install -d ${D}${bindir}/
-	install -c -m 755 bin.*/bjam ${D}${bindir}/
-}
-
-
diff --git a/meta/recipes-support/boost/boost_1.53.0.bb b/meta/recipes-support/boost/boost_1.53.0.bb
index de721c5..407ce92 100644
--- a/meta/recipes-support/boost/boost_1.53.0.bb
+++ b/meta/recipes-support/boost/boost_1.53.0.bb
@@ -1,9 +1,7 @@ 
+include boost-${PV}.inc
 include boost.inc
 
-LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
-
 SRC_URI += "file://arm-intrinsics.patch \
            "
 
-SRC_URI[md5sum] = "a00d22605d5dbcfb4c9936a9b35bc4c2"
-SRC_URI[sha256sum] = "f88a041b01882b0c9c5c05b39603ec8383fb881f772f6f9e6e6fd0e0cddb9196"
+PR = "r1"