All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Supply correct argument to .deb pre/postinsts
@ 2016-11-14 10:35 Linus Wallgren
  2016-11-14 14:02 ` Burton, Ross
  0 siblings, 1 reply; 3+ messages in thread
From: Linus Wallgren @ 2016-11-14 10:35 UTC (permalink / raw)
  To: openembedded-core; +Cc: Linus Wallgren

The debian policy manual and MaintainerScripts wiki page states that the
postinst script is supposed to be called with the `configure` argument
at first install, likewise the preinst script is supposed to be called
with the `install` argument on first install.

https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html
https://wiki.debian.org/MaintainerScripts
---
 meta/lib/oe/package_manager.py | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 3cee973..ec947c3 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -1993,7 +1993,10 @@ class DpkgPM(OpkgDpkgPM):
     """
     def run_pre_post_installs(self, package_name=None):
         info_dir = self.target_rootfs + "/var/lib/dpkg/info"
-        suffixes = [(".preinst", "Preinstall"), (".postinst", "Postinstall")]
+        ControlScript = collections.namedtuple("ControlScript", ["suffix", "name", "argument"])
+        control_scripts = [
+                ControlScript(".preinst", "Preinstall", "install"),
+                ControlScript(".postinst", "Postinstall", "configure")]
         status_file = self.target_rootfs + "/var/lib/dpkg/status"
         installed_pkgs = []
 
@@ -2016,16 +2019,18 @@ class DpkgPM(OpkgDpkgPM):
 
         failed_pkgs = []
         for pkg_name in installed_pkgs:
-            for suffix in suffixes:
-                p_full = os.path.join(info_dir, pkg_name + suffix[0])
+            for control_script in control_scripts:
+                p_full = os.path.join(info_dir, pkg_name + control_script.suffix)
                 if os.path.exists(p_full):
                     try:
                         bb.note("Executing %s for package: %s ..." %
-                                 (suffix[1].lower(), pkg_name))
-                        subprocess.check_output(p_full, stderr=subprocess.STDOUT)
+                                 (control_script.name.lower(), pkg_name))
+                        subprocess.check_output([p_full, control_script.argument],
+                                stderr=subprocess.STDOUT)
                     except subprocess.CalledProcessError as e:
                         bb.note("%s for package %s failed with %d:\n%s" %
-                                (suffix[1], pkg_name, e.returncode, e.output.decode("utf-8")))
+                                (control_script.name, pkg_name, e.returncode,
+                                    e.output.decode("utf-8")))
                         failed_pkgs.append(pkg_name)
                         break
 
-- 
2.10.2



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

* Re: [PATCH] Supply correct argument to .deb pre/postinsts
  2016-11-14 10:35 [PATCH] Supply correct argument to .deb pre/postinsts Linus Wallgren
@ 2016-11-14 14:02 ` Burton, Ross
  2016-11-14 16:20   ` [PATCH] lib/oe/package_manager: .deb pre/postinst args Linus Wallgren
  0 siblings, 1 reply; 3+ messages in thread
From: Burton, Ross @ 2016-11-14 14:02 UTC (permalink / raw)
  To: Linus Wallgren; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 667 bytes --]

On 14 November 2016 at 10:35, Linus Wallgren <linus.wallgren@scypho.com>
wrote:

> The debian policy manual and MaintainerScripts wiki page states that the
> postinst script is supposed to be called with the `configure` argument
> at first install, likewise the preinst script is supposed to be called
> with the `install` argument on first install.
>
> https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html
> https://wiki.debian.org/MaintainerScripts
>

Please prefix the commit shortlog with the name of the component being
modified ("lib/oe/package_manager: " seems reasonable to me), and add a
signed-off-by to the commit log.

Ross

[-- Attachment #2: Type: text/html, Size: 1313 bytes --]

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

* [PATCH] lib/oe/package_manager: .deb pre/postinst args
  2016-11-14 14:02 ` Burton, Ross
@ 2016-11-14 16:20   ` Linus Wallgren
  0 siblings, 0 replies; 3+ messages in thread
From: Linus Wallgren @ 2016-11-14 16:20 UTC (permalink / raw)
  To: openembedded-core; +Cc: Linus Wallgren

The debian policy manual and MaintainerScripts wiki page states that the
postinst script is supposed to be called with the `configure` argument
at first install, likewise the preinst script is supposed to be called
with the `install` argument on first install.

https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html
https://wiki.debian.org/MaintainerScripts

Signed-off-by: Linus Wallgren <linus.wallgren@scypho.com>
---
 meta/lib/oe/package_manager.py | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 3cee973..ec947c3 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -1993,7 +1993,10 @@ class DpkgPM(OpkgDpkgPM):
     """
     def run_pre_post_installs(self, package_name=None):
         info_dir = self.target_rootfs + "/var/lib/dpkg/info"
-        suffixes = [(".preinst", "Preinstall"), (".postinst", "Postinstall")]
+        ControlScript = collections.namedtuple("ControlScript", ["suffix", "name", "argument"])
+        control_scripts = [
+                ControlScript(".preinst", "Preinstall", "install"),
+                ControlScript(".postinst", "Postinstall", "configure")]
         status_file = self.target_rootfs + "/var/lib/dpkg/status"
         installed_pkgs = []
 
@@ -2016,16 +2019,18 @@ class DpkgPM(OpkgDpkgPM):
 
         failed_pkgs = []
         for pkg_name in installed_pkgs:
-            for suffix in suffixes:
-                p_full = os.path.join(info_dir, pkg_name + suffix[0])
+            for control_script in control_scripts:
+                p_full = os.path.join(info_dir, pkg_name + control_script.suffix)
                 if os.path.exists(p_full):
                     try:
                         bb.note("Executing %s for package: %s ..." %
-                                 (suffix[1].lower(), pkg_name))
-                        subprocess.check_output(p_full, stderr=subprocess.STDOUT)
+                                 (control_script.name.lower(), pkg_name))
+                        subprocess.check_output([p_full, control_script.argument],
+                                stderr=subprocess.STDOUT)
                     except subprocess.CalledProcessError as e:
                         bb.note("%s for package %s failed with %d:\n%s" %
-                                (suffix[1], pkg_name, e.returncode, e.output.decode("utf-8")))
+                                (control_script.name, pkg_name, e.returncode,
+                                    e.output.decode("utf-8")))
                         failed_pkgs.append(pkg_name)
                         break
 
-- 
2.10.2



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

end of thread, other threads:[~2016-11-14 16:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-14 10:35 [PATCH] Supply correct argument to .deb pre/postinsts Linus Wallgren
2016-11-14 14:02 ` Burton, Ross
2016-11-14 16:20   ` [PATCH] lib/oe/package_manager: .deb pre/postinst args Linus Wallgren

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.