public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
* [PATCH] rootfs: Make rootfs_postprocess_finalize the last step
@ 2020-02-06 14:06 Vijai Kumar K
  2020-02-06 17:21 ` Jan Kiszka
  0 siblings, 1 reply; 52+ messages in thread
From: Vijai Kumar K @ 2020-02-06 14:06 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

Sometimes the additional postprocessing functions we add as
part our custom image needs a proper chroot environment.

Implicitly make rootfs_postprocess_finalize as the last step
to be executed in rootfs_postprocess task.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
 meta/classes/rootfs.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 64eaef7..b0394d5 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -197,7 +197,7 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
-ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}"
+ROOTFS_POSTPROCESS_COMMAND_append = "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', ' rootfs_postprocess_finalize', '', d)}"
 rootfs_postprocess_finalize() {
     sudo -s <<'EOSUDO'
         test -e "${ROOTFSDIR}/chroot-setup.sh" && \
-- 
2.17.1


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

* Re: [PATCH] rootfs: Make rootfs_postprocess_finalize the last step
  2020-02-06 14:06 [PATCH] rootfs: Make rootfs_postprocess_finalize the last step Vijai Kumar K
@ 2020-02-06 17:21 ` Jan Kiszka
  2020-02-06 17:47   ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-02-06 17:21 UTC (permalink / raw)
  To: Vijai Kumar K, isar-users; +Cc: Vijai Kumar K

On 06.02.20 15:06, Vijai Kumar K wrote:
> Sometimes the additional postprocessing functions we add as
> part our custom image needs a proper chroot environment.

When exactly?

> 
> Implicitly make rootfs_postprocess_finalize as the last step
> to be executed in rootfs_postprocess task.
> 

Well, that relies on no one else using _append to add things. Otherwise,
the race is open again...

Jan

> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> ---
>  meta/classes/rootfs.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> index 64eaef7..b0394d5 100644
> --- a/meta/classes/rootfs.bbclass
> +++ b/meta/classes/rootfs.bbclass
> @@ -197,7 +197,7 @@ rootfs_generate_manifest () {
>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>  }
>  
> -ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}"
> +ROOTFS_POSTPROCESS_COMMAND_append = "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', ' rootfs_postprocess_finalize', '', d)}"
>  rootfs_postprocess_finalize() {
>      sudo -s <<'EOSUDO'
>          test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> 

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH] rootfs: Make rootfs_postprocess_finalize the last step
  2020-02-06 17:21 ` Jan Kiszka
@ 2020-02-06 17:47   ` vijai kumar
  2020-02-06 18:09     ` Jan Kiszka
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-02-06 17:47 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 2389 bytes --]



On Thursday, February 6, 2020 at 10:51:22 PM UTC+5:30, Jan Kiszka wrote:
>
> On 06.02.20 15:06, Vijai Kumar K wrote: 
> > Sometimes the additional postprocessing functions we add as 
> > part our custom image needs a proper chroot environment. 
>
> When exactly? 
>


Though not finalized, the base-apt source gathering which I proposed to do 
via rootfs postprocess.
That is the only one right now. But I believe more similar might come. We 
already
have some post-process in our QA layer to pull out the dpkg status file for 
processing.
But that doesn't need chroot.

 

>
> > 
> > Implicitly make rootfs_postprocess_finalize as the last step 
> > to be executed in rootfs_postprocess task. 
> > 
>
> Well, that relies on no one else using _append to add things. Otherwise, 
> the race is open again... 
>
>
Yes. Also to note, there was this proposal from Baurzhan[1] to remove 
finalize from rootfs features.
We could do something similar if no one actually uses that feature 
explicitly. But, though not tested,
I believe that might break buildchroot, and we might need to take care of 
it in buildchroot's post-process.
If everyone agrees then we could take that path. That should be cleaner and 
should avoid these kinds of
easy to make errs. 

[1] https://groups.google.com/d/msg/isar-users/_RLBzyvvZvM/WuYpLPVBAQAJ

Thanks,
Vijai Kumar K

Jan 
>
> > Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com <javascript:>> 
> > --- 
> >  meta/classes/rootfs.bbclass | 2 +- 
> >  1 file changed, 1 insertion(+), 1 deletion(-) 
> > 
> > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass 
> > index 64eaef7..b0394d5 100644 
> > --- a/meta/classes/rootfs.bbclass 
> > +++ b/meta/classes/rootfs.bbclass 
> > @@ -197,7 +197,7 @@ rootfs_generate_manifest () { 
> >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest 
> >  } 
> >   
> > -ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 
> 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}" 
> > +ROOTFS_POSTPROCESS_COMMAND_append = 
> "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', ' 
> rootfs_postprocess_finalize', '', d)}" 
> >  rootfs_postprocess_finalize() { 
> >      sudo -s <<'EOSUDO' 
> >          test -e "${ROOTFSDIR}/chroot-setup.sh" && \ 
> > 
>
> -- 
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE 
> Corporate Competence Center Embedded Linux 
>

[-- Attachment #1.2: Type: text/html, Size: 3570 bytes --]

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

* Re: [PATCH] rootfs: Make rootfs_postprocess_finalize the last step
  2020-02-06 17:47   ` vijai kumar
@ 2020-02-06 18:09     ` Jan Kiszka
  2020-02-06 18:28       ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-02-06 18:09 UTC (permalink / raw)
  To: vijai kumar, isar-users

On 06.02.20 18:47, vijai kumar wrote:
> 
> 
> On Thursday, February 6, 2020 at 10:51:22 PM UTC+5:30, Jan Kiszka wrote:
> 
>     On 06.02.20 15:06, Vijai Kumar K wrote:
>     > Sometimes the additional postprocessing functions we add as
>     > part our custom image needs a proper chroot environment.
> 
>     When exactly?
> 
> 
> 
> Though not finalized, the base-apt source gathering which I proposed to
> do via rootfs postprocess.
> That is the only one right now. But I believe more similar might come.
> We already
> have some post-process in our QA layer to pull out the dpkg status file
> for processing.
> But that doesn't need chroot.
> 

Absolutely fine, just make sure to describe use cases when arguing about
the "why" of a commit (which is what the commit log is about).

>  
> 
> 
>     >
>     > Implicitly make rootfs_postprocess_finalize as the last step
>     > to be executed in rootfs_postprocess task.
>     >
> 
>     Well, that relies on no one else using _append to add things.
>     Otherwise,
>     the race is open again...
> 
> 
> Yes. Also to note, there was this proposal from Baurzhan[1] to remove
> finalize from rootfs features.
> We could do something similar if no one actually uses that feature
> explicitly. But, though not tested,
> I believe that might break buildchroot, and we might need to take care
> of it in buildchroot's post-process.
> If everyone agrees then we could take that path. That should be cleaner
> and should avoid these kinds of
> easy to make errs. 
> 
> [1] https://groups.google.com/d/msg/isar-users/_RLBzyvvZvM/WuYpLPVBAQAJ
> 

Second voice. Seems like we should do it then, model the finalization
without ROOTFS_POSTPROCESS_COMMAND.

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH] rootfs: Make rootfs_postprocess_finalize the last step
  2020-02-06 18:09     ` Jan Kiszka
@ 2020-02-06 18:28       ` vijai kumar
  2020-02-10  5:37         ` [PATCH v2] rootfs: Make rootfs finalize a separate task Vijai Kumar K
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-02-06 18:28 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 2184 bytes --]



On Thursday, February 6, 2020 at 11:39:20 PM UTC+5:30, Jan Kiszka wrote:
>
> On 06.02.20 18:47, vijai kumar wrote: 
> > 
> > 
> > On Thursday, February 6, 2020 at 10:51:22 PM UTC+5:30, Jan Kiszka wrote: 
> > 
> >     On 06.02.20 15:06, Vijai Kumar K wrote: 
> >     > Sometimes the additional postprocessing functions we add as 
> >     > part our custom image needs a proper chroot environment. 
> > 
> >     When exactly? 
> > 
> > 
> > 
> > Though not finalized, the base-apt source gathering which I proposed to 
> > do via rootfs postprocess. 
> > That is the only one right now. But I believe more similar might come. 
> > We already 
> > have some post-process in our QA layer to pull out the dpkg status file 
> > for processing. 
> > But that doesn't need chroot. 
> > 
>
> Absolutely fine, just make sure to describe use cases when arguing about 
> the "why" of a commit (which is what the commit log is about). 
>

Sure. I agree that the 'Sometimes' is pretty vague.  Sorry, Will take care 
of that.

>   
> > 
> > 
> >     > 
> >     > Implicitly make rootfs_postprocess_finalize as the last step 
> >     > to be executed in rootfs_postprocess task. 
> >     > 
> > 
> >     Well, that relies on no one else using _append to add things. 
> >     Otherwise, 
> >     the race is open again... 
> > 
> > 
> > Yes. Also to note, there was this proposal from Baurzhan[1] to remove 
> > finalize from rootfs features. 
> > We could do something similar if no one actually uses that feature 
> > explicitly. But, though not tested, 
> > I believe that might break buildchroot, and we might need to take care 
> > of it in buildchroot's post-process. 
> > If everyone agrees then we could take that path. That should be cleaner 
> > and should avoid these kinds of 
> > easy to make errs.  
> > 
> > [1] https://groups.google.com/d/msg/isar-users/_RLBzyvvZvM/WuYpLPVBAQAJ 
> > 
>
> Second voice. Seems like we should do it then, model the finalization 
> without ROOTFS_POSTPROCESS_COMMAND. 
>
>
Sure. I will start working on that.

Thanks,
Vijai Kumar K
 

> Jan 
>
> -- 
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE 
> Corporate Competence Center Embedded Linux 
>

[-- Attachment #1.2: Type: text/html, Size: 3391 bytes --]

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

* [PATCH v2] rootfs: Make rootfs finalize a separate task
  2020-02-06 18:28       ` vijai kumar
@ 2020-02-10  5:37         ` Vijai Kumar K
  2020-02-11 11:38           ` Henning Schild
  0 siblings, 1 reply; 52+ messages in thread
From: Vijai Kumar K @ 2020-02-10  5:37 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

With the current implementation it is difficult to append a
postprocess function which requires a chroot environment.
For example, to add a postprocess function which runs apt-get to
download all source of packages installed in the target.

rootfs_postprocess_finalize is not actually an optional feature
but instead a necessary cleanup function for image class.
So, move the implementation to image class and make it as a task.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---

Changes in v2:
 - The solution is changed to remove rootfs_finalize from
   ROOTFS_POSTPROCESS_COMMAND.

 meta/classes/image.bbclass  | 41 ++++++++++++++++++++++++++++++++++++-
 meta/classes/rootfs.bbclass | 39 -----------------------------------
 2 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 725bc04..98338ac 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -60,7 +60,7 @@ image_do_mounts() {
 }
 
 ROOTFSDIR = "${IMAGE_ROOTFS}"
-ROOTFS_FEATURES += "copy-package-cache clean-package-cache finalize-rootfs generate-manifest"
+ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 
@@ -169,5 +169,44 @@ python do_deploy() {
 }
 addtask deploy before do_build after do_image
 
+do_rootfs_finalize() {
+    sudo -s <<'EOSUDO'
+        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
+            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
+        rm -f "${ROOTFSDIR}/chroot-setup.sh"
+
+        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
+            find "${ROOTFSDIR}/usr/bin" \
+                -maxdepth 1 -name 'qemu-*-static' -type f -delete
+
+        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
+            umount -l ${ROOTFSDIR}/isar-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
+
+        mountpoint -q '${ROOTFSDIR}/base-apt' && \
+            umount -l ${ROOTFSDIR}/base-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
+
+        mountpoint -q '${ROOTFSDIR}/dev' && \
+            umount -l ${ROOTFSDIR}/dev
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/proc
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/sys
+
+        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
+        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
+
+        mv "${ROOTFSDIR}/etc/apt/sources-list" \
+            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
+EOSUDO
+}
+addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess
+
 # Last so that the image type can overwrite tasks if needed
 inherit ${IMAGE_TYPE}
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 64eaef7..153038a 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -197,45 +197,6 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
-ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}"
-rootfs_postprocess_finalize() {
-    sudo -s <<'EOSUDO'
-        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
-            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
-        rm -f "${ROOTFSDIR}/chroot-setup.sh"
-
-        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
-            find "${ROOTFSDIR}/usr/bin" \
-                -maxdepth 1 -name 'qemu-*-static' -type f -delete
-
-        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
-            umount -l ${ROOTFSDIR}/isar-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
-
-        mountpoint -q '${ROOTFSDIR}/base-apt' && \
-            umount -l ${ROOTFSDIR}/base-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
-
-        mountpoint -q '${ROOTFSDIR}/dev' && \
-            umount -l ${ROOTFSDIR}/dev
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/proc
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/sys
-
-        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
-        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
-
-        mv "${ROOTFSDIR}/etc/apt/sources-list" \
-            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
-EOSUDO
-}
-
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
 python do_rootfs_postprocess() {
     # Take care that its correctly mounted:
-- 
2.17.1


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

* Re: [PATCH v2] rootfs: Make rootfs finalize a separate task
  2020-02-10  5:37         ` [PATCH v2] rootfs: Make rootfs finalize a separate task Vijai Kumar K
@ 2020-02-11 11:38           ` Henning Schild
  2020-02-11 14:14             ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Henning Schild @ 2020-02-11 11:38 UTC (permalink / raw)
  To: Vijai Kumar K; +Cc: isar-users, Vijai Kumar K

This patch will allow you to keep your apt downloading feature
downstream for yourself. I would say - propose it again together with
the feature.

In fact if the feature was in Isar the whole problem would go away,
unless you have more postprocess functions.

We discussed postprocessing a couple of times, it is really bad style
and enabling it as a feature that is easy to use we provoke downstream
layers making mistakes by implementing their stuff as such postprocess
functions.

Henning

On Mon, 10 Feb 2020 11:07:53 +0530
Vijai Kumar K <vijaikumar.kanagarajan@gmail.com> wrote:

> With the current implementation it is difficult to append a
> postprocess function which requires a chroot environment.
> For example, to add a postprocess function which runs apt-get to
> download all source of packages installed in the target.
> 
> rootfs_postprocess_finalize is not actually an optional feature
> but instead a necessary cleanup function for image class.
> So, move the implementation to image class and make it as a task.
> 
> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> ---
> 
> Changes in v2:
>  - The solution is changed to remove rootfs_finalize from
>    ROOTFS_POSTPROCESS_COMMAND.
> 
>  meta/classes/image.bbclass  | 41
> ++++++++++++++++++++++++++++++++++++- meta/classes/rootfs.bbclass |
> 39 ----------------------------------- 2 files changed, 40
> insertions(+), 40 deletions(-)
> 
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index 725bc04..98338ac 100644
> --- a/meta/classes/image.bbclass
> +++ b/meta/classes/image.bbclass
> @@ -60,7 +60,7 @@ image_do_mounts() {
>  }
>  
>  ROOTFSDIR = "${IMAGE_ROOTFS}"
> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache
> finalize-rootfs generate-manifest" +ROOTFS_FEATURES +=
> "copy-package-cache clean-package-cache generate-manifest"
> ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" 
> @@ -169,5 +169,44 @@ python do_deploy() {
>  }
>  addtask deploy before do_build after do_image
>  
> +do_rootfs_finalize() {
> +    sudo -s <<'EOSUDO'
> +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
> +        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> +
> +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
> +            find "${ROOTFSDIR}/usr/bin" \
> +                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> +
> +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> +            umount -l ${ROOTFSDIR}/isar-apt
> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> +
> +        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> +            umount -l ${ROOTFSDIR}/base-apt
> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> +
> +        mountpoint -q '${ROOTFSDIR}/dev' && \
> +            umount -l ${ROOTFSDIR}/dev
> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> +            umount -l ${ROOTFSDIR}/proc
> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> +            umount -l ${ROOTFSDIR}/sys
> +
> +        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
> +
> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> +
> +        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> +
> +        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> +EOSUDO
> +}
> +addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess
> +
>  # Last so that the image type can overwrite tasks if needed
>  inherit ${IMAGE_TYPE}
> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> index 64eaef7..153038a 100644
> --- a/meta/classes/rootfs.bbclass
> +++ b/meta/classes/rootfs.bbclass
> @@ -197,45 +197,6 @@ rootfs_generate_manifest () {
>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>  }
>  
> -ROOTFS_POSTPROCESS_COMMAND +=
> "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs',
> 'rootfs_postprocess_finalize', '', d)}"
> -rootfs_postprocess_finalize() {
> -    sudo -s <<'EOSUDO'
> -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
> -        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> -
> -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
> -            find "${ROOTFSDIR}/usr/bin" \
> -                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> -
> -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> -            umount -l ${ROOTFSDIR}/isar-apt
> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> -
> -        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> -            umount -l ${ROOTFSDIR}/base-apt
> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> -
> -        mountpoint -q '${ROOTFSDIR}/dev' && \
> -            umount -l ${ROOTFSDIR}/dev
> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> -            umount -l ${ROOTFSDIR}/proc
> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> -            umount -l ${ROOTFSDIR}/sys
> -
> -        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
> -
> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> -
> -        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> -
> -        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> -EOSUDO
> -}
> -
>  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
>  python do_rootfs_postprocess() {
>      # Take care that its correctly mounted:


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

* Re: [PATCH v2] rootfs: Make rootfs finalize a separate task
  2020-02-11 11:38           ` Henning Schild
@ 2020-02-11 14:14             ` vijai kumar
  2020-02-11 15:20               ` Henning Schild
  2020-02-11 18:07               ` Jan Kiszka
  0 siblings, 2 replies; 52+ messages in thread
From: vijai kumar @ 2020-02-11 14:14 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 7101 bytes --]



On Tuesday, February 11, 2020 at 5:08:43 PM UTC+5:30, Henning Schild wrote:
>
> This patch will allow you to keep your apt downloading feature 
> downstream for yourself. I would say - propose it again together with 
> the feature. 
>

I can push that feature if it is needed upstream, which I doubt, since I
don't vision an upstream use-case where-in one would need to
download all the sources.

Also, It would need your base-apt series.
  

>
> In fact if the feature was in Isar the whole problem would go away, 
> unless you have more postprocess functions. 
>

Yes. We have one per se for our QA layer. To export dpkg status file to
deploy directory. This will be used by debsecan.


> We discussed postprocessing a couple of times, it is really bad style 
> and enabling it as a feature that is easy to use we provoke downstream 
> layers making mistakes by implementing their stuff as such postprocess 
> functions. 
>

I see the ability to add custom post-processing as a useful feature.
Not sure if anyone actually uses them in their downstream layers. It is
good to have if you know what you are doing.

As long as this provision is there, people would use it. If we feel that 
this
provision is unnecessary and would lead to issues, well, we could go
ahead and remove it.

Thanks,
Vijai Kumar K


Henning 
>
> On Mon, 10 Feb 2020 11:07:53 +0530 
> Vijai Kumar K <vijaikumar...@gmail.com <javascript:>> wrote: 
>
> > With the current implementation it is difficult to append a 
> > postprocess function which requires a chroot environment. 
> > For example, to add a postprocess function which runs apt-get to 
> > download all source of packages installed in the target. 
> > 
> > rootfs_postprocess_finalize is not actually an optional feature 
> > but instead a necessary cleanup function for image class. 
> > So, move the implementation to image class and make it as a task. 
> > 
> > Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com <javascript:>> 
> > --- 
> > 
> > Changes in v2: 
> >  - The solution is changed to remove rootfs_finalize from 
> >    ROOTFS_POSTPROCESS_COMMAND. 
> > 
> >  meta/classes/image.bbclass  | 41 
> > ++++++++++++++++++++++++++++++++++++- meta/classes/rootfs.bbclass | 
> > 39 ----------------------------------- 2 files changed, 40 
> > insertions(+), 40 deletions(-) 
> > 
> > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass 
> > index 725bc04..98338ac 100644 
> > --- a/meta/classes/image.bbclass 
> > +++ b/meta/classes/image.bbclass 
> > @@ -60,7 +60,7 @@ image_do_mounts() { 
> >  } 
> >   
> >  ROOTFSDIR = "${IMAGE_ROOTFS}" 
> > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
> > finalize-rootfs generate-manifest" +ROOTFS_FEATURES += 
> > "copy-package-cache clean-package-cache generate-manifest" 
> > ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" 
> > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" 
> > @@ -169,5 +169,44 @@ python do_deploy() { 
> >  } 
> >  addtask deploy before do_build after do_image 
> >   
> > +do_rootfs_finalize() { 
> > +    sudo -s <<'EOSUDO' 
> > +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \ 
> > +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}" 
> > +        rm -f "${ROOTFSDIR}/chroot-setup.sh" 
> > + 
> > +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \ 
> > +            find "${ROOTFSDIR}/usr/bin" \ 
> > +                -maxdepth 1 -name 'qemu-*-static' -type f -delete 
> > + 
> > +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \ 
> > +            umount -l ${ROOTFSDIR}/isar-apt 
> > +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt 
> > + 
> > +        mountpoint -q '${ROOTFSDIR}/base-apt' && \ 
> > +            umount -l ${ROOTFSDIR}/base-apt 
> > +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt 
> > + 
> > +        mountpoint -q '${ROOTFSDIR}/dev' && \ 
> > +            umount -l ${ROOTFSDIR}/dev 
> > +        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > +            umount -l ${ROOTFSDIR}/proc 
> > +        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > +            umount -l ${ROOTFSDIR}/sys 
> > + 
> > +        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" 
> > + 
> > +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list" 
> > +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt" 
> > +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list" 
> > + 
> > +        mv "${ROOTFSDIR}/etc/apt/sources-list" \ 
> > +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list" 
> > + 
> > +        rm -f "${ROOTFSDIR}/etc/apt/sources-list" 
> > +EOSUDO 
> > +} 
> > +addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess 
> > + 
> >  # Last so that the image type can overwrite tasks if needed 
> >  inherit ${IMAGE_TYPE} 
> > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass 
> > index 64eaef7..153038a 100644 
> > --- a/meta/classes/rootfs.bbclass 
> > +++ b/meta/classes/rootfs.bbclass 
> > @@ -197,45 +197,6 @@ rootfs_generate_manifest () { 
> >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest 
> >  } 
> >   
> > -ROOTFS_POSTPROCESS_COMMAND += 
> > "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 
> > 'rootfs_postprocess_finalize', '', d)}" 
> > -rootfs_postprocess_finalize() { 
> > -    sudo -s <<'EOSUDO' 
> > -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \ 
> > -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}" 
> > -        rm -f "${ROOTFSDIR}/chroot-setup.sh" 
> > - 
> > -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \ 
> > -            find "${ROOTFSDIR}/usr/bin" \ 
> > -                -maxdepth 1 -name 'qemu-*-static' -type f -delete 
> > - 
> > -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \ 
> > -            umount -l ${ROOTFSDIR}/isar-apt 
> > -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt 
> > - 
> > -        mountpoint -q '${ROOTFSDIR}/base-apt' && \ 
> > -            umount -l ${ROOTFSDIR}/base-apt 
> > -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt 
> > - 
> > -        mountpoint -q '${ROOTFSDIR}/dev' && \ 
> > -            umount -l ${ROOTFSDIR}/dev 
> > -        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > -            umount -l ${ROOTFSDIR}/proc 
> > -        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > -            umount -l ${ROOTFSDIR}/sys 
> > - 
> > -        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" 
> > - 
> > -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list" 
> > -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt" 
> > -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list" 
> > - 
> > -        mv "${ROOTFSDIR}/etc/apt/sources-list" \ 
> > -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list" 
> > - 
> > -        rm -f "${ROOTFSDIR}/etc/apt/sources-list" 
> > -EOSUDO 
> > -} 
> > - 
> >  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}" 
> >  python do_rootfs_postprocess() { 
> >      # Take care that its correctly mounted: 
>
>

[-- Attachment #1.2: Type: text/html, Size: 10059 bytes --]

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

* Re: [PATCH v2] rootfs: Make rootfs finalize a separate task
  2020-02-11 14:14             ` vijai kumar
@ 2020-02-11 15:20               ` Henning Schild
  2020-02-11 18:07               ` Jan Kiszka
  1 sibling, 0 replies; 52+ messages in thread
From: Henning Schild @ 2020-02-11 15:20 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users

On Tue, 11 Feb 2020 06:14:25 -0800
vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:

> On Tuesday, February 11, 2020 at 5:08:43 PM UTC+5:30, Henning Schild
> wrote:
> >
> > This patch will allow you to keep your apt downloading feature 
> > downstream for yourself. I would say - propose it again together
> > with the feature. 
> >  
> 
> I can push that feature if it is needed upstream, which I doubt,
> since I don't vision an upstream use-case where-in one would need to
> download all the sources.

The motivation is exactly yours, building a serious product, with an
eye on possibly maintaining packages longer than upstream and OSS
license clearing.

> Also, It would need your base-apt series.

Even better, that needs attention ;).

> >
> > In fact if the feature was in Isar the whole problem would go away, 
> > unless you have more postprocess functions. 
> >  
> 
> Yes. We have one per se for our QA layer. To export dpkg status file
> to deploy directory. This will be used by debsecan.
> 
> 
> > We discussed postprocessing a couple of times, it is really bad
> > style and enabling it as a feature that is easy to use we provoke
> > downstream layers making mistakes by implementing their stuff as
> > such postprocess functions. 
> >  
> 
> I see the ability to add custom post-processing as a useful feature.
> Not sure if anyone actually uses them in their downstream layers. It
> is good to have if you know what you are doing.

I have seen some downstream layers where clearly not everyone knows
what they are doing.

> As long as this provision is there, people would use it. If we feel
> that this
> provision is unnecessary and would lead to issues, well, we could go
> ahead and remove it.

Removing it later on would break downstream layers. So it is easy and
risky to add it, and hard to remove it again.

Henning

> Thanks,
> Vijai Kumar K
> 
> 
> Henning 
> >
> > On Mon, 10 Feb 2020 11:07:53 +0530 
> > Vijai Kumar K <vijaikumar...@gmail.com <javascript:>> wrote: 
> >  
> > > With the current implementation it is difficult to append a 
> > > postprocess function which requires a chroot environment. 
> > > For example, to add a postprocess function which runs apt-get to 
> > > download all source of packages installed in the target. 
> > > 
> > > rootfs_postprocess_finalize is not actually an optional feature 
> > > but instead a necessary cleanup function for image class. 
> > > So, move the implementation to image class and make it as a task. 
> > > 
> > > Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com
> > > <javascript:>> --- 
> > > 
> > > Changes in v2: 
> > >  - The solution is changed to remove rootfs_finalize from 
> > >    ROOTFS_POSTPROCESS_COMMAND. 
> > > 
> > >  meta/classes/image.bbclass  | 41 
> > > ++++++++++++++++++++++++++++++++++++- meta/classes/rootfs.bbclass
> > > | 39 ----------------------------------- 2 files changed, 40 
> > > insertions(+), 40 deletions(-) 
> > > 
> > > diff --git a/meta/classes/image.bbclass
> > > b/meta/classes/image.bbclass index 725bc04..98338ac 100644 
> > > --- a/meta/classes/image.bbclass 
> > > +++ b/meta/classes/image.bbclass 
> > > @@ -60,7 +60,7 @@ image_do_mounts() { 
> > >  } 
> > >   
> > >  ROOTFSDIR = "${IMAGE_ROOTFS}" 
> > > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
> > > finalize-rootfs generate-manifest" +ROOTFS_FEATURES += 
> > > "copy-package-cache clean-package-cache generate-manifest" 
> > > ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" 
> > > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" 
> > > @@ -169,5 +169,44 @@ python do_deploy() { 
> > >  } 
> > >  addtask deploy before do_build after do_image 
> > >   
> > > +do_rootfs_finalize() { 
> > > +    sudo -s <<'EOSUDO' 
> > > +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \ 
> > > +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> > > "${ROOTFSDIR}" 
> > > +        rm -f "${ROOTFSDIR}/chroot-setup.sh" 
> > > + 
> > > +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> > > && \ 
> > > +            find "${ROOTFSDIR}/usr/bin" \ 
> > > +                -maxdepth 1 -name 'qemu-*-static' -type f
> > > -delete 
> > > + 
> > > +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \ 
> > > +            umount -l ${ROOTFSDIR}/isar-apt 
> > > +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt 
> > > + 
> > > +        mountpoint -q '${ROOTFSDIR}/base-apt' && \ 
> > > +            umount -l ${ROOTFSDIR}/base-apt 
> > > +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt 
> > > + 
> > > +        mountpoint -q '${ROOTFSDIR}/dev' && \ 
> > > +            umount -l ${ROOTFSDIR}/dev 
> > > +        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > > +            umount -l ${ROOTFSDIR}/proc 
> > > +        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > > +            umount -l ${ROOTFSDIR}/sys 
> > > + 
> > > +        rm -f
> > > "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" 
> > > + 
> > > +        rm -f
> > > "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list" 
> > > +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt" 
> > > +        rm -f
> > > "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list" 
> > > + 
> > > +        mv "${ROOTFSDIR}/etc/apt/sources-list" \ 
> > > +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list" 
> > > + 
> > > +        rm -f "${ROOTFSDIR}/etc/apt/sources-list" 
> > > +EOSUDO 
> > > +} 
> > > +addtask rootfs_finalize before do_rootfs after
> > > do_rootfs_postprocess 
> > > + 
> > >  # Last so that the image type can overwrite tasks if needed 
> > >  inherit ${IMAGE_TYPE} 
> > > diff --git a/meta/classes/rootfs.bbclass
> > > b/meta/classes/rootfs.bbclass index 64eaef7..153038a 100644 
> > > --- a/meta/classes/rootfs.bbclass 
> > > +++ b/meta/classes/rootfs.bbclass 
> > > @@ -197,45 +197,6 @@ rootfs_generate_manifest () { 
> > >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest 
> > >  } 
> > >   
> > > -ROOTFS_POSTPROCESS_COMMAND += 
> > > "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 
> > > 'rootfs_postprocess_finalize', '', d)}" 
> > > -rootfs_postprocess_finalize() { 
> > > -    sudo -s <<'EOSUDO' 
> > > -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \ 
> > > -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> > > "${ROOTFSDIR}" 
> > > -        rm -f "${ROOTFSDIR}/chroot-setup.sh" 
> > > - 
> > > -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> > > && \ 
> > > -            find "${ROOTFSDIR}/usr/bin" \ 
> > > -                -maxdepth 1 -name 'qemu-*-static' -type f
> > > -delete 
> > > - 
> > > -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \ 
> > > -            umount -l ${ROOTFSDIR}/isar-apt 
> > > -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt 
> > > - 
> > > -        mountpoint -q '${ROOTFSDIR}/base-apt' && \ 
> > > -            umount -l ${ROOTFSDIR}/base-apt 
> > > -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt 
> > > - 
> > > -        mountpoint -q '${ROOTFSDIR}/dev' && \ 
> > > -            umount -l ${ROOTFSDIR}/dev 
> > > -        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > > -            umount -l ${ROOTFSDIR}/proc 
> > > -        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> > > -            umount -l ${ROOTFSDIR}/sys 
> > > - 
> > > -        rm -f
> > > "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" 
> > > - 
> > > -        rm -f
> > > "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list" 
> > > -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt" 
> > > -        rm -f
> > > "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list" 
> > > - 
> > > -        mv "${ROOTFSDIR}/etc/apt/sources-list" \ 
> > > -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list" 
> > > - 
> > > -        rm -f "${ROOTFSDIR}/etc/apt/sources-list" 
> > > -EOSUDO 
> > > -} 
> > > - 
> > >  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}" 
> > >  python do_rootfs_postprocess() { 
> > >      # Take care that its correctly mounted:   
> >
> >  
> 


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

* Re: [PATCH v2] rootfs: Make rootfs finalize a separate task
  2020-02-11 14:14             ` vijai kumar
  2020-02-11 15:20               ` Henning Schild
@ 2020-02-11 18:07               ` Jan Kiszka
  2020-02-13 10:08                 ` [PATCH v2 1/2] " Vijai Kumar K
  1 sibling, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-02-11 18:07 UTC (permalink / raw)
  To: vijai kumar, isar-users

On 11.02.20 15:14, vijai kumar wrote:
> 
> 
> On Tuesday, February 11, 2020 at 5:08:43 PM UTC+5:30, Henning Schild wrote:
> 
>     This patch will allow you to keep your apt downloading feature
>     downstream for yourself. I would say - propose it again together with
>     the feature.
> 
> 
> I can push that feature if it is needed upstream, which I doubt, since I
> don't vision an upstream use-case where-in one would need to
> download all the sources.

Providing an "all sources for my target" target is surely an upstream topic.

> 
> Also, It would need your base-apt series.
> 
> 
>     In fact if the feature was in Isar the whole problem would go away,
>     unless you have more postprocess functions.
> 
> 
> Yes. We have one per se for our QA layer. To export dpkg status file to
> deploy directory. This will be used by debsecan.
> 
> 
>     We discussed postprocessing a couple of times, it is really bad style
>     and enabling it as a feature that is easy to use we provoke downstream
>     layers making mistakes by implementing their stuff as such postprocess
>     functions.
> 
> 
> I see the ability to add custom post-processing as a useful feature.
> Not sure if anyone actually uses them in their downstream layers. It is
> good to have if you know what you are doing.
> 
> As long as this provision is there, people would use it. If we feel that 
> this
> provision is unnecessary and would lead to issues, well, we could go
> ahead and remove it.

Even if that hooking mechanism is a two-sided sword, there is already 
inside Isar value in defining a clean environment for the hooks and 
ensuring that this contains all mounts until the last hook is done. So, 
this patch can only be seen as the messenger, not to be shot for 
downstream misuse of the overall feature.

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* [PATCH v2 1/2] rootfs: Make rootfs finalize a separate task
  2020-02-11 18:07               ` Jan Kiszka
@ 2020-02-13 10:08                 ` Vijai Kumar K
  2020-02-13 10:08                   ` [PATCH v2 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
  0 siblings, 1 reply; 52+ messages in thread
From: Vijai Kumar K @ 2020-02-13 10:08 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

With the current implementation it is difficult to append a
postprocess function which requires a chroot environment.
For example, to add a postprocess function which runs apt-get to
download all source of packages installed in the target.

rootfs_postprocess_finalize is not actually an optional feature
but instead a necessary cleanup function for image class.
So, move the implementation to image class and make it as a task.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
Changes in v2:
 - Introduced additional patch to cache deb src
 - Rebased on top of henning/staging4 tree

The git tree is available here.

https://github.com/vj-kumar/isar/tree/henning/staging4

 meta/classes/image.bbclass  | 41 ++++++++++++++++++++++++++++++++++++-
 meta/classes/rootfs.bbclass | 39 -----------------------------------
 2 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index cfd617a..c5fddba 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -60,7 +60,7 @@ image_do_mounts() {
 }
 
 ROOTFSDIR = "${IMAGE_ROOTFS}"
-ROOTFS_FEATURES += "clean-package-cache finalize-rootfs generate-manifest"
+ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 
@@ -168,5 +168,44 @@ python do_deploy() {
 }
 addtask deploy before do_build after do_image
 
+do_rootfs_finalize() {
+    sudo -s <<'EOSUDO'
+        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
+            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
+        rm -f "${ROOTFSDIR}/chroot-setup.sh"
+
+        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
+            find "${ROOTFSDIR}/usr/bin" \
+                -maxdepth 1 -name 'qemu-*-static' -type f -delete
+
+        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
+            umount -l ${ROOTFSDIR}/isar-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
+
+        mountpoint -q '${ROOTFSDIR}/base-apt' && \
+            umount -l ${ROOTFSDIR}/base-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
+
+        mountpoint -q '${ROOTFSDIR}/dev' && \
+            umount -l ${ROOTFSDIR}/dev
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/proc
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/sys
+
+        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
+        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
+
+        mv "${ROOTFSDIR}/etc/apt/sources-list" \
+            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
+EOSUDO
+}
+addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess
+
 # Last so that the image type can overwrite tasks if needed
 inherit ${IMAGE_TYPE}
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 54b5e5c..c3af7c1 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -201,45 +201,6 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
-ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}"
-rootfs_postprocess_finalize() {
-    sudo -s <<'EOSUDO'
-        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
-            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
-        rm -f "${ROOTFSDIR}/chroot-setup.sh"
-
-        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
-            find "${ROOTFSDIR}/usr/bin" \
-                -maxdepth 1 -name 'qemu-*-static' -type f -delete
-
-        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
-            umount -l ${ROOTFSDIR}/isar-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
-
-        mountpoint -q '${ROOTFSDIR}/base-apt' && \
-            umount -l ${ROOTFSDIR}/base-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
-
-        mountpoint -q '${ROOTFSDIR}/dev' && \
-            umount -l ${ROOTFSDIR}/dev
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/proc
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/sys
-
-        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
-        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
-
-        mv "${ROOTFSDIR}/etc/apt/sources-list" \
-            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
-EOSUDO
-}
-
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
 python do_rootfs_postprocess() {
     # Take care that its correctly mounted:
-- 
2.17.1


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

* [PATCH v2 2/2] meta: cache deb srcs as part of postprocessing
  2020-02-13 10:08                 ` [PATCH v2 1/2] " Vijai Kumar K
@ 2020-02-13 10:08                   ` Vijai Kumar K
  2020-02-14  5:48                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task Vijai Kumar K
  0 siblings, 1 reply; 52+ messages in thread
From: Vijai Kumar K @ 2020-02-13 10:08 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

Collect the deb sources of the corresponding deb binaries cached
in DEBDIR as part of postprocess for those to be later included
into the final base-apt by do_cache.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
 meta/classes/image.bbclass  |  2 +-
 meta/classes/rootfs.bbclass | 28 ++++++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index c5fddba..77306ce 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -60,7 +60,7 @@ image_do_mounts() {
 }
 
 ROOTFSDIR = "${IMAGE_ROOTFS}"
-ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
+ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index c3af7c1..bef5149 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -201,6 +201,34 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
+ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
+cache_deb_src() {
+    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
+        return 0
+    fi
+    sudo -s <<'EOSUDO'
+    sudo cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
+    mkdir -p '${ROOTFSDIR}/deb-src'
+    mountpoint -q '${ROOTFSDIR}/deb-src' || \
+    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
+EOSUDO
+    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
+    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
+        local pkg="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
+        local dirname="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
+        if [ -z "${dirname}" ];then
+            dirname="$pkg"
+        fi
+        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
+            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && apt-get -y source --download-only "$3"' download-src "${DISTRO}" "${dirname}" "${pkg}"
+    done
+    sudo -s <<'EOSUDO'
+    mountpoint -q '${ROOTFSDIR}/deb-src' && \
+    umount -l ${ROOTFSDIR}/deb-src
+    sudo rm -rf '${ROOTFSDIR}/etc/resolv.conf'
+EOSUDO
+}
+
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
 python do_rootfs_postprocess() {
     # Take care that its correctly mounted:
-- 
2.17.1


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

* [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-02-13 10:08                   ` [PATCH v2 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
@ 2020-02-14  5:48                     ` Vijai Kumar K
  2020-02-14  5:48                       ` [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
  2020-03-11  7:16                       ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
  0 siblings, 2 replies; 52+ messages in thread
From: Vijai Kumar K @ 2020-02-14  5:48 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

With the current implementation it is difficult to append a
postprocess function which requires a chroot environment.
For example, to add a postprocess function which runs apt-get to
download all source of packages installed in the target.

rootfs_postprocess_finalize is not actually an optional feature
but instead a necessary cleanup function for image class.
So, move the implementation to image class and make it as a task.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
Changes in v3:
 - Take care of non-existent downloads/deb-src directory.

 meta/classes/image.bbclass  | 41 ++++++++++++++++++++++++++++++++++++-
 meta/classes/rootfs.bbclass | 39 -----------------------------------
 2 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index cfd617a..c5fddba 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -60,7 +60,7 @@ image_do_mounts() {
 }
 
 ROOTFSDIR = "${IMAGE_ROOTFS}"
-ROOTFS_FEATURES += "clean-package-cache finalize-rootfs generate-manifest"
+ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 
@@ -168,5 +168,44 @@ python do_deploy() {
 }
 addtask deploy before do_build after do_image
 
+do_rootfs_finalize() {
+    sudo -s <<'EOSUDO'
+        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
+            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
+        rm -f "${ROOTFSDIR}/chroot-setup.sh"
+
+        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
+            find "${ROOTFSDIR}/usr/bin" \
+                -maxdepth 1 -name 'qemu-*-static' -type f -delete
+
+        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
+            umount -l ${ROOTFSDIR}/isar-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
+
+        mountpoint -q '${ROOTFSDIR}/base-apt' && \
+            umount -l ${ROOTFSDIR}/base-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
+
+        mountpoint -q '${ROOTFSDIR}/dev' && \
+            umount -l ${ROOTFSDIR}/dev
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/proc
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/sys
+
+        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
+        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
+
+        mv "${ROOTFSDIR}/etc/apt/sources-list" \
+            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
+EOSUDO
+}
+addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess
+
 # Last so that the image type can overwrite tasks if needed
 inherit ${IMAGE_TYPE}
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 54b5e5c..c3af7c1 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -201,45 +201,6 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
-ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}"
-rootfs_postprocess_finalize() {
-    sudo -s <<'EOSUDO'
-        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
-            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
-        rm -f "${ROOTFSDIR}/chroot-setup.sh"
-
-        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
-            find "${ROOTFSDIR}/usr/bin" \
-                -maxdepth 1 -name 'qemu-*-static' -type f -delete
-
-        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
-            umount -l ${ROOTFSDIR}/isar-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
-
-        mountpoint -q '${ROOTFSDIR}/base-apt' && \
-            umount -l ${ROOTFSDIR}/base-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
-
-        mountpoint -q '${ROOTFSDIR}/dev' && \
-            umount -l ${ROOTFSDIR}/dev
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/proc
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/sys
-
-        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
-        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
-
-        mv "${ROOTFSDIR}/etc/apt/sources-list" \
-            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
-EOSUDO
-}
-
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
 python do_rootfs_postprocess() {
     # Take care that its correctly mounted:
-- 
2.17.1


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

* [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing
  2020-02-14  5:48                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task Vijai Kumar K
@ 2020-02-14  5:48                       ` Vijai Kumar K
  2020-02-14  8:19                         ` Jan Kiszka
  2020-03-11  7:16                       ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
  1 sibling, 1 reply; 52+ messages in thread
From: Vijai Kumar K @ 2020-02-14  5:48 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

Collect the deb sources of the corresponding deb binaries cached
in DEBDIR as part of postprocess for those to be later included
into the final base-apt by do_cache.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
 meta/classes/image.bbclass  |  2 +-
 meta/classes/rootfs.bbclass | 29 +++++++++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index c5fddba..77306ce 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -60,7 +60,7 @@ image_do_mounts() {
 }
 
 ROOTFSDIR = "${IMAGE_ROOTFS}"
-ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
+ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index c3af7c1..971a299 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -201,6 +201,35 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
+ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
+cache_deb_src() {
+    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
+        return 0
+    fi
+    sudo -s <<'EOSUDO'
+    sudo cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
+    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
+    mkdir -p '${ROOTFSDIR}/deb-src'
+    mountpoint -q '${ROOTFSDIR}/deb-src' || \
+    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
+EOSUDO
+    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
+    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
+        local pkg="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
+        local dirname="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
+        if [ -z "${dirname}" ];then
+            dirname="$pkg"
+        fi
+        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
+            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && apt-get -y source --download-only "$3"' download-src "${DISTRO}" "${dirname}" "${pkg}"
+    done
+    sudo -s <<'EOSUDO'
+    mountpoint -q '${ROOTFSDIR}/deb-src' && \
+    umount -l ${ROOTFSDIR}/deb-src
+    sudo rm -rf '${ROOTFSDIR}/etc/resolv.conf'
+EOSUDO
+}
+
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
 python do_rootfs_postprocess() {
     # Take care that its correctly mounted:
-- 
2.17.1


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

* Re: [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing
  2020-02-14  5:48                       ` [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
@ 2020-02-14  8:19                         ` Jan Kiszka
  2020-02-14  8:41                           ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-02-14  8:19 UTC (permalink / raw)
  To: Vijai Kumar K, isar-users; +Cc: Vijai Kumar K

On 14.02.20 06:48, Vijai Kumar K wrote:
> Collect the deb sources of the corresponding deb binaries cached
> in DEBDIR as part of postprocess for those to be later included
> into the final base-apt by do_cache.
> 

So, inclusion into base-apt will come in a later patch? IOW: It's not 
yet clear to me if this patch alone is already useful.

Thanks,
Jan

> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> ---
>   meta/classes/image.bbclass  |  2 +-
>   meta/classes/rootfs.bbclass | 29 +++++++++++++++++++++++++++++
>   2 files changed, 30 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index c5fddba..77306ce 100644
> --- a/meta/classes/image.bbclass
> +++ b/meta/classes/image.bbclass
> @@ -60,7 +60,7 @@ image_do_mounts() {
>   }
>   
>   ROOTFSDIR = "${IMAGE_ROOTFS}"
> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
>   ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
>   ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
>   
> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> index c3af7c1..971a299 100644
> --- a/meta/classes/rootfs.bbclass
> +++ b/meta/classes/rootfs.bbclass
> @@ -201,6 +201,35 @@ rootfs_generate_manifest () {
>           ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>   }
>   
> +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
> +cache_deb_src() {
> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> +        return 0
> +    fi
> +    sudo -s <<'EOSUDO'
> +    sudo cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> +    mkdir -p '${ROOTFSDIR}/deb-src'
> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> +EOSUDO
> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> +        local pkg="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
> +        local dirname="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
> +        if [ -z "${dirname}" ];then
> +            dirname="$pkg"
> +        fi
> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && apt-get -y source --download-only "$3"' download-src "${DISTRO}" "${dirname}" "${pkg}"
> +    done
> +    sudo -s <<'EOSUDO'
> +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> +    umount -l ${ROOTFSDIR}/deb-src
> +    sudo rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> +EOSUDO
> +}
> +
>   do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
>   python do_rootfs_postprocess() {
>       # Take care that its correctly mounted:
> 

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing
  2020-02-14  8:19                         ` Jan Kiszka
@ 2020-02-14  8:41                           ` vijai kumar
  2020-02-14  8:45                             ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-02-14  8:41 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 3905 bytes --]



On Friday, February 14, 2020 at 1:49:31 PM UTC+5:30, Jan Kiszka wrote:
>
> On 14.02.20 06:48, Vijai Kumar K wrote: 
> > Collect the deb sources of the corresponding deb binaries cached 
> > in DEBDIR as part of postprocess for those to be later included 
> > into the final base-apt by do_cache. 
> > 
>
> So, inclusion into base-apt will come in a later patch? IOW: It's not 
> yet clear to me if this patch alone is already useful.
>

Hi Jan,

The new base-apt rework from Henning would download all the deb and 
deb-srcs in downloads/deb
download/deb-src directories respectively. The actual repo(using reprepro) 
is not created until base-apt:do_cache is called. For which
you have to trigger a offline build and set ISAR_USE_CACHED_BASE_REPO. 

This patch is an extension to the downloads/deb-src downloading, where in 
all the source files of all downloaded deb files will cached,
but for it to be converted to repo, base-apt.bb:do_cache needs to be called.

Thanks,
Vijai Kumar K


> Thanks, 
> Jan 
>
> > Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com <javascript:>> 
> > --- 
> >   meta/classes/image.bbclass  |  2 +- 
> >   meta/classes/rootfs.bbclass | 29 +++++++++++++++++++++++++++++ 
> >   2 files changed, 30 insertions(+), 1 deletion(-) 
> > 
> > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass 
> > index c5fddba..77306ce 100644 
> > --- a/meta/classes/image.bbclass 
> > +++ b/meta/classes/image.bbclass 
> > @@ -60,7 +60,7 @@ image_do_mounts() { 
> >   } 
> >   
> >   ROOTFSDIR = "${IMAGE_ROOTFS}" 
> > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
> generate-manifest" 
> > +ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
> generate-manifest cache-deb-src" 
> >   ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" 
> >   ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" 
> >   
> > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass 
> > index c3af7c1..971a299 100644 
> > --- a/meta/classes/rootfs.bbclass 
> > +++ b/meta/classes/rootfs.bbclass 
> > @@ -201,6 +201,35 @@ rootfs_generate_manifest () { 
> >           ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest 
> >   } 
> >   
> > +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 
> 'cache-deb-src', 'cache_deb_src', '', d)}" 
> > +cache_deb_src() { 
> > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then 
> > +        return 0 
> > +    fi 
> > +    sudo -s <<'EOSUDO' 
> > +    sudo cp -L /etc/resolv.conf '${ROOTFSDIR}/etc' 
> > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}" 
> > +    mkdir -p '${ROOTFSDIR}/deb-src' 
> > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \ 
> > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src' 
> > +EOSUDO 
> > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update 
> > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; 
> do 
> > +        local pkg="$( dpkg-deb --show --showformat '${Package}' 
> "${package}" )" 
> > +        local dirname="$( dpkg-deb --show --showformat '${Source}' 
> "${package}" )" 
> > +        if [ -z "${dirname}" ];then 
> > +            dirname="$pkg" 
> > +        fi 
> > +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \ 
> > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd 
> "/deb-src/${1}/${2}" && apt-get -y source --download-only "$3"' 
> download-src "${DISTRO}" "${dirname}" "${pkg}" 
> > +    done 
> > +    sudo -s <<'EOSUDO' 
> > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \ 
> > +    umount -l ${ROOTFSDIR}/deb-src 
> > +    sudo rm -rf '${ROOTFSDIR}/etc/resolv.conf' 
> > +EOSUDO 
> > +} 
> > + 
> >   do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}" 
> >   python do_rootfs_postprocess() { 
> >       # Take care that its correctly mounted: 
> > 
>
> -- 
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE 
> Corporate Competence Center Embedded Linux 
>

[-- Attachment #1.2: Type: text/html, Size: 5419 bytes --]

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

* Re: [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing
  2020-02-14  8:41                           ` vijai kumar
@ 2020-02-14  8:45                             ` vijai kumar
  0 siblings, 0 replies; 52+ messages in thread
From: vijai kumar @ 2020-02-14  8:45 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 4152 bytes --]



On Friday, February 14, 2020 at 2:11:45 PM UTC+5:30, vijai kumar wrote:
>
>
>
> On Friday, February 14, 2020 at 1:49:31 PM UTC+5:30, Jan Kiszka wrote:
>>
>> On 14.02.20 06:48, Vijai Kumar K wrote: 
>> > Collect the deb sources of the corresponding deb binaries cached 
>> > in DEBDIR as part of postprocess for those to be later included 
>> > into the final base-apt by do_cache. 
>> > 
>>
>> So, inclusion into base-apt will come in a later patch? IOW: It's not 
>> yet clear to me if this patch alone is already useful.
>>
>
> Hi Jan,
>
> The new base-apt rework from Henning would download all the deb and 
> deb-srcs in downloads/deb
> download/deb-src directories respectively. The actual repo(using reprepro) 
> is not created until base-apt:do_cache is called. For which
> you have to trigger a offline build and set ISAR_USE_CACHED_BASE_REPO. 
>
> This patch is an extension to the downloads/deb-src downloading, where in 
> all the source files of all downloaded deb files will cached,
> but for it to be converted to repo, base-apt.bb:do_cache needs to be 
> called.
>

So, basically this is a middle piece of Henning's workflow.


> Thanks,
> Vijai Kumar K
>
>
>> Thanks, 
>> Jan 
>>
>> > Signed-off-by: Vijai Kumar K <Vijaikumar_...@mentor.com> 
>> > --- 
>> >   meta/classes/image.bbclass  |  2 +- 
>> >   meta/classes/rootfs.bbclass | 29 +++++++++++++++++++++++++++++ 
>> >   2 files changed, 30 insertions(+), 1 deletion(-) 
>> > 
>> > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass 
>> > index c5fddba..77306ce 100644 
>> > --- a/meta/classes/image.bbclass 
>> > +++ b/meta/classes/image.bbclass 
>> > @@ -60,7 +60,7 @@ image_do_mounts() { 
>> >   } 
>> >   
>> >   ROOTFSDIR = "${IMAGE_ROOTFS}" 
>> > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
>> generate-manifest" 
>> > +ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
>> generate-manifest cache-deb-src" 
>> >   ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" 
>> >   ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" 
>> >   
>> > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass 
>> > index c3af7c1..971a299 100644 
>> > --- a/meta/classes/rootfs.bbclass 
>> > +++ b/meta/classes/rootfs.bbclass 
>> > @@ -201,6 +201,35 @@ rootfs_generate_manifest () { 
>> >           ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest 
>> >   } 
>> >   
>> > +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 
>> 'cache-deb-src', 'cache_deb_src', '', d)}" 
>> > +cache_deb_src() { 
>> > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then 
>> > +        return 0 
>> > +    fi 
>> > +    sudo -s <<'EOSUDO' 
>> > +    sudo cp -L /etc/resolv.conf '${ROOTFSDIR}/etc' 
>> > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}" 
>> > +    mkdir -p '${ROOTFSDIR}/deb-src' 
>> > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \ 
>> > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src' 
>> > +EOSUDO 
>> > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update 
>> > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; 
>> do 
>> > +        local pkg="$( dpkg-deb --show --showformat '${Package}' 
>> "${package}" )" 
>> > +        local dirname="$( dpkg-deb --show --showformat '${Source}' 
>> "${package}" )" 
>> > +        if [ -z "${dirname}" ];then 
>> > +            dirname="$pkg" 
>> > +        fi 
>> > +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \ 
>> > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd 
>> "/deb-src/${1}/${2}" && apt-get -y source --download-only "$3"' 
>> download-src "${DISTRO}" "${dirname}" "${pkg}" 
>> > +    done 
>> > +    sudo -s <<'EOSUDO' 
>> > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \ 
>> > +    umount -l ${ROOTFSDIR}/deb-src 
>> > +    sudo rm -rf '${ROOTFSDIR}/etc/resolv.conf' 
>> > +EOSUDO 
>> > +} 
>> > + 
>> >   do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}" 
>> >   python do_rootfs_postprocess() { 
>> >       # Take care that its correctly mounted: 
>> > 
>>
>> -- 
>> Siemens AG, Corporate Technology, CT RDA IOT SES-DE 
>> Corporate Competence Center Embedded Linux 
>>
>

[-- Attachment #1.2: Type: text/html, Size: 5701 bytes --]

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-02-14  5:48                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task Vijai Kumar K
  2020-02-14  5:48                       ` [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
@ 2020-03-11  7:16                       ` vijai kumar
  2020-04-01  7:25                         ` vijai kumar
  1 sibling, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-03-11  7:16 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 5767 bytes --]

As said before, this series, atleast the second patch, depends on Henning's 
base-apt series.

I am going to rebase my changes on top of Hennings v5 and test it out.

Also, should we have these changes as part of Hennings series? Or should I 
wait for
the series to get in and address these later?

Thanks,
Vijai Kumar K

On Friday, February 14, 2020 at 11:18:11 AM UTC+5:30, vijai kumar wrote:
>
> With the current implementation it is difficult to append a 
> postprocess function which requires a chroot environment. 
> For example, to add a postprocess function which runs apt-get to 
> download all source of packages installed in the target. 
>
> rootfs_postprocess_finalize is not actually an optional feature 
> but instead a necessary cleanup function for image class. 
> So, move the implementation to image class and make it as a task. 
>
> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com> 
> --- 
> Changes in v3: 
>  - Take care of non-existent downloads/deb-src directory. 
>
>  meta/classes/image.bbclass  | 41 ++++++++++++++++++++++++++++++++++++- 
>  meta/classes/rootfs.bbclass | 39 ----------------------------------- 
>  2 files changed, 40 insertions(+), 40 deletions(-) 
>
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass 
> index cfd617a..c5fddba 100644 
> --- a/meta/classes/image.bbclass 
> +++ b/meta/classes/image.bbclass 
> @@ -60,7 +60,7 @@ image_do_mounts() { 
>  } 
>   
>  ROOTFSDIR = "${IMAGE_ROOTFS}" 
> -ROOTFS_FEATURES += "clean-package-cache finalize-rootfs 
> generate-manifest" 
> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
> generate-manifest" 
>  ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" 
>  ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" 
>   
> @@ -168,5 +168,44 @@ python do_deploy() { 
>  } 
>  addtask deploy before do_build after do_image 
>   
> +do_rootfs_finalize() { 
> +    sudo -s <<'EOSUDO' 
> +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \ 
> +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}" 
> +        rm -f "${ROOTFSDIR}/chroot-setup.sh" 
> + 
> +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \ 
> +            find "${ROOTFSDIR}/usr/bin" \ 
> +                -maxdepth 1 -name 'qemu-*-static' -type f -delete 
> + 
> +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \ 
> +            umount -l ${ROOTFSDIR}/isar-apt 
> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt 
> + 
> +        mountpoint -q '${ROOTFSDIR}/base-apt' && \ 
> +            umount -l ${ROOTFSDIR}/base-apt 
> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt 
> + 
> +        mountpoint -q '${ROOTFSDIR}/dev' && \ 
> +            umount -l ${ROOTFSDIR}/dev 
> +        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> +            umount -l ${ROOTFSDIR}/proc 
> +        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> +            umount -l ${ROOTFSDIR}/sys 
> + 
> +        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" 
> + 
> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list" 
> +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt" 
> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list" 
> + 
> +        mv "${ROOTFSDIR}/etc/apt/sources-list" \ 
> +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list" 
> + 
> +        rm -f "${ROOTFSDIR}/etc/apt/sources-list" 
> +EOSUDO 
> +} 
> +addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess 
> + 
>  # Last so that the image type can overwrite tasks if needed 
>  inherit ${IMAGE_TYPE} 
> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass 
> index 54b5e5c..c3af7c1 100644 
> --- a/meta/classes/rootfs.bbclass 
> +++ b/meta/classes/rootfs.bbclass 
> @@ -201,45 +201,6 @@ rootfs_generate_manifest () { 
>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest 
>  } 
>   
> -ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 
> 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}" 
> -rootfs_postprocess_finalize() { 
> -    sudo -s <<'EOSUDO' 
> -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \ 
> -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}" 
> -        rm -f "${ROOTFSDIR}/chroot-setup.sh" 
> - 
> -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \ 
> -            find "${ROOTFSDIR}/usr/bin" \ 
> -                -maxdepth 1 -name 'qemu-*-static' -type f -delete 
> - 
> -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \ 
> -            umount -l ${ROOTFSDIR}/isar-apt 
> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt 
> - 
> -        mountpoint -q '${ROOTFSDIR}/base-apt' && \ 
> -            umount -l ${ROOTFSDIR}/base-apt 
> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt 
> - 
> -        mountpoint -q '${ROOTFSDIR}/dev' && \ 
> -            umount -l ${ROOTFSDIR}/dev 
> -        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> -            umount -l ${ROOTFSDIR}/proc 
> -        mountpoint -q '${ROOTFSDIR}/sys' && \ 
> -            umount -l ${ROOTFSDIR}/sys 
> - 
> -        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" 
> - 
> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list" 
> -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt" 
> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list" 
> - 
> -        mv "${ROOTFSDIR}/etc/apt/sources-list" \ 
> -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list" 
> - 
> -        rm -f "${ROOTFSDIR}/etc/apt/sources-list" 
> -EOSUDO 
> -} 
> - 
>  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}" 
>  python do_rootfs_postprocess() { 
>      # Take care that its correctly mounted: 
> -- 
> 2.17.1 
>
>

[-- Attachment #1.2: Type: text/html, Size: 7573 bytes --]

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-03-11  7:16                       ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
@ 2020-04-01  7:25                         ` vijai kumar
  2020-04-01  8:19                           ` Henning Schild
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-01  7:25 UTC (permalink / raw)
  To: isar-users; +Cc: Baurzhan Ismagulov, Henning Schild, Jan Kiszka

On Wed, Mar 11, 2020 at 12:46 PM vijai kumar
<vijaikumar.kanagarajan@gmail.com> wrote:
>
> As said before, this series, atleast the second patch, depends on Henning's base-apt series.
>
> I am going to rebase my changes on top of Hennings v5 and test it out.
>
> Also, should we have these changes as part of Hennings series? Or should I wait for
> the series to get in and address these later?
>
Hi All,

While testing this series on top of the current next I got the below
error. Any pointers? I am yet to try a local build.

Failed to fetch
http://deb.debian.org/debian/pool/main/g/gettext/gettext_0.19.8.1.orig.tar.xz
 Writing more data than expected (7210080 > 7209808)

   Hashes of expected file:
    - SHA256:105556dbc5c3fbbc2aa0edb46d22d055748b6f5c7cd7a8d99f8e7eb84e938be4
    - Filesize:7209808 [weak]

    - MD5Sum:df3f5690eaa30fd228537b00cb7b7590 [weak]
E: Failed to fetch some archives.

http://ci.isar-build.org:8080/job/isar_vkk_devel/40/consoleFull

Also, there are some more fixes, to strip the version info from Source
field, so v4 is in pipeline.

Thanks,
Vijai Kumar K


> Thanks,
> Vijai Kumar K
>
> On Friday, February 14, 2020 at 11:18:11 AM UTC+5:30, vijai kumar wrote:
>>
>> With the current implementation it is difficult to append a
>> postprocess function which requires a chroot environment.
>> For example, to add a postprocess function which runs apt-get to
>> download all source of packages installed in the target.
>>
>> rootfs_postprocess_finalize is not actually an optional feature
>> but instead a necessary cleanup function for image class.
>> So, move the implementation to image class and make it as a task.
>>
>> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
>> ---
>> Changes in v3:
>>  - Take care of non-existent downloads/deb-src directory.
>>
>>  meta/classes/image.bbclass  | 41 ++++++++++++++++++++++++++++++++++++-
>>  meta/classes/rootfs.bbclass | 39 -----------------------------------
>>  2 files changed, 40 insertions(+), 40 deletions(-)
>>
>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
>> index cfd617a..c5fddba 100644
>> --- a/meta/classes/image.bbclass
>> +++ b/meta/classes/image.bbclass
>> @@ -60,7 +60,7 @@ image_do_mounts() {
>>  }
>>
>>  ROOTFSDIR = "${IMAGE_ROOTFS}"
>> -ROOTFS_FEATURES += "clean-package-cache finalize-rootfs generate-manifest"
>> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
>>  ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
>>  ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
>>
>> @@ -168,5 +168,44 @@ python do_deploy() {
>>  }
>>  addtask deploy before do_build after do_image
>>
>> +do_rootfs_finalize() {
>> +    sudo -s <<'EOSUDO'
>> +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
>> +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
>> +        rm -f "${ROOTFSDIR}/chroot-setup.sh"
>> +
>> +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
>> +            find "${ROOTFSDIR}/usr/bin" \
>> +                -maxdepth 1 -name 'qemu-*-static' -type f -delete
>> +
>> +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
>> +            umount -l ${ROOTFSDIR}/isar-apt
>> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
>> +
>> +        mountpoint -q '${ROOTFSDIR}/base-apt' && \
>> +            umount -l ${ROOTFSDIR}/base-apt
>> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
>> +
>> +        mountpoint -q '${ROOTFSDIR}/dev' && \
>> +            umount -l ${ROOTFSDIR}/dev
>> +        mountpoint -q '${ROOTFSDIR}/sys' && \
>> +            umount -l ${ROOTFSDIR}/proc
>> +        mountpoint -q '${ROOTFSDIR}/sys' && \
>> +            umount -l ${ROOTFSDIR}/sys
>> +
>> +        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
>> +
>> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
>> +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
>> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
>> +
>> +        mv "${ROOTFSDIR}/etc/apt/sources-list" \
>> +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
>> +
>> +        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
>> +EOSUDO
>> +}
>> +addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess
>> +
>>  # Last so that the image type can overwrite tasks if needed
>>  inherit ${IMAGE_TYPE}
>> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
>> index 54b5e5c..c3af7c1 100644
>> --- a/meta/classes/rootfs.bbclass
>> +++ b/meta/classes/rootfs.bbclass
>> @@ -201,45 +201,6 @@ rootfs_generate_manifest () {
>>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>>  }
>>
>> -ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}"
>> -rootfs_postprocess_finalize() {
>> -    sudo -s <<'EOSUDO'
>> -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
>> -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
>> -        rm -f "${ROOTFSDIR}/chroot-setup.sh"
>> -
>> -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
>> -            find "${ROOTFSDIR}/usr/bin" \
>> -                -maxdepth 1 -name 'qemu-*-static' -type f -delete
>> -
>> -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
>> -            umount -l ${ROOTFSDIR}/isar-apt
>> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
>> -
>> -        mountpoint -q '${ROOTFSDIR}/base-apt' && \
>> -            umount -l ${ROOTFSDIR}/base-apt
>> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
>> -
>> -        mountpoint -q '${ROOTFSDIR}/dev' && \
>> -            umount -l ${ROOTFSDIR}/dev
>> -        mountpoint -q '${ROOTFSDIR}/sys' && \
>> -            umount -l ${ROOTFSDIR}/proc
>> -        mountpoint -q '${ROOTFSDIR}/sys' && \
>> -            umount -l ${ROOTFSDIR}/sys
>> -
>> -        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
>> -
>> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
>> -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
>> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
>> -
>> -        mv "${ROOTFSDIR}/etc/apt/sources-list" \
>> -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
>> -
>> -        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
>> -EOSUDO
>> -}
>> -
>>  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
>>  python do_rootfs_postprocess() {
>>      # Take care that its correctly mounted:
>> --
>> 2.17.1
>>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/7a71ebe9-9846-41ed-beae-a02360129b89%40googlegroups.com.

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-01  7:25                         ` vijai kumar
@ 2020-04-01  8:19                           ` Henning Schild
  2020-04-01 10:29                             ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Henning Schild @ 2020-04-01  8:19 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users, Baurzhan Ismagulov, Jan Kiszka

On Wed, 1 Apr 2020 12:55:43 +0530
vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:

> On Wed, Mar 11, 2020 at 12:46 PM vijai kumar
> <vijaikumar.kanagarajan@gmail.com> wrote:
> >
> > As said before, this series, atleast the second patch, depends on
> > Henning's base-apt series.
> >
> > I am going to rebase my changes on top of Hennings v5 and test it
> > out.
> >
> > Also, should we have these changes as part of Hennings series? Or
> > should I wait for the series to get in and address these later?
> >  
> Hi All,
> 
> While testing this series on top of the current next I got the below
> error. Any pointers? I am yet to try a local build.

I guess the main question is whether that issue just came up once, or
whether it consist over several builds.

> Failed to fetch
> http://deb.debian.org/debian/pool/main/g/gettext/gettext_0.19.8.1.orig.tar.xz
>  Writing more data than expected (7210080 > 7209808)
> 
>    Hashes of expected file:
>     -
> SHA256:105556dbc5c3fbbc2aa0edb46d22d055748b6f5c7cd7a8d99f8e7eb84e938be4
>     - Filesize:7209808 [weak]
> 
>     - MD5Sum:df3f5690eaa30fd228537b00cb7b7590 [weak]
> E: Failed to fetch some archives.

A fetch should not be affected by what is in next. I would guess/hope
that you just into a temporary network hickup.

Henning

> http://ci.isar-build.org:8080/job/isar_vkk_devel/40/consoleFull
> 
> Also, there are some more fixes, to strip the version info from Source
> field, so v4 is in pipeline.
> 
> Thanks,
> Vijai Kumar K
> 
> 
> > Thanks,
> > Vijai Kumar K
> >
> > On Friday, February 14, 2020 at 11:18:11 AM UTC+5:30, vijai kumar
> > wrote:  
> >>
> >> With the current implementation it is difficult to append a
> >> postprocess function which requires a chroot environment.
> >> For example, to add a postprocess function which runs apt-get to
> >> download all source of packages installed in the target.
> >>
> >> rootfs_postprocess_finalize is not actually an optional feature
> >> but instead a necessary cleanup function for image class.
> >> So, move the implementation to image class and make it as a task.
> >>
> >> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> >> ---
> >> Changes in v3:
> >>  - Take care of non-existent downloads/deb-src directory.
> >>
> >>  meta/classes/image.bbclass  | 41
> >> ++++++++++++++++++++++++++++++++++++- meta/classes/rootfs.bbclass
> >> | 39 ----------------------------------- 2 files changed, 40
> >> insertions(+), 40 deletions(-)
> >>
> >> diff --git a/meta/classes/image.bbclass
> >> b/meta/classes/image.bbclass index cfd617a..c5fddba 100644
> >> --- a/meta/classes/image.bbclass
> >> +++ b/meta/classes/image.bbclass
> >> @@ -60,7 +60,7 @@ image_do_mounts() {
> >>  }
> >>
> >>  ROOTFSDIR = "${IMAGE_ROOTFS}"
> >> -ROOTFS_FEATURES += "clean-package-cache finalize-rootfs
> >> generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> >> clean-package-cache generate-manifest" ROOTFS_PACKAGES +=
> >> "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" ROOTFS_MANIFEST_DEPLOY_DIR
> >> ?= "${DEPLOY_DIR_IMAGE}"
> >>
> >> @@ -168,5 +168,44 @@ python do_deploy() {
> >>  }
> >>  addtask deploy before do_build after do_image
> >>
> >> +do_rootfs_finalize() {
> >> +    sudo -s <<'EOSUDO'
> >> +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> >> +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> >> "${ROOTFSDIR}"
> >> +        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> >> +
> >> +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> >> && \
> >> +            find "${ROOTFSDIR}/usr/bin" \
> >> +                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> >> +
> >> +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> >> +            umount -l ${ROOTFSDIR}/isar-apt
> >> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> >> +
> >> +        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> >> +            umount -l ${ROOTFSDIR}/base-apt
> >> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> >> +
> >> +        mountpoint -q '${ROOTFSDIR}/dev' && \
> >> +            umount -l ${ROOTFSDIR}/dev
> >> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> >> +            umount -l ${ROOTFSDIR}/proc
> >> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> >> +            umount -l ${ROOTFSDIR}/sys
> >> +
> >> +        rm -f
> >> "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" +
> >> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> >> +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> >> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> >> +
> >> +        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> >> +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> >> +
> >> +        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> >> +EOSUDO
> >> +}
> >> +addtask rootfs_finalize before do_rootfs after
> >> do_rootfs_postprocess +
> >>  # Last so that the image type can overwrite tasks if needed
> >>  inherit ${IMAGE_TYPE}
> >> diff --git a/meta/classes/rootfs.bbclass
> >> b/meta/classes/rootfs.bbclass index 54b5e5c..c3af7c1 100644
> >> --- a/meta/classes/rootfs.bbclass
> >> +++ b/meta/classes/rootfs.bbclass
> >> @@ -201,45 +201,6 @@ rootfs_generate_manifest () {
> >>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> >>  }
> >>
> >> -ROOTFS_POSTPROCESS_COMMAND +=
> >> "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs',
> >> 'rootfs_postprocess_finalize', '', d)}"
> >> -rootfs_postprocess_finalize() {
> >> -    sudo -s <<'EOSUDO'
> >> -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> >> -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> >> "${ROOTFSDIR}"
> >> -        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> >> -
> >> -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> >> && \
> >> -            find "${ROOTFSDIR}/usr/bin" \
> >> -                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> >> -
> >> -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> >> -            umount -l ${ROOTFSDIR}/isar-apt
> >> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> >> -
> >> -        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> >> -            umount -l ${ROOTFSDIR}/base-apt
> >> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> >> -
> >> -        mountpoint -q '${ROOTFSDIR}/dev' && \
> >> -            umount -l ${ROOTFSDIR}/dev
> >> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> >> -            umount -l ${ROOTFSDIR}/proc
> >> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> >> -            umount -l ${ROOTFSDIR}/sys
> >> -
> >> -        rm -f
> >> "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" -
> >> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> >> -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> >> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> >> -
> >> -        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> >> -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> >> -
> >> -        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> >> -EOSUDO
> >> -}
> >> -
> >>  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
> >>  python do_rootfs_postprocess() {
> >>      # Take care that its correctly mounted:
> >> --
> >> 2.17.1
> >>  
> > --
> > You received this message because you are subscribed to the Google
> > Groups "isar-users" group. To unsubscribe from this group and stop
> > receiving emails from it, send an email to
> > isar-users+unsubscribe@googlegroups.com. To view this discussion on
> > the web visit
> > https://groups.google.com/d/msgid/isar-users/7a71ebe9-9846-41ed-beae-a02360129b89%40googlegroups.com.
> >  


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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-01  8:19                           ` Henning Schild
@ 2020-04-01 10:29                             ` vijai kumar
  2020-04-03  6:50                               ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-01 10:29 UTC (permalink / raw)
  To: Henning Schild; +Cc: isar-users, Baurzhan Ismagulov, Jan Kiszka

On Wed, Apr 1, 2020 at 1:49 PM Henning Schild
<henning.schild@siemens.com> wrote:
>
> On Wed, 1 Apr 2020 12:55:43 +0530
> vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:
>
> > On Wed, Mar 11, 2020 at 12:46 PM vijai kumar
> > <vijaikumar.kanagarajan@gmail.com> wrote:
> > >
> > > As said before, this series, atleast the second patch, depends on
> > > Henning's base-apt series.
> > >
> > > I am going to rebase my changes on top of Hennings v5 and test it
> > > out.
> > >
> > > Also, should we have these changes as part of Hennings series? Or
> > > should I wait for the series to get in and address these later?
> > >
> > Hi All,
> >
> > While testing this series on top of the current next I got the below
> > error. Any pointers? I am yet to try a local build.
>
> I guess the main question is whether that issue just came up once, or
> whether it consist over several builds.

It came up last night. I haven't seen these errors before.

>
> > Failed to fetch
> > http://deb.debian.org/debian/pool/main/g/gettext/gettext_0.19.8.1.orig.tar.xz
> >  Writing more data than expected (7210080 > 7209808)
> >
> >    Hashes of expected file:
> >     -
> > SHA256:105556dbc5c3fbbc2aa0edb46d22d055748b6f5c7cd7a8d99f8e7eb84e938be4
> >     - Filesize:7209808 [weak]
> >
> >     - MD5Sum:df3f5690eaa30fd228537b00cb7b7590 [weak]
> > E: Failed to fetch some archives.
>
> A fetch should not be affected by what is in next. I would guess/hope
> that you just into a temporary network hickup.

I am assuming the same. I hit it in a couple of builds. Anyway my
local build got through. Triggered another job in CI to see if this
issues goes away.

Thanks,
Vijai Kumar K

>
> Henning
>
> > http://ci.isar-build.org:8080/job/isar_vkk_devel/40/consoleFull
> >
> > Also, there are some more fixes, to strip the version info from Source
> > field, so v4 is in pipeline.
> >
> > Thanks,
> > Vijai Kumar K
> >
> >
> > > Thanks,
> > > Vijai Kumar K
> > >
> > > On Friday, February 14, 2020 at 11:18:11 AM UTC+5:30, vijai kumar
> > > wrote:
> > >>
> > >> With the current implementation it is difficult to append a
> > >> postprocess function which requires a chroot environment.
> > >> For example, to add a postprocess function which runs apt-get to
> > >> download all source of packages installed in the target.
> > >>
> > >> rootfs_postprocess_finalize is not actually an optional feature
> > >> but instead a necessary cleanup function for image class.
> > >> So, move the implementation to image class and make it as a task.
> > >>
> > >> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> > >> ---
> > >> Changes in v3:
> > >>  - Take care of non-existent downloads/deb-src directory.
> > >>
> > >>  meta/classes/image.bbclass  | 41
> > >> ++++++++++++++++++++++++++++++++++++- meta/classes/rootfs.bbclass
> > >> | 39 ----------------------------------- 2 files changed, 40
> > >> insertions(+), 40 deletions(-)
> > >>
> > >> diff --git a/meta/classes/image.bbclass
> > >> b/meta/classes/image.bbclass index cfd617a..c5fddba 100644
> > >> --- a/meta/classes/image.bbclass
> > >> +++ b/meta/classes/image.bbclass
> > >> @@ -60,7 +60,7 @@ image_do_mounts() {
> > >>  }
> > >>
> > >>  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > >> -ROOTFS_FEATURES += "clean-package-cache finalize-rootfs
> > >> generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> > >> clean-package-cache generate-manifest" ROOTFS_PACKAGES +=
> > >> "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" ROOTFS_MANIFEST_DEPLOY_DIR
> > >> ?= "${DEPLOY_DIR_IMAGE}"
> > >>
> > >> @@ -168,5 +168,44 @@ python do_deploy() {
> > >>  }
> > >>  addtask deploy before do_build after do_image
> > >>
> > >> +do_rootfs_finalize() {
> > >> +    sudo -s <<'EOSUDO'
> > >> +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> > >> +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> > >> "${ROOTFSDIR}"
> > >> +        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> > >> +
> > >> +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> > >> && \
> > >> +            find "${ROOTFSDIR}/usr/bin" \
> > >> +                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> > >> +
> > >> +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> > >> +            umount -l ${ROOTFSDIR}/isar-apt
> > >> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> > >> +
> > >> +        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> > >> +            umount -l ${ROOTFSDIR}/base-apt
> > >> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> > >> +
> > >> +        mountpoint -q '${ROOTFSDIR}/dev' && \
> > >> +            umount -l ${ROOTFSDIR}/dev
> > >> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> > >> +            umount -l ${ROOTFSDIR}/proc
> > >> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> > >> +            umount -l ${ROOTFSDIR}/sys
> > >> +
> > >> +        rm -f
> > >> "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" +
> > >> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> > >> +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> > >> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> > >> +
> > >> +        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> > >> +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> > >> +
> > >> +        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> > >> +EOSUDO
> > >> +}
> > >> +addtask rootfs_finalize before do_rootfs after
> > >> do_rootfs_postprocess +
> > >>  # Last so that the image type can overwrite tasks if needed
> > >>  inherit ${IMAGE_TYPE}
> > >> diff --git a/meta/classes/rootfs.bbclass
> > >> b/meta/classes/rootfs.bbclass index 54b5e5c..c3af7c1 100644
> > >> --- a/meta/classes/rootfs.bbclass
> > >> +++ b/meta/classes/rootfs.bbclass
> > >> @@ -201,45 +201,6 @@ rootfs_generate_manifest () {
> > >>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> > >>  }
> > >>
> > >> -ROOTFS_POSTPROCESS_COMMAND +=
> > >> "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs',
> > >> 'rootfs_postprocess_finalize', '', d)}"
> > >> -rootfs_postprocess_finalize() {
> > >> -    sudo -s <<'EOSUDO'
> > >> -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> > >> -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> > >> "${ROOTFSDIR}"
> > >> -        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> > >> -
> > >> -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> > >> && \
> > >> -            find "${ROOTFSDIR}/usr/bin" \
> > >> -                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> > >> -
> > >> -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> > >> -            umount -l ${ROOTFSDIR}/isar-apt
> > >> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> > >> -
> > >> -        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> > >> -            umount -l ${ROOTFSDIR}/base-apt
> > >> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> > >> -
> > >> -        mountpoint -q '${ROOTFSDIR}/dev' && \
> > >> -            umount -l ${ROOTFSDIR}/dev
> > >> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> > >> -            umount -l ${ROOTFSDIR}/proc
> > >> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> > >> -            umount -l ${ROOTFSDIR}/sys
> > >> -
> > >> -        rm -f
> > >> "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" -
> > >> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> > >> -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> > >> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> > >> -
> > >> -        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> > >> -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> > >> -
> > >> -        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> > >> -EOSUDO
> > >> -}
> > >> -
> > >>  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
> > >>  python do_rootfs_postprocess() {
> > >>      # Take care that its correctly mounted:
> > >> --
> > >> 2.17.1
> > >>
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "isar-users" group. To unsubscribe from this group and stop
> > > receiving emails from it, send an email to
> > > isar-users+unsubscribe@googlegroups.com. To view this discussion on
> > > the web visit
> > > https://groups.google.com/d/msgid/isar-users/7a71ebe9-9846-41ed-beae-a02360129b89%40googlegroups.com.
> > >
>

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-01 10:29                             ` vijai kumar
@ 2020-04-03  6:50                               ` vijai kumar
  2020-04-03  8:30                                 ` Baurzhan Ismagulov
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-03  6:50 UTC (permalink / raw)
  To: Henning Schild; +Cc: isar-users, Baurzhan Ismagulov, Jan Kiszka

On Wed, Apr 1, 2020 at 3:59 PM vijai kumar
<vijaikumar.kanagarajan@gmail.com> wrote:
>
> On Wed, Apr 1, 2020 at 1:49 PM Henning Schild
> <henning.schild@siemens.com> wrote:
> >
> > On Wed, 1 Apr 2020 12:55:43 +0530
> > vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:
> >
> > > On Wed, Mar 11, 2020 at 12:46 PM vijai kumar
> > > <vijaikumar.kanagarajan@gmail.com> wrote:
> > > >
> > > > As said before, this series, atleast the second patch, depends on
> > > > Henning's base-apt series.
> > > >
> > > > I am going to rebase my changes on top of Hennings v5 and test it
> > > > out.
> > > >
> > > > Also, should we have these changes as part of Hennings series? Or
> > > > should I wait for the series to get in and address these later?
> > > >
> > > Hi All,
> > >
> > > While testing this series on top of the current next I got the below
> > > error. Any pointers? I am yet to try a local build.
> >
> > I guess the main question is whether that issue just came up once, or
> > whether it consist over several builds.
>
> It came up last night. I haven't seen these errors before.
>
> >
> > > Failed to fetch
> > > http://deb.debian.org/debian/pool/main/g/gettext/gettext_0.19.8.1.orig.tar.xz
> > >  Writing more data than expected (7210080 > 7209808)
> > >
> > >    Hashes of expected file:
> > >     -
> > > SHA256:105556dbc5c3fbbc2aa0edb46d22d055748b6f5c7cd7a8d99f8e7eb84e938be4
> > >     - Filesize:7209808 [weak]
> > >
> > >     - MD5Sum:df3f5690eaa30fd228537b00cb7b7590 [weak]
> > > E: Failed to fetch some archives.
> >
> > A fetch should not be affected by what is in next. I would guess/hope
> > that you just into a temporary network hickup.
>
> I am assuming the same. I hit it in a couple of builds. Anyway my
> local build got through. Triggered another job in CI to see if this
> issues goes away.
>
> Thanks,
> Vijai Kumar K

I am getting this fetcher issue consistently (packages differ) in the
ISAR CI build. All my local builds went through. I believe there is
more to it. Some proxy issues affecting apt fetch in CI?

Thanks,
Vijai Kumar K

>
> >
> > Henning
> >
> > > http://ci.isar-build.org:8080/job/isar_vkk_devel/40/consoleFull
> > >
> > > Also, there are some more fixes, to strip the version info from Source
> > > field, so v4 is in pipeline.
> > >
> > > Thanks,
> > > Vijai Kumar K
> > >
> > >
> > > > Thanks,
> > > > Vijai Kumar K
> > > >
> > > > On Friday, February 14, 2020 at 11:18:11 AM UTC+5:30, vijai kumar
> > > > wrote:
> > > >>
> > > >> With the current implementation it is difficult to append a
> > > >> postprocess function which requires a chroot environment.
> > > >> For example, to add a postprocess function which runs apt-get to
> > > >> download all source of packages installed in the target.
> > > >>
> > > >> rootfs_postprocess_finalize is not actually an optional feature
> > > >> but instead a necessary cleanup function for image class.
> > > >> So, move the implementation to image class and make it as a task.
> > > >>
> > > >> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> > > >> ---
> > > >> Changes in v3:
> > > >>  - Take care of non-existent downloads/deb-src directory.
> > > >>
> > > >>  meta/classes/image.bbclass  | 41
> > > >> ++++++++++++++++++++++++++++++++++++- meta/classes/rootfs.bbclass
> > > >> | 39 ----------------------------------- 2 files changed, 40
> > > >> insertions(+), 40 deletions(-)
> > > >>
> > > >> diff --git a/meta/classes/image.bbclass
> > > >> b/meta/classes/image.bbclass index cfd617a..c5fddba 100644
> > > >> --- a/meta/classes/image.bbclass
> > > >> +++ b/meta/classes/image.bbclass
> > > >> @@ -60,7 +60,7 @@ image_do_mounts() {
> > > >>  }
> > > >>
> > > >>  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > > >> -ROOTFS_FEATURES += "clean-package-cache finalize-rootfs
> > > >> generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> > > >> clean-package-cache generate-manifest" ROOTFS_PACKAGES +=
> > > >> "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" ROOTFS_MANIFEST_DEPLOY_DIR
> > > >> ?= "${DEPLOY_DIR_IMAGE}"
> > > >>
> > > >> @@ -168,5 +168,44 @@ python do_deploy() {
> > > >>  }
> > > >>  addtask deploy before do_build after do_image
> > > >>
> > > >> +do_rootfs_finalize() {
> > > >> +    sudo -s <<'EOSUDO'
> > > >> +        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> > > >> +            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> > > >> "${ROOTFSDIR}"
> > > >> +        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> > > >> +
> > > >> +        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> > > >> && \
> > > >> +            find "${ROOTFSDIR}/usr/bin" \
> > > >> +                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> > > >> +
> > > >> +        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> > > >> +            umount -l ${ROOTFSDIR}/isar-apt
> > > >> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> > > >> +
> > > >> +        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> > > >> +            umount -l ${ROOTFSDIR}/base-apt
> > > >> +        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> > > >> +
> > > >> +        mountpoint -q '${ROOTFSDIR}/dev' && \
> > > >> +            umount -l ${ROOTFSDIR}/dev
> > > >> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> > > >> +            umount -l ${ROOTFSDIR}/proc
> > > >> +        mountpoint -q '${ROOTFSDIR}/sys' && \
> > > >> +            umount -l ${ROOTFSDIR}/sys
> > > >> +
> > > >> +        rm -f
> > > >> "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" +
> > > >> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> > > >> +        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> > > >> +        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> > > >> +
> > > >> +        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> > > >> +            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> > > >> +
> > > >> +        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> > > >> +EOSUDO
> > > >> +}
> > > >> +addtask rootfs_finalize before do_rootfs after
> > > >> do_rootfs_postprocess +
> > > >>  # Last so that the image type can overwrite tasks if needed
> > > >>  inherit ${IMAGE_TYPE}
> > > >> diff --git a/meta/classes/rootfs.bbclass
> > > >> b/meta/classes/rootfs.bbclass index 54b5e5c..c3af7c1 100644
> > > >> --- a/meta/classes/rootfs.bbclass
> > > >> +++ b/meta/classes/rootfs.bbclass
> > > >> @@ -201,45 +201,6 @@ rootfs_generate_manifest () {
> > > >>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> > > >>  }
> > > >>
> > > >> -ROOTFS_POSTPROCESS_COMMAND +=
> > > >> "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs',
> > > >> 'rootfs_postprocess_finalize', '', d)}"
> > > >> -rootfs_postprocess_finalize() {
> > > >> -    sudo -s <<'EOSUDO'
> > > >> -        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
> > > >> -            "${ROOTFSDIR}/chroot-setup.sh" "cleanup"
> > > >> "${ROOTFSDIR}"
> > > >> -        rm -f "${ROOTFSDIR}/chroot-setup.sh"
> > > >> -
> > > >> -        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static"
> > > >> && \
> > > >> -            find "${ROOTFSDIR}/usr/bin" \
> > > >> -                -maxdepth 1 -name 'qemu-*-static' -type f -delete
> > > >> -
> > > >> -        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
> > > >> -            umount -l ${ROOTFSDIR}/isar-apt
> > > >> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
> > > >> -
> > > >> -        mountpoint -q '${ROOTFSDIR}/base-apt' && \
> > > >> -            umount -l ${ROOTFSDIR}/base-apt
> > > >> -        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
> > > >> -
> > > >> -        mountpoint -q '${ROOTFSDIR}/dev' && \
> > > >> -            umount -l ${ROOTFSDIR}/dev
> > > >> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> > > >> -            umount -l ${ROOTFSDIR}/proc
> > > >> -        mountpoint -q '${ROOTFSDIR}/sys' && \
> > > >> -            umount -l ${ROOTFSDIR}/sys
> > > >> -
> > > >> -        rm -f
> > > >> "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf" -
> > > >> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
> > > >> -        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
> > > >> -        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> > > >> -
> > > >> -        mv "${ROOTFSDIR}/etc/apt/sources-list" \
> > > >> -            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> > > >> -
> > > >> -        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> > > >> -EOSUDO
> > > >> -}
> > > >> -
> > > >>  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
> > > >>  python do_rootfs_postprocess() {
> > > >>      # Take care that its correctly mounted:
> > > >> --
> > > >> 2.17.1
> > > >>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > > > Groups "isar-users" group. To unsubscribe from this group and stop
> > > > receiving emails from it, send an email to
> > > > isar-users+unsubscribe@googlegroups.com. To view this discussion on
> > > > the web visit
> > > > https://groups.google.com/d/msgid/isar-users/7a71ebe9-9846-41ed-beae-a02360129b89%40googlegroups.com.
> > > >
> >

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-03  6:50                               ` vijai kumar
@ 2020-04-03  8:30                                 ` Baurzhan Ismagulov
  2020-04-03  8:50                                   ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Baurzhan Ismagulov @ 2020-04-03  8:30 UTC (permalink / raw)
  To: isar-users

On Fri, Apr 03, 2020 at 12:20:41PM +0530, vijai kumar wrote:
> > > A fetch should not be affected by what is in next. I would guess/hope
> > > that you just into a temporary network hickup.
> >
> > I am assuming the same. I hit it in a couple of builds. Anyway my
> > local build got through. Triggered another job in CI to see if this
> > issues goes away.
> 
> I am getting this fetcher issue consistently (packages differ) in the
> ISAR CI build. All my local builds went through. I believe there is
> more to it. Some proxy issues affecting apt fetch in CI?

We had various network issues before, but I haven't seen such one till now.
At least Isar (next) fast built fine till now. Seems that applying your patch
uncovers some issue...

With kind regards,
Baurzhan.

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-03  8:30                                 ` Baurzhan Ismagulov
@ 2020-04-03  8:50                                   ` vijai kumar
  2020-04-03 13:05                                     ` [PATCH v4 " Vijai Kumar K
  2020-04-07  6:19                                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
  0 siblings, 2 replies; 52+ messages in thread
From: vijai kumar @ 2020-04-03  8:50 UTC (permalink / raw)
  To: isar-users

On Fri, Apr 3, 2020 at 2:00 PM Baurzhan Ismagulov <ibr@radix50.net> wrote:
>
> On Fri, Apr 03, 2020 at 12:20:41PM +0530, vijai kumar wrote:
> > > > A fetch should not be affected by what is in next. I would guess/hope
> > > > that you just into a temporary network hickup.
> > >
> > > I am assuming the same. I hit it in a couple of builds. Anyway my
> > > local build got through. Triggered another job in CI to see if this
> > > issues goes away.
> >
> > I am getting this fetcher issue consistently (packages differ) in the
> > ISAR CI build. All my local builds went through. I believe there is
> > more to it. Some proxy issues affecting apt fetch in CI?
>
> We had various network issues before, but I haven't seen such one till now.
> At least Isar (next) fast built fine till now. Seems that applying your patch
> uncovers some issue...

Yes. the apt-get source download call in my patch is what fails with
the below error.

"Writing more data than expected (<size> > <size>)"

A quick google for similar issues got me to the below link which
recommends to use a set of apt options. I tried but without success.

https://github.com/jenkinsci/docker/issues/543

Thanks,
Vijai Kumar K


>
> With kind regards,
> Baurzhan.
>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20200403083044.tzpei3ncng4aztqk%40yssyq.m.ilbers.de.

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

* [PATCH v4 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-03  8:50                                   ` vijai kumar
@ 2020-04-03 13:05                                     ` Vijai Kumar K
  2020-04-03 13:05                                       ` [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
  2020-04-07  6:19                                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
  1 sibling, 1 reply; 52+ messages in thread
From: Vijai Kumar K @ 2020-04-03 13:05 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

With the current implementation it is difficult to append a
postprocess function which requires a chroot environment.
For example, to add a postprocess function which runs apt-get to
download all source of packages installed in the target.

rootfs_postprocess_finalize is not actually an optional feature
but instead a necessary cleanup function for image class.
So, move the implementation to image class and make it as a task.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
Changes in v4:
  - Use <source package>=<version> format instead of just using <packagename>
to download the right version of source package.

 meta/classes/image.bbclass  | 41 ++++++++++++++++++++++++++++++++++++-
 meta/classes/rootfs.bbclass | 39 -----------------------------------
 2 files changed, 40 insertions(+), 40 deletions(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 96ba863..9fa58f8 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -60,7 +60,7 @@ image_do_mounts() {
 }
 
 ROOTFSDIR = "${IMAGE_ROOTFS}"
-ROOTFS_FEATURES += "clean-package-cache finalize-rootfs generate-manifest"
+ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 
@@ -171,5 +171,44 @@ python do_deploy() {
 }
 addtask deploy before do_build after do_image
 
+do_rootfs_finalize() {
+    sudo -s <<'EOSUDO'
+        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
+            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
+        rm -f "${ROOTFSDIR}/chroot-setup.sh"
+
+        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
+            find "${ROOTFSDIR}/usr/bin" \
+                -maxdepth 1 -name 'qemu-*-static' -type f -delete
+
+        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
+            umount -l ${ROOTFSDIR}/isar-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
+
+        mountpoint -q '${ROOTFSDIR}/base-apt' && \
+            umount -l ${ROOTFSDIR}/base-apt
+        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
+
+        mountpoint -q '${ROOTFSDIR}/dev' && \
+            umount -l ${ROOTFSDIR}/dev
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/proc
+        mountpoint -q '${ROOTFSDIR}/sys' && \
+            umount -l ${ROOTFSDIR}/sys
+
+        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
+        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
+        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
+
+        mv "${ROOTFSDIR}/etc/apt/sources-list" \
+            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
+
+        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
+EOSUDO
+}
+addtask rootfs_finalize before do_rootfs after do_rootfs_postprocess
+
 # Last so that the image type can overwrite tasks if needed
 inherit ${IMAGE_TYPE}
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 806e824..8bb003d 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -201,45 +201,6 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
-ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'finalize-rootfs', 'rootfs_postprocess_finalize', '', d)}"
-rootfs_postprocess_finalize() {
-    sudo -s <<'EOSUDO'
-        test -e "${ROOTFSDIR}/chroot-setup.sh" && \
-            "${ROOTFSDIR}/chroot-setup.sh" "cleanup" "${ROOTFSDIR}"
-        rm -f "${ROOTFSDIR}/chroot-setup.sh"
-
-        test ! -e "${ROOTFSDIR}/usr/share/doc/qemu-user-static" && \
-            find "${ROOTFSDIR}/usr/bin" \
-                -maxdepth 1 -name 'qemu-*-static' -type f -delete
-
-        mountpoint -q '${ROOTFSDIR}/isar-apt' && \
-            umount -l ${ROOTFSDIR}/isar-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/isar-apt
-
-        mountpoint -q '${ROOTFSDIR}/base-apt' && \
-            umount -l ${ROOTFSDIR}/base-apt
-        rmdir --ignore-fail-on-non-empty ${ROOTFSDIR}/base-apt
-
-        mountpoint -q '${ROOTFSDIR}/dev' && \
-            umount -l ${ROOTFSDIR}/dev
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/proc
-        mountpoint -q '${ROOTFSDIR}/sys' && \
-            umount -l ${ROOTFSDIR}/sys
-
-        rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/55isar-fallback.conf"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list"
-        rm -f "${ROOTFSDIR}/etc/apt/preferences.d/isar-apt"
-        rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
-
-        mv "${ROOTFSDIR}/etc/apt/sources-list" \
-            "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
-
-        rm -f "${ROOTFSDIR}/etc/apt/sources-list"
-EOSUDO
-}
-
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
 python do_rootfs_postprocess() {
     # Take care that its correctly mounted:
-- 
2.17.1


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

* [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-03 13:05                                     ` [PATCH v4 " Vijai Kumar K
@ 2020-04-03 13:05                                       ` Vijai Kumar K
  2020-04-07  6:44                                         ` Jan Kiszka
  2020-04-08 10:04                                         ` Henning Schild
  0 siblings, 2 replies; 52+ messages in thread
From: Vijai Kumar K @ 2020-04-03 13:05 UTC (permalink / raw)
  To: isar-users; +Cc: Vijai Kumar K

Collect the deb sources of the corresponding deb binaries cached
in DEBDIR as part of postprocess for those to be later included
into the final base-apt by do_cache.

Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
 meta/classes/image.bbclass  |  2 +-
 meta/classes/rootfs.bbclass | 46 +++++++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 9fa58f8..1c7a527 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -60,7 +60,7 @@ image_do_mounts() {
 }
 
 ROOTFSDIR = "${IMAGE_ROOTFS}"
-ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
+ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
 ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
 ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
 
diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 8bb003d..7bfdfc9 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -201,6 +201,52 @@ rootfs_generate_manifest () {
         ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
 }
 
+ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
+cache_deb_src() {
+    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
+        return 0
+    fi
+
+    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
+
+    sudo -s <<'EOSUDO'
+    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
+    mkdir -p '${ROOTFSDIR}/deb-src'
+    mountpoint -q '${ROOTFSDIR}/deb-src' || \
+    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
+EOSUDO
+
+    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
+
+    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
+        local src="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
+        # If the binary package version and source package version are different, then the
+        # source package version will be present inside "()" of the Source field.
+        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd ")" -f1 )"
+        if [ -z ${version} ]; then
+            version="$( dpkg-deb --show --showformat '${Version}' "${package}" )"
+        fi
+        # Now strip any version information that might be available.
+        src="$( echo "$src" | cut -d' ' -f1 )"
+        # If there is no source field, then the source package has the same name as the
+        # binary package.
+        if [ -z "${src}" ];then
+            src="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
+        fi
+
+        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
+            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
+                apt-get -y --download-only --only-source source "$2"="$3"' \
+                download-src "${DISTRO}" "${src}" "${version}"
+    done
+
+    sudo -s <<'EOSUDO'
+    mountpoint -q '${ROOTFSDIR}/deb-src' && \
+    umount -l ${ROOTFSDIR}/deb-src
+    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
+EOSUDO
+}
+
 do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
 python do_rootfs_postprocess() {
     # Take care that its correctly mounted:
-- 
2.17.1


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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-03  8:50                                   ` vijai kumar
  2020-04-03 13:05                                     ` [PATCH v4 " Vijai Kumar K
@ 2020-04-07  6:19                                     ` vijai kumar
  2020-04-07  6:45                                       ` Jan Kiszka
  2020-04-07  7:12                                       ` Baurzhan Ismagulov
  1 sibling, 2 replies; 52+ messages in thread
From: vijai kumar @ 2020-04-07  6:19 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 2203 bytes --]



On Friday, April 3, 2020 at 2:20:34 PM UTC+5:30, vijai kumar wrote:
>
> On Fri, Apr 3, 2020 at 2:00 PM Baurzhan Ismagulov <ibr@radix50.net> 
> wrote: 
> > 
> > On Fri, Apr 03, 2020 at 12:20:41PM +0530, vijai kumar wrote: 
> > > > > A fetch should not be affected by what is in next. I would 
> guess/hope 
> > > > > that you just into a temporary network hickup. 
> > > > 
> > > > I am assuming the same. I hit it in a couple of builds. Anyway my 
> > > > local build got through. Triggered another job in CI to see if this 
> > > > issues goes away. 
> > > 
> > > I am getting this fetcher issue consistently (packages differ) in the 
> > > ISAR CI build. All my local builds went through. I believe there is 
> > > more to it. Some proxy issues affecting apt fetch in CI? 
> > 
> > We had various network issues before, but I haven't seen such one till 
> now. 
> > At least Isar (next) fast built fine till now. Seems that applying your 
> patch 
> > uncovers some issue... 
>
> Yes. the apt-get source download call in my patch is what fails with 
> the below error. 
>
> "Writing more data than expected (<size> > <size>)" 
>
> A quick google for similar issues got me to the below link which 
> recommends to use a set of apt options. I tried but without success. 
>
> https://github.com/jenkinsci/docker/issues/543 
>
> Thanks, 
> Vijai Kumar K 
>
>
Hi Baurzhan,

The problem still exists in CI[1]. I am trying to root cause it. I am not 
sure how much I can proceed, since its mostly a black box for me.

E
: Failed to fetch http://deb.debian.org/debian/pool/main/l/linux/linux_4.9.210.orig.tar.xz  Writing more data than expected (94933088 > 94867552)


[1]http://ci.isar-build.org:8080/job/isar_vkk_devel/49/consoleText


Thanks,

Vijai Kumar K




> > 
> > With kind regards, 
> > Baurzhan. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "isar-users" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to isar-users+unsubscribe@googlegroups.com. 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/isar-users/20200403083044.tzpei3ncng4aztqk%40yssyq.m.ilbers.de. 
>
>

[-- Attachment #1.2: Type: text/html, Size: 4980 bytes --]

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-03 13:05                                       ` [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
@ 2020-04-07  6:44                                         ` Jan Kiszka
  2020-04-07  6:58                                           ` vijai kumar
  2020-04-08 10:04                                         ` Henning Schild
  1 sibling, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-04-07  6:44 UTC (permalink / raw)
  To: Vijai Kumar K, isar-users; +Cc: Vijai Kumar K

On 03.04.20 15:05, Vijai Kumar K wrote:
> Collect the deb sources of the corresponding deb binaries cached
> in DEBDIR as part of postprocess for those to be later included
> into the final base-apt by do_cache.
> 
> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> ---
>   meta/classes/image.bbclass  |  2 +-
>   meta/classes/rootfs.bbclass | 46 +++++++++++++++++++++++++++++++++++++
>   2 files changed, 47 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index 9fa58f8..1c7a527 100644
> --- a/meta/classes/image.bbclass
> +++ b/meta/classes/image.bbclass
> @@ -60,7 +60,7 @@ image_do_mounts() {
>   }
>   
>   ROOTFSDIR = "${IMAGE_ROOTFS}"
> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
>   ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
>   ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
>   
> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> index 8bb003d..7bfdfc9 100644
> --- a/meta/classes/rootfs.bbclass
> +++ b/meta/classes/rootfs.bbclass
> @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
>           ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>   }
>   
> +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
> +cache_deb_src() {
> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> +        return 0
> +    fi
> +
> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> +
> +    sudo -s <<'EOSUDO'
> +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> +    mkdir -p '${ROOTFSDIR}/deb-src'
> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> +EOSUDO
> +
> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> +
> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> +        local src="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
> +        # If the binary package version and source package version are different, then the
> +        # source package version will be present inside "()" of the Source field.
> +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd ")" -f1 )"
> +        if [ -z ${version} ]; then
> +            version="$( dpkg-deb --show --showformat '${Version}' "${package}" )"
> +        fi
> +        # Now strip any version information that might be available.
> +        src="$( echo "$src" | cut -d' ' -f1 )"
> +        # If there is no source field, then the source package has the same name as the
> +        # binary package.
> +        if [ -z "${src}" ];then
> +            src="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
> +        fi
> +
> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
> +                apt-get -y --download-only --only-source source "$2"="$3"' \
> +                download-src "${DISTRO}" "${src}" "${version}"

How did you construct this apt-get command? I'm trying to match it 
against the man page of apt-get but there is no reference to "download-src".

Jan

> +    done
> +
> +    sudo -s <<'EOSUDO'
> +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> +    umount -l ${ROOTFSDIR}/deb-src
> +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> +EOSUDO
> +}
> +
>   do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
>   python do_rootfs_postprocess() {
>       # Take care that its correctly mounted:
> 

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-07  6:19                                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
@ 2020-04-07  6:45                                       ` Jan Kiszka
  2020-04-07  6:53                                         ` vijai kumar
  2020-04-07  7:12                                       ` Baurzhan Ismagulov
  1 sibling, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-04-07  6:45 UTC (permalink / raw)
  To: vijai kumar, isar-users

On 07.04.20 08:19, vijai kumar wrote:
> 
> 
> On Friday, April 3, 2020 at 2:20:34 PM UTC+5:30, vijai kumar wrote:
> 
>     On Fri, Apr 3, 2020 at 2:00 PM Baurzhan Ismagulov <ibr@radix50.net
>     <mailto:ibr@radix50.net>> wrote:
>      >
>      > On Fri, Apr 03, 2020 at 12:20:41PM +0530, vijai kumar wrote:
>      > > > > A fetch should not be affected by what is in next. I would
>     guess/hope
>      > > > > that you just into a temporary network hickup.
>      > > >
>      > > > I am assuming the same. I hit it in a couple of builds.
>     Anyway my
>      > > > local build got through. Triggered another job in CI to see
>     if this
>      > > > issues goes away.
>      > >
>      > > I am getting this fetcher issue consistently (packages differ)
>     in the
>      > > ISAR CI build. All my local builds went through. I believe
>     there is
>      > > more to it. Some proxy issues affecting apt fetch in CI?
>      >
>      > We had various network issues before, but I haven't seen such one
>     till now.
>      > At least Isar (next) fast built fine till now. Seems that
>     applying your patch
>      > uncovers some issue...
> 
>     Yes. the apt-get source download call in my patch is what fails with
>     the below error.
> 
>     "Writing more data than expected (<size> > <size>)"
> 
>     A quick google for similar issues got me to the below link which
>     recommends to use a set of apt options. I tried but without success.
> 
>     https://github.com/jenkinsci/docker/issues/543
>     <https://github.com/jenkinsci/docker/issues/543>
> 
>     Thanks,
>     Vijai Kumar K
> 
> 
> Hi Baurzhan,
> 
> The problem still exists in CI[1]. I am trying to root cause it. I am 
> not sure how much I can proceed, since its mostly a black box for me.
> 
> E
> : Failed to fetch http://deb.debian.org/debian/pool/main/l/linux/linux_4.9.210.orig.tar.xz  Writing more data than expected (94933088 > 94867552)
> 
> 
> [1]http://ci.isar-build.org:8080/job/isar_vkk_devel/49/consoleText
> 

I'll stick this into our CI as well to see if it reproduces there.

Is the error on different packages or always on this one?

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-07  6:45                                       ` Jan Kiszka
@ 2020-04-07  6:53                                         ` vijai kumar
  0 siblings, 0 replies; 52+ messages in thread
From: vijai kumar @ 2020-04-07  6:53 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: isar-users

On Tue, Apr 7, 2020 at 12:15 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>
> On 07.04.20 08:19, vijai kumar wrote:
> >
> >
> > On Friday, April 3, 2020 at 2:20:34 PM UTC+5:30, vijai kumar wrote:
> >
> >     On Fri, Apr 3, 2020 at 2:00 PM Baurzhan Ismagulov <ibr@radix50.net
> >     <mailto:ibr@radix50.net>> wrote:
> >      >
> >      > On Fri, Apr 03, 2020 at 12:20:41PM +0530, vijai kumar wrote:
> >      > > > > A fetch should not be affected by what is in next. I would
> >     guess/hope
> >      > > > > that you just into a temporary network hickup.
> >      > > >
> >      > > > I am assuming the same. I hit it in a couple of builds.
> >     Anyway my
> >      > > > local build got through. Triggered another job in CI to see
> >     if this
> >      > > > issues goes away.
> >      > >
> >      > > I am getting this fetcher issue consistently (packages differ)
> >     in the
> >      > > ISAR CI build. All my local builds went through. I believe
> >     there is
> >      > > more to it. Some proxy issues affecting apt fetch in CI?
> >      >
> >      > We had various network issues before, but I haven't seen such one
> >     till now.
> >      > At least Isar (next) fast built fine till now. Seems that
> >     applying your patch
> >      > uncovers some issue...
> >
> >     Yes. the apt-get source download call in my patch is what fails with
> >     the below error.
> >
> >     "Writing more data than expected (<size> > <size>)"
> >
> >     A quick google for similar issues got me to the below link which
> >     recommends to use a set of apt options. I tried but without success.
> >
> >     https://github.com/jenkinsci/docker/issues/543
> >     <https://github.com/jenkinsci/docker/issues/543>
> >
> >     Thanks,
> >     Vijai Kumar K
> >
> >
> > Hi Baurzhan,
> >
> > The problem still exists in CI[1]. I am trying to root cause it. I am
> > not sure how much I can proceed, since its mostly a black box for me.
> >
> > E
> > : Failed to fetch http://deb.debian.org/debian/pool/main/l/linux/linux_4.9.210.orig.tar.xz  Writing more data than expected (94933088 > 94867552)
> >
> >
> > [1]http://ci.isar-build.org:8080/job/isar_vkk_devel/49/consoleText
> >
>

> I'll stick this into our CI as well to see if it reproduces there.
>

Thanks.

> Is the error on different packages or always on this one?

It is on different packages. I have seen glibc and some other packages fail.

Best,
Vijai Kumar K

>
> Jan
>
> --
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> Corporate Competence Center Embedded Linux

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-07  6:44                                         ` Jan Kiszka
@ 2020-04-07  6:58                                           ` vijai kumar
  2020-04-07  7:04                                             ` Jan Kiszka
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-07  6:58 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: isar-users, Vijai Kumar K

On Tue, Apr 7, 2020 at 12:14 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>
> On 03.04.20 15:05, Vijai Kumar K wrote:
> > Collect the deb sources of the corresponding deb binaries cached
> > in DEBDIR as part of postprocess for those to be later included
> > into the final base-apt by do_cache.
> >
> > Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> > ---
> >   meta/classes/image.bbclass  |  2 +-
> >   meta/classes/rootfs.bbclass | 46 +++++++++++++++++++++++++++++++++++++
> >   2 files changed, 47 insertions(+), 1 deletion(-)
> >
> > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> > index 9fa58f8..1c7a527 100644
> > --- a/meta/classes/image.bbclass
> > +++ b/meta/classes/image.bbclass
> > @@ -60,7 +60,7 @@ image_do_mounts() {
> >   }
> >
> >   ROOTFSDIR = "${IMAGE_ROOTFS}"
> > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
> > +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
> >   ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> >   ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
> >
> > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> > index 8bb003d..7bfdfc9 100644
> > --- a/meta/classes/rootfs.bbclass
> > +++ b/meta/classes/rootfs.bbclass
> > @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> >           ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> >   }
> >
> > +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
> > +cache_deb_src() {
> > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> > +        return 0
> > +    fi
> > +
> > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> > +
> > +    sudo -s <<'EOSUDO'
> > +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> > +    mkdir -p '${ROOTFSDIR}/deb-src'
> > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> > +EOSUDO
> > +
> > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> > +
> > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> > +        local src="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
> > +        # If the binary package version and source package version are different, then the
> > +        # source package version will be present inside "()" of the Source field.
> > +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd ")" -f1 )"
> > +        if [ -z ${version} ]; then
> > +            version="$( dpkg-deb --show --showformat '${Version}' "${package}" )"
> > +        fi
> > +        # Now strip any version information that might be available.
> > +        src="$( echo "$src" | cut -d' ' -f1 )"
> > +        # If there is no source field, then the source package has the same name as the
> > +        # binary package.
> > +        if [ -z "${src}" ];then
> > +            src="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
> > +        fi
> > +
> > +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
> > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
> > +                apt-get -y --download-only --only-source source "$2"="$3"' \
> > +                download-src "${DISTRO}" "${src}" "${version}"
>
> How did you construct this apt-get command? I'm trying to match it
> against the man page of apt-get but there is no reference to "download-src".

download-src is just the script name.
The shell script call is in below format to pass the args.

sh -c '<commands>' <script name> <args>

Thanks,
Vijai Kumar K

>
> Jan
>
> > +    done
> > +
> > +    sudo -s <<'EOSUDO'
> > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> > +    umount -l ${ROOTFSDIR}/deb-src
> > +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> > +EOSUDO
> > +}
> > +
> >   do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
> >   python do_rootfs_postprocess() {
> >       # Take care that its correctly mounted:
> >
>
> --
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> Corporate Competence Center Embedded Linux

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-07  6:58                                           ` vijai kumar
@ 2020-04-07  7:04                                             ` Jan Kiszka
  2020-04-07  7:59                                               ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-04-07  7:04 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users, Vijai Kumar K

On 07.04.20 08:58, vijai kumar wrote:
> On Tue, Apr 7, 2020 at 12:14 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>>
>> On 03.04.20 15:05, Vijai Kumar K wrote:
>>> Collect the deb sources of the corresponding deb binaries cached
>>> in DEBDIR as part of postprocess for those to be later included
>>> into the final base-apt by do_cache.
>>>
>>> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
>>> ---
>>>    meta/classes/image.bbclass  |  2 +-
>>>    meta/classes/rootfs.bbclass | 46 +++++++++++++++++++++++++++++++++++++
>>>    2 files changed, 47 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
>>> index 9fa58f8..1c7a527 100644
>>> --- a/meta/classes/image.bbclass
>>> +++ b/meta/classes/image.bbclass
>>> @@ -60,7 +60,7 @@ image_do_mounts() {
>>>    }
>>>
>>>    ROOTFSDIR = "${IMAGE_ROOTFS}"
>>> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
>>> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
>>>    ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
>>>    ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
>>>
>>> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
>>> index 8bb003d..7bfdfc9 100644
>>> --- a/meta/classes/rootfs.bbclass
>>> +++ b/meta/classes/rootfs.bbclass
>>> @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
>>>            ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>>>    }
>>>
>>> +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
>>> +cache_deb_src() {
>>> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
>>> +        return 0
>>> +    fi
>>> +
>>> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
>>> +
>>> +    sudo -s <<'EOSUDO'
>>> +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
>>> +    mkdir -p '${ROOTFSDIR}/deb-src'
>>> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
>>> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
>>> +EOSUDO
>>> +
>>> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
>>> +
>>> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
>>> +        local src="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
>>> +        # If the binary package version and source package version are different, then the
>>> +        # source package version will be present inside "()" of the Source field.
>>> +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd ")" -f1 )"
>>> +        if [ -z ${version} ]; then
>>> +            version="$( dpkg-deb --show --showformat '${Version}' "${package}" )"
>>> +        fi
>>> +        # Now strip any version information that might be available.
>>> +        src="$( echo "$src" | cut -d' ' -f1 )"
>>> +        # If there is no source field, then the source package has the same name as the
>>> +        # binary package.
>>> +        if [ -z "${src}" ];then
>>> +            src="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
>>> +        fi
>>> +
>>> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
>>> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
>>> +                apt-get -y --download-only --only-source source "$2"="$3"' \
>>> +                download-src "${DISTRO}" "${src}" "${version}"
>>
>> How did you construct this apt-get command? I'm trying to match it
>> against the man page of apt-get but there is no reference to "download-src".
> 
> download-src is just the script name.
> The shell script call is in below format to pass the args.
> 
> sh -c '<commands>' <script name> <args>
> 

Oh, I see. What's the benefit of this obfuscation? Or is there even any 
technical need?

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-07  6:19                                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
  2020-04-07  6:45                                       ` Jan Kiszka
@ 2020-04-07  7:12                                       ` Baurzhan Ismagulov
  2020-04-07  8:04                                         ` vijai kumar
  1 sibling, 1 reply; 52+ messages in thread
From: Baurzhan Ismagulov @ 2020-04-07  7:12 UTC (permalink / raw)
  To: isar-users

Hello Vijai Kumar,

On Mon, Apr 06, 2020 at 11:19:29PM -0700, vijai kumar wrote:
> The problem still exists in CI[1]. I am trying to root cause it. I am not 
> sure how much I can proceed, since its mostly a black box for me.

Ok, so the problem is reproducible. We've set up the CI so that you should be
able to configure your jobs. Could you please verify that you have the
"Configure" entry in the job local menu?

Since the full build takes a long time, I suggest adding -f to both
build_task.sh and smoke_test_task.sh and see whether the problem is
reproducible with cross-build.

build_task.sh starts ci_build.sh with the right host version (stretch or
buster). smoke_test_task.sh does the same for vm_smoke_test.

What else can I do to help you? Please let me know.

We already plan re-evaluating GitLab (that was our first CI and we had severe
performance issues with that) and trying gitlab.com. The goal is that
everything is configurable from the Isar repo and usable from both Jenkins and
GitLab. But that would take some time.

With kind regards,
Baurzhan.

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-07  7:04                                             ` Jan Kiszka
@ 2020-04-07  7:59                                               ` vijai kumar
  2020-04-07  8:38                                                 ` Jan Kiszka
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-07  7:59 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: isar-users, Vijai Kumar K

On Tue, Apr 7, 2020 at 12:34 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>
> On 07.04.20 08:58, vijai kumar wrote:
> > On Tue, Apr 7, 2020 at 12:14 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
> >>
> >> On 03.04.20 15:05, Vijai Kumar K wrote:
> >>> Collect the deb sources of the corresponding deb binaries cached
> >>> in DEBDIR as part of postprocess for those to be later included
> >>> into the final base-apt by do_cache.
> >>>
> >>> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> >>> ---
> >>>    meta/classes/image.bbclass  |  2 +-
> >>>    meta/classes/rootfs.bbclass | 46 +++++++++++++++++++++++++++++++++++++
> >>>    2 files changed, 47 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> >>> index 9fa58f8..1c7a527 100644
> >>> --- a/meta/classes/image.bbclass
> >>> +++ b/meta/classes/image.bbclass
> >>> @@ -60,7 +60,7 @@ image_do_mounts() {
> >>>    }
> >>>
> >>>    ROOTFSDIR = "${IMAGE_ROOTFS}"
> >>> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
> >>> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
> >>>    ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> >>>    ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
> >>>
> >>> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> >>> index 8bb003d..7bfdfc9 100644
> >>> --- a/meta/classes/rootfs.bbclass
> >>> +++ b/meta/classes/rootfs.bbclass
> >>> @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> >>>            ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> >>>    }
> >>>
> >>> +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
> >>> +cache_deb_src() {
> >>> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> >>> +        return 0
> >>> +    fi
> >>> +
> >>> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> >>> +
> >>> +    sudo -s <<'EOSUDO'
> >>> +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> >>> +    mkdir -p '${ROOTFSDIR}/deb-src'
> >>> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> >>> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> >>> +EOSUDO
> >>> +
> >>> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> >>> +
> >>> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> >>> +        local src="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
> >>> +        # If the binary package version and source package version are different, then the
> >>> +        # source package version will be present inside "()" of the Source field.
> >>> +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd ")" -f1 )"
> >>> +        if [ -z ${version} ]; then
> >>> +            version="$( dpkg-deb --show --showformat '${Version}' "${package}" )"
> >>> +        fi
> >>> +        # Now strip any version information that might be available.
> >>> +        src="$( echo "$src" | cut -d' ' -f1 )"
> >>> +        # If there is no source field, then the source package has the same name as the
> >>> +        # binary package.
> >>> +        if [ -z "${src}" ];then
> >>> +            src="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
> >>> +        fi
> >>> +
> >>> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
> >>> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
> >>> +                apt-get -y --download-only --only-source source "$2"="$3"' \
> >>> +                download-src "${DISTRO}" "${src}" "${version}"
> >>
> >> How did you construct this apt-get command? I'm trying to match it
> >> against the man page of apt-get but there is no reference to "download-src".
> >
> > download-src is just the script name.
> > The shell script call is in below format to pass the args.
> >
> > sh -c '<commands>' <script name> <args>
> >
>
> Oh, I see. What's the benefit of this obfuscation? Or is there even any
> technical need?

Yes. To run multiple commands from a single chroot call. We can either
invoke sh -c or have a script that contains the commands that could be
called.
We are using sh -c and hence the need for arguments to pass in the variables.
It could very well be multiple chroot calls or a script but this is
more clean I guess.
Also, to note, this style was inherited from the base-apt series by Henning.

Thanks,
Vijai Kumar K

>
> Jan
>
> --
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> Corporate Competence Center Embedded Linux

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

* Re: [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task
  2020-04-07  7:12                                       ` Baurzhan Ismagulov
@ 2020-04-07  8:04                                         ` vijai kumar
  0 siblings, 0 replies; 52+ messages in thread
From: vijai kumar @ 2020-04-07  8:04 UTC (permalink / raw)
  To: isar-users

On Tue, Apr 7, 2020 at 12:42 PM Baurzhan Ismagulov <ibr@radix50.net> wrote:
>
> Hello Vijai Kumar,
>
> On Mon, Apr 06, 2020 at 11:19:29PM -0700, vijai kumar wrote:
> > The problem still exists in CI[1]. I am trying to root cause it. I am not
> > sure how much I can proceed, since its mostly a black box for me.
>
> Ok, so the problem is reproducible. We've set up the CI so that you should be
> able to configure your jobs. Could you please verify that you have the
> "Configure" entry in the job local menu?

Yes. I do have that.

>
> Since the full build takes a long time, I suggest adding -f to both
> build_task.sh and smoke_test_task.sh and see whether the problem is
> reproducible with cross-build.

Sure.

>
> build_task.sh starts ci_build.sh with the right host version (stretch or
> buster). smoke_test_task.sh does the same for vm_smoke_test.
>
> What else can I do to help you? Please let me know.

Jan has also triggered a build in an internal CI. I will have a look
on both of this and will get back. Thanks.

>
> We already plan re-evaluating GitLab (that was our first CI and we had severe
> performance issues with that) and trying gitlab.com. The goal is that
> everything is configurable from the Isar repo and usable from both Jenkins and
> GitLab. But that would take some time.

Good to know. Jenkins is good for now. I have not faced much issues
with it till now. And this too is not jenkins specific I guess.

Best,
Vijai Kumar K

>
> With kind regards,
> Baurzhan.
>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20200407071234.uaefr7nhpqi74qfr%40yssyq.m.ilbers.de.

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-07  7:59                                               ` vijai kumar
@ 2020-04-07  8:38                                                 ` Jan Kiszka
  2020-04-07  9:08                                                   ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-04-07  8:38 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users, Vijai Kumar K

On 07.04.20 09:59, vijai kumar wrote:
> On Tue, Apr 7, 2020 at 12:34 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>>
>> On 07.04.20 08:58, vijai kumar wrote:
>>> On Tue, Apr 7, 2020 at 12:14 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>>>>
>>>> On 03.04.20 15:05, Vijai Kumar K wrote:
>>>>> Collect the deb sources of the corresponding deb binaries cached
>>>>> in DEBDIR as part of postprocess for those to be later included
>>>>> into the final base-apt by do_cache.
>>>>>
>>>>> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
>>>>> ---
>>>>>     meta/classes/image.bbclass  |  2 +-
>>>>>     meta/classes/rootfs.bbclass | 46 +++++++++++++++++++++++++++++++++++++
>>>>>     2 files changed, 47 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
>>>>> index 9fa58f8..1c7a527 100644
>>>>> --- a/meta/classes/image.bbclass
>>>>> +++ b/meta/classes/image.bbclass
>>>>> @@ -60,7 +60,7 @@ image_do_mounts() {
>>>>>     }
>>>>>
>>>>>     ROOTFSDIR = "${IMAGE_ROOTFS}"
>>>>> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
>>>>> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
>>>>>     ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
>>>>>     ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
>>>>>
>>>>> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
>>>>> index 8bb003d..7bfdfc9 100644
>>>>> --- a/meta/classes/rootfs.bbclass
>>>>> +++ b/meta/classes/rootfs.bbclass
>>>>> @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
>>>>>             ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>>>>>     }
>>>>>
>>>>> +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
>>>>> +cache_deb_src() {
>>>>> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
>>>>> +        return 0
>>>>> +    fi
>>>>> +
>>>>> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
>>>>> +
>>>>> +    sudo -s <<'EOSUDO'
>>>>> +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
>>>>> +    mkdir -p '${ROOTFSDIR}/deb-src'
>>>>> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
>>>>> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
>>>>> +EOSUDO
>>>>> +
>>>>> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
>>>>> +
>>>>> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
>>>>> +        local src="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
>>>>> +        # If the binary package version and source package version are different, then the
>>>>> +        # source package version will be present inside "()" of the Source field.
>>>>> +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd ")" -f1 )"
>>>>> +        if [ -z ${version} ]; then
>>>>> +            version="$( dpkg-deb --show --showformat '${Version}' "${package}" )"
>>>>> +        fi
>>>>> +        # Now strip any version information that might be available.
>>>>> +        src="$( echo "$src" | cut -d' ' -f1 )"
>>>>> +        # If there is no source field, then the source package has the same name as the
>>>>> +        # binary package.
>>>>> +        if [ -z "${src}" ];then
>>>>> +            src="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
>>>>> +        fi
>>>>> +
>>>>> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
>>>>> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
>>>>> +                apt-get -y --download-only --only-source source "$2"="$3"' \
>>>>> +                download-src "${DISTRO}" "${src}" "${version}"
>>>>
>>>> How did you construct this apt-get command? I'm trying to match it
>>>> against the man page of apt-get but there is no reference to "download-src".
>>>
>>> download-src is just the script name.
>>> The shell script call is in below format to pass the args.
>>>
>>> sh -c '<commands>' <script name> <args>
>>>
>>
>> Oh, I see. What's the benefit of this obfuscation? Or is there even any
>> technical need?
> 
> Yes. To run multiple commands from a single chroot call. We can either
> invoke sh -c or have a script that contains the commands that could be
> called.
> We are using sh -c and hence the need for arguments to pass in the variables.
> It could very well be multiple chroot calls or a script but this is
> more clean I guess.

It's not technically needed, giving the commands a name is optional. You 
could also unfold the arguments (which would make them more readable).

> Also, to note, this style was inherited from the base-apt series by Henning.
> 

Well, if we keep that pattern, then please indent in a more 
reader-friendly way:

sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
        apt-get -y --download-only --only-source source "$2"="$3"' \
    download-src "${DISTRO}" "${src}" "${version}"

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-07  8:38                                                 ` Jan Kiszka
@ 2020-04-07  9:08                                                   ` vijai kumar
  2020-04-07  9:40                                                     ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-07  9:08 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: isar-users, Vijai Kumar K

On Tue, Apr 7, 2020 at 2:08 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>
> On 07.04.20 09:59, vijai kumar wrote:
> > On Tue, Apr 7, 2020 at 12:34 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
> >>
> >> On 07.04.20 08:58, vijai kumar wrote:
> >>> On Tue, Apr 7, 2020 at 12:14 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
> >>>>
> >>>> On 03.04.20 15:05, Vijai Kumar K wrote:
> >>>>> Collect the deb sources of the corresponding deb binaries cached
> >>>>> in DEBDIR as part of postprocess for those to be later included
> >>>>> into the final base-apt by do_cache.
> >>>>>
> >>>>> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> >>>>> ---
> >>>>>     meta/classes/image.bbclass  |  2 +-
> >>>>>     meta/classes/rootfs.bbclass | 46 +++++++++++++++++++++++++++++++++++++
> >>>>>     2 files changed, 47 insertions(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> >>>>> index 9fa58f8..1c7a527 100644
> >>>>> --- a/meta/classes/image.bbclass
> >>>>> +++ b/meta/classes/image.bbclass
> >>>>> @@ -60,7 +60,7 @@ image_do_mounts() {
> >>>>>     }
> >>>>>
> >>>>>     ROOTFSDIR = "${IMAGE_ROOTFS}"
> >>>>> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest"
> >>>>> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache generate-manifest cache-deb-src"
> >>>>>     ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> >>>>>     ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
> >>>>>
> >>>>> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> >>>>> index 8bb003d..7bfdfc9 100644
> >>>>> --- a/meta/classes/rootfs.bbclass
> >>>>> +++ b/meta/classes/rootfs.bbclass
> >>>>> @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> >>>>>             ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> >>>>>     }
> >>>>>
> >>>>> +ROOTFS_POSTPROCESS_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', '', d)}"
> >>>>> +cache_deb_src() {
> >>>>> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> >>>>> +        return 0
> >>>>> +    fi
> >>>>> +
> >>>>> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> >>>>> +
> >>>>> +    sudo -s <<'EOSUDO'
> >>>>> +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> >>>>> +    mkdir -p '${ROOTFSDIR}/deb-src'
> >>>>> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> >>>>> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> >>>>> +EOSUDO
> >>>>> +
> >>>>> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> >>>>> +
> >>>>> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> >>>>> +        local src="$( dpkg-deb --show --showformat '${Source}' "${package}" )"
> >>>>> +        # If the binary package version and source package version are different, then the
> >>>>> +        # source package version will be present inside "()" of the Source field.
> >>>>> +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd ")" -f1 )"
> >>>>> +        if [ -z ${version} ]; then
> >>>>> +            version="$( dpkg-deb --show --showformat '${Version}' "${package}" )"
> >>>>> +        fi
> >>>>> +        # Now strip any version information that might be available.
> >>>>> +        src="$( echo "$src" | cut -d' ' -f1 )"
> >>>>> +        # If there is no source field, then the source package has the same name as the
> >>>>> +        # binary package.
> >>>>> +        if [ -z "${src}" ];then
> >>>>> +            src="$( dpkg-deb --show --showformat '${Package}' "${package}" )"
> >>>>> +        fi
> >>>>> +
> >>>>> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR} \
> >>>>> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
> >>>>> +                apt-get -y --download-only --only-source source "$2"="$3"' \
> >>>>> +                download-src "${DISTRO}" "${src}" "${version}"
> >>>>
> >>>> How did you construct this apt-get command? I'm trying to match it
> >>>> against the man page of apt-get but there is no reference to "download-src".
> >>>
> >>> download-src is just the script name.
> >>> The shell script call is in below format to pass the args.
> >>>
> >>> sh -c '<commands>' <script name> <args>
> >>>
> >>
> >> Oh, I see. What's the benefit of this obfuscation? Or is there even any
> >> technical need?
> >
> > Yes. To run multiple commands from a single chroot call. We can either
> > invoke sh -c or have a script that contains the commands that could be
> > called.
> > We are using sh -c and hence the need for arguments to pass in the variables.
> > It could very well be multiple chroot calls or a script but this is
> > more clean I guess.
>
> It's not technically needed, giving the commands a name is optional. You
> could also unfold the arguments (which would make them more readable).

Ah. Just tried that. Looks like unfolding is just possible. The man
page says read from string, so the
variables part of the string are expanded. Its not like a subshell, if
I understand correctly now.
In that case unfolding does make sense.

Thanks,
Vijai Kumar K

>
> > Also, to note, this style was inherited from the base-apt series by Henning.
> >
>
> Well, if we keep that pattern, then please indent in a more
> reader-friendly way:
>
> sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \
>         apt-get -y --download-only --only-source source "$2"="$3"' \
>     download-src "${DISTRO}" "${src}" "${version}"
>
> Jan
>
> --
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> Corporate Competence Center Embedded Linux

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-07  9:08                                                   ` vijai kumar
@ 2020-04-07  9:40                                                     ` vijai kumar
  2020-04-08  8:13                                                       ` Baurzhan Ismagulov
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-07  9:40 UTC (permalink / raw)
  To: isar-users


[-- Attachment #1.1: Type: text/plain, Size: 6254 bytes --]



On Tuesday, April 7, 2020 at 2:38:23 PM UTC+5:30, vijai kumar wrote:
>
> On Tue, Apr 7, 2020 at 2:08 PM Jan Kiszka <jan.kiszka@siemens.com> wrote: 
> > 
> > On 07.04.20 09:59, vijai kumar wrote: 
> > > On Tue, Apr 7, 2020 at 12:34 PM Jan Kiszka <jan.kiszka@siemens.com> 
> wrote: 
> > >> 
> > >> On 07.04.20 08:58, vijai kumar wrote: 
> > >>> On Tue, Apr 7, 2020 at 12:14 PM Jan Kiszka <jan.kiszka@siemens.com> 
> wrote: 
> > >>>> 
> > >>>> On 03.04.20 15:05, Vijai Kumar K wrote: 
> > >>>>> Collect the deb sources of the corresponding deb binaries cached 
> > >>>>> in DEBDIR as part of postprocess for those to be later included 
> > >>>>> into the final base-apt by do_cache. 
> > >>>>> 
> > >>>>> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com> 
> > >>>>> --- 
> > >>>>>     meta/classes/image.bbclass  |  2 +- 
> > >>>>>     meta/classes/rootfs.bbclass | 46 
> +++++++++++++++++++++++++++++++++++++ 
> > >>>>>     2 files changed, 47 insertions(+), 1 deletion(-) 
> > >>>>> 
> > >>>>> diff --git a/meta/classes/image.bbclass 
> b/meta/classes/image.bbclass 
> > >>>>> index 9fa58f8..1c7a527 100644 
> > >>>>> --- a/meta/classes/image.bbclass 
> > >>>>> +++ b/meta/classes/image.bbclass 
> > >>>>> @@ -60,7 +60,7 @@ image_do_mounts() { 
> > >>>>>     } 
> > >>>>> 
> > >>>>>     ROOTFSDIR = "${IMAGE_ROOTFS}" 
> > >>>>> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
> generate-manifest" 
> > >>>>> +ROOTFS_FEATURES += "copy-package-cache clean-package-cache 
> generate-manifest cache-deb-src" 
> > >>>>>     ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" 
> > >>>>>     ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" 
> > >>>>> 
> > >>>>> diff --git a/meta/classes/rootfs.bbclass 
> b/meta/classes/rootfs.bbclass 
> > >>>>> index 8bb003d..7bfdfc9 100644 
> > >>>>> --- a/meta/classes/rootfs.bbclass 
> > >>>>> +++ b/meta/classes/rootfs.bbclass 
> > >>>>> @@ -201,6 +201,52 @@ rootfs_generate_manifest () { 
> > >>>>>             ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest 
> > >>>>>     } 
> > >>>>> 
> > >>>>> +ROOTFS_POSTPROCESS_COMMAND += 
> "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src', 'cache_deb_src', 
> '', d)}" 
> > >>>>> +cache_deb_src() { 
> > >>>>> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then 
> > >>>>> +        return 0 
> > >>>>> +    fi 
> > >>>>> + 
> > >>>>> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}" 
> > >>>>> + 
> > >>>>> +    sudo -s <<'EOSUDO' 
> > >>>>> +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc' 
> > >>>>> +    mkdir -p '${ROOTFSDIR}/deb-src' 
> > >>>>> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \ 
> > >>>>> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src' 
> > >>>>> +EOSUDO 
> > >>>>> + 
> > >>>>> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update 
> > >>>>> + 
> > >>>>> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read 
> package; do 
> > >>>>> +        local src="$( dpkg-deb --show --showformat '${Source}' 
> "${package}" )" 
> > >>>>> +        # If the binary package version and source package 
> version are different, then the 
> > >>>>> +        # source package version will be present inside "()" of 
> the Source field. 
> > >>>>> +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd 
> ")" -f1 )" 
> > >>>>> +        if [ -z ${version} ]; then 
> > >>>>> +            version="$( dpkg-deb --show --showformat '${Version}' 
> "${package}" )" 
> > >>>>> +        fi 
> > >>>>> +        # Now strip any version information that might be 
> available. 
> > >>>>> +        src="$( echo "$src" | cut -d' ' -f1 )" 
> > >>>>> +        # If there is no source field, then the source package 
> has the same name as the 
> > >>>>> +        # binary package. 
> > >>>>> +        if [ -z "${src}" ];then 
> > >>>>> +            src="$( dpkg-deb --show --showformat '${Package}' 
> "${package}" )" 
> > >>>>> +        fi 
> > >>>>> + 
> > >>>>> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) 
> ${ROOTFSDIR} \ 
> > >>>>> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd 
> "/deb-src/${1}/${2}" && \ 
> > >>>>> +                apt-get -y --download-only --only-source source 
> "$2"="$3"' \ 
> > >>>>> +                download-src "${DISTRO}" "${src}" "${version}" 
> > >>>> 
> > >>>> How did you construct this apt-get command? I'm trying to match it 
> > >>>> against the man page of apt-get but there is no reference to 
> "download-src". 
> > >>> 
> > >>> download-src is just the script name. 
> > >>> The shell script call is in below format to pass the args. 
> > >>> 
> > >>> sh -c '<commands>' <script name> <args> 
> > >>> 
> > >> 
> > >> Oh, I see. What's the benefit of this obfuscation? Or is there even 
> any 
> > >> technical need? 
> > > 
> > > Yes. To run multiple commands from a single chroot call. We can either 
> > > invoke sh -c or have a script that contains the commands that could be 
> > > called. 
> > > We are using sh -c and hence the need for arguments to pass in the 
> variables. 
> > > It could very well be multiple chroot calls or a script but this is 
> > > more clean I guess. 
> > 
> > It's not technically needed, giving the commands a name is optional. You 
> > could also unfold the arguments (which would make them more readable). 
>
> Ah. Just tried that. Looks like unfolding is just possible. The man 
> page says read from string, so the 
> variables part of the string are expanded. Its not like a subshell, if 
> I understand correctly now. 
> In that case unfolding does make sense. 
>
> Thanks, 
> Vijai Kumar K 
>
> > 
> > > Also, to note, this style was inherited from the base-apt series by 
> Henning. 
> > > 
> > 
> > Well, if we keep that pattern, then please indent in a more 
> > reader-friendly way: 
> > 
> > sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd "/deb-src/${1}/${2}" && \ 
> >         apt-get -y --download-only --only-source source "$2"="$3"' \ 
> >     download-src "${DISTRO}" "${src}" "${version}" 
> > 
> > Jan 
>

There is atleast one issue in this series. Need to take care when 
HOST_DISTRO!=DISTRO. Issue first identified in rpi-stretch cross 
compilation.

Thanks,
Vijai Kumar K

> 
> > -- 
> > Siemens AG, Corporate Technology, CT RDA IOT SES-DE 
> > Corporate Competence Center Embedded Linux 
>

[-- Attachment #1.2: Type: text/html, Size: 10079 bytes --]

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-07  9:40                                                     ` vijai kumar
@ 2020-04-08  8:13                                                       ` Baurzhan Ismagulov
  2020-04-08 10:04                                                         ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Baurzhan Ismagulov @ 2020-04-08  8:13 UTC (permalink / raw)
  To: isar-users

Hello Vijai Kumar,

On Tue, Apr 07, 2020 at 02:40:09AM -0700, vijai kumar wrote:
> There is atleast one issue in this series. Need to take care when 
> HOST_DISTRO!=DISTRO. Issue first identified in rpi-stretch cross 
> compilation.

Do I understand correctly, I should wait for v5?

With kind regards,
Baurzhan.

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-03 13:05                                       ` [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
  2020-04-07  6:44                                         ` Jan Kiszka
@ 2020-04-08 10:04                                         ` Henning Schild
  2020-04-08 10:37                                           ` vijai kumar
  1 sibling, 1 reply; 52+ messages in thread
From: Henning Schild @ 2020-04-08 10:04 UTC (permalink / raw)
  To: Vijai Kumar K; +Cc: isar-users, Vijai Kumar K

Am Fri, 3 Apr 2020 18:35:51 +0530
schrieb Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>:

> Collect the deb sources of the corresponding deb binaries cached
> in DEBDIR as part of postprocess for those to be later included
> into the final base-apt by do_cache.
> 
> Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> ---
>  meta/classes/image.bbclass  |  2 +-
>  meta/classes/rootfs.bbclass | 46
> +++++++++++++++++++++++++++++++++++++ 2 files changed, 47
> insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index 9fa58f8..1c7a527 100644
> --- a/meta/classes/image.bbclass
> +++ b/meta/classes/image.bbclass
> @@ -60,7 +60,7 @@ image_do_mounts() {
>  }
>  
>  ROOTFSDIR = "${IMAGE_ROOTFS}"
> -ROOTFS_FEATURES += "copy-package-cache clean-package-cache
> generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> clean-package-cache generate-manifest cache-deb-src" ROOTFS_PACKAGES
> += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" ROOTFS_MANIFEST_DEPLOY_DIR
> ?= "${DEPLOY_DIR_IMAGE}" 
> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> index 8bb003d..7bfdfc9 100644
> --- a/meta/classes/rootfs.bbclass
> +++ b/meta/classes/rootfs.bbclass
> @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
>          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
>  }
>  
> +ROOTFS_POSTPROCESS_COMMAND +=
> "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src',
> 'cache_deb_src', '', d)}" +cache_deb_src() {
> +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> +        return 0
> +    fi

Should the source packages not all end up in the cache, so they can and
probably should be fetched from there.

> +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> +
> +    sudo -s <<'EOSUDO'
> +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> +    mkdir -p '${ROOTFSDIR}/deb-src'
> +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> +EOSUDO
> +
> +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> +
> +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read
> package; do
> +        local src="$( dpkg-deb --show --showformat '${Source}'
> "${package}" )"
> +        # If the binary package version and source package version
> are different, then the
> +        # source package version will be present inside "()" of the
> Source field.
> +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd
> ")" -f1 )"
> +        if [ -z ${version} ]; then
> +            version="$( dpkg-deb --show --showformat '${Version}'
> "${package}" )"
> +        fi
> +        # Now strip any version information that might be available.
> +        src="$( echo "$src" | cut -d' ' -f1 )"
> +        # If there is no source field, then the source package has
> the same name as the
> +        # binary package.
> +        if [ -z "${src}" ];then
> +            src="$( dpkg-deb --show --showformat '${Package}'
> "${package}" )"
> +        fi
> +
> +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR}
> \
> +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd
> "/deb-src/${1}/${2}" && \
> +                apt-get -y --download-only --only-source source
> "$2"="$3"' \
> +                download-src "${DISTRO}" "${src}" "${version}"
> +    done

Looks like we are going online without proxy configuration here. It
also needs a BB_NO_NETWORK guard.

And i would suggest to generate the list of things you want to fetch,
factor out the fetcher from dpkg-base and reuse is instead of copying
it.

And i would personally like a new series of patches to be sent without
"in-reply-to". Maybe its my client but i find these deeply nested
threads very hard to follow.

Henning

> +    sudo -s <<'EOSUDO'
> +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> +    umount -l ${ROOTFSDIR}/deb-src
> +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> +EOSUDO
> +}
> +
>  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
>  python do_rootfs_postprocess() {
>      # Take care that its correctly mounted:


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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-08  8:13                                                       ` Baurzhan Ismagulov
@ 2020-04-08 10:04                                                         ` vijai kumar
  2020-04-08 13:32                                                           ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-08 10:04 UTC (permalink / raw)
  To: isar-users

On Wed, Apr 8, 2020 at 1:43 PM Baurzhan Ismagulov <ibr@radix50.net> wrote:
>
> Hello Vijai Kumar,
>
> On Tue, Apr 07, 2020 at 02:40:09AM -0700, vijai kumar wrote:
> > There is atleast one issue in this series. Need to take care when
> > HOST_DISTRO!=DISTRO. Issue first identified in rpi-stretch cross
> > compilation.
>
> Do I understand correctly, I should wait for v5?

Yes Baurzhan.

>
> With kind regards,
> Baurzhan.
>
> --
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20200408081315.hb3m2vrs5bbtnoif%40yssyq.m.ilbers.de.

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-08 10:04                                         ` Henning Schild
@ 2020-04-08 10:37                                           ` vijai kumar
  2020-04-08 12:30                                             ` Henning Schild
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-08 10:37 UTC (permalink / raw)
  To: Henning Schild; +Cc: isar-users, Vijai Kumar K

On Wed, Apr 8, 2020 at 3:34 PM Henning Schild
<henning.schild@siemens.com> wrote:
>
> Am Fri, 3 Apr 2020 18:35:51 +0530
> schrieb Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>:
>
> > Collect the deb sources of the corresponding deb binaries cached
> > in DEBDIR as part of postprocess for those to be later included
> > into the final base-apt by do_cache.
> >
> > Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> > ---
> >  meta/classes/image.bbclass  |  2 +-
> >  meta/classes/rootfs.bbclass | 46
> > +++++++++++++++++++++++++++++++++++++ 2 files changed, 47
> > insertions(+), 1 deletion(-)
> >
> > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> > index 9fa58f8..1c7a527 100644
> > --- a/meta/classes/image.bbclass
> > +++ b/meta/classes/image.bbclass
> > @@ -60,7 +60,7 @@ image_do_mounts() {
> >  }
> >
> >  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache
> > generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> > clean-package-cache generate-manifest cache-deb-src" ROOTFS_PACKAGES
> > += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}" ROOTFS_MANIFEST_DEPLOY_DIR
> > ?= "${DEPLOY_DIR_IMAGE}"
> > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> > index 8bb003d..7bfdfc9 100644
> > --- a/meta/classes/rootfs.bbclass
> > +++ b/meta/classes/rootfs.bbclass
> > @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> >  }
> >
> > +ROOTFS_POSTPROCESS_COMMAND +=
> > "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src',
> > 'cache_deb_src', '', d)}" +cache_deb_src() {
> > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> > +        return 0
> > +    fi
>
> Should the source packages not all end up in the cache, so they can and
> probably should be fetched from there.

Sorry. But I am not able to understand this. Can you please explain it again?

>
> > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> > +
> > +    sudo -s <<'EOSUDO'
> > +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> > +    mkdir -p '${ROOTFSDIR}/deb-src'
> > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> > +EOSUDO
> > +
> > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> > +
> > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read
> > package; do
> > +        local src="$( dpkg-deb --show --showformat '${Source}'
> > "${package}" )"
> > +        # If the binary package version and source package version
> > are different, then the
> > +        # source package version will be present inside "()" of the
> > Source field.
> > +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd
> > ")" -f1 )"
> > +        if [ -z ${version} ]; then
> > +            version="$( dpkg-deb --show --showformat '${Version}'
> > "${package}" )"
> > +        fi
> > +        # Now strip any version information that might be available.
> > +        src="$( echo "$src" | cut -d' ' -f1 )"
> > +        # If there is no source field, then the source package has
> > the same name as the
> > +        # binary package.
> > +        if [ -z "${src}" ];then
> > +            src="$( dpkg-deb --show --showformat '${Package}'
> > "${package}" )"
> > +        fi
> > +
> > +        sudo -E chroot --userspec=$( id -u ):$( id -g ) ${ROOTFSDIR}
> > \
> > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd
> > "/deb-src/${1}/${2}" && \
> > +                apt-get -y --download-only --only-source source
> > "$2"="$3"' \
> > +                download-src "${DISTRO}" "${src}" "${version}"
> > +    done
>
> Looks like we are going online without proxy configuration here. It
> also needs a BB_NO_NETWORK guard.

Will take care of that.

>
> And i would suggest to generate the list of things you want to fetch,
> factor out the fetcher from dpkg-base and reuse is instead of copying
> it.

Sure. I will have a look into how I can reuse that part.

>
> And i would personally like a new series of patches to be sent without
> "in-reply-to". Maybe its my client but i find these deeply nested
> threads very hard to follow.

No Problem. Will send the next series separately.

Thanks,
Vijai Kumar K

>
> Henning
>
> > +    sudo -s <<'EOSUDO'
> > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> > +    umount -l ${ROOTFSDIR}/deb-src
> > +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> > +EOSUDO
> > +}
> > +
> >  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
> >  python do_rootfs_postprocess() {
> >      # Take care that its correctly mounted:
>

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-08 10:37                                           ` vijai kumar
@ 2020-04-08 12:30                                             ` Henning Schild
  2020-04-15 12:29                                               ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Henning Schild @ 2020-04-08 12:30 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users, Vijai Kumar K

Am Wed, 8 Apr 2020 16:07:15 +0530
schrieb vijai kumar <vijaikumar.kanagarajan@gmail.com>:

> On Wed, Apr 8, 2020 at 3:34 PM Henning Schild
> <henning.schild@siemens.com> wrote:
> >
> > Am Fri, 3 Apr 2020 18:35:51 +0530
> > schrieb Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>:
> >  
> > > Collect the deb sources of the corresponding deb binaries cached
> > > in DEBDIR as part of postprocess for those to be later included
> > > into the final base-apt by do_cache.
> > >
> > > Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> > > ---
> > >  meta/classes/image.bbclass  |  2 +-
> > >  meta/classes/rootfs.bbclass | 46
> > > +++++++++++++++++++++++++++++++++++++ 2 files changed, 47
> > > insertions(+), 1 deletion(-)
> > >
> > > diff --git a/meta/classes/image.bbclass
> > > b/meta/classes/image.bbclass index 9fa58f8..1c7a527 100644
> > > --- a/meta/classes/image.bbclass
> > > +++ b/meta/classes/image.bbclass
> > > @@ -60,7 +60,7 @@ image_do_mounts() {
> > >  }
> > >
> > >  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache
> > > generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> > > clean-package-cache generate-manifest cache-deb-src"
> > > ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> > > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
> > > diff --git a/meta/classes/rootfs.bbclass
> > > b/meta/classes/rootfs.bbclass index 8bb003d..7bfdfc9 100644
> > > --- a/meta/classes/rootfs.bbclass
> > > +++ b/meta/classes/rootfs.bbclass
> > > @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> > >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> > >  }
> > >
> > > +ROOTFS_POSTPROCESS_COMMAND +=
> > > "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src',
> > > 'cache_deb_src', '', d)}" +cache_deb_src() {
> > > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> > > +        return 0
> > > +    fi  
> >
> > Should the source packages not all end up in the cache, so they can
> > and probably should be fetched from there.  
> 
> Sorry. But I am not able to understand this. Can you please explain
> it again?

A first build without the cache will fetch all sources and drop them
into "${DEBSRCDIR}"/"${DISTRO}", just the the apt:// fetcher does.
A second build with an enabled cache will place all those src-pkgs in
base-apt (see populate_base_apt repo_add_srcpackage loop).

So a second run of this function here should be able to fetch all those
srcs-pkgs from base-apt. And it would be a good idea to actually do
that to prove that everything is available offline.

Note that for real offline BB_NO_NETWORK would be required. And that
"guard" should still be able to download from base-apt. Thinking about
it again ... i think you do not need the guard. If all src-pkgs are
available offline this function will never access the internet, if it
still tries the invalid proxy "guard" from isar_export_proxies will
trigger.

I think it boils down to removing the
[ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ] && exit 0
and passing the ci offline/cache test

> >  
> > > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> > > +
> > > +    sudo -s <<'EOSUDO'
> > > +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> > > +    mkdir -p '${ROOTFSDIR}/deb-src'
> > > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> > > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> > > +EOSUDO
> > > +
> > > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update

Why is that in here? Doing this in the image is not allowed, only for
isar-apt!

> > > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read
> > > package; do

You are reading this without grabbing the lock. In multiconfig other
images might be filling that directory as you read it. And you might be
calling dpkg-deb on half copied files.

Try deb_dl_dir_import and looping over /var/cache/apt/archives/ ... in
which case you will find yourself dealing with isar-apt packages that
you need to skip.
In fact you should use the manifest as input to not download packages
installed in other images with the same distro but without the feature.

Yeahh multiconfig!

Henning

> > > +        local src="$( dpkg-deb --show --showformat '${Source}'
> > > "${package}" )"
> > > +        # If the binary package version and source package
> > > version are different, then the
> > > +        # source package version will be present inside "()" of
> > > the Source field.
> > > +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd
> > > ")" -f1 )"
> > > +        if [ -z ${version} ]; then
> > > +            version="$( dpkg-deb --show --showformat '${Version}'
> > > "${package}" )"
> > > +        fi
> > > +        # Now strip any version information that might be
> > > available.
> > > +        src="$( echo "$src" | cut -d' ' -f1 )"
> > > +        # If there is no source field, then the source package
> > > has the same name as the
> > > +        # binary package.
> > > +        if [ -z "${src}" ];then
> > > +            src="$( dpkg-deb --show --showformat '${Package}'
> > > "${package}" )"
> > > +        fi
> > > +
> > > +        sudo -E chroot --userspec=$( id -u ):$( id -g )
> > > ${ROOTFSDIR} \
> > > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd
> > > "/deb-src/${1}/${2}" && \
> > > +                apt-get -y --download-only --only-source source
> > > "$2"="$3"' \
> > > +                download-src "${DISTRO}" "${src}" "${version}"
> > > +    done  
> >
> > Looks like we are going online without proxy configuration here. It
> > also needs a BB_NO_NETWORK guard.  
> 
> Will take care of that.
> 
> >
> > And i would suggest to generate the list of things you want to
> > fetch, factor out the fetcher from dpkg-base and reuse is instead
> > of copying it.  
> 
> Sure. I will have a look into how I can reuse that part.
> 
> >
> > And i would personally like a new series of patches to be sent
> > without "in-reply-to". Maybe its my client but i find these deeply
> > nested threads very hard to follow.  
> 
> No Problem. Will send the next series separately.
> 
> Thanks,
> Vijai Kumar K
> 
> >
> > Henning
> >  
> > > +    sudo -s <<'EOSUDO'
> > > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> > > +    umount -l ${ROOTFSDIR}/deb-src
> > > +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> > > +EOSUDO
> > > +}
> > > +
> > >  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
> > >  python do_rootfs_postprocess() {
> > >      # Take care that its correctly mounted:  
> >  


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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-08 10:04                                                         ` vijai kumar
@ 2020-04-08 13:32                                                           ` vijai kumar
  2020-04-15  6:44                                                             ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-08 13:32 UTC (permalink / raw)
  To: isar-users, Baurzhan Ismagulov, Henning Schild

On Wed, Apr 8, 2020 at 3:34 PM vijai kumar
<vijaikumar.kanagarajan@gmail.com> wrote:
>
> On Wed, Apr 8, 2020 at 1:43 PM Baurzhan Ismagulov <ibr@radix50.net> wrote:
> >
> > Hello Vijai Kumar,
> >
> > On Tue, Apr 07, 2020 at 02:40:09AM -0700, vijai kumar wrote:
> > > There is atleast one issue in this series. Need to take care when
> > > HOST_DISTRO!=DISTRO. Issue first identified in rpi-stretch cross
> > > compilation.
> >
> > Do I understand correctly, I should wait for v5?
>
> Yes Baurzhan.

Hi Baurzhan,

On a second thought, I believe deb src caching can be addressed in a
separate series. I see that a couple of more patches would be needed
apart from the P2 of this series. P1 can be merged, if there are no
review comments though. It is a feature by itself and has no hard
dependency on deb-src series as such.

I will start a separate series for src caching taking into account the
review comments gotten so far. Please let me know if this is ok.

Thanks,
Vijai Kumar K

>
> >
> > With kind regards,
> > Baurzhan.
> >
> > --
> > You received this message because you are subscribed to the Google Groups "isar-users" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> > To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20200408081315.hb3m2vrs5bbtnoif%40yssyq.m.ilbers.de.

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-08 13:32                                                           ` vijai kumar
@ 2020-04-15  6:44                                                             ` vijai kumar
  2020-04-15  7:28                                                               ` Jan Kiszka
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-15  6:44 UTC (permalink / raw)
  To: isar-users, Baurzhan Ismagulov

Hi Baurzhan,

Is the below okay? Or should I send that with the new debsrc series?

Thanks,
Vijai Kumar K

On Wed, Apr 8, 2020 at 7:02 PM vijai kumar
<vijaikumar.kanagarajan@gmail.com> wrote:
>
> On Wed, Apr 8, 2020 at 3:34 PM vijai kumar
> <vijaikumar.kanagarajan@gmail.com> wrote:
> >
> > On Wed, Apr 8, 2020 at 1:43 PM Baurzhan Ismagulov <ibr@radix50.net> wrote:
> > >
> > > Hello Vijai Kumar,
> > >
> > > On Tue, Apr 07, 2020 at 02:40:09AM -0700, vijai kumar wrote:
> > > > There is atleast one issue in this series. Need to take care when
> > > > HOST_DISTRO!=DISTRO. Issue first identified in rpi-stretch cross
> > > > compilation.
> > >
> > > Do I understand correctly, I should wait for v5?
> >
> > Yes Baurzhan.
>
> Hi Baurzhan,
>
> On a second thought, I believe deb src caching can be addressed in a
> separate series. I see that a couple of more patches would be needed
> apart from the P2 of this series. P1 can be merged, if there are no
> review comments though. It is a feature by itself and has no hard
> dependency on deb-src series as such.
>
> I will start a separate series for src caching taking into account the
> review comments gotten so far. Please let me know if this is ok.
>
> Thanks,
> Vijai Kumar K
>
> >
> > >
> > > With kind regards,
> > > Baurzhan.
> > >
> > > --
> > > You received this message because you are subscribed to the Google Groups "isar-users" group.
> > > To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> > > To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20200408081315.hb3m2vrs5bbtnoif%40yssyq.m.ilbers.de.

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-15  6:44                                                             ` vijai kumar
@ 2020-04-15  7:28                                                               ` Jan Kiszka
  2020-04-15 13:20                                                                 ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Jan Kiszka @ 2020-04-15  7:28 UTC (permalink / raw)
  To: vijai kumar, isar-users, Baurzhan Ismagulov

On 15.04.20 08:44, vijai kumar wrote:
> Hi Baurzhan,
> 
> Is the below okay? Or should I send that with the new debsrc series?

I would say add a full feature first because Isar users cannot really 
benefit from the series on its own yet, can they?

We need a way to feed the fetched sources into a repo or a recipe that 
generates a shippable OSS medium corresponding to a binary image or a 
script that applies patches to the original sources so that the result 
can be pushed to OSS license scanners. I.e. we need an in-tree use case 
with a test case.

Jan

> 
> Thanks,
> Vijai Kumar K
> 
> On Wed, Apr 8, 2020 at 7:02 PM vijai kumar
> <vijaikumar.kanagarajan@gmail.com> wrote:
>>
>> On Wed, Apr 8, 2020 at 3:34 PM vijai kumar
>> <vijaikumar.kanagarajan@gmail.com> wrote:
>>>
>>> On Wed, Apr 8, 2020 at 1:43 PM Baurzhan Ismagulov <ibr@radix50.net> wrote:
>>>>
>>>> Hello Vijai Kumar,
>>>>
>>>> On Tue, Apr 07, 2020 at 02:40:09AM -0700, vijai kumar wrote:
>>>>> There is atleast one issue in this series. Need to take care when
>>>>> HOST_DISTRO!=DISTRO. Issue first identified in rpi-stretch cross
>>>>> compilation.
>>>>
>>>> Do I understand correctly, I should wait for v5?
>>>
>>> Yes Baurzhan.
>>
>> Hi Baurzhan,
>>
>> On a second thought, I believe deb src caching can be addressed in a
>> separate series. I see that a couple of more patches would be needed
>> apart from the P2 of this series. P1 can be merged, if there are no
>> review comments though. It is a feature by itself and has no hard
>> dependency on deb-src series as such.
>>
>> I will start a separate series for src caching taking into account the
>> review comments gotten so far. Please let me know if this is ok.
>>
>> Thanks,
>> Vijai Kumar K
>>
>>>
>>>>
>>>> With kind regards,
>>>> Baurzhan.
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google Groups "isar-users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
>>>> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20200408081315.hb3m2vrs5bbtnoif%40yssyq.m.ilbers.de.
> 

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-08 12:30                                             ` Henning Schild
@ 2020-04-15 12:29                                               ` vijai kumar
  2020-04-15 18:19                                                 ` Henning Schild
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-15 12:29 UTC (permalink / raw)
  To: Henning Schild; +Cc: isar-users, Vijai Kumar K

On Wed, Apr 8, 2020 at 6:00 PM Henning Schild
<henning.schild@siemens.com> wrote:
>
> Am Wed, 8 Apr 2020 16:07:15 +0530
> schrieb vijai kumar <vijaikumar.kanagarajan@gmail.com>:
>
> > On Wed, Apr 8, 2020 at 3:34 PM Henning Schild
> > <henning.schild@siemens.com> wrote:
> > >
> > > Am Fri, 3 Apr 2020 18:35:51 +0530
> > > schrieb Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>:
> > >
> > > > Collect the deb sources of the corresponding deb binaries cached
> > > > in DEBDIR as part of postprocess for those to be later included
> > > > into the final base-apt by do_cache.
> > > >
> > > > Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
> > > > ---
> > > >  meta/classes/image.bbclass  |  2 +-
> > > >  meta/classes/rootfs.bbclass | 46
> > > > +++++++++++++++++++++++++++++++++++++ 2 files changed, 47
> > > > insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/meta/classes/image.bbclass
> > > > b/meta/classes/image.bbclass index 9fa58f8..1c7a527 100644
> > > > --- a/meta/classes/image.bbclass
> > > > +++ b/meta/classes/image.bbclass
> > > > @@ -60,7 +60,7 @@ image_do_mounts() {
> > > >  }
> > > >
> > > >  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > > > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache
> > > > generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> > > > clean-package-cache generate-manifest cache-deb-src"
> > > > ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> > > > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
> > > > diff --git a/meta/classes/rootfs.bbclass
> > > > b/meta/classes/rootfs.bbclass index 8bb003d..7bfdfc9 100644
> > > > --- a/meta/classes/rootfs.bbclass
> > > > +++ b/meta/classes/rootfs.bbclass
> > > > @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> > > >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> > > >  }
> > > >
> > > > +ROOTFS_POSTPROCESS_COMMAND +=
> > > > "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src',
> > > > 'cache_deb_src', '', d)}" +cache_deb_src() {
> > > > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> > > > +        return 0
> > > > +    fi
> > >
> > > Should the source packages not all end up in the cache, so they can
> > > and probably should be fetched from there.
> >
> > Sorry. But I am not able to understand this. Can you please explain
> > it again?
>
> A first build without the cache will fetch all sources and drop them
> into "${DEBSRCDIR}"/"${DISTRO}", just the the apt:// fetcher does.
> A second build with an enabled cache will place all those src-pkgs in
> base-apt (see populate_base_apt repo_add_srcpackage loop).
>
> So a second run of this function here should be able to fetch all those
> srcs-pkgs from base-apt. And it would be a good idea to actually do
> that to prove that everything is available offline.
>
> Note that for real offline BB_NO_NETWORK would be required. And that
> "guard" should still be able to download from base-apt. Thinking about
> it again ... i think you do not need the guard. If all src-pkgs are
> available offline this function will never access the internet, if it
> still tries the invalid proxy "guard" from isar_export_proxies will
> trigger.
>
> I think it boils down to removing the
> [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ] && exit 0
> and passing the ci offline/cache test
>
> > >
> > > > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> > > > +
> > > > +    sudo -s <<'EOSUDO'
> > > > +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> > > > +    mkdir -p '${ROOTFSDIR}/deb-src'
> > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> > > > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> > > > +EOSUDO
> > > > +
> > > > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
>
> Why is that in here? Doing this in the image is not allowed, only for
> isar-apt!

Hi Henning,

I am sorry. But why is it not allowed? Am I missing any side effects of this
call?

Thanks,
Vijai Kumar K

>
> > > > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read
> > > > package; do
>
> You are reading this without grabbing the lock. In multiconfig other
> images might be filling that directory as you read it. And you might be
> calling dpkg-deb on half copied files.
>
> Try deb_dl_dir_import and looping over /var/cache/apt/archives/ ... in
> which case you will find yourself dealing with isar-apt packages that
> you need to skip.
> In fact you should use the manifest as input to not download packages
> installed in other images with the same distro but without the feature.
>
> Yeahh multiconfig!
>
> Henning
>
> > > > +        local src="$( dpkg-deb --show --showformat '${Source}'
> > > > "${package}" )"
> > > > +        # If the binary package version and source package
> > > > version are different, then the
> > > > +        # source package version will be present inside "()" of
> > > > the Source field.
> > > > +        local version="$( echo "$src" | cut -sd "(" -f2 | cut -sd
> > > > ")" -f1 )"
> > > > +        if [ -z ${version} ]; then
> > > > +            version="$( dpkg-deb --show --showformat '${Version}'
> > > > "${package}" )"
> > > > +        fi
> > > > +        # Now strip any version information that might be
> > > > available.
> > > > +        src="$( echo "$src" | cut -d' ' -f1 )"
> > > > +        # If there is no source field, then the source package
> > > > has the same name as the
> > > > +        # binary package.
> > > > +        if [ -z "${src}" ];then
> > > > +            src="$( dpkg-deb --show --showformat '${Package}'
> > > > "${package}" )"
> > > > +        fi
> > > > +
> > > > +        sudo -E chroot --userspec=$( id -u ):$( id -g )
> > > > ${ROOTFSDIR} \
> > > > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd
> > > > "/deb-src/${1}/${2}" && \
> > > > +                apt-get -y --download-only --only-source source
> > > > "$2"="$3"' \
> > > > +                download-src "${DISTRO}" "${src}" "${version}"
> > > > +    done
> > >
> > > Looks like we are going online without proxy configuration here. It
> > > also needs a BB_NO_NETWORK guard.
> >
> > Will take care of that.
> >
> > >
> > > And i would suggest to generate the list of things you want to
> > > fetch, factor out the fetcher from dpkg-base and reuse is instead
> > > of copying it.
> >
> > Sure. I will have a look into how I can reuse that part.
> >
> > >
> > > And i would personally like a new series of patches to be sent
> > > without "in-reply-to". Maybe its my client but i find these deeply
> > > nested threads very hard to follow.
> >
> > No Problem. Will send the next series separately.
> >
> > Thanks,
> > Vijai Kumar K
> >
> > >
> > > Henning
> > >
> > > > +    sudo -s <<'EOSUDO'
> > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> > > > +    umount -l ${ROOTFSDIR}/deb-src
> > > > +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> > > > +EOSUDO
> > > > +}
> > > > +
> > > >  do_rootfs_postprocess[vardeps] = "${ROOTFS_POSTPROCESS_COMMAND}"
> > > >  python do_rootfs_postprocess() {
> > > >      # Take care that its correctly mounted:
> > >
>

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-15  7:28                                                               ` Jan Kiszka
@ 2020-04-15 13:20                                                                 ` vijai kumar
  2020-04-15 13:44                                                                   ` Jan Kiszka
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-15 13:20 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: isar-users, Baurzhan Ismagulov

On Wed, Apr 15, 2020 at 12:58 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>
> On 15.04.20 08:44, vijai kumar wrote:
> > Hi Baurzhan,
> >
> > Is the below okay? Or should I send that with the new debsrc series?
>
> I would say add a full feature first because Isar users cannot really
> benefit from the series on its own yet, can they?

Patch 1 had its own use case though. It paves way for downstream
layers to add their own postprocess functions which rely on a working
chroot. Atleast I had one usecase downstream(deb-src caching). Since
deb-src caching is also moving upstream I dont really see any usecase
for P1. Postprocess commands can be ordered in such a way that caching
happens before finalize. The patch still paves way for the
functionality said above for downstream layers. But now I don't have
any use cases. It is just a good to have feature now.

>
> We need a way to feed the fetched sources into a repo or a recipe that
> generates a shippable OSS medium corresponding to a binary image or a
> script that applies patches to the original sources so that the result
> can be pushed to OSS license scanners. I.e. we need an in-tree use case
> with a test case.

If I understand correctly, are we also planning for the OSS clearance(
tar containing  source files with patches) code to be upstream?

Thanks,
Vijai Kumar K

>
> Jan
>
> >
> > Thanks,
> > Vijai Kumar K
> >
> > On Wed, Apr 8, 2020 at 7:02 PM vijai kumar
> > <vijaikumar.kanagarajan@gmail.com> wrote:
> >>
> >> On Wed, Apr 8, 2020 at 3:34 PM vijai kumar
> >> <vijaikumar.kanagarajan@gmail.com> wrote:
> >>>
> >>> On Wed, Apr 8, 2020 at 1:43 PM Baurzhan Ismagulov <ibr@radix50.net> wrote:
> >>>>
> >>>> Hello Vijai Kumar,
> >>>>
> >>>> On Tue, Apr 07, 2020 at 02:40:09AM -0700, vijai kumar wrote:
> >>>>> There is atleast one issue in this series. Need to take care when
> >>>>> HOST_DISTRO!=DISTRO. Issue first identified in rpi-stretch cross
> >>>>> compilation.
> >>>>
> >>>> Do I understand correctly, I should wait for v5?
> >>>
> >>> Yes Baurzhan.
> >>
> >> Hi Baurzhan,
> >>
> >> On a second thought, I believe deb src caching can be addressed in a
> >> separate series. I see that a couple of more patches would be needed
> >> apart from the P2 of this series. P1 can be merged, if there are no
> >> review comments though. It is a feature by itself and has no hard
> >> dependency on deb-src series as such.
> >>
> >> I will start a separate series for src caching taking into account the
> >> review comments gotten so far. Please let me know if this is ok.
> >>
> >> Thanks,
> >> Vijai Kumar K
> >>
> >>>
> >>>>
> >>>> With kind regards,
> >>>> Baurzhan.
> >>>>
> >>>> --
> >>>> You received this message because you are subscribed to the Google Groups "isar-users" group.
> >>>> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> >>>> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/20200408081315.hb3m2vrs5bbtnoif%40yssyq.m.ilbers.de.
> >
>
> --
> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
> Corporate Competence Center Embedded Linux

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-15 13:20                                                                 ` vijai kumar
@ 2020-04-15 13:44                                                                   ` Jan Kiszka
  0 siblings, 0 replies; 52+ messages in thread
From: Jan Kiszka @ 2020-04-15 13:44 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users, Baurzhan Ismagulov

On 15.04.20 15:20, vijai kumar wrote:
> On Wed, Apr 15, 2020 at 12:58 PM Jan Kiszka <jan.kiszka@siemens.com> wrote:
>>
>> On 15.04.20 08:44, vijai kumar wrote:
>>> Hi Baurzhan,
>>>
>>> Is the below okay? Or should I send that with the new debsrc series?
>>
>> I would say add a full feature first because Isar users cannot really
>> benefit from the series on its own yet, can they?
> 
> Patch 1 had its own use case though. It paves way for downstream
> layers to add their own postprocess functions which rely on a working
> chroot. Atleast I had one usecase downstream(deb-src caching). Since
> deb-src caching is also moving upstream I dont really see any usecase
> for P1. Postprocess commands can be ordered in such a way that caching
> happens before finalize. The patch still paves way for the
> functionality said above for downstream layers. But now I don't have
> any use cases. It is just a good to have feature now.

I'm not arguing for dropping patch 1. I think we had the discussion 
already that it's cleaner to hard-encode that the final step is final.

> 
>>
>> We need a way to feed the fetched sources into a repo or a recipe that
>> generates a shippable OSS medium corresponding to a binary image or a
>> script that applies patches to the original sources so that the result
>> can be pushed to OSS license scanners. I.e. we need an in-tree use case
>> with a test case.
> 
> If I understand correctly, are we also planning for the OSS clearance(
> tar containing  source files with patches) code to be upstream?

I was just listing possible example. Maybe the first one is of most 
common interest. However, preparing one or more "flat" (patches applied) 
code archives is not an uncommon requirement when you need to feed one 
of those license scanners, may they be free - like FOSSology or scancode 
- or commercial (not wanna promote any of those).

Jan

-- 
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-15 12:29                                               ` vijai kumar
@ 2020-04-15 18:19                                                 ` Henning Schild
  2020-04-16 15:57                                                   ` vijai kumar
  0 siblings, 1 reply; 52+ messages in thread
From: Henning Schild @ 2020-04-15 18:19 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users, Vijai Kumar K

On Wed, 15 Apr 2020 17:59:12 +0530
vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:

> On Wed, Apr 8, 2020 at 6:00 PM Henning Schild
> <henning.schild@siemens.com> wrote:
> >
> > Am Wed, 8 Apr 2020 16:07:15 +0530
> > schrieb vijai kumar <vijaikumar.kanagarajan@gmail.com>:
> >  
> > > On Wed, Apr 8, 2020 at 3:34 PM Henning Schild
> > > <henning.schild@siemens.com> wrote:  
> > > >
> > > > Am Fri, 3 Apr 2020 18:35:51 +0530
> > > > schrieb Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>:
> > > >  
> > > > > Collect the deb sources of the corresponding deb binaries
> > > > > cached in DEBDIR as part of postprocess for those to be later
> > > > > included into the final base-apt by do_cache.
> > > > >
> > > > > Signed-off-by: Vijai Kumar K
> > > > > <Vijaikumar_Kanagarajan@mentor.com> ---
> > > > >  meta/classes/image.bbclass  |  2 +-
> > > > >  meta/classes/rootfs.bbclass | 46
> > > > > +++++++++++++++++++++++++++++++++++++ 2 files changed, 47
> > > > > insertions(+), 1 deletion(-)
> > > > >
> > > > > diff --git a/meta/classes/image.bbclass
> > > > > b/meta/classes/image.bbclass index 9fa58f8..1c7a527 100644
> > > > > --- a/meta/classes/image.bbclass
> > > > > +++ b/meta/classes/image.bbclass
> > > > > @@ -60,7 +60,7 @@ image_do_mounts() {
> > > > >  }
> > > > >
> > > > >  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > > > > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache
> > > > > generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> > > > > clean-package-cache generate-manifest cache-deb-src"
> > > > > ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> > > > > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
> > > > > diff --git a/meta/classes/rootfs.bbclass
> > > > > b/meta/classes/rootfs.bbclass index 8bb003d..7bfdfc9 100644
> > > > > --- a/meta/classes/rootfs.bbclass
> > > > > +++ b/meta/classes/rootfs.bbclass
> > > > > @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> > > > >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> > > > >  }
> > > > >
> > > > > +ROOTFS_POSTPROCESS_COMMAND +=
> > > > > "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src',
> > > > > 'cache_deb_src', '', d)}" +cache_deb_src() {
> > > > > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> > > > > +        return 0
> > > > > +    fi  
> > > >
> > > > Should the source packages not all end up in the cache, so they
> > > > can and probably should be fetched from there.  
> > >
> > > Sorry. But I am not able to understand this. Can you please
> > > explain it again?  
> >
> > A first build without the cache will fetch all sources and drop them
> > into "${DEBSRCDIR}"/"${DISTRO}", just the the apt:// fetcher does.
> > A second build with an enabled cache will place all those src-pkgs
> > in base-apt (see populate_base_apt repo_add_srcpackage loop).
> >
> > So a second run of this function here should be able to fetch all
> > those srcs-pkgs from base-apt. And it would be a good idea to
> > actually do that to prove that everything is available offline.
> >
> > Note that for real offline BB_NO_NETWORK would be required. And that
> > "guard" should still be able to download from base-apt. Thinking
> > about it again ... i think you do not need the guard. If all
> > src-pkgs are available offline this function will never access the
> > internet, if it still tries the invalid proxy "guard" from
> > isar_export_proxies will trigger.
> >
> > I think it boils down to removing the
> > [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ] && exit 0
> > and passing the ci offline/cache test
> >  
> > > >  
> > > > > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> > > > > +
> > > > > +    sudo -s <<'EOSUDO'
> > > > > +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> > > > > +    mkdir -p '${ROOTFSDIR}/deb-src'
> > > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> > > > > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> > > > > +EOSUDO
> > > > > +
> > > > > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update  
> >
> > Why is that in here? Doing this in the image is not allowed, only
> > for isar-apt!  
> 
> Hi Henning,
> 
> I am sorry. But why is it not allowed? Am I missing any side effects
> of this call?

Thanks for asking, please keep doing that when things are unclear.

An "update" stores a copy of the "view on the repo world" in the image.
It is essentially a copy of the Packages.gz or Sources.gz of all repos.
That information changes over time on the servers, while they still
(hopefully) offer to download packages referenced in older version of
those indexes.

Isar relies on that. It fetches all indexes exactly once and later
downloads packages found in the cached versions. Once you update an
index the "view of the world" moves away from "the state of the image".

On a living debian system you would always upgrade packages after
update-ing the indexes. In an "installer" - like Isar - you probably do
not want those dynamics.

So in order to keep "the state of the image" and "the view of the
world" in sync we never "apt-get update" ... except for isar-apt which
is a repo we can/do control.

If a build takes a really long time, there is a slim chance that we can
not actually fetch packages found in our old indexes because upstream
does not provide them anymore. I have not seen real evidence of that
potential problem. It could however manifest if we have a long running
build ... arm without cross ... and do additional fetches in postinst
... like you are implementing.
But whatever you can not fetch in the end, is probably not worth
fetching because it is not what was used to construct your image.

Henning

> Thanks,
> Vijai Kumar K
> 
> >  
> > > > > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read
> > > > > package; do  
> >
> > You are reading this without grabbing the lock. In multiconfig other
> > images might be filling that directory as you read it. And you
> > might be calling dpkg-deb on half copied files.
> >
> > Try deb_dl_dir_import and looping over /var/cache/apt/archives/ ...
> > in which case you will find yourself dealing with isar-apt packages
> > that you need to skip.
> > In fact you should use the manifest as input to not download
> > packages installed in other images with the same distro but without
> > the feature.
> >
> > Yeahh multiconfig!
> >
> > Henning
> >  
> > > > > +        local src="$( dpkg-deb --show --showformat
> > > > > '${Source}' "${package}" )"
> > > > > +        # If the binary package version and source package
> > > > > version are different, then the
> > > > > +        # source package version will be present inside "()"
> > > > > of the Source field.
> > > > > +        local version="$( echo "$src" | cut -sd "(" -f2 |
> > > > > cut -sd ")" -f1 )"
> > > > > +        if [ -z ${version} ]; then
> > > > > +            version="$( dpkg-deb --show --showformat
> > > > > '${Version}' "${package}" )"
> > > > > +        fi
> > > > > +        # Now strip any version information that might be
> > > > > available.
> > > > > +        src="$( echo "$src" | cut -d' ' -f1 )"
> > > > > +        # If there is no source field, then the source
> > > > > package has the same name as the
> > > > > +        # binary package.
> > > > > +        if [ -z "${src}" ];then
> > > > > +            src="$( dpkg-deb --show --showformat '${Package}'
> > > > > "${package}" )"
> > > > > +        fi
> > > > > +
> > > > > +        sudo -E chroot --userspec=$( id -u ):$( id -g )
> > > > > ${ROOTFSDIR} \
> > > > > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd
> > > > > "/deb-src/${1}/${2}" && \
> > > > > +                apt-get -y --download-only --only-source
> > > > > source "$2"="$3"' \
> > > > > +                download-src "${DISTRO}" "${src}"
> > > > > "${version}"
> > > > > +    done  
> > > >
> > > > Looks like we are going online without proxy configuration
> > > > here. It also needs a BB_NO_NETWORK guard.  
> > >
> > > Will take care of that.
> > >  
> > > >
> > > > And i would suggest to generate the list of things you want to
> > > > fetch, factor out the fetcher from dpkg-base and reuse is
> > > > instead of copying it.  
> > >
> > > Sure. I will have a look into how I can reuse that part.
> > >  
> > > >
> > > > And i would personally like a new series of patches to be sent
> > > > without "in-reply-to". Maybe its my client but i find these
> > > > deeply nested threads very hard to follow.  
> > >
> > > No Problem. Will send the next series separately.
> > >
> > > Thanks,
> > > Vijai Kumar K
> > >  
> > > >
> > > > Henning
> > > >  
> > > > > +    sudo -s <<'EOSUDO'
> > > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> > > > > +    umount -l ${ROOTFSDIR}/deb-src
> > > > > +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> > > > > +EOSUDO
> > > > > +}
> > > > > +
> > > > >  do_rootfs_postprocess[vardeps] =
> > > > > "${ROOTFS_POSTPROCESS_COMMAND}" python
> > > > > do_rootfs_postprocess() { # Take care that its correctly
> > > > > mounted:  
> > > >  
> >  


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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-15 18:19                                                 ` Henning Schild
@ 2020-04-16 15:57                                                   ` vijai kumar
  2020-04-16 17:29                                                     ` Henning Schild
  0 siblings, 1 reply; 52+ messages in thread
From: vijai kumar @ 2020-04-16 15:57 UTC (permalink / raw)
  To: Henning Schild; +Cc: isar-users, Vijai Kumar K

On Wed, Apr 15, 2020 at 11:50 PM Henning Schild
<henning.schild@siemens.com> wrote:
>
> On Wed, 15 Apr 2020 17:59:12 +0530
> vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:
>
> > On Wed, Apr 8, 2020 at 6:00 PM Henning Schild
> > <henning.schild@siemens.com> wrote:
> > >
> > > Am Wed, 8 Apr 2020 16:07:15 +0530
> > > schrieb vijai kumar <vijaikumar.kanagarajan@gmail.com>:
> > >
> > > > On Wed, Apr 8, 2020 at 3:34 PM Henning Schild
> > > > <henning.schild@siemens.com> wrote:
> > > > >
> > > > > Am Fri, 3 Apr 2020 18:35:51 +0530
> > > > > schrieb Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>:
> > > > >
> > > > > > Collect the deb sources of the corresponding deb binaries
> > > > > > cached in DEBDIR as part of postprocess for those to be later
> > > > > > included into the final base-apt by do_cache.
> > > > > >
> > > > > > Signed-off-by: Vijai Kumar K
> > > > > > <Vijaikumar_Kanagarajan@mentor.com> ---
> > > > > >  meta/classes/image.bbclass  |  2 +-
> > > > > >  meta/classes/rootfs.bbclass | 46
> > > > > > +++++++++++++++++++++++++++++++++++++ 2 files changed, 47
> > > > > > insertions(+), 1 deletion(-)
> > > > > >
> > > > > > diff --git a/meta/classes/image.bbclass
> > > > > > b/meta/classes/image.bbclass index 9fa58f8..1c7a527 100644
> > > > > > --- a/meta/classes/image.bbclass
> > > > > > +++ b/meta/classes/image.bbclass
> > > > > > @@ -60,7 +60,7 @@ image_do_mounts() {
> > > > > >  }
> > > > > >
> > > > > >  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > > > > > -ROOTFS_FEATURES += "copy-package-cache clean-package-cache
> > > > > > generate-manifest" +ROOTFS_FEATURES += "copy-package-cache
> > > > > > clean-package-cache generate-manifest cache-deb-src"
> > > > > > ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> > > > > > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}"
> > > > > > diff --git a/meta/classes/rootfs.bbclass
> > > > > > b/meta/classes/rootfs.bbclass index 8bb003d..7bfdfc9 100644
> > > > > > --- a/meta/classes/rootfs.bbclass
> > > > > > +++ b/meta/classes/rootfs.bbclass
> > > > > > @@ -201,6 +201,52 @@ rootfs_generate_manifest () {
> > > > > >          ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest
> > > > > >  }
> > > > > >
> > > > > > +ROOTFS_POSTPROCESS_COMMAND +=
> > > > > > "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src',
> > > > > > 'cache_deb_src', '', d)}" +cache_deb_src() {
> > > > > > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> > > > > > +        return 0
> > > > > > +    fi
> > > > >
> > > > > Should the source packages not all end up in the cache, so they
> > > > > can and probably should be fetched from there.
> > > >
> > > > Sorry. But I am not able to understand this. Can you please
> > > > explain it again?
> > >
> > > A first build without the cache will fetch all sources and drop them
> > > into "${DEBSRCDIR}"/"${DISTRO}", just the the apt:// fetcher does.
> > > A second build with an enabled cache will place all those src-pkgs
> > > in base-apt (see populate_base_apt repo_add_srcpackage loop).
> > >
> > > So a second run of this function here should be able to fetch all
> > > those srcs-pkgs from base-apt. And it would be a good idea to
> > > actually do that to prove that everything is available offline.
> > >
> > > Note that for real offline BB_NO_NETWORK would be required. And that
> > > "guard" should still be able to download from base-apt. Thinking
> > > about it again ... i think you do not need the guard. If all
> > > src-pkgs are available offline this function will never access the
> > > internet, if it still tries the invalid proxy "guard" from
> > > isar_export_proxies will trigger.
> > >
> > > I think it boils down to removing the
> > > [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ] && exit 0
> > > and passing the ci offline/cache test
> > >
> > > > >
> > > > > > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> > > > > > +
> > > > > > +    sudo -s <<'EOSUDO'
> > > > > > +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> > > > > > +    mkdir -p '${ROOTFSDIR}/deb-src'
> > > > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> > > > > > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> > > > > > +EOSUDO
> > > > > > +
> > > > > > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update
> > >
> > > Why is that in here? Doing this in the image is not allowed, only
> > > for isar-apt!
> >
> > Hi Henning,
> >
> > I am sorry. But why is it not allowed? Am I missing any side effects
> > of this call?
>
> Thanks for asking, please keep doing that when things are unclear.

Sure. Definitely.

>
> An "update" stores a copy of the "view on the repo world" in the image.
> It is essentially a copy of the Packages.gz or Sources.gz of all repos.
> That information changes over time on the servers, while they still
> (hopefully) offer to download packages referenced in older version of
> those indexes.
>
> Isar relies on that. It fetches all indexes exactly once and later
> downloads packages found in the cached versions. Once you update an
> index the "view of the world" moves away from "the state of the image".
>
> On a living debian system you would always upgrade packages after
> update-ing the indexes. In an "installer" - like Isar - you probably do
> not want those dynamics.
>
> So in order to keep "the state of the image" and "the view of the
> world" in sync we never "apt-get update" ... except for isar-apt which
> is a repo we can/do control.
>
> If a build takes a really long time, there is a slim chance that we can
> not actually fetch packages found in our old indexes because upstream
> does not provide them anymore. I have not seen real evidence of that
> potential problem. It could however manifest if we have a long running
> build ... arm without cross ... and do additional fetches in postinst
> ... like you are implementing.
> But whatever you can not fetch in the end, is probably not worth
> fetching because it is not what was used to construct your image.

Thank you for the explanation Henning. It would be good if this
information is documented somewhere. ;)

Best,
Vijai Kumar K


>
> Henning
>
> > Thanks,
> > Vijai Kumar K
> >
> > >
> > > > > > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read
> > > > > > package; do
> > >
> > > You are reading this without grabbing the lock. In multiconfig other
> > > images might be filling that directory as you read it. And you
> > > might be calling dpkg-deb on half copied files.
> > >
> > > Try deb_dl_dir_import and looping over /var/cache/apt/archives/ ...
> > > in which case you will find yourself dealing with isar-apt packages
> > > that you need to skip.
> > > In fact you should use the manifest as input to not download
> > > packages installed in other images with the same distro but without
> > > the feature.
> > >
> > > Yeahh multiconfig!
> > >
> > > Henning
> > >
> > > > > > +        local src="$( dpkg-deb --show --showformat
> > > > > > '${Source}' "${package}" )"
> > > > > > +        # If the binary package version and source package
> > > > > > version are different, then the
> > > > > > +        # source package version will be present inside "()"
> > > > > > of the Source field.
> > > > > > +        local version="$( echo "$src" | cut -sd "(" -f2 |
> > > > > > cut -sd ")" -f1 )"
> > > > > > +        if [ -z ${version} ]; then
> > > > > > +            version="$( dpkg-deb --show --showformat
> > > > > > '${Version}' "${package}" )"
> > > > > > +        fi
> > > > > > +        # Now strip any version information that might be
> > > > > > available.
> > > > > > +        src="$( echo "$src" | cut -d' ' -f1 )"
> > > > > > +        # If there is no source field, then the source
> > > > > > package has the same name as the
> > > > > > +        # binary package.
> > > > > > +        if [ -z "${src}" ];then
> > > > > > +            src="$( dpkg-deb --show --showformat '${Package}'
> > > > > > "${package}" )"
> > > > > > +        fi
> > > > > > +
> > > > > > +        sudo -E chroot --userspec=$( id -u ):$( id -g )
> > > > > > ${ROOTFSDIR} \
> > > > > > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd
> > > > > > "/deb-src/${1}/${2}" && \
> > > > > > +                apt-get -y --download-only --only-source
> > > > > > source "$2"="$3"' \
> > > > > > +                download-src "${DISTRO}" "${src}"
> > > > > > "${version}"
> > > > > > +    done
> > > > >
> > > > > Looks like we are going online without proxy configuration
> > > > > here. It also needs a BB_NO_NETWORK guard.
> > > >
> > > > Will take care of that.
> > > >
> > > > >
> > > > > And i would suggest to generate the list of things you want to
> > > > > fetch, factor out the fetcher from dpkg-base and reuse is
> > > > > instead of copying it.
> > > >
> > > > Sure. I will have a look into how I can reuse that part.
> > > >
> > > > >
> > > > > And i would personally like a new series of patches to be sent
> > > > > without "in-reply-to". Maybe its my client but i find these
> > > > > deeply nested threads very hard to follow.
> > > >
> > > > No Problem. Will send the next series separately.
> > > >
> > > > Thanks,
> > > > Vijai Kumar K
> > > >
> > > > >
> > > > > Henning
> > > > >
> > > > > > +    sudo -s <<'EOSUDO'
> > > > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> > > > > > +    umount -l ${ROOTFSDIR}/deb-src
> > > > > > +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> > > > > > +EOSUDO
> > > > > > +}
> > > > > > +
> > > > > >  do_rootfs_postprocess[vardeps] =
> > > > > > "${ROOTFS_POSTPROCESS_COMMAND}" python
> > > > > > do_rootfs_postprocess() { # Take care that its correctly
> > > > > > mounted:
> > > > >
> > >
>

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

* Re: [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing
  2020-04-16 15:57                                                   ` vijai kumar
@ 2020-04-16 17:29                                                     ` Henning Schild
  0 siblings, 0 replies; 52+ messages in thread
From: Henning Schild @ 2020-04-16 17:29 UTC (permalink / raw)
  To: vijai kumar; +Cc: isar-users, Vijai Kumar K

On Thu, 16 Apr 2020 21:27:54 +0530
vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:

> On Wed, Apr 15, 2020 at 11:50 PM Henning Schild
> <henning.schild@siemens.com> wrote:
> >
> > On Wed, 15 Apr 2020 17:59:12 +0530
> > vijai kumar <vijaikumar.kanagarajan@gmail.com> wrote:
> >  
> > > On Wed, Apr 8, 2020 at 6:00 PM Henning Schild
> > > <henning.schild@siemens.com> wrote:  
> > > >
> > > > Am Wed, 8 Apr 2020 16:07:15 +0530
> > > > schrieb vijai kumar <vijaikumar.kanagarajan@gmail.com>:
> > > >  
> > > > > On Wed, Apr 8, 2020 at 3:34 PM Henning Schild
> > > > > <henning.schild@siemens.com> wrote:  
> > > > > >
> > > > > > Am Fri, 3 Apr 2020 18:35:51 +0530
> > > > > > schrieb Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>:
> > > > > >  
> > > > > > > Collect the deb sources of the corresponding deb binaries
> > > > > > > cached in DEBDIR as part of postprocess for those to be
> > > > > > > later included into the final base-apt by do_cache.
> > > > > > >
> > > > > > > Signed-off-by: Vijai Kumar K
> > > > > > > <Vijaikumar_Kanagarajan@mentor.com> ---
> > > > > > >  meta/classes/image.bbclass  |  2 +-
> > > > > > >  meta/classes/rootfs.bbclass | 46
> > > > > > > +++++++++++++++++++++++++++++++++++++ 2 files changed, 47
> > > > > > > insertions(+), 1 deletion(-)
> > > > > > >
> > > > > > > diff --git a/meta/classes/image.bbclass
> > > > > > > b/meta/classes/image.bbclass index 9fa58f8..1c7a527 100644
> > > > > > > --- a/meta/classes/image.bbclass
> > > > > > > +++ b/meta/classes/image.bbclass
> > > > > > > @@ -60,7 +60,7 @@ image_do_mounts() {
> > > > > > >  }
> > > > > > >
> > > > > > >  ROOTFSDIR = "${IMAGE_ROOTFS}"
> > > > > > > -ROOTFS_FEATURES += "copy-package-cache
> > > > > > > clean-package-cache generate-manifest" +ROOTFS_FEATURES
> > > > > > > += "copy-package-cache clean-package-cache
> > > > > > > generate-manifest cache-deb-src" ROOTFS_PACKAGES +=
> > > > > > > "${IMAGE_PREINSTALL} ${IMAGE_INSTALL}"
> > > > > > > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" diff
> > > > > > > --git a/meta/classes/rootfs.bbclass
> > > > > > > b/meta/classes/rootfs.bbclass index 8bb003d..7bfdfc9
> > > > > > > 100644 --- a/meta/classes/rootfs.bbclass +++
> > > > > > > b/meta/classes/rootfs.bbclass @@ -201,6 +201,52 @@
> > > > > > > rootfs_generate_manifest () {
> > > > > > > ${ROOTFS_MANIFEST_DEPLOY_DIR}/"${PF}".manifest }
> > > > > > >
> > > > > > > +ROOTFS_POSTPROCESS_COMMAND +=
> > > > > > > "${@bb.utils.contains('ROOTFS_FEATURES', 'cache-deb-src',
> > > > > > > 'cache_deb_src', '', d)}" +cache_deb_src() {
> > > > > > > +    if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> > > > > > > +        return 0
> > > > > > > +    fi  
> > > > > >
> > > > > > Should the source packages not all end up in the cache, so
> > > > > > they can and probably should be fetched from there.  
> > > > >
> > > > > Sorry. But I am not able to understand this. Can you please
> > > > > explain it again?  
> > > >
> > > > A first build without the cache will fetch all sources and drop
> > > > them into "${DEBSRCDIR}"/"${DISTRO}", just the the apt://
> > > > fetcher does. A second build with an enabled cache will place
> > > > all those src-pkgs in base-apt (see populate_base_apt
> > > > repo_add_srcpackage loop).
> > > >
> > > > So a second run of this function here should be able to fetch
> > > > all those srcs-pkgs from base-apt. And it would be a good idea
> > > > to actually do that to prove that everything is available
> > > > offline.
> > > >
> > > > Note that for real offline BB_NO_NETWORK would be required. And
> > > > that "guard" should still be able to download from base-apt.
> > > > Thinking about it again ... i think you do not need the guard.
> > > > If all src-pkgs are available offline this function will never
> > > > access the internet, if it still tries the invalid proxy
> > > > "guard" from isar_export_proxies will trigger.
> > > >
> > > > I think it boils down to removing the
> > > > [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ] && exit 0
> > > > and passing the ci offline/cache test
> > > >  
> > > > > >  
> > > > > > > +    mkdir -p "${DEBSRCDIR}"/"${DISTRO}"
> > > > > > > +
> > > > > > > +    sudo -s <<'EOSUDO'
> > > > > > > +    cp -L /etc/resolv.conf '${ROOTFSDIR}/etc'
> > > > > > > +    mkdir -p '${ROOTFSDIR}/deb-src'
> > > > > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' || \
> > > > > > > +    mount --bind '${DEBSRCDIR}' '${ROOTFSDIR}/deb-src'
> > > > > > > +EOSUDO
> > > > > > > +
> > > > > > > +    sudo -E chroot ${ROOTFSDIR} /usr/bin/apt-get update  
> > > >
> > > > Why is that in here? Doing this in the image is not allowed,
> > > > only for isar-apt!  
> > >
> > > Hi Henning,
> > >
> > > I am sorry. But why is it not allowed? Am I missing any side
> > > effects of this call?  
> >
> > Thanks for asking, please keep doing that when things are unclear.  
> 
> Sure. Definitely.
> 
> >
> > An "update" stores a copy of the "view on the repo world" in the
> > image. It is essentially a copy of the Packages.gz or Sources.gz of
> > all repos. That information changes over time on the servers, while
> > they still (hopefully) offer to download packages referenced in
> > older version of those indexes.
> >
> > Isar relies on that. It fetches all indexes exactly once and later
> > downloads packages found in the cached versions. Once you update an
> > index the "view of the world" moves away from "the state of the
> > image".
> >
> > On a living debian system you would always upgrade packages after
> > update-ing the indexes. In an "installer" - like Isar - you
> > probably do not want those dynamics.
> >
> > So in order to keep "the state of the image" and "the view of the
> > world" in sync we never "apt-get update" ... except for isar-apt
> > which is a repo we can/do control.
> >
> > If a build takes a really long time, there is a slim chance that we
> > can not actually fetch packages found in our old indexes because
> > upstream does not provide them anymore. I have not seen real
> > evidence of that potential problem. It could however manifest if we
> > have a long running build ... arm without cross ... and do
> > additional fetches in postinst ... like you are implementing.
> > But whatever you can not fetch in the end, is probably not worth
> > fetching because it is not what was used to construct your image.  
> 
> Thank you for the explanation Henning. It would be good if this
> information is documented somewhere. ;)

Excellent idea! How about you rewrite it in your own words and send a
patch. I will review that. Why you and your own words ... well you will
be the first test audience to make sure its good docs.

I mean that partly as a joke and partly serious, patches are really
welcome.

Henning

> Best,
> Vijai Kumar K
> 
> 
> >
> > Henning
> >  
> > > Thanks,
> > > Vijai Kumar K
> > >  
> > > >  
> > > > > > > +    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while
> > > > > > > read package; do  
> > > >
> > > > You are reading this without grabbing the lock. In multiconfig
> > > > other images might be filling that directory as you read it.
> > > > And you might be calling dpkg-deb on half copied files.
> > > >
> > > > Try deb_dl_dir_import and looping over /var/cache/apt/archives/
> > > > ... in which case you will find yourself dealing with isar-apt
> > > > packages that you need to skip.
> > > > In fact you should use the manifest as input to not download
> > > > packages installed in other images with the same distro but
> > > > without the feature.
> > > >
> > > > Yeahh multiconfig!
> > > >
> > > > Henning
> > > >  
> > > > > > > +        local src="$( dpkg-deb --show --showformat
> > > > > > > '${Source}' "${package}" )"
> > > > > > > +        # If the binary package version and source
> > > > > > > package version are different, then the
> > > > > > > +        # source package version will be present inside
> > > > > > > "()" of the Source field.
> > > > > > > +        local version="$( echo "$src" | cut -sd "(" -f2 |
> > > > > > > cut -sd ")" -f1 )"
> > > > > > > +        if [ -z ${version} ]; then
> > > > > > > +            version="$( dpkg-deb --show --showformat
> > > > > > > '${Version}' "${package}" )"
> > > > > > > +        fi
> > > > > > > +        # Now strip any version information that might be
> > > > > > > available.
> > > > > > > +        src="$( echo "$src" | cut -d' ' -f1 )"
> > > > > > > +        # If there is no source field, then the source
> > > > > > > package has the same name as the
> > > > > > > +        # binary package.
> > > > > > > +        if [ -z "${src}" ];then
> > > > > > > +            src="$( dpkg-deb --show --showformat
> > > > > > > '${Package}' "${package}" )"
> > > > > > > +        fi
> > > > > > > +
> > > > > > > +        sudo -E chroot --userspec=$( id -u ):$( id -g )
> > > > > > > ${ROOTFSDIR} \
> > > > > > > +            sh -c 'mkdir -p "/deb-src/${1}/${2}" && cd
> > > > > > > "/deb-src/${1}/${2}" && \
> > > > > > > +                apt-get -y --download-only --only-source
> > > > > > > source "$2"="$3"' \
> > > > > > > +                download-src "${DISTRO}" "${src}"
> > > > > > > "${version}"
> > > > > > > +    done  
> > > > > >
> > > > > > Looks like we are going online without proxy configuration
> > > > > > here. It also needs a BB_NO_NETWORK guard.  
> > > > >
> > > > > Will take care of that.
> > > > >  
> > > > > >
> > > > > > And i would suggest to generate the list of things you want
> > > > > > to fetch, factor out the fetcher from dpkg-base and reuse is
> > > > > > instead of copying it.  
> > > > >
> > > > > Sure. I will have a look into how I can reuse that part.
> > > > >  
> > > > > >
> > > > > > And i would personally like a new series of patches to be
> > > > > > sent without "in-reply-to". Maybe its my client but i find
> > > > > > these deeply nested threads very hard to follow.  
> > > > >
> > > > > No Problem. Will send the next series separately.
> > > > >
> > > > > Thanks,
> > > > > Vijai Kumar K
> > > > >  
> > > > > >
> > > > > > Henning
> > > > > >  
> > > > > > > +    sudo -s <<'EOSUDO'
> > > > > > > +    mountpoint -q '${ROOTFSDIR}/deb-src' && \
> > > > > > > +    umount -l ${ROOTFSDIR}/deb-src
> > > > > > > +    rm -rf '${ROOTFSDIR}/etc/resolv.conf'
> > > > > > > +EOSUDO
> > > > > > > +}
> > > > > > > +
> > > > > > >  do_rootfs_postprocess[vardeps] =
> > > > > > > "${ROOTFS_POSTPROCESS_COMMAND}" python
> > > > > > > do_rootfs_postprocess() { # Take care that its correctly
> > > > > > > mounted:  
> > > > > >  
> > > >  
> >  


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

end of thread, other threads:[~2020-04-16 17:29 UTC | newest]

Thread overview: 52+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-06 14:06 [PATCH] rootfs: Make rootfs_postprocess_finalize the last step Vijai Kumar K
2020-02-06 17:21 ` Jan Kiszka
2020-02-06 17:47   ` vijai kumar
2020-02-06 18:09     ` Jan Kiszka
2020-02-06 18:28       ` vijai kumar
2020-02-10  5:37         ` [PATCH v2] rootfs: Make rootfs finalize a separate task Vijai Kumar K
2020-02-11 11:38           ` Henning Schild
2020-02-11 14:14             ` vijai kumar
2020-02-11 15:20               ` Henning Schild
2020-02-11 18:07               ` Jan Kiszka
2020-02-13 10:08                 ` [PATCH v2 1/2] " Vijai Kumar K
2020-02-13 10:08                   ` [PATCH v2 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
2020-02-14  5:48                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task Vijai Kumar K
2020-02-14  5:48                       ` [PATCH v3 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
2020-02-14  8:19                         ` Jan Kiszka
2020-02-14  8:41                           ` vijai kumar
2020-02-14  8:45                             ` vijai kumar
2020-03-11  7:16                       ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
2020-04-01  7:25                         ` vijai kumar
2020-04-01  8:19                           ` Henning Schild
2020-04-01 10:29                             ` vijai kumar
2020-04-03  6:50                               ` vijai kumar
2020-04-03  8:30                                 ` Baurzhan Ismagulov
2020-04-03  8:50                                   ` vijai kumar
2020-04-03 13:05                                     ` [PATCH v4 " Vijai Kumar K
2020-04-03 13:05                                       ` [PATCH v4 2/2] meta: cache deb srcs as part of postprocessing Vijai Kumar K
2020-04-07  6:44                                         ` Jan Kiszka
2020-04-07  6:58                                           ` vijai kumar
2020-04-07  7:04                                             ` Jan Kiszka
2020-04-07  7:59                                               ` vijai kumar
2020-04-07  8:38                                                 ` Jan Kiszka
2020-04-07  9:08                                                   ` vijai kumar
2020-04-07  9:40                                                     ` vijai kumar
2020-04-08  8:13                                                       ` Baurzhan Ismagulov
2020-04-08 10:04                                                         ` vijai kumar
2020-04-08 13:32                                                           ` vijai kumar
2020-04-15  6:44                                                             ` vijai kumar
2020-04-15  7:28                                                               ` Jan Kiszka
2020-04-15 13:20                                                                 ` vijai kumar
2020-04-15 13:44                                                                   ` Jan Kiszka
2020-04-08 10:04                                         ` Henning Schild
2020-04-08 10:37                                           ` vijai kumar
2020-04-08 12:30                                             ` Henning Schild
2020-04-15 12:29                                               ` vijai kumar
2020-04-15 18:19                                                 ` Henning Schild
2020-04-16 15:57                                                   ` vijai kumar
2020-04-16 17:29                                                     ` Henning Schild
2020-04-07  6:19                                     ` [PATCH v3 1/2] rootfs: Make rootfs finalize a separate task vijai kumar
2020-04-07  6:45                                       ` Jan Kiszka
2020-04-07  6:53                                         ` vijai kumar
2020-04-07  7:12                                       ` Baurzhan Ismagulov
2020-04-07  8:04                                         ` vijai kumar

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