From: Ingo Molnar <mingo@elte.hu>
To: Michal Marek <mmarek@suse.cz>
Cc: anil_ravindranath@pmc-sierra.com, mchehab@redhat.com,
benh@kernel.crashing.org, x86@kernel.org, mac@melware.de,
aacraid@adaptec.com, linux-mtd@lists.infradead.org,
allan.stephens@windriver.com, hpa@zytor.com,
netdev@vger.kernel.org, t.sailer@alumni.ethz.ch,
gwingerde@gmail.com, IvDoorn@gmail.com, elf@buici.com,
cluster-devel@redhat.com, ccaulfie@redhat.com, mingo@redhat.com,
dougthompson@xmission.com, linux-usb@vger.kernel.org,
linux-media@vger.kernel.org, arnaud.giersch@free.fr,
linux-kbuild@vger.kernel.org, teigland@redhat.com,
tony.olech@elandigitalsystems.com, apw@canonical.com,
linux-hams@vger.kernel.org, tglx@linutronix.de,
swhiteho@redhat.com, linux-arm-kernel@lists.infradead.org,
linux-edac@vger.kernel.org, jon.maloy@ericsson.com,
linux-scsi@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
gregkh@suse.de, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org,
bluesmoke-devel@lists.sourceforge.net, James.Bottomley@suse.de,
tipc-discussion@lists.sourceforge.net, chuanxiao.dong@intel.com,
paulus@samba.org, dwmw2@infradead.org, davem@davemloft.net
Subject: Re: [PATCH 00/34] Make kernel build deterministic
Date: Wed, 6 Apr 2011 11:01:19 +0200 [thread overview]
Message-ID: <20110406090119.GB16597@elte.hu> (raw)
In-Reply-To: <1302015561-21047-1-git-send-email-mmarek@suse.cz>
* Michal Marek <mmarek@suse.cz> wrote:
>
> Hi,
>
> this series makes it possible to build bit-identical kernel image and
> modules from identical sources. Of course the build is already
> deterministic in terms of behavior of the code, but the various
> timestamps embedded in the object files make it hard to compare two
> builds, for instance to verify that a makefile cleanup didn't
> accidentally change something. A prime example is /proc/config.gz, which
> has both a timestamp in the gzip header and a timestamp in the payload
> data. With this series applied, a script like this will produce
> identical kernels each time:
>
> #!/bin/bash
> rm -rf /dev/shm/{source,build}{,1,2}
> export KCONFIG_NOTIMESTAMP=1
> export KBUILD_BUILD_TIMESTAMP='Sun May 1 12:00:00 CEST 2011'
> export KBUILD_BUILD_USER=user
> export KBUILD_BUILD_HOST=host
> export ROOT_DEV=FLOPPY
> for i in 1 2; do
> mkdir /dev/shm/source
> # randomize the inode order just for fun
> git ls-tree -r -z --name-only HEAD | sort -R -z | xargs -0 \
> cp --parents --target=/dev/shm/source
> pushd /dev/shm/source
> mkdir /dev/shm/build
> >/dev/shm/build/all.config
> for opt in GCOV_KERNEL UBIFS_FS_DEBUG; do
> echo "# CONFIG_$opt is not set" >>"/dev/shm/build"/all.config
> done
> make O="/dev/shm/build" KCONFIG_ALLCONFIG=1 allmodconfig
> make O="/dev/shm/build" -j64
> popd
> mv /dev/shm/source /dev/shm/source$i
> mv /dev/shm/build /dev/shm/build$i
> done
> diff -rq /dev/shm/build{1,2}
Nice!
Acked-by: Ingo Molnar <mingo@elte.hu>
> Unfortunatelly, this cannot be used to validate indentation-only
> patches, even if CONFIG_DEBUG_INFO is turned off. This is because of the
> __FILE__ and __LINE__ macros used in many places. For the same reason,
> the source and build directory needs to be the same, otherwise the
> results will differ.
Nor can it be used to validate untrusted patches in general: a subtle change
might be introduced in a piece of code that is dependent on a .config detail
that is off for that particular build.
But in the common case it's nice to be able to have deterministic/reproducable
builds.
Thanks,
Ingo
prev parent reply other threads:[~2011-04-06 9:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-05 14:58 [PATCH 00/34] Make kernel build deterministic Michal Marek
2011-04-05 14:59 ` [PATCH 16/34] nand/denali: Drop __TIME__ usage Michal Marek
2011-04-05 15:02 ` Artem Bityutskiy
2011-04-05 15:10 ` Michal Marek
2011-04-05 15:15 ` Artem Bityutskiy
2011-04-05 15:49 ` [PATCH 00/34] Make kernel build deterministic Greg KH
2011-04-05 18:16 ` James Bottomley
2011-04-05 18:29 ` Mauro Carvalho Chehab
2011-04-05 18:44 ` Greg KH
2011-04-05 19:24 ` Artem Bityutskiy
2011-04-06 8:57 ` Ingo Molnar
2011-04-06 9:07 ` Michal Marek
2011-04-06 9:25 ` Artem Bityutskiy
2011-04-06 9:23 ` Michal Marek
2011-04-06 9:01 ` Ingo Molnar [this message]
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=20110406090119.GB16597@elte.hu \
--to=mingo@elte.hu \
--cc=IvDoorn@gmail.com \
--cc=James.Bottomley@suse.de \
--cc=aacraid@adaptec.com \
--cc=allan.stephens@windriver.com \
--cc=anil_ravindranath@pmc-sierra.com \
--cc=apw@canonical.com \
--cc=arnaud.giersch@free.fr \
--cc=benh@kernel.crashing.org \
--cc=bluesmoke-devel@lists.sourceforge.net \
--cc=ccaulfie@redhat.com \
--cc=chuanxiao.dong@intel.com \
--cc=cluster-devel@redhat.com \
--cc=davem@davemloft.net \
--cc=dougthompson@xmission.com \
--cc=dwmw2@infradead.org \
--cc=elf@buici.com \
--cc=gregkh@suse.de \
--cc=gwingerde@gmail.com \
--cc=hpa@zytor.com \
--cc=jon.maloy@ericsson.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-edac@vger.kernel.org \
--cc=linux-hams@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mac@melware.de \
--cc=mchehab@redhat.com \
--cc=mingo@redhat.com \
--cc=mmarek@suse.cz \
--cc=netdev@vger.kernel.org \
--cc=paulus@samba.org \
--cc=swhiteho@redhat.com \
--cc=t.sailer@alumni.ethz.ch \
--cc=teigland@redhat.com \
--cc=tglx@linutronix.de \
--cc=tipc-discussion@lists.sourceforge.net \
--cc=tony.olech@elandigitalsystems.com \
--cc=x86@kernel.org \
/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