public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
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

      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