[1/2] meta-isar: add example recipe for deploying prebuilt debs

Message ID 20210212131733.9926-1-henning.schild@siemens.com
State Superseded, archived
Headers show
Series [1/2] meta-isar: add example recipe for deploying prebuilt debs | expand

Commit Message

Henning Schild Feb. 12, 2021, 3:17 a.m. UTC
From: Henning Schild <henning.schild@siemens.com>

Signed-off-by: Henning Schild <henning.schild@siemens.com>
---
 meta-isar/conf/local.conf.sample              |  2 +-
 .../example-prebuilt-dummy_0.1.bb             | 15 ++++++++++++
 .../example-prebuilt/example-prebuilt_0.1.bb  | 23 +++++++++++++++++++
 3 files changed, 39 insertions(+), 1 deletion(-)
 create mode 100644 meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
 create mode 100644 meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb

Comments

Jan Kiszka Feb. 12, 2021, 6:42 a.m. UTC | #1
On 12.02.21 14:17, Henning Schild wrote:
> From: Henning Schild <henning.schild@siemens.com>
> 
> Signed-off-by: Henning Schild <henning.schild@siemens.com>
> ---
>  meta-isar/conf/local.conf.sample              |  2 +-
>  .../example-prebuilt-dummy_0.1.bb             | 15 ++++++++++++
>  .../example-prebuilt/example-prebuilt_0.1.bb  | 23 +++++++++++++++++++
>  3 files changed, 39 insertions(+), 1 deletion(-)
>  create mode 100644 meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
>  create mode 100644 meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
> 
> diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
> index 107496c163..cc0b5c66bb 100644
> --- a/meta-isar/conf/local.conf.sample
> +++ b/meta-isar/conf/local.conf.sample
> @@ -172,7 +172,7 @@ CONF_VERSION = "1"
>  
>  #
>  # The default list of extra packages to be installed.
> -IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsck isar-exclude-docs samefile hello isar-disable-apt-cache cowsay"
> +IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsck isar-exclude-docs samefile hello isar-disable-apt-cache cowsay example-prebuilt"
>  
>  #
>  # Enable cross-compilation support
> diff --git a/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb b/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
> new file mode 100644
> index 0000000000..92273dc886
> --- /dev/null
> +++ b/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
> @@ -0,0 +1,15 @@
> +# Sample recipe to create a dummy package used for example-prebuilt
> +#
> +# This software is a part of ISAR.
> +
> +DESCRIPTION = "Sample application for ISAR"
> +MAINTAINER = "Your name here <you@domain.com>"
> +
> +SRC_URI = ""
> +
> +inherit dpkg-raw
> +
> +# we provide a deb under another name
> +do_prepare_build_append() {
> +  sed -i 's/example-prebuilt-dummy/example-prebuilt/g' ${S}/debian/* 
> +}
> diff --git a/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb b/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
> new file mode 100644
> index 0000000000..4f224a48ec
> --- /dev/null
> +++ b/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
> @@ -0,0 +1,23 @@
> +# Sample recipe to include a prebuilt deb archive into an isar build
> +#
> +# This software is a part of ISAR.
> +
> +## hacks for the sake of the example
> +DEPENDS += "${PN}-dummy"
> +do_fetch[depends] += "${PN}-dummy:do_deploy_deb"
> +do_fetch[file-checksums] = ""
> +FILESPATH_prepend := "${REPO_ISAR_DIR}/${DISTRO}/pool/main/e/${PN}/:"

I think my approach is clearer /wrt not having the need for this here -
and the companion package.

> +
> +## start of real example, the below is relevant
> +
> +# note the unpack=false
> +SRC_URI = "file://${PN}_${PV}_${DISTRO_ARCH}.deb;unpack=false"
> +
> +inherit dpkg-base
> +
> +# in case you have multiple debs or PN does not match
> +#PROVIDES="foobar blabla"
> +
> +do_dpkg_build() {
> +  bbnote "Not building a package"
> +}
> 

Otherwise, we are on the same page I think. Yours is more verbose in
several places.

Jan
Henning Schild Feb. 12, 2021, 8:47 a.m. UTC | #2
Am Fri, 12 Feb 2021 17:42:07 +0100
schrieb Jan Kiszka <jan.kiszka@siemens.com>:

> On 12.02.21 14:17, Henning Schild wrote:
> > From: Henning Schild <henning.schild@siemens.com>
> > 
> > Signed-off-by: Henning Schild <henning.schild@siemens.com>
> > ---
> >  meta-isar/conf/local.conf.sample              |  2 +-
> >  .../example-prebuilt-dummy_0.1.bb             | 15 ++++++++++++
> >  .../example-prebuilt/example-prebuilt_0.1.bb  | 23
> > +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-)
> >  create mode 100644
> > meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
> > create mode 100644
> > meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
> > 
> > diff --git a/meta-isar/conf/local.conf.sample
> > b/meta-isar/conf/local.conf.sample index 107496c163..cc0b5c66bb
> > 100644 --- a/meta-isar/conf/local.conf.sample
> > +++ b/meta-isar/conf/local.conf.sample
> > @@ -172,7 +172,7 @@ CONF_VERSION = "1"
> >  
> >  #
> >  # The default list of extra packages to be installed.
> > -IMAGE_INSTALL = "hello-isar example-raw
> > example-module-${KERNEL_NAME} enable-fsck isar-exclude-docs
> > samefile hello isar-disable-apt-cache cowsay" +IMAGE_INSTALL =
> > "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsck
> > isar-exclude-docs samefile hello isar-disable-apt-cache cowsay
> > example-prebuilt" # # Enable cross-compilation support diff --git
> > a/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
> > b/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
> > new file mode 100644 index 0000000000..92273dc886 --- /dev/null
> > +++
> > b/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
> > @@ -0,0 +1,15 @@ +# Sample recipe to create a dummy package used
> > for example-prebuilt +#
> > +# This software is a part of ISAR.
> > +
> > +DESCRIPTION = "Sample application for ISAR"
> > +MAINTAINER = "Your name here <you@domain.com>"
> > +
> > +SRC_URI = ""
> > +
> > +inherit dpkg-raw
> > +
> > +# we provide a deb under another name
> > +do_prepare_build_append() {
> > +  sed -i 's/example-prebuilt-dummy/example-prebuilt/g'
> > ${S}/debian/* +}
> > diff --git
> > a/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
> > b/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
> > new file mode 100644 index 0000000000..4f224a48ec --- /dev/null
> > +++ b/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
> > @@ -0,0 +1,23 @@
> > +# Sample recipe to include a prebuilt deb archive into an isar
> > build +#
> > +# This software is a part of ISAR.
> > +
> > +## hacks for the sake of the example
> > +DEPENDS += "${PN}-dummy"
> > +do_fetch[depends] += "${PN}-dummy:do_deploy_deb"
> > +do_fetch[file-checksums] = ""
> > +FILESPATH_prepend :=
> > "${REPO_ISAR_DIR}/${DISTRO}/pool/main/e/${PN}/:"  
> 
> I think my approach is clearer /wrt not having the need for this here
> - and the companion package.

Agreed, this includes some "magic" that might be hard to maintain. And
that requires the comments of what it "real" and what is "hack"

Was just looking for a way to come up with a deb that will always be
there, without providing a bad example of how such a deb could become
available.

> > +
> > +## start of real example, the below is relevant
> > +
> > +# note the unpack=false
> > +SRC_URI = "file://${PN}_${PV}_${DISTRO_ARCH}.deb;unpack=false"
> > +
> > +inherit dpkg-base
> > +
> > +# in case you have multiple debs or PN does not match
> > +#PROVIDES="foobar blabla"
> > +
> > +do_dpkg_build() {
> > +  bbnote "Not building a package"
> > +}
> >   
> 
> Otherwise, we are on the same page I think. Yours is more verbose in
> several places.

Let us discuss how to improve your approach and NOT MERGE THIS, yes RFC
... REJECT ...

Henning

> Jan
>

Patch

diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample
index 107496c163..cc0b5c66bb 100644
--- a/meta-isar/conf/local.conf.sample
+++ b/meta-isar/conf/local.conf.sample
@@ -172,7 +172,7 @@  CONF_VERSION = "1"
 
 #
 # The default list of extra packages to be installed.
-IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsck isar-exclude-docs samefile hello isar-disable-apt-cache cowsay"
+IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsck isar-exclude-docs samefile hello isar-disable-apt-cache cowsay example-prebuilt"
 
 #
 # Enable cross-compilation support
diff --git a/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb b/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
new file mode 100644
index 0000000000..92273dc886
--- /dev/null
+++ b/meta-isar/recipes-app/example-prebuilt-dummy/example-prebuilt-dummy_0.1.bb
@@ -0,0 +1,15 @@ 
+# Sample recipe to create a dummy package used for example-prebuilt
+#
+# This software is a part of ISAR.
+
+DESCRIPTION = "Sample application for ISAR"
+MAINTAINER = "Your name here <you@domain.com>"
+
+SRC_URI = ""
+
+inherit dpkg-raw
+
+# we provide a deb under another name
+do_prepare_build_append() {
+  sed -i 's/example-prebuilt-dummy/example-prebuilt/g' ${S}/debian/* 
+}
diff --git a/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb b/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
new file mode 100644
index 0000000000..4f224a48ec
--- /dev/null
+++ b/meta-isar/recipes-app/example-prebuilt/example-prebuilt_0.1.bb
@@ -0,0 +1,23 @@ 
+# Sample recipe to include a prebuilt deb archive into an isar build
+#
+# This software is a part of ISAR.
+
+## hacks for the sake of the example
+DEPENDS += "${PN}-dummy"
+do_fetch[depends] += "${PN}-dummy:do_deploy_deb"
+do_fetch[file-checksums] = ""
+FILESPATH_prepend := "${REPO_ISAR_DIR}/${DISTRO}/pool/main/e/${PN}/:"
+
+## start of real example, the below is relevant
+
+# note the unpack=false
+SRC_URI = "file://${PN}_${PV}_${DISTRO_ARCH}.deb;unpack=false"
+
+inherit dpkg-base
+
+# in case you have multiple debs or PN does not match
+#PROVIDES="foobar blabla"
+
+do_dpkg_build() {
+  bbnote "Not building a package"
+}