public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: isar-users <isar-users@googlegroups.com>
Subject: [PATCH v5 26/27] dpkg-base: Add devshell target
Date: Sun, 22 Sep 2019 20:17:10 +0200	[thread overview]
Message-ID: <131a167d16d26513f9b92197d72b4129ee8e050b.1569176231.git.jan.kiszka@siemens.com> (raw)
In-Reply-To: <cover.1569176231.git.jan.kiszka@siemens.com>
In-Reply-To: <cover.1569176231.git.jan.kiszka@siemens.com>

From: Jan Kiszka <jan.kiszka@siemens.com>

Using the imported OE core services, this adds devshell support for dpkg
package builds. The target is put after do_install_builddeps where
available, otherwise do_prepare_build.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 doc/user_manual.md                         |  8 ++++++++
 meta/classes/dpkg-base.bbclass             | 26 +++++++++++++++++++++++++-
 meta/classes/dpkg.bbclass                  |  2 ++
 meta/recipes-kernel/linux/linux-custom.inc |  2 ++
 4 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/doc/user_manual.md b/doc/user_manual.md
index 47f0dd5..c2657da 100644
--- a/doc/user_manual.md
+++ b/doc/user_manual.md
@@ -682,6 +682,14 @@ Debian cross-compilation works out of the box starting from Debian stretch distr
  - qemuarm64-buster (for host >= buster)
 
 
+## Examining and debugging package generation inside their buildchroot
+
+Just like OpenEmbedded, Isar supports a devshell target for all dpkg package
+recipes. This target opens a terminal inside the buildchroot that runs the
+package build. To invoke it, just call
+`bitbake multiconfig:${MACHINE}-${DISTRO}:<package_name> -c devshell`.
+
+
 ## Create an ISAR SDK root filesystem
 
 ### Motivation
diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index fa904b8..2e8a0d1 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -1,10 +1,11 @@
 # This software is a part of ISAR.
-# Copyright (C) 2017-2018 Siemens AG
+# Copyright (C) 2017-2019 Siemens AG
 #
 # SPDX-License-Identifier: MIT
 
 inherit buildchroot
 inherit debianize
+inherit terminal
 
 DEPENDS ?= ""
 
@@ -136,3 +137,26 @@ addtask deploy_deb after do_dpkg_build before do_build
 do_deploy_deb[lockfiles] = "${REPO_ISAR_DIR}/isar.lock"
 do_deploy_deb[depends] = "isar-apt:do_cache_config"
 do_deploy_deb[dirs] = "${S}"
+
+python do_devshell() {
+    import sys
+
+    oe_lib_path = os.path.join(d.getVar('LAYERDIR_core'), 'lib')
+    sys.path.insert(0, oe_lib_path)
+
+    bb.build.exec_func('dpkg_do_mounts', d);
+
+    bb.utils.export_proxies(d)
+
+    buildchroot = d.getVar('BUILDCHROOT_DIR')
+    pp_pps = os.path.join(d.getVar('PP'), d.getVar('PPS'))
+    termcmd = "sudo -E chroot {0} sh -c 'cd {1}; $SHELL -i'"
+    oe_terminal(termcmd.format(buildchroot, pp_pps), "Isar devshell", d)
+
+    bb.build.exec_func('dpkg_undo_mounts', d);
+}
+
+addtask devshell after do_prepare_build
+DEVSHELL_STARTDIR ?= "${S}"
+do_devshell[dirs] = "${DEVSHELL_STARTDIR}"
+do_devshell[nostamp] = "1"
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index f5396cb..19d77a2 100644
--- a/meta/classes/dpkg.bbclass
+++ b/meta/classes/dpkg.bbclass
@@ -15,6 +15,8 @@ addtask install_builddeps after do_prepare_build before do_dpkg_build
 # apt and reprepro may not run in parallel, acquire the Isar lock
 do_install_builddeps[lockfiles] += "${REPO_ISAR_DIR}/isar.lock"
 
+addtask devshell after do_install_builddeps
+
 # Build package from sources using build script
 dpkg_runbuild() {
     E="${@ bb.utils.export_proxies(d)}"
diff --git a/meta/recipes-kernel/linux/linux-custom.inc b/meta/recipes-kernel/linux/linux-custom.inc
index e75eed1..8ff3836 100644
--- a/meta/recipes-kernel/linux/linux-custom.inc
+++ b/meta/recipes-kernel/linux/linux-custom.inc
@@ -47,6 +47,8 @@ addtask install_builddeps after do_prepare_build before do_dpkg_build
 # apt and reprepro may not run in parallel, acquire the Isar lock
 do_install_builddeps[lockfiles] += "${REPO_ISAR_DIR}/isar.lock"
 
+addtask devshell after do_install_builddeps
+
 dpkg_runbuild() {
 	chmod +x ${WORKDIR}/build-kernel.sh
 	if [ -n "${KERNEL_DEFCONFIG}" ]; then
-- 
2.16.4


  parent reply	other threads:[~2019-09-22 18:17 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-22 18:16 [PATCH v5 00/27] Pending patches, fix for isar-bootstrap, devshell Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 01/27] buildchroot: Properly deploy the build result Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 02/27] sdk: Use clean-package-cache rather than open-coded cleanup Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 03/27] sdk: Deploy earlier Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 04/27] Remove unneeded PF tweakings Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 05/27] image: Stop changing PF, tune WORKDIR and STAMP directly Jan Kiszka
2019-09-25 12:47   ` [PATCH v6 " Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 06/27] image: Make WORKDIR and STAMPs IMAGE_TYPE-specific Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 07/27] Adjust STAMP variables to use PN, rather than PF Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 08/27] Align WORKDIR structure with OE Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 09/27] isar-bootstrap: Unshare host bootstraps across different target distros Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 10/27] isar-bootstrap: Clean up and fix rebuild Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 11/27] gitlab-ci: Keep logs as artifacts on failure Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 12/27] Detect false sharing of recipes Jan Kiszka
2019-09-24 18:02   ` [PATCH v6 " Jan Kiszka
2019-09-29 14:57     ` Baurzhan Ismagulov
2019-09-30  6:00       ` Jan Kiszka
2019-09-30  9:56         ` Baurzhan Ismagulov
2019-09-30 10:14           ` Jan Kiszka
2019-09-30 14:53             ` Baurzhan Ismagulov
2019-09-30 15:26               ` Jan Kiszka
2019-09-30 15:39                 ` Baurzhan Ismagulov
2019-09-30 16:34                   ` Jan Kiszka
2019-09-30 17:20                     ` Baurzhan Ismagulov
2019-09-30 17:26                       ` Jan Kiszka
2019-09-30 20:29                         ` Baurzhan Ismagulov
2019-09-22 18:16 ` [PATCH v5 13/27] dpkg-base: Move do_deploy_deb before do_build Jan Kiszka
2019-10-02  7:09   ` Baurzhan Ismagulov
2019-09-22 18:16 ` [PATCH v5 14/27] base-apt: Move do_cache_config " Jan Kiszka
2019-09-22 18:16 ` [PATCH v5 15/27] wic-img: Use private tmp dir Jan Kiszka
2019-09-22 18:17 ` [PATCH v5 16/27] rootfs: Take isar-apt shared lock during repository operations Jan Kiszka
2019-09-22 18:17 ` [PATCH v5 17/27] Use deb.debian.org mirrors Jan Kiszka
2019-09-23 10:03   ` Baurzhan Ismagulov
2019-09-23 10:09     ` Jan Kiszka
2019-10-02 11:13   ` Baurzhan Ismagulov
2019-09-22 18:17 ` [PATCH v5 18/27] linux-custom: Control linux-libc-dev deployment manually Jan Kiszka
2019-09-22 18:17 ` [PATCH v5 19/27] dpkg-base: Wait for umount to succeed Jan Kiszka
2019-09-30 11:07   ` Baurzhan Ismagulov
2019-09-30 12:22     ` Jan Kiszka
2019-09-30 13:33       ` Baurzhan Ismagulov
2019-10-07 15:48   ` Baurzhan Ismagulov
2019-09-22 18:17 ` [PATCH v5 20/27] dpkg-base: Permit multiple clean runs Jan Kiszka
2019-09-22 18:17 ` [PATCH v5 21/27] buildchroot: Factor out common packages Jan Kiszka
2019-09-22 18:17 ` [PATCH v5 22/27] buildchroot: Do not build cross when there are no arch-specific outputs Jan Kiszka
2019-09-22 18:17 ` [PATCH v5 23/27] Add git-buildpackage support Jan Kiszka
2019-09-22 18:17 ` [PATCH v5 24/27] dbpg-raw: Only list top-level files in <pn>.install Jan Kiszka
2019-09-23  9:52   ` Baurzhan Ismagulov
2019-09-23 10:29     ` Jan Kiszka
2019-09-23 10:30       ` Baurzhan Ismagulov
2019-09-22 18:17 ` [PATCH v5 25/27] Add OE class and library elements for terminal support Jan Kiszka
2019-09-22 18:17 ` Jan Kiszka [this message]
2019-09-22 18:17 ` [PATCH v5 27/27] linux-custom: Add libncurses-dev to KBUILD_DEPENDS Jan Kiszka
2019-09-23  6:33 ` [PATCH v5 00/27] Pending patches, fix for isar-bootstrap, devshell Baurzhan Ismagulov
2019-09-23  7:33   ` Jan Kiszka
2019-09-23  7:50     ` Baurzhan Ismagulov
2019-09-23  9:50 ` Baurzhan Ismagulov
2019-09-23 10:07   ` Jan Kiszka
2019-09-23 10:23     ` Baurzhan Ismagulov
2019-09-23 10:28       ` Jan Kiszka
2019-09-25  8:41         ` Baurzhan Ismagulov
2019-09-25  8:51           ` Jan Kiszka
2019-09-25  9:22             ` Baurzhan Ismagulov
2019-09-25  9:26               ` Jan Kiszka
2019-09-25  9:35                 ` Baurzhan Ismagulov
2019-09-25  9:35                 ` Jan Kiszka
2019-09-25 10:52                   ` Baurzhan Ismagulov
2019-09-25 11:05                     ` Jan Kiszka
2019-09-25 12:08                       ` Baurzhan Ismagulov
2019-09-25 12:29                         ` Jan Kiszka
2019-09-25 12:44                           ` Baurzhan Ismagulov
2019-09-23 14:24   ` Henning Schild
2019-09-28 15:46     ` Baurzhan Ismagulov
2019-09-25 10:23 ` Henning Schild
2019-09-25 11:41   ` Jan Kiszka
2019-09-30  9:29     ` Baurzhan Ismagulov
2019-09-30 10:02       ` Jan Kiszka
2019-09-30 13:00       ` Baurzhan Ismagulov
2019-10-01 14:47 ` Baurzhan Ismagulov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=131a167d16d26513f9b92197d72b4129ee8e050b.1569176231.git.jan.kiszka@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=isar-users@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox