Patchwork [meta-browser,v2,1/4] chromium: Add component-build PACKAGECONFIG option

login
register
mail settings
Submitter dv
Date April 29, 2014, 6:39 a.m.
Message ID <1398753593-4447-2-git-send-email-dv@pseudoterminal.org>
Download mbox | patch
Permalink /patch/71177/
State New, archived
Headers show

Comments

dv - April 29, 2014, 6:39 a.m.
In a component build, the individual Chromium components are contained in
separate shared objects. This is useful when building on a system with
8 GB RAM or less (since the linker needs at least that much for link
time optimization otherwise if a non-component build is done), and during
development and testing of Chromium internals.

Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
---
 recipes-browser/chromium/chromium/component-build.gypi |  5 +++++
 recipes-browser/chromium/chromium/google-chrome        |  2 ++
 recipes-browser/chromium/chromium_35.0.1883.0.bb       | 11 +++++++++--
 3 files changed, 16 insertions(+), 2 deletions(-)
 create mode 100644 recipes-browser/chromium/chromium/component-build.gypi
Otavio Salvador - April 29, 2014, 6:25 p.m.
On Tue, Apr 29, 2014 at 3:39 AM, Carlos Rafael Giani
<dv@pseudoterminal.org> wrote:
> In a component build, the individual Chromium components are contained in
> separate shared objects. This is useful when building on a system with
> 8 GB RAM or less (since the linker needs at least that much for link
> time optimization otherwise if a non-component build is done), and during
> development and testing of Chromium internals.
>
> Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
> ---
>  recipes-browser/chromium/chromium/component-build.gypi |  5 +++++
>  recipes-browser/chromium/chromium/google-chrome        |  2 ++
>  recipes-browser/chromium/chromium_35.0.1883.0.bb       | 11 +++++++++--
>  3 files changed, 16 insertions(+), 2 deletions(-)
>  create mode 100644 recipes-browser/chromium/chromium/component-build.gypi
>
> diff --git a/recipes-browser/chromium/chromium/component-build.gypi b/recipes-browser/chromium/chromium/component-build.gypi
> new file mode 100644
> index 0000000..e58b4ca
> --- /dev/null
> +++ b/recipes-browser/chromium/chromium/component-build.gypi
> @@ -0,0 +1,5 @@
> +{
> +  'variables': {
> +     'component' : 'shared_library'
> +  },
> +}
> diff --git a/recipes-browser/chromium/chromium/google-chrome b/recipes-browser/chromium/chromium/google-chrome
> index 2f6ad2e..8ce400b 100644
> --- a/recipes-browser/chromium/chromium/google-chrome
> +++ b/recipes-browser/chromium/chromium/google-chrome
> @@ -1,6 +1,8 @@
>  #!/bin/sh
>
>  export CHROME_DEVEL_SANDBOX=/usr/sbin/chrome-devel-sandbox
> +export LD_LIBRARY_PATH=/usr/lib/chrome
> +
>  if [ "${USER}" = "root" ] ; then
>         /usr/bin/chrome/chrome --user-data-dir=${HOME}/.chromium/ $@
>  else
> diff --git a/recipes-browser/chromium/chromium_35.0.1883.0.bb b/recipes-browser/chromium/chromium_35.0.1883.0.bb
> index 2497f10..203474d 100644
> --- a/recipes-browser/chromium/chromium_35.0.1883.0.bb
> +++ b/recipes-browser/chromium/chromium_35.0.1883.0.bb
> @@ -6,6 +6,7 @@ SRC_URI = "\
>          http://gsdview.appspot.com/chromium-browser-official/${P}.tar.xz \
>          file://include.gypi \
>          file://oe-defaults.gypi \
> +        ${@bb.utils.contains('PACKAGECONFIG', 'component-build', 'file://component-build.gypi', '', d)} \
>          file://unistd-2.patch \
>          file://google-chrome \
>          file://google-chrome.desktop \
> @@ -27,6 +28,7 @@ EXTRA_OEGYP = " \
>         ${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '', '-Dlinux_use_gold_flags=0', d)} \
>         -I ${WORKDIR}/oe-defaults.gypi \
>         -I ${WORKDIR}/include.gypi \
> +       ${@bb.utils.contains('PACKAGECONFIG', 'component-build', '-I ${WORKDIR}/component-build.gypi', '', d)} \
>         -f ninja \
>  "
>  ARMFPABI_armv7a = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'arm_float_abi=hard', 'arm_float_abi=softfp', d)}"
> @@ -65,6 +67,11 @@ do_install() {
>         install -m 0644 ${S}/out/Release/product_logo_48.png ${D}${bindir}/chrome/
>         install -m 0755 ${S}/out/Release/libffmpegsumo.so ${D}${bindir}/chrome/
>
> +       install -d ${D}${libdir}/chrome/

This ought to b done inside of the 'if' block.

> +       if [ -n "${@bb.utils.contains('PACKAGECONFIG', 'component-build', 'component-build', '', d)}" ]; then
> +               install -m 0755 ${S}/out/Release/lib/*.so ${D}${libdir}/chrome/
> +       fi
> +
>         install -d ${D}${sbindir}
>         install -m 4755 ${S}/out/Release/chrome_sandbox ${D}${sbindir}/chrome-devel-sandbox
>
> @@ -72,8 +79,8 @@ do_install() {
>         install -m 0644 ${S}/out/Release/locales/en-US.pak ${D}${bindir}/chrome/locales
>  }
>
> -FILES_${PN} = "${bindir}/chrome/ ${bindir}/google-chrome ${datadir}/applications ${sbindir}/"
> -FILES_${PN}-dbg += "${bindir}/chrome/.debug/"
> +FILES_${PN} = "${bindir}/chrome/ ${bindir}/google-chrome ${datadir}/applications ${sbindir}/ ${libdir}/chrome/"
> +FILES_${PN}-dbg += "${bindir}/chrome/.debug/ ${libdir}/chrome/.debug/"
>
>  PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
>
> --
> 1.8.3.2
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
dv - April 29, 2014, 7:07 p.m.
On 2014-04-29 20:25, Otavio Salvador wrote:
> On Tue, Apr 29, 2014 at 3:39 AM, Carlos Rafael Giani
> <dv@pseudoterminal.org> wrote:
>> In a component build, the individual Chromium components are contained in
>> separate shared objects. This is useful when building on a system with
>> 8 GB RAM or less (since the linker needs at least that much for link
>> time optimization otherwise if a non-component build is done), and during
>> development and testing of Chromium internals.
>>
>> Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
>> ---
>>   recipes-browser/chromium/chromium/component-build.gypi |  5 +++++
>>   recipes-browser/chromium/chromium/google-chrome        |  2 ++
>>   recipes-browser/chromium/chromium_35.0.1883.0.bb       | 11 +++++++++--
>>   3 files changed, 16 insertions(+), 2 deletions(-)
>>   create mode 100644 recipes-browser/chromium/chromium/component-build.gypi
>>
>> diff --git a/recipes-browser/chromium/chromium/component-build.gypi b/recipes-browser/chromium/chromium/component-build.gypi
>> new file mode 100644
>> index 0000000..e58b4ca
>> --- /dev/null
>> +++ b/recipes-browser/chromium/chromium/component-build.gypi
>> @@ -0,0 +1,5 @@
>> +{
>> +  'variables': {
>> +     'component' : 'shared_library'
>> +  },
>> +}
>> diff --git a/recipes-browser/chromium/chromium/google-chrome b/recipes-browser/chromium/chromium/google-chrome
>> index 2f6ad2e..8ce400b 100644
>> --- a/recipes-browser/chromium/chromium/google-chrome
>> +++ b/recipes-browser/chromium/chromium/google-chrome
>> @@ -1,6 +1,8 @@
>>   #!/bin/sh
>>
>>   export CHROME_DEVEL_SANDBOX=/usr/sbin/chrome-devel-sandbox
>> +export LD_LIBRARY_PATH=/usr/lib/chrome
>> +
>>   if [ "${USER}" = "root" ] ; then
>>          /usr/bin/chrome/chrome --user-data-dir=${HOME}/.chromium/ $@
>>   else
>> diff --git a/recipes-browser/chromium/chromium_35.0.1883.0.bb b/recipes-browser/chromium/chromium_35.0.1883.0.bb
>> index 2497f10..203474d 100644
>> --- a/recipes-browser/chromium/chromium_35.0.1883.0.bb
>> +++ b/recipes-browser/chromium/chromium_35.0.1883.0.bb
>> @@ -6,6 +6,7 @@ SRC_URI = "\
>>           http://gsdview.appspot.com/chromium-browser-official/${P}.tar.xz \
>>           file://include.gypi \
>>           file://oe-defaults.gypi \
>> +        ${@bb.utils.contains('PACKAGECONFIG', 'component-build', 'file://component-build.gypi', '', d)} \
>>           file://unistd-2.patch \
>>           file://google-chrome \
>>           file://google-chrome.desktop \
>> @@ -27,6 +28,7 @@ EXTRA_OEGYP = " \
>>          ${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '', '-Dlinux_use_gold_flags=0', d)} \
>>          -I ${WORKDIR}/oe-defaults.gypi \
>>          -I ${WORKDIR}/include.gypi \
>> +       ${@bb.utils.contains('PACKAGECONFIG', 'component-build', '-I ${WORKDIR}/component-build.gypi', '', d)} \
>>          -f ninja \
>>   "
>>   ARMFPABI_armv7a = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'arm_float_abi=hard', 'arm_float_abi=softfp', d)}"
>> @@ -65,6 +67,11 @@ do_install() {
>>          install -m 0644 ${S}/out/Release/product_logo_48.png ${D}${bindir}/chrome/
>>          install -m 0755 ${S}/out/Release/libffmpegsumo.so ${D}${bindir}/chrome/
>>
>> +       install -d ${D}${libdir}/chrome/
> This ought to b done inside of the 'if' block.


I am not sure about this, because the export 
LD_LIBRARY_PATH=/usr/lib/chrome line is also introduced. What would be 
preferred? Set LD_LIBRARY_PATH to a potentially nonexisting path or 
always create /usr/lib/chrome ?
I could also do a trick similar to the one for the chromium args, but I 
doubt more library paths will ever be added.

>
>> +       if [ -n "${@bb.utils.contains('PACKAGECONFIG', 'component-build', 'component-build', '', d)}" ]; then
>> +               install -m 0755 ${S}/out/Release/lib/*.so ${D}${libdir}/chrome/
>> +       fi
>> +
>>          install -d ${D}${sbindir}
>>          install -m 4755 ${S}/out/Release/chrome_sandbox ${D}${sbindir}/chrome-devel-sandbox
>>
>> @@ -72,8 +79,8 @@ do_install() {
>>          install -m 0644 ${S}/out/Release/locales/en-US.pak ${D}${bindir}/chrome/locales
>>   }
>>
>> -FILES_${PN} = "${bindir}/chrome/ ${bindir}/google-chrome ${datadir}/applications ${sbindir}/"
>> -FILES_${PN}-dbg += "${bindir}/chrome/.debug/"
>> +FILES_${PN} = "${bindir}/chrome/ ${bindir}/google-chrome ${datadir}/applications ${sbindir}/ ${libdir}/chrome/"
>> +FILES_${PN}-dbg += "${bindir}/chrome/.debug/ ${libdir}/chrome/.debug/"
>>
>>   PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
>>
>> --
>> 1.8.3.2
>>
>> --
>> _______________________________________________
>> Openembedded-devel mailing list
>> Openembedded-devel@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>
>
Otavio Salvador - April 29, 2014, 7:10 p.m.
On Tue, Apr 29, 2014 at 4:07 PM, Carlos Rafael Giani
<dv@pseudoterminal.org> wrote:
> On 2014-04-29 20:25, Otavio Salvador wrote:
>>
>> On Tue, Apr 29, 2014 at 3:39 AM, Carlos Rafael Giani
>> <dv@pseudoterminal.org> wrote:
>>>
>>> In a component build, the individual Chromium components are contained in
>>> separate shared objects. This is useful when building on a system with
>>> 8 GB RAM or less (since the linker needs at least that much for link
>>> time optimization otherwise if a non-component build is done), and during
>>> development and testing of Chromium internals.
>>>
>>> Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
>>> ---
>>>   recipes-browser/chromium/chromium/component-build.gypi |  5 +++++
>>>   recipes-browser/chromium/chromium/google-chrome        |  2 ++
>>>   recipes-browser/chromium/chromium_35.0.1883.0.bb       | 11 +++++++++--
>>>   3 files changed, 16 insertions(+), 2 deletions(-)
>>>   create mode 100644
>>> recipes-browser/chromium/chromium/component-build.gypi
>>>
>>> diff --git a/recipes-browser/chromium/chromium/component-build.gypi
>>> b/recipes-browser/chromium/chromium/component-build.gypi
>>> new file mode 100644
>>> index 0000000..e58b4ca
>>> --- /dev/null
>>> +++ b/recipes-browser/chromium/chromium/component-build.gypi
>>> @@ -0,0 +1,5 @@
>>> +{
>>> +  'variables': {
>>> +     'component' : 'shared_library'
>>> +  },
>>> +}
>>> diff --git a/recipes-browser/chromium/chromium/google-chrome
>>> b/recipes-browser/chromium/chromium/google-chrome
>>> index 2f6ad2e..8ce400b 100644
>>> --- a/recipes-browser/chromium/chromium/google-chrome
>>> +++ b/recipes-browser/chromium/chromium/google-chrome
>>> @@ -1,6 +1,8 @@
>>>   #!/bin/sh
>>>
>>>   export CHROME_DEVEL_SANDBOX=/usr/sbin/chrome-devel-sandbox
>>> +export LD_LIBRARY_PATH=/usr/lib/chrome
>>> +
>>>   if [ "${USER}" = "root" ] ; then
>>>          /usr/bin/chrome/chrome --user-data-dir=${HOME}/.chromium/ $@
>>>   else
>>> diff --git a/recipes-browser/chromium/chromium_35.0.1883.0.bb
>>> b/recipes-browser/chromium/chromium_35.0.1883.0.bb
>>> index 2497f10..203474d 100644
>>> --- a/recipes-browser/chromium/chromium_35.0.1883.0.bb
>>> +++ b/recipes-browser/chromium/chromium_35.0.1883.0.bb
>>> @@ -6,6 +6,7 @@ SRC_URI = "\
>>>
>>> http://gsdview.appspot.com/chromium-browser-official/${P}.tar.xz \
>>>           file://include.gypi \
>>>           file://oe-defaults.gypi \
>>> +        ${@bb.utils.contains('PACKAGECONFIG', 'component-build',
>>> 'file://component-build.gypi', '', d)} \
>>>           file://unistd-2.patch \
>>>           file://google-chrome \
>>>           file://google-chrome.desktop \
>>> @@ -27,6 +28,7 @@ EXTRA_OEGYP = " \
>>>          ${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '',
>>> '-Dlinux_use_gold_flags=0', d)} \
>>>          -I ${WORKDIR}/oe-defaults.gypi \
>>>          -I ${WORKDIR}/include.gypi \
>>> +       ${@bb.utils.contains('PACKAGECONFIG', 'component-build', '-I
>>> ${WORKDIR}/component-build.gypi', '', d)} \
>>>          -f ninja \
>>>   "
>>>   ARMFPABI_armv7a = "${@bb.utils.contains('TUNE_FEATURES',
>>> 'callconvention-hard', 'arm_float_abi=hard', 'arm_float_abi=softfp', d)}"
>>> @@ -65,6 +67,11 @@ do_install() {
>>>          install -m 0644 ${S}/out/Release/product_logo_48.png
>>> ${D}${bindir}/chrome/
>>>          install -m 0755 ${S}/out/Release/libffmpegsumo.so
>>> ${D}${bindir}/chrome/
>>>
>>> +       install -d ${D}${libdir}/chrome/
>>
>> This ought to b done inside of the 'if' block.
>
>
>
> I am not sure about this, because the export LD_LIBRARY_PATH=/usr/lib/chrome
> line is also introduced. What would be preferred? Set LD_LIBRARY_PATH to a
> potentially nonexisting path or always create /usr/lib/chrome ?
> I could also do a trick similar to the one for the chromium args, but I
> doubt more library paths will ever be added.

I see your point.

Ok so keep it as is now but please add a comment there.

Patch

diff --git a/recipes-browser/chromium/chromium/component-build.gypi b/recipes-browser/chromium/chromium/component-build.gypi
new file mode 100644
index 0000000..e58b4ca
--- /dev/null
+++ b/recipes-browser/chromium/chromium/component-build.gypi
@@ -0,0 +1,5 @@ 
+{
+  'variables': {
+     'component' : 'shared_library'
+  },
+}
diff --git a/recipes-browser/chromium/chromium/google-chrome b/recipes-browser/chromium/chromium/google-chrome
index 2f6ad2e..8ce400b 100644
--- a/recipes-browser/chromium/chromium/google-chrome
+++ b/recipes-browser/chromium/chromium/google-chrome
@@ -1,6 +1,8 @@ 
 #!/bin/sh
 
 export CHROME_DEVEL_SANDBOX=/usr/sbin/chrome-devel-sandbox
+export LD_LIBRARY_PATH=/usr/lib/chrome
+
 if [ "${USER}" = "root" ] ; then 
 	/usr/bin/chrome/chrome --user-data-dir=${HOME}/.chromium/ $@
 else
diff --git a/recipes-browser/chromium/chromium_35.0.1883.0.bb b/recipes-browser/chromium/chromium_35.0.1883.0.bb
index 2497f10..203474d 100644
--- a/recipes-browser/chromium/chromium_35.0.1883.0.bb
+++ b/recipes-browser/chromium/chromium_35.0.1883.0.bb
@@ -6,6 +6,7 @@  SRC_URI = "\
         http://gsdview.appspot.com/chromium-browser-official/${P}.tar.xz \
         file://include.gypi \
         file://oe-defaults.gypi \
+        ${@bb.utils.contains('PACKAGECONFIG', 'component-build', 'file://component-build.gypi', '', d)} \
         file://unistd-2.patch \
         file://google-chrome \
         file://google-chrome.desktop \
@@ -27,6 +28,7 @@  EXTRA_OEGYP =	" \
 	${@base_contains('DISTRO_FEATURES', 'ld-is-gold', '', '-Dlinux_use_gold_flags=0', d)} \
 	-I ${WORKDIR}/oe-defaults.gypi \
 	-I ${WORKDIR}/include.gypi \
+	${@bb.utils.contains('PACKAGECONFIG', 'component-build', '-I ${WORKDIR}/component-build.gypi', '', d)} \
 	-f ninja \
 "
 ARMFPABI_armv7a = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'arm_float_abi=hard', 'arm_float_abi=softfp', d)}"
@@ -65,6 +67,11 @@  do_install() {
 	install -m 0644 ${S}/out/Release/product_logo_48.png ${D}${bindir}/chrome/
 	install -m 0755 ${S}/out/Release/libffmpegsumo.so ${D}${bindir}/chrome/
 
+	install -d ${D}${libdir}/chrome/
+	if [ -n "${@bb.utils.contains('PACKAGECONFIG', 'component-build', 'component-build', '', d)}" ]; then
+		install -m 0755 ${S}/out/Release/lib/*.so ${D}${libdir}/chrome/
+	fi
+
 	install -d ${D}${sbindir}
 	install -m 4755 ${S}/out/Release/chrome_sandbox ${D}${sbindir}/chrome-devel-sandbox
 
@@ -72,8 +79,8 @@  do_install() {
 	install -m 0644 ${S}/out/Release/locales/en-US.pak ${D}${bindir}/chrome/locales
 }
 
-FILES_${PN} = "${bindir}/chrome/ ${bindir}/google-chrome ${datadir}/applications ${sbindir}/"
-FILES_${PN}-dbg += "${bindir}/chrome/.debug/"
+FILES_${PN} = "${bindir}/chrome/ ${bindir}/google-chrome ${datadir}/applications ${sbindir}/ ${libdir}/chrome/"
+FILES_${PN}-dbg += "${bindir}/chrome/.debug/ ${libdir}/chrome/.debug/"
 
 PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"