* [PATCH 1/4] dpkg-base: Relocate dpkg_runbuild and adjust comments
2018-09-01 14:47 [PATCH 0/4] dpkg class refactorings, API changelog Jan Kiszka
@ 2018-09-01 14:47 ` Jan Kiszka
2018-09-01 14:47 ` [PATCH 2/4] dkpg-base: Clarify dependency logic between package recipes Jan Kiszka
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2018-09-01 14:47 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@siemens.com>
This puts this placeholder in the context of its task definition and
also improves the comments related to dpkg_runbuild as well as
dpkg_prepare. No functional changes.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
meta/classes/dpkg-base.bbclass | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index 5826357..84c56af 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -50,13 +50,10 @@ PPS ?= "${@get_package_srcdir(d)}"
BUILDROOT = "${BUILDCHROOT_DIR}/${PP}"
do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
-# default to "emtpy" implementation for dpkg_prepare() and dpkg_runbuild()
+# Empty do_prepare() implementation, to be overwritten if needed
dpkg_prepare() {
true
}
-dpkg_runbuild() {
- die "This should never be called, overwrite it in your derived class"
-}
MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock"
@@ -89,6 +86,11 @@ do_prepare() {
addtask prepare after do_patch before do_build
do_prepare[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
+# Placeholder for actual dpkg_runbuild() implementation
+dpkg_runbuild() {
+ die "This should never be called, overwrite it in your derived class"
+}
+
do_build() {
dpkg_do_mounts
dpkg_runbuild
--
2.16.4
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/4] dkpg-base: Clarify dependency logic between package recipes
2018-09-01 14:47 [PATCH 0/4] dpkg class refactorings, API changelog Jan Kiszka
2018-09-01 14:47 ` [PATCH 1/4] dpkg-base: Relocate dpkg_runbuild and adjust comments Jan Kiszka
@ 2018-09-01 14:47 ` Jan Kiszka
2018-09-01 14:47 ` [PATCH 3/4] dpkg: Split dependency installation from build preparations Jan Kiszka
2018-09-01 14:47 ` [PATCH 4/4] Add changelog for the recipe API Jan Kiszka
3 siblings, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2018-09-01 14:47 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@siemens.com>
No functional change, just reordering and comment enhancement.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
meta/classes/dpkg-base.bbclass | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index 84c56af..6299ef8 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -3,6 +3,8 @@
ISAR_CROSS_COMPILE ??= "0"
+DEPENDS ?= ""
+
# Add dependency from the correct buildchroot: host or target
python __anonymous() {
mode = d.getVar('ISAR_CROSS_COMPILE', True)
@@ -30,10 +32,6 @@ do_adjust_git[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
inherit patch
addtask patch after do_adjust_git before do_build
-# Add dependency between Isar recipes
-DEPENDS ?= ""
-do_prepare[deptask] = "do_deploy_deb"
-
def get_package_srcdir(d):
s = d.getVar("S", True)
workdir = d.getVar("WORKDIR", True)
@@ -85,6 +83,9 @@ do_prepare() {
addtask prepare after do_patch before do_build
do_prepare[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
+# If Isar recipes depend on each other, they typically need the package
+# deployed to isar-apt
+do_prepare[deptask] = "do_deploy_deb"
# Placeholder for actual dpkg_runbuild() implementation
dpkg_runbuild() {
--
2.16.4
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/4] dpkg: Split dependency installation from build preparations
2018-09-01 14:47 [PATCH 0/4] dpkg class refactorings, API changelog Jan Kiszka
2018-09-01 14:47 ` [PATCH 1/4] dpkg-base: Relocate dpkg_runbuild and adjust comments Jan Kiszka
2018-09-01 14:47 ` [PATCH 2/4] dkpg-base: Clarify dependency logic between package recipes Jan Kiszka
@ 2018-09-01 14:47 ` Jan Kiszka
2018-09-01 14:47 ` [PATCH 4/4] Add changelog for the recipe API Jan Kiszka
3 siblings, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2018-09-01 14:47 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@siemens.com>
Only the former needs locking, and the latter benefits from clearer
naming: do_prepare_build is supposed to run prior to the build. The
dependency installation task is now from the user perspective part of
the build again, even when run separately directly before it.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
meta/classes/dpkg-base.bbclass | 24 +++++++++---------------
meta/classes/dpkg-raw.bbclass | 4 ++--
meta/classes/dpkg.bbclass | 8 ++++++--
meta/recipes-kernel/linux-module/module.inc | 2 +-
4 files changed, 18 insertions(+), 20 deletions(-)
diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass
index 6299ef8..a2d2ff0 100644
--- a/meta/classes/dpkg-base.bbclass
+++ b/meta/classes/dpkg-base.bbclass
@@ -15,7 +15,7 @@ python __anonymous() {
dep = "buildchroot-host:do_build"
rootfs = d.getVar('BUILDCHROOT_HOST_DIR', True)
- d.setVarFlag('do_prepare', 'depends', dep)
+ d.setVarFlag('do_prepare_build', 'depends', dep)
d.setVar('BUILDCHROOT_DIR', rootfs)
}
@@ -48,11 +48,17 @@ PPS ?= "${@get_package_srcdir(d)}"
BUILDROOT = "${BUILDCHROOT_DIR}/${PP}"
do_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
-# Empty do_prepare() implementation, to be overwritten if needed
-dpkg_prepare() {
+# Empty do_prepare_build() implementation, to be overwritten if needed
+do_prepare_build() {
true
}
+addtask prepare_build after do_patch before do_build
+do_prepare_build[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
+# If Isar recipes depend on each other, they typically need the package
+# deployed to isar-apt
+do_prepare_build[deptask] = "do_deploy_deb"
+
MOUNT_LOCKFILE = "${BUILDCHROOT_DIR}/mount.lock"
# Wrap the function dpkg_runbuild with the bind mount for buildroot
@@ -75,18 +81,6 @@ dpkg_undo_mounts() {
sudo rmdir ${BUILDROOT} 2>/dev/null || true
}
-do_prepare() {
- dpkg_do_mounts
- dpkg_prepare
- dpkg_undo_mounts
-}
-
-addtask prepare after do_patch before do_build
-do_prepare[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
-# If Isar recipes depend on each other, they typically need the package
-# deployed to isar-apt
-do_prepare[deptask] = "do_deploy_deb"
-
# Placeholder for actual dpkg_runbuild() implementation
dpkg_runbuild() {
die "This should never be called, overwrite it in your derived class"
diff --git a/meta/classes/dpkg-raw.bbclass b/meta/classes/dpkg-raw.bbclass
index c5f1c88..c848f3d 100644
--- a/meta/classes/dpkg-raw.bbclass
+++ b/meta/classes/dpkg-raw.bbclass
@@ -14,7 +14,7 @@ do_install() {
}
do_install[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
-addtask install after do_unpack before do_prepare
+addtask install after do_unpack before do_prepare_build
deb_package_prepare() {
sudo rm -rf ${D}/DEBIAN
@@ -48,7 +48,7 @@ deb_package_conffiles() {
test -s $CONFFILES || rm $CONFFILES
}
-dpkg_prepare() {
+do_prepare_build() {
deb_package_prepare
deb_package_conffiles
}
diff --git a/meta/classes/dpkg.bbclass b/meta/classes/dpkg.bbclass
index 2e53c1b..fd9656f 100644
--- a/meta/classes/dpkg.bbclass
+++ b/meta/classes/dpkg.bbclass
@@ -4,13 +4,17 @@
inherit dpkg-base
# Install build dependencies for package
-dpkg_prepare() {
+do_install_builddeps() {
+ dpkg_do_mounts
E="${@ bb.utils.export_proxies(d)}"
sudo -E chroot ${BUILDCHROOT_DIR} /isar/deps.sh ${PP}/${PPS} ${DISTRO_ARCH}
+ dpkg_undo_mounts
}
+addtask install_builddeps after do_prepare_build before do_build
# apt and reprepro may not run in parallel, acquire the Isar lock
-do_prepare[lockfiles] += "${DEPLOY_DIR_APT}/isar.lock"
+do_install_builddeps[lockfiles] = "${DEPLOY_DIR_APT}/isar.lock"
+do_install_builddeps[stamp-extra-info] = "${DISTRO}-${DISTRO_ARCH}"
# Build package from sources using build script
dpkg_runbuild() {
diff --git a/meta/recipes-kernel/linux-module/module.inc b/meta/recipes-kernel/linux-module/module.inc
index 7bc29a8..08d2c25 100644
--- a/meta/recipes-kernel/linux-module/module.inc
+++ b/meta/recipes-kernel/linux-module/module.inc
@@ -17,7 +17,7 @@ AUTOLOAD ?= "0"
inherit dpkg
-do_prepare_prepend() {
+do_prepare_build() {
cp -r ${WORKDIR}/debian ${S}/
sed -i -e 's/@PN@/${PN}/g' -e 's/@PV@/${PV}/g' \
-e 's/@KERNEL_NAME@/${KERNEL_NAME}/g' \
--
2.16.4
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 4/4] Add changelog for the recipe API
2018-09-01 14:47 [PATCH 0/4] dpkg class refactorings, API changelog Jan Kiszka
` (2 preceding siblings ...)
2018-09-01 14:47 ` [PATCH 3/4] dpkg: Split dependency installation from build preparations Jan Kiszka
@ 2018-09-01 14:47 ` Jan Kiszka
3 siblings, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2018-09-01 14:47 UTC (permalink / raw)
To: isar-users
From: Jan Kiszka <jan.kiszka@siemens.com>
This uses the last release v0.5 as baseline and documents changes that
affect own recipes and layers using Isar. Hopefully, this caught all of
them since v0.5.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
RECIPE-API-CHANGELOG.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
create mode 100644 RECIPE-API-CHANGELOG.md
diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
new file mode 100644
index 0000000..601fc6b
--- /dev/null
+++ b/RECIPE-API-CHANGELOG.md
@@ -0,0 +1,59 @@
+Recipe API Changelog
+====================
+
+Baseline: Release v0.5
+
+Changes in v0.6
+---------------
+
+### Separate do_prepare_build task
+
+All Debianizations of source trees and any further programmatic patching has to
+be moved from the dpkg_runbuild() task to this new task.
+
+### ISAR_CROSS_COMPILE support
+
+Isar now supports cross-compilation. When enabled via `ISAR_CROSS_COMPILE = "1"`
+in a global configuration file, all recipes that do not overwrite this variable
+will build cross-compiled.
+
+If a recipe is not cross-compatible, it should set `ISAR_CROSS_COMPILE = "0"`.
+Then also all its dependencies that are built by Isar must opt out from
+cross-building.
+
+### wic image type, removal of manual wic invocation
+
+Images that are described by wic files are now generated during the build by
+setting `IMAGE_TYPE = "wic-img"`. The manual invocation of wic after the
+bitbake run is no longer needed nor supported.
+
+### Optional kernel installation
+
+The installation of a Linux kernel into the isar-image-base can be skipped by
+setting `KERNEL_NAME = ""`.
+
+### Corrected semantic of `S`
+
+The `S` variable is now defined as NOT including `WORKDIR`, like in OE, Gentoo
+and others. If it was set to, e.g., `S = "sources"` in a recipe so far, it must
+be defined as `S = ${WORKDIR}/sources` from now on.
+
+### DISTRO and DISTRO_ARCH are available as OVERRIDES
+
+Bitbake variables can now also refer to the DISTRO as well as the DISTRO_ARCH
+for overrides.
+
+### Set ISAR_RELEASE_CMD in own top-layer
+
+Isar now populates /etc/os-release with information about the image. In order
+to identify the revision of the top layer that controlled the image build with
+all its dependencies, set ISAR_RELEASE_CMD so that it picks up the required
+information.
+
+If the top-layer is managed in git, set `LAYERDIR_mylayer = "${LAYERDIR}"` in
+`conf/layer.conf` and add something along
+
+ ISAR_RELEASE_CMD = "git -C ${LAYERDIR_mylayer} describe --tags --dirty \
+ --match 'v[0-9].[0-9]*'"
+
+in the image recipe (or `isar-image-base.bbappend`) of that layer.
--
2.16.4
^ permalink raw reply [flat|nested] 5+ messages in thread