Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH v2 0/2] meta: Fixes for update-alternatives.bbclass and gtk-icon-cache.bbclass
@ 2019-06-25 12:44 Robert Yang
  2019-06-25 12:44 ` [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script Robert Yang
  2019-06-25 12:44 ` [PATCH v2 2/2] gtk-icon-cache.bbclass: Depends on gtk+3 Robert Yang
  0 siblings, 2 replies; 5+ messages in thread
From: Robert Yang @ 2019-06-25 12:44 UTC (permalink / raw)
  To: openembedded-core

* V2
  - The patch for update-alternatives.bbclass makes update-alternatives runs firstly
    before other postinst scripts, since other postinst may run the tool which is
    installed by the package itself (e.g., newaliases is installed as
    newaliases.postfix, and update-alternatives will update it to newaliases). But this
    broke busybox' on target install, since update-alternatives requires some
    basic tools such as sed, there was a neat way in busybox' postinst to fix
    this problem, the v2 makes busybox' postinst script run firstly before
    update-alternatives.

Testinfo:
MACHINE = "qemux86"
PACKAGE_CLASSES = "package_ipk package_rpm" (or "package_rpm package_ipk")
TESTIMAGE_AUTO = "1"
$ bitbake core-image-sato core-image-minimal

The tests are OK.

* V1
  - Initial version

// Robert

The following changes since commit 4bb3e8f98e2bbfcb20f1b32d2b7674d1a6cb47be:

  local.conf.sample.extended: remove redundant RUNTIMETARGET assignment (2019-06-24 17:32:37 +0100)

are available in the git repository at:

  git://git.openembedded.org/openembedded-core-contrib rbt/post
  http://cgit.openembedded.org//log/?h=rbt/post

Robert Yang (2):
  update-alternatives.bbclass: run update-alternatives firstly in
    postinst script
  gtk-icon-cache.bbclass: Depends on gtk+3

 meta/classes/gtk-icon-cache.bbclass      | 14 ++++++++++----
 meta/classes/update-alternatives.bbclass | 13 +++++++++++--
 2 files changed, 21 insertions(+), 6 deletions(-)

-- 
2.7.4



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script
  2019-06-25 12:44 [PATCH v2 0/2] meta: Fixes for update-alternatives.bbclass and gtk-icon-cache.bbclass Robert Yang
@ 2019-06-25 12:44 ` Robert Yang
  2019-06-25 14:14   ` Richard Purdie
  2019-06-25 12:44 ` [PATCH v2 2/2] gtk-icon-cache.bbclass: Depends on gtk+3 Robert Yang
  1 sibling, 1 reply; 5+ messages in thread
From: Robert Yang @ 2019-06-25 12:44 UTC (permalink / raw)
  To: openembedded-core

Recipes like postfix run command newaliases in postinst, but newaliases is
installed as newaliases.postfix, it needs run update-alternatives to update it
to newaliases, so there was an error when installed postinst on target.

Fixed:
$ opkg install postfix
Configuring postfix.
///var/lib/opkg/info/postfix.postinst: line 4: newaliases: command not found

Run update-alternatives firstly will fix the problem. And handle busybox as an
exception since it needs set basic tools such as sed command firstly, otherwise
update-alternatives doesn't work.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 meta/classes/update-alternatives.bbclass | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
index b702e77..9ab9298 100644
--- a/meta/classes/update-alternatives.bbclass
+++ b/meta/classes/update-alternatives.bbclass
@@ -265,6 +265,7 @@ python populate_packages_updatealternatives () {
     if not update_alternatives_enabled(d):
         return
 
+    bpn = d.getVar('BPN')
     # Do actual update alternatives processing
     for pkg in (d.getVar('PACKAGES') or "").split():
         # Create post install/removal scripts
@@ -284,8 +285,16 @@ python populate_packages_updatealternatives () {
 
             bb.note('adding update-alternatives calls to postinst/prerm for %s' % pkg)
             bb.note('%s' % alt_setup_links)
-            postinst = d.getVar('pkg_postinst_%s' % pkg) or '#!/bin/sh\n'
-            postinst += alt_setup_links
+            postinst = d.getVar('pkg_postinst_%s' % pkg)
+            if postinst:
+                # Busybox needs handle basic tools such as sed command
+                # firstly, otherwise, update-alternatives doesn't work.
+                if bpn == 'busybox':
+                    postinst += alt_setup_links
+                else:
+                    postinst = alt_setup_links + postinst
+            else:
+                postinst = '#!/bin/sh\n' + alt_setup_links
             d.setVar('pkg_postinst_%s' % pkg, postinst)
 
             bb.note('%s' % alt_remove_links)
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] gtk-icon-cache.bbclass: Depends on gtk+3
  2019-06-25 12:44 [PATCH v2 0/2] meta: Fixes for update-alternatives.bbclass and gtk-icon-cache.bbclass Robert Yang
  2019-06-25 12:44 ` [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script Robert Yang
@ 2019-06-25 12:44 ` Robert Yang
  1 sibling, 0 replies; 5+ messages in thread
From: Robert Yang @ 2019-06-25 12:44 UTC (permalink / raw)
  To: openembedded-core

The gtk-update-icon-cache is provided by gtk+3, gdk-pixbuf-query-loaders is
provided by gdk-pixbuf, and gtk+3 depends on gdk-pixbuf, so depends on gtk+3
can fix the problems.

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 meta/classes/gtk-icon-cache.bbclass | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/meta/classes/gtk-icon-cache.bbclass b/meta/classes/gtk-icon-cache.bbclass
index 66fe781..4e60fe6 100644
--- a/meta/classes/gtk-icon-cache.bbclass
+++ b/meta/classes/gtk-icon-cache.bbclass
@@ -4,6 +4,11 @@ DEPENDS +=" ${@['hicolor-icon-theme', '']['${BPN}' == 'hicolor-icon-theme']} gtk
 
 PACKAGE_WRITE_DEPS += "gtk+3-native gdk-pixbuf-native"
 
+inherit distro_features_check
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+DEPENDS += "gtk+3"
+
 gtk_icon_cache_postinst() {
 if [ "x$D" != "x" ]; then
 	$INTERCEPT_DIR/postinst_intercept update_icon_cache ${PKG} \
@@ -45,10 +50,11 @@ python populate_packages_append () {
         if not os.path.exists(icon_dir):
             continue
 
-        bb.note("adding hicolor-icon-theme dependency to %s" % pkg)
-        rdepends = ' ' + d.getVar('MLPREFIX', False) + "hicolor-icon-theme"
-        d.appendVar('RDEPENDS_%s' % pkg, rdepends)
-    
+        for dep in ('hicolor-icon-theme', 'gtk+3'):
+            bb.note("Adding %s dependency to %s" % (dep, pkg))
+            rdepends = ' ' + d.getVar('MLPREFIX', False) + dep
+            d.appendVar('RDEPENDS_%s' % pkg, rdepends)
+
         bb.note("adding gtk-icon-cache postinst and postrm scripts to %s" % pkg)
         
         postinst = d.getVar('pkg_postinst_%s' % pkg)
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script
  2019-06-25 12:44 ` [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script Robert Yang
@ 2019-06-25 14:14   ` Richard Purdie
  2019-06-26  7:16     ` Robert Yang
  0 siblings, 1 reply; 5+ messages in thread
From: Richard Purdie @ 2019-06-25 14:14 UTC (permalink / raw)
  To: Robert Yang, openembedded-core

On Tue, 2019-06-25 at 20:44 +0800, Robert Yang wrote:
> Recipes like postfix run command newaliases in postinst, but newaliases is
> installed as newaliases.postfix, it needs run update-alternatives to update it
> to newaliases, so there was an error when installed postinst on target.
> 
> Fixed:
> $ opkg install postfix
> Configuring postfix.
> ///var/lib/opkg/info/postfix.postinst: line 4: newaliases: command not found
> 
> Run update-alternatives firstly will fix the problem. And handle busybox as an
> exception since it needs set basic tools such as sed command firstly, otherwise
> update-alternatives doesn't work.
> 
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> ---
>  meta/classes/update-alternatives.bbclass | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
> index b702e77..9ab9298 100644
> --- a/meta/classes/update-alternatives.bbclass
> +++ b/meta/classes/update-alternatives.bbclass
> @@ -265,6 +265,7 @@ python populate_packages_updatealternatives () {
>      if not update_alternatives_enabled(d):
>          return
>  
> +    bpn = d.getVar('BPN')
>      # Do actual update alternatives processing
>      for pkg in (d.getVar('PACKAGES') or "").split():
>          # Create post install/removal scripts
> @@ -284,8 +285,16 @@ python populate_packages_updatealternatives () {
>  
>              bb.note('adding update-alternatives calls to postinst/prerm for %s' % pkg)
>              bb.note('%s' % alt_setup_links)
> -            postinst = d.getVar('pkg_postinst_%s' % pkg) or '#!/bin/sh\n'
> -            postinst += alt_setup_links
> +            postinst = d.getVar('pkg_postinst_%s' % pkg)
> +            if postinst:
> +                # Busybox needs handle basic tools such as sed command
> +                # firstly, otherwise, update-alternatives doesn't work.
> +                if bpn == 'busybox':
> +                    postinst += alt_setup_links
> +                else:
> +                    postinst = alt_setup_links + postinst
> +            else:
> +                postinst = '#!/bin/sh\n' + alt_setup_links
>              d.setVar('pkg_postinst_%s' % pkg, postinst)
>  
>              bb.note('%s' % alt_remove_links)

We don't write classes like this. We could just keep piling special
cases one on top of the other and it becomes a horrible unmaintainable
mess. I therefore don't want to see recipes "special cased" like this
in core code and we need to find another, better way to handle this.

Cheers,

Richard





^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script
  2019-06-25 14:14   ` Richard Purdie
@ 2019-06-26  7:16     ` Robert Yang
  0 siblings, 0 replies; 5+ messages in thread
From: Robert Yang @ 2019-06-26  7:16 UTC (permalink / raw)
  To: Richard Purdie, openembedded-core



On 6/25/19 10:14 PM, Richard Purdie wrote:
> On Tue, 2019-06-25 at 20:44 +0800, Robert Yang wrote:
>> Recipes like postfix run command newaliases in postinst, but newaliases is
>> installed as newaliases.postfix, it needs run update-alternatives to update it
>> to newaliases, so there was an error when installed postinst on target.
>>
>> Fixed:
>> $ opkg install postfix
>> Configuring postfix.
>> ///var/lib/opkg/info/postfix.postinst: line 4: newaliases: command not found
>>
>> Run update-alternatives firstly will fix the problem. And handle busybox as an
>> exception since it needs set basic tools such as sed command firstly, otherwise
>> update-alternatives doesn't work.
>>
>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>> ---
>>   meta/classes/update-alternatives.bbclass | 13 +++++++++++--
>>   1 file changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
>> index b702e77..9ab9298 100644
>> --- a/meta/classes/update-alternatives.bbclass
>> +++ b/meta/classes/update-alternatives.bbclass
>> @@ -265,6 +265,7 @@ python populate_packages_updatealternatives () {
>>       if not update_alternatives_enabled(d):
>>           return
>>   
>> +    bpn = d.getVar('BPN')
>>       # Do actual update alternatives processing
>>       for pkg in (d.getVar('PACKAGES') or "").split():
>>           # Create post install/removal scripts
>> @@ -284,8 +285,16 @@ python populate_packages_updatealternatives () {
>>   
>>               bb.note('adding update-alternatives calls to postinst/prerm for %s' % pkg)
>>               bb.note('%s' % alt_setup_links)
>> -            postinst = d.getVar('pkg_postinst_%s' % pkg) or '#!/bin/sh\n'
>> -            postinst += alt_setup_links
>> +            postinst = d.getVar('pkg_postinst_%s' % pkg)
>> +            if postinst:
>> +                # Busybox needs handle basic tools such as sed command
>> +                # firstly, otherwise, update-alternatives doesn't work.
>> +                if bpn == 'busybox':
>> +                    postinst += alt_setup_links
>> +                else:
>> +                    postinst = alt_setup_links + postinst
>> +            else:
>> +                postinst = '#!/bin/sh\n' + alt_setup_links
>>               d.setVar('pkg_postinst_%s' % pkg, postinst)
>>   
>>               bb.note('%s' % alt_remove_links)
> 
> We don't write classes like this. We could just keep piling special
> cases one on top of the other and it becomes a horrible unmaintainable
> mess. I therefore don't want to see recipes "special cased" like this
> in core code and we need to find another, better way to handle this.

Yes, make sense, I was also worried about. My first fix was in busybox.inc,
but looks a little tricky (Add a populate_packages_updatealternatives_append()
in busybox.inc) to make it work. Please see the V3.

// Robert

> 
> Cheers,
> 
> Richard
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-06-26  7:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-25 12:44 [PATCH v2 0/2] meta: Fixes for update-alternatives.bbclass and gtk-icon-cache.bbclass Robert Yang
2019-06-25 12:44 ` [PATCH v2 1/2] update-alternatives.bbclass: run update-alternatives firstly in postinst script Robert Yang
2019-06-25 14:14   ` Richard Purdie
2019-06-26  7:16     ` Robert Yang
2019-06-25 12:44 ` [PATCH v2 2/2] gtk-icon-cache.bbclass: Depends on gtk+3 Robert Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox