From: Henning Schild <henning.schild@siemens.com>
To: <Venkata.Pyla@toshiba-tsip.com>
Cc: <isar-users@googlegroups.com>, <amikan@ilbers.de>,
<jan.kiszka@siemens.com>, <kazuhiro3.hayashi@toshiba.co.jp>,
<dinesh.kumar@toshiba-tsip.com>, <ibr@radix50.net>
Subject: Re: [PATCH] image.bbclass: fix non-reproducible file time-stamps inside rootfs image
Date: Wed, 4 Jan 2023 14:53:52 +0100 [thread overview]
Message-ID: <20230104145352.29d67908@md1za8fc.ad001.siemens.net> (raw)
In-Reply-To: <OSYPR01MB554258DF5F72329FAC647EE4A4F59@OSYPR01MB5542.jpnprd01.prod.outlook.com>
Am Wed, 4 Jan 2023 13:48:10 +0000
schrieb <Venkata.Pyla@toshiba-tsip.com>:
> >-----Original Message-----
> >From: isar-users@googlegroups.com <isar-users@googlegroups.com> On
> >Behalf Of Henning Schild
> >Sent: 04 January 2023 15:00
> >To: pyla venkata(TSIP TMIEC ODG Porting) <Venkata.Pyla@toshiba-
> >tsip.com>
> >Cc: isar-users@googlegroups.com; amikan@ilbers.de;
> >jan.kiszka@siemens.com; hayashi kazuhiro(林 和宏 □SWC◯ACT)
> ><kazuhiro3.hayashi@toshiba.co.jp>; dinesh kumar(TSIP TMIEC ODG
> >Porting) <dinesh.kumar@toshiba-tsip.com>; Baurzhan Ismagulov
> ><ibr@radix50.net> Subject: Re: [PATCH] image.bbclass: fix
> >non-reproducible file time-stamps inside rootfs image
> >
> >Am Wed, 4 Jan 2023 07:54:44 +0000
> >schrieb <Venkata.Pyla@toshiba-tsip.com>:
> >
> >> >-----Original Message-----
> >> >From: isar-users@googlegroups.com <isar-users@googlegroups.com> On
> >> >Behalf Of Henning Schild
> >> >Sent: 04 January 2023 00:36
> >> >To: pyla venkata(TSIP TMIEC ODG Porting)
> >> ><Venkata.Pyla@toshiba- tsip.com>
> >> >Cc: isar-users@googlegroups.com; amikan@ilbers.de;
> >> >jan.kiszka@siemens.com; hayashi kazuhiro(林 和宏 □SWC◯ACT)
> >> ><kazuhiro3.hayashi@toshiba.co.jp>; dinesh kumar(TSIP TMIEC ODG
> >> >Porting) <dinesh.kumar@toshiba-tsip.com> Subject: Re: [PATCH]
> >> >image.bbclass: fix non-reproducible file time-stamps inside rootfs
> >> >image
> >> >
> >> >Am Tue, 3 Jan 2023 14:10:14 +0000
> >> >schrieb <Venkata.Pyla@toshiba-tsip.com>:
> >> >
> >> >> >-----Original Message-----
> >> >> >From: isar-users@googlegroups.com
> >> >> ><isar-users@googlegroups.com> On Behalf Of Henning Schild
> >> >> >Sent: 02 January 2023 22:14
> >> >> >To: pyla venkata(TSIP TMIEC ODG Porting)
> >> >> ><Venkata.Pyla@toshiba- tsip.com>
> >> >> >Cc: isar-users@googlegroups.com; amikan@ilbers.de;
> >> >> >jan.kiszka@siemens.com; hayashi kazuhiro(林 和宏
> >> >> >□SWC◯ACT) <kazuhiro3.hayashi@toshiba.co.jp>; dinesh
> >> >> >kumar(TSIP TMIEC ODG Porting)
> >> >> ><dinesh.kumar@toshiba-tsip.com> Subject: Re: [PATCH]
> >> >> >image.bbclass: fix non-reproducible file time-stamps inside
> >> >> >rootfs image
> >> >> >
> >> >> >Am Mon, 2 Jan 2023 20:28:28 +0530 schrieb
> >> >> >venkata.pyla@toshiba-tsip.com:
> >> >> >
> >> >> >> From: venkata pyla <venkata.pyla@toshiba-tsip.com>
> >> >> >>
> >> >> >> As part of reproducible-build work, the rootfs images
> >> >> >> generated on same source should be identical between two
> >> >> >> builds.
> >> >> >>
> >> >> >> In this commit it tries to solve one of the non-reproducible
> >> >> >> problem i.e. the rootfs file time-stamps generated during
> >> >> >> build time are not reproducible, it uses one of the solution
> >> >> >> provided in the debian live-build image project (refer [1]),
> >> >> >> it fixes by finding all the files/folders that are
> >> >> >> gernerated newly and set the time-stamp provided by
> >> >> >> `SOURCE_DATE_EPOCH` environment variable.
> >> >> >>
> >> >> >> [1]
> >> >> >> https://salsa.debian.org/live-team/live-build/-/merge_requests/2
> >> >> >> 18
> >> >> >>
> >> >> >> Signed-off-by: venkata pyla <venkata.pyla@toshiba-tsip.com>
> >> >> >> ---
> >> >> >> meta/classes/image.bbclass | 9 +++++++++
> >> >> >> 1 file changed, 9 insertions(+)
> >> >> >>
> >> >> >> diff --git a/meta/classes/image.bbclass
> >> >> >> b/meta/classes/image.bbclass index 813e1f3..f592a12 100644
> >> >> >> --- a/meta/classes/image.bbclass
> >> >> >> +++ b/meta/classes/image.bbclass
> >> >> >> @@ -430,6 +430,15 @@ do_rootfs_finalize() {
> >> >> >> "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list"
> >> >> >>
> >> >> >> rm -f "${ROOTFSDIR}/etc/apt/sources-list"
> >> >> >> +
> >> >> >> + # Set same time-stamps to the newly generated
> >> >> >> file/folders in the
> >> >> >> + # rootfs image for the purpose of reproducible
> >> >> >> builds.
> >> >> >> + test ! -z "${SOURCE_DATE_EPOCH}" && \
> >> >> >> + find ${ROOTFSDIR} -newermt \
> >> >> >> + "$(date -d@${SOURCE_DATE_EPOCH} '+%Y-%m-%d
> >> >> >> %H:%M:%S')" \
> >> >> >> + -printf "%y %p\n" \
> >> >> >> + -exec touch '{}' -h -d@${SOURCE_DATE_EPOCH}
> >> >> >> ';'
> >> >> >> +
> >> >> >
> >> >> >This looks like i have seen it before. For me that is _way_ too
> >> >> >generic and something that is not a package touches files all
> >> >> >over the place. If some package now wants to intentionally
> >> >> >bring a file that is from a far away future?
> >> >> >
> >> >> >Which files are we talking about here? It can basically only be
> >> >> >metadata and other little places where we violate our
> >> >> >"everything comes from a package" rule.
> >> >>
> >> >> files/folder/symbolic-link that are modified or generated during
> >> >> build time like /etc/os-release /etc/hostname .
> >> >> .
> >> >> .
> >> >> /var/lib/dpkg/info/*
> >> >> /var/cache/*
> >> >> ---
> >> >>
> >> >> I have printed all the files that modified during build by
> >> >> executing below command find ${ROOTFSDIR} -newermt "$(date
> >> >> -d@${SOURCE_DATE_EPOCH} '+%Y-%m-%d %H:%M:%S')" -printf "%t %y
> >%p\n"
> >> >>
> >> >> modified_files_times.txt
> >> >>
> >> >> attached modified_files_times.txt for your reference, all these
> >> >> files/folders/symbolic-link are generated or modified during
> >> >> build time.
> >> >
> >> >So i am guessing it is about anything that comes out of
> >> >postprocess functions and maintainer scripts like postinst ?
> >>
> >> Yes, those are the files that are modified by the packages and have
> >> different timestamp on each build. I think it is okay to set
> >> reproducible times-tamp for such files, as they are not coming from
> >> the packages but are modified at build time.
> >
> >Sure they are OK. But if i read your patch correctly you will
> >potentially adjust times on ALL files, not just some for which it
> >might be OK.
> >
> >And it uses a variable which does not have a default, should we not
> >set that to something? Or help users to choose a good value for it.
>
> Setting default value, I didn't think of it because reproducible
> builds may not be required for regular builds, however when someone
> wants it can be enable by setting the value to it. So as you
> mentioned it is good to mention somewhere to help users to choose
> good value for it, I am thinking to add it in doc/user_manual.md
Yes, user manual or maybe local.conf.sample but commented out. But some
value that works and makes sense needs to be given to people. Otherwise
i would set
SOURCE_DATE_EPOCH="just a guess 42"
which might not work
Henning
> >
> >Without this variable and a clue on a value to pick, this is all
> >dead code.
> >
> >> >
> >> >> >
> >> >> >Has this ever been tested against a complex layer, has any of
> >> >> >the repro work ever looked at something bigger than the very
> >> >> >artificial isar base image?
> >> >> Similar implementations were used in the projects like
> >> >> Debian/live-build[1] and poky[2]
> >> >>
> >> >> [1]
> >> >> https://salsa.debian.org/live-team/live-build/-/blob/master/scripts
> >> >> /bu
> >> >> ild/efi-image#L57
> >> >> [2]
> >> >> https://github.com/yoctoproject/poky/blob/master/meta/classes-recip
> >> >> e/i
> >> >> mage.bbclass#L673
> >> >
> >> >I am talking about isar layers not other projects.
> >> >
> >> >> >
> >> >> >I think a better start would be to bbwarn and only much later
> >> >> >move to "-exec touch".
> >> >> >
> >> >> >We recently added CI tests for reproducible building. Would be
> >> >> >nice to the two patches. p1 writes a test-case that goes red,
> >> >> >p2 (this one) makes it go green
> >> >> The patch (p1) already been sent [1], for writing test-case to
> >> >> verify reproducible build problems, the test-case is getting
> >> >> failed (shows non-reproducible time-stamp problem in
> >> >> build/diffoscope-output.txt) when executed without this patch,
> >> >> and after applying this patch it will still show fail (because
> >> >> there are other reproducible problems to fix) but the
> >> >> non-reproducible timestamp problem in rootfs shows fixed.
> >> >
> >> >So the code is there but not used because it goes failed anyhow?
> >> >In that case i would suggest to rewrite it in a way that it does
> >> >not fail and can run in CI. It could for example ignore "known
> >> >issues" and be enabled, where then this very series would remove
> >> >a few "known issues" in p2 (p1 would be to introduce all
> >> >currently known issues and enable that thing in CI) and p3 would
> >> >be what we look at here
> >>
> >> You mean run the test and just ignore the results?
> >
> >Ignore some, the ones we know as violators that we still need to
> >work on. But do not ignore anything coming up as new problems,
> >maybe/likely in layers.
> >
> >Again, has this ever been tested on anything but the very boring
> >isar core? isar- cip-core could be interesting as well, especially
> >the image cip-core-image- security
> >
> I have executed reproducible build tests in isar-cip-core image
> manually (not with the test-suite) and reported the problem as well
> here [1] [1]
> https://gitlab.com/cip-project/cip-core/isar-cip-core/-/issues/31
>
> >> >
> >> >Not sure i understood but it sounds like we have a test that we
> >> >only run manually, and i want it to run in CI. In fact a script
> >> >to check for repro issues should be so generic that any layer can
> >> >use it.
> >>
> >> Eventually the repro-build test-case should go to CI, I will plan
> >> to do it.
> >>
> >> Can I know where the isar CI pipe lines are running? I couldn't
> >> see in isar-github may be running some other place?
> >
> >Unfortunately the two places that run it are not public and would
> >require you to receive an account. You could ask Baurzhan if you can
> >get one, or you just run it yourself manually while working on the
> >patches. If it is enabled and will ever fail, you will likely get
> >reports from CI sent to you.
>
> Got it, then I will test them manually as usual.
>
> >
> >Henning
> >
> >> >
> >> >So your vision would be that isar core brings that script and i.e.
> >> >jailhouse-images can run it on all its images. And a few calls to
> >> >the script will also be in testsuite/ and be called in pipelines
> >> >regularly.
> >> >
> >> >Henning
> >> >
> >> >> [1]
> >> >> https://github.com/ilbers/isar/commit/9698445eade76fab81e2dc16d4cb5
> >> >> 8b2
> >> >> 4e953cb9
> >> >>
> >> >> >
> >> >> >Henning
> >> >> >
> >> >> >> EOSUDO
> >> >> >> }
> >> >> >> addtask rootfs_finalize before do_rootfs after
> >> >> >> do_rootfs_postprocess
> >> >> >
> >> >> >--
> >> >> >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/20230102174418.686715cf%40md1za8fc.ad001.siemens.net.
> >> >
> >> >--
> >> >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/20230103200543.07e987ba%40md1za8fc.ad001.siemens.net.
> >
> >--
> >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/20230104102934.042477a8%40md1za8fc.ad001.siemens.net.
>
next prev parent reply other threads:[~2023-01-04 13:53 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-02 14:58 venkata.pyla
2023-01-02 15:32 ` Jan Kiszka
2023-01-03 5:54 ` Venkata.Pyla
2023-01-02 16:44 ` Henning Schild
2023-01-03 8:05 ` Jan Kiszka
2023-01-03 18:51 ` Henning Schild
2023-01-03 14:10 ` Venkata.Pyla
2023-01-03 19:05 ` Henning Schild
2023-01-04 7:54 ` Venkata.Pyla
2023-01-04 9:29 ` Henning Schild
2023-01-04 13:48 ` Venkata.Pyla
2023-01-04 13:53 ` Henning Schild [this message]
2023-01-04 14:35 ` Jan Kiszka
2023-01-04 14:50 ` Venkata.Pyla
2023-01-04 15:07 ` Henning Schild
2023-01-04 15:34 ` Venkata.Pyla
2023-01-05 6:18 ` [PATCH v2 0/1] Fix for reproducible build issue venkata.pyla
2023-01-05 6:18 ` [PATCH v2 1/1] image.bbclass: fix non-reproducible file time-stamps inside rootfs venkata.pyla
2023-01-05 8:19 ` Henning Schild
2023-01-05 9:50 ` Moessbauer, Felix
2023-01-05 17:05 ` Henning Schild
2023-01-06 2:08 ` Moessbauer, Felix
2023-01-05 13:52 ` Venkata.Pyla
2023-01-05 15:12 ` [PATCH v3 0/1] Fix for reproducible build issue venkata.pyla
2023-01-05 15:12 ` [PATCH v3 1/1] image.bbclass: fix non-reproducible file time-stamps inside rootfs venkata.pyla
2023-01-06 9:45 ` Moessbauer, Felix
2023-01-06 10:17 ` Venkata.Pyla
2023-01-05 16:49 ` [PATCH v2 " Henning Schild
2023-01-04 15:01 ` [PATCH] image.bbclass: fix non-reproducible file time-stamps inside rootfs image Henning Schild
2023-01-04 15:27 ` Jan Kiszka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230104145352.29d67908@md1za8fc.ad001.siemens.net \
--to=henning.schild@siemens.com \
--cc=Venkata.Pyla@toshiba-tsip.com \
--cc=amikan@ilbers.de \
--cc=dinesh.kumar@toshiba-tsip.com \
--cc=ibr@radix50.net \
--cc=isar-users@googlegroups.com \
--cc=jan.kiszka@siemens.com \
--cc=kazuhiro3.hayashi@toshiba.co.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox