From: Ingo Molnar <mingo@elte.hu>
To: Artem Bityutskiy <dedekind1@gmail.com>
Cc: anil_ravindranath@pmc-sierra.com, mchehab@redhat.com,
benh@kernel.crashing.org, mac@melware.de, aacraid@adaptec.com,
linux-mtd@lists.infradead.org, allan.stephens@windriver.com,
hpa@zytor.com, t.sailer@alumni.ethz.ch, gwingerde@gmail.com,
x86@kernel.org, elf@buici.com, cluster-devel@redhat.com,
ccaulfie@redhat.com, mingo@redhat.com, dougthompson@xmission.com,
tipc-discussion@lists.sourceforge.net, dwmw2@infradead.org,
linux-media@vger.kernel.org, jon.maloy@ericsson.com,
arnaud.giersch@free.fr, linux-kbuild@vger.kernel.org,
IvDoorn@gmail.com, 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, Michal Marek <mmarek@suse.cz>,
linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
Greg KH <gregkh@suse.de>,
linux-wireless
Subject: Re: [PATCH 00/34] Make kernel build deterministic
Date: Wed, 6 Apr 2011 10:57:12 +0200 [thread overview]
Message-ID: <20110406085712.GA16597@elte.hu> (raw)
In-Reply-To: <1302031447.2608.41.camel@koala>
* Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Tue, 2011-04-05 at 08:49 -0700, Greg KH wrote:
> > On Tue, Apr 05, 2011 at 04:58:47PM +0200, Michal Marek 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:
> >
> > Very nice stuff. Do you want to take the individual patches through one
> > of your trees, or do you mind if the subsystem maintainers take them
> > through theirs?
>
> But unfortunately, it is very easy to break this and for sure it'll be
> broken very soon.
>
> So additionally, I'd suggest:
> 1. Instrument checkpatch.pl and make it err or warn on timestamps.
See the grandparent mail:
checkpatch: Warn about usage of __DATE__, __TIME__ and __TIMESTAMP__
Thanks,
Ingo
WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo@elte.hu>
To: Artem Bityutskiy <dedekind1@gmail.com>
Cc: anil_ravindranath@pmc-sierra.com, mchehab@redhat.com,
benh@kernel.crashing.org, mac@melware.de, aacraid@adaptec.com,
linux-mtd@lists.infradead.org, allan.stephens@windriver.com,
hpa@zytor.com, t.sailer@alumni.ethz.ch, gwingerde@gmail.com,
x86@kernel.org, elf@buici.com, cluster-devel@redhat.com,
ccaulfie@redhat.com, mingo@redhat.com, dougthompson@xmission.com,
tipc-discussion@lists.sourceforge.net, dwmw2@infradead.org,
linux-media@vger.kernel.org, jon.maloy@ericsson.com,
arnaud.giersch@free.fr, linux-kbuild@vger.kernel.org,
IvDoorn@gmail.com, 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, Michal Marek <mmarek@suse.cz>,
linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
Greg KH <gregkh@suse.de>,
linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org,
davem@davemloft.net, linux-usb@vger.kernel.org,
James.Bottomley@suse.de, chuanxiao.dong@intel.com,
paulus@samba.org, linuxppc-dev@lists.ozlabs.org,
bluesmoke-devel@lists.sourceforge.net
Subject: Re: [PATCH 00/34] Make kernel build deterministic
Date: Wed, 6 Apr 2011 10:57:12 +0200 [thread overview]
Message-ID: <20110406085712.GA16597@elte.hu> (raw)
In-Reply-To: <1302031447.2608.41.camel@koala>
* Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Tue, 2011-04-05 at 08:49 -0700, Greg KH wrote:
> > On Tue, Apr 05, 2011 at 04:58:47PM +0200, Michal Marek 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:
> >
> > Very nice stuff. Do you want to take the individual patches through one
> > of your trees, or do you mind if the subsystem maintainers take them
> > through theirs?
>
> But unfortunately, it is very easy to break this and for sure it'll be
> broken very soon.
>
> So additionally, I'd suggest:
> 1. Instrument checkpatch.pl and make it err or warn on timestamps.
See the grandparent mail:
checkpatch: Warn about usage of __DATE__, __TIME__ and __TIMESTAMP__
Thanks,
Ingo
WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo@elte.hu>
To: Artem Bityutskiy <dedekind1@gmail.com>
Cc: anil_ravindranath@pmc-sierra.com, mchehab@redhat.com,
mac@melware.de, aacraid@adaptec.com,
linux-mtd@lists.infradead.org, allan.stephens@windriver.com,
hpa@zytor.com, t.sailer@alumni.ethz.ch, gwingerde@gmail.com,
x86@kernel.org, elf@buici.com, cluster-devel@redhat.com,
ccaulfie@redhat.com, mingo@redhat.com, dougthompson@xmission.com,
tipc-discussion@lists.sourceforge.net, dwmw2@infradead.org,
linux-media@vger.kernel.org, jon.maloy@ericsson.com,
arnaud.giersch@free.fr, linux-kbuild@vger.kernel.org,
IvDoorn@gmail.com, 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, Michal Marek <mmarek@suse.cz>,
linux-scsi@vger.kernel.org, netdev@vger.kernel.org,
Greg KH <gregkh@suse.de>,
linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org,
davem@davemloft.net, linux-usb@vger.kernel.org,
James.Bottomley@suse.de, chuanxiao.dong@intel.com,
paulus@samba.org, linuxppc-dev@lists.ozlabs.org,
bluesmoke-devel@lists.sourceforge.net
Subject: Re: [PATCH 00/34] Make kernel build deterministic
Date: Wed, 6 Apr 2011 10:57:12 +0200 [thread overview]
Message-ID: <20110406085712.GA16597@elte.hu> (raw)
In-Reply-To: <1302031447.2608.41.camel@koala>
* Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Tue, 2011-04-05 at 08:49 -0700, Greg KH wrote:
> > On Tue, Apr 05, 2011 at 04:58:47PM +0200, Michal Marek 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:
> >
> > Very nice stuff. Do you want to take the individual patches through one
> > of your trees, or do you mind if the subsystem maintainers take them
> > through theirs?
>
> But unfortunately, it is very easy to break this and for sure it'll be
> broken very soon.
>
> So additionally, I'd suggest:
> 1. Instrument checkpatch.pl and make it err or warn on timestamps.
See the grandparent mail:
checkpatch: Warn about usage of __DATE__, __TIME__ and __TIMESTAMP__
Thanks,
Ingo
WARNING: multiple messages have this Message-ID (diff)
From: mingo@elte.hu (Ingo Molnar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 00/34] Make kernel build deterministic
Date: Wed, 6 Apr 2011 10:57:12 +0200 [thread overview]
Message-ID: <20110406085712.GA16597@elte.hu> (raw)
In-Reply-To: <1302031447.2608.41.camel@koala>
* Artem Bityutskiy <dedekind1@gmail.com> wrote:
> On Tue, 2011-04-05 at 08:49 -0700, Greg KH wrote:
> > On Tue, Apr 05, 2011 at 04:58:47PM +0200, Michal Marek 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:
> >
> > Very nice stuff. Do you want to take the individual patches through one
> > of your trees, or do you mind if the subsystem maintainers take them
> > through theirs?
>
> But unfortunately, it is very easy to break this and for sure it'll be
> broken very soon.
>
> So additionally, I'd suggest:
> 1. Instrument checkpatch.pl and make it err or warn on timestamps.
See the grandparent mail:
checkpatch: Warn about usage of __DATE__, __TIME__ and __TIMESTAMP__
Thanks,
Ingo
next prev parent reply other threads:[~2011-04-06 8:57 UTC|newest]
Thread overview: 174+ 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:58 ` Michal Marek
2011-04-05 14:58 ` Michal Marek
2011-04-05 14:58 ` Michal Marek
2011-04-05 14:58 ` [PATCH 01/34] kconfig: Do not record timestamp in auto.conf and autoconf.h Michal Marek
2011-04-05 18:57 ` Arnaud Lacombe
2011-04-06 7:37 ` Michal Marek
2011-04-06 16:25 ` Arnaud Lacombe
2011-04-06 20:39 ` Michal Marek
2011-04-18 13:04 ` Michal Marek
2011-04-05 14:58 ` [PATCH 02/34] kbuild: Call gzip with -n Michal Marek
2011-04-18 13:05 ` Michal Marek
2011-04-05 14:58 ` [PATCH 03/34] powerpc: " Michal Marek
2011-04-05 14:58 ` Michal Marek
2011-04-05 14:58 ` [PATCH 04/34] kbuild: Use the deterministic mode of ar Michal Marek
2011-04-18 13:05 ` Michal Marek
2011-04-05 14:58 ` [PATCH 05/34] powerpc: " Michal Marek
2011-04-05 14:58 ` Michal Marek
2011-04-05 14:58 ` [PATCH 06/34] kbuild: Drop unused LINUX_COMPILE_TIME and LINUX_COMPILE_DOMAIN macros Michal Marek
2011-04-18 13:05 ` Michal Marek
2011-04-05 14:58 ` [PATCH 07/34] kbuild: Allow to override LINUX_COMPILE_BY and LINUX_COMPILE_HOST macros Michal Marek
2011-04-05 15:52 ` Jack Stone
2011-04-05 18:09 ` Michal Marek
2011-04-11 15:04 ` [PATCH v2] " Michal Marek
2011-04-12 3:25 ` Valdis.Kletnieks
2011-04-12 9:01 ` Michal Marek
2011-04-18 13:05 ` Michal Marek
2011-04-05 14:58 ` [PATCH 08/34] initramfs: Use KBUILD_BUILD_TIMESTAMP for generated entries Michal Marek
2011-04-05 17:31 ` [08/34] " Milton Miller
2011-04-05 18:12 ` Michal Marek
2011-04-11 15:06 ` [PATCH v2] " Michal Marek
2011-04-18 13:06 ` Michal Marek
2011-04-05 14:58 ` [PATCH 09/34] x86: Allow to override the ROOT_DEV variable Michal Marek
2011-04-05 15:30 ` H. Peter Anvin
2011-04-06 7:47 ` Michal Marek
2011-04-11 15:08 ` Michal Marek
2011-04-12 3:25 ` Valdis.Kletnieks
2011-04-12 7:11 ` Paul Bolle
2011-04-12 3:39 ` H. Peter Anvin
2011-04-12 5:01 ` Paul Bolle
2011-04-12 9:57 ` Michal Marek
2011-04-12 10:40 ` Paul Bolle
2011-04-12 11:30 ` [PATCH v2] x86: Do not set the root_dev field in bzImage Michal Marek
2011-05-11 15:22 ` Michal Marek
2011-05-25 20:32 ` Michal Marek
2011-05-25 20:49 ` [tip:x86/build] x86, build: " tip-bot for Michal Marek
2011-04-05 14:58 ` [PATCH 10/34] cyclades: Drop __TIME__ usage Michal Marek
2011-04-18 22:17 ` Michal Marek
2011-04-05 14:58 ` [PATCH 11/34] nozomi: " Michal Marek
2011-04-05 14:58 ` [PATCH 12/34] isdn/diva: " Michal Marek
2011-04-05 15:10 ` Armin Schindler
2011-04-05 15:37 ` Ben Hutchings
2011-04-05 16:07 ` Armin Schindler
2011-04-05 20:01 ` Sam Ravnborg
2011-04-05 19:17 ` Valdis.Kletnieks
2011-04-06 8:06 ` Michal Marek
2011-05-25 20:38 ` Michal Marek
2011-05-26 8:15 ` Armin Schindler
2011-05-26 8:29 ` Michal Marek
2011-04-05 14:59 ` [PATCH 13/34] media/radio-maxiradio: " Michal Marek
2011-04-18 22:18 ` Michal Marek
2011-04-05 14:59 ` [PATCH 14/34] media/cx231xx: " Michal Marek
2011-04-18 22:18 ` Michal Marek
2011-04-05 14:59 ` [PATCH 15/34] baycom: " Michal Marek
[not found] ` <1302015780.4124.53.camel@xbox360.hq.axsem.com>
2011-05-25 15:23 ` Michal Marek
2011-04-05 14:59 ` [PATCH 16/34] nand/denali: " Michal Marek
2011-04-05 14:59 ` Michal Marek
2011-04-05 15:02 ` Artem Bityutskiy
2011-04-05 15:02 ` Artem Bityutskiy
2011-04-05 15:10 ` Michal Marek
2011-04-05 15:10 ` Michal Marek
2011-04-05 15:15 ` Artem Bityutskiy
2011-04-05 15:15 ` Artem Bityutskiy
2011-04-05 14:59 ` [PATCH 17/34] hdlcdrv: " Michal Marek
2011-04-19 10:17 ` walter harms
2011-04-19 10:56 ` Michal Marek
[not found] ` <1302015790.4124.54.camel@xbox360.hq.axsem.com>
2011-05-25 15:24 ` Michal Marek
2011-04-05 14:59 ` [PATCH 18/34] wan/pc300: " Michal Marek
2011-05-25 20:43 ` Michal Marek
2011-05-25 20:44 ` David Miller
2011-04-05 14:59 ` [PATCH 19/34] rt2x00: " Michal Marek
2011-04-05 15:28 ` Gertjan van Wingerde
2011-04-05 18:37 ` Ivo Van Doorn
2011-04-05 18:37 ` Ivo Van Doorn
2011-04-05 14:59 ` [PATCH 20/34] parport: " Michal Marek
2011-04-05 20:00 ` Arnaud Giersch
2011-05-25 20:44 ` Michal Marek
2011-04-05 14:59 ` [PATCH 21/34] aacraid: " Michal Marek
2011-04-18 22:20 ` Michal Marek
2011-04-05 14:59 ` [PATCH 22/34] scsi/in2000: " Michal Marek
2011-04-18 22:20 ` Michal Marek
2011-04-05 14:59 ` [PATCH 23/34] scsi/wd33c93: " Michal Marek
2011-04-18 22:20 ` Michal Marek
2011-04-05 14:59 ` [PATCH 24/34] usb/u132-hcd: " Michal Marek
2011-04-05 14:59 ` [PATCH 25/34] usb/ftdi-elan: " Michal Marek
2011-04-05 17:50 ` Matthew Dharm
2011-04-05 18:13 ` Greg KH
2011-04-05 14:59 ` [PATCH 26/34] dlm: " Michal Marek
2011-05-25 20:47 ` Michal Marek
2011-05-25 20:47 ` [Cluster-devel] " David Teigland
2011-05-25 20:47 ` David Teigland
2011-04-05 14:59 ` [PATCH 27/34] gfs2: " Michal Marek
2011-05-25 20:48 ` Michal Marek
2011-05-26 8:43 ` [Cluster-devel] " Steven Whitehouse
2011-05-26 8:43 ` Steven Whitehouse
2011-05-26 9:08 ` Michal Marek
2011-04-05 14:59 ` [PATCH 28/34] atm: " Michal Marek
2011-05-25 20:49 ` Michal Marek
2011-05-25 21:39 ` David Miller
2011-04-05 14:59 ` [PATCH 29/34] tipc: " Michal Marek
2011-04-05 22:25 ` Paul Gortmaker
2011-04-05 22:25 ` Paul Gortmaker
2011-04-05 14:59 ` [PATCH 30/34] rio: Drop __DATE__ usage Michal Marek
2011-04-18 22:21 ` Michal Marek
2011-04-05 14:59 ` [PATCH 31/34] edac: " Michal Marek
2011-04-18 22:21 ` Michal Marek
2011-04-05 14:59 ` [PATCH 32/34] pmcraid: " Michal Marek
2011-04-18 22:21 ` Michal Marek
2011-04-05 14:59 ` [PATCH 33/34] usb/lh7a40x_udc: " Michal Marek
2011-04-05 14:59 ` Michal Marek
2011-04-05 16:25 ` Russell King - ARM Linux
2011-04-05 16:25 ` Russell King - ARM Linux
2011-04-06 8:23 ` Michal Marek
2011-04-06 8:23 ` Michal Marek
2011-04-05 14:59 ` [PATCH 34/34] checkpatch: Warn about usage of __DATE__, __TIME__ and __TIMESTAMP__ Michal Marek
2011-05-26 11:39 ` Michal Marek
2011-05-26 12:42 ` Andy Whitcroft
2011-04-05 15:49 ` [PATCH 00/34] Make kernel build deterministic Greg KH
2011-04-05 15:49 ` Greg KH
2011-04-05 15:49 ` Greg KH
2011-04-05 15:49 ` Greg KH
2011-04-05 18:16 ` James Bottomley
2011-04-05 18:16 ` James Bottomley
2011-04-05 18:16 ` James Bottomley
2011-04-05 18:16 ` James Bottomley
2011-04-05 18:29 ` Mauro Carvalho Chehab
2011-04-05 18:29 ` Mauro Carvalho Chehab
2011-04-05 18:29 ` Mauro Carvalho Chehab
2011-04-05 18:29 ` Mauro Carvalho Chehab
2011-04-05 18:29 ` Mauro Carvalho Chehab
2011-04-05 18:44 ` Greg KH
2011-04-05 18:44 ` Greg KH
2011-04-05 18:44 ` Greg KH
2011-04-05 18:44 ` Greg KH
2011-04-05 18:44 ` Greg KH
2011-04-05 19:24 ` Artem Bityutskiy
2011-04-05 19:24 ` Artem Bityutskiy
2011-04-05 19:24 ` Artem Bityutskiy
2011-04-05 19:24 ` Artem Bityutskiy
2011-04-06 8:57 ` Ingo Molnar [this message]
2011-04-06 8:57 ` Ingo Molnar
2011-04-06 8:57 ` Ingo Molnar
2011-04-06 8:57 ` Ingo Molnar
2011-04-06 9:04 ` Artem Bityutskiy
2011-04-06 9:07 ` Michal Marek
2011-04-06 9:07 ` Michal Marek
2011-04-06 9:07 ` Michal Marek
2011-04-06 9:07 ` Michal Marek
2011-04-06 9:07 ` Michal Marek
2011-04-06 9:25 ` Artem Bityutskiy
2011-04-06 9:25 ` Artem Bityutskiy
2011-04-06 9:25 ` Artem Bityutskiy
2011-04-06 9:25 ` Artem Bityutskiy
2011-04-06 9:25 ` Artem Bityutskiy
2011-04-06 9:23 ` Michal Marek
2011-04-06 9:23 ` Michal Marek
2011-04-06 9:23 ` Michal Marek
2011-04-06 9:23 ` Michal Marek
2011-04-06 9:01 ` Ingo Molnar
2011-04-06 9:01 ` Ingo Molnar
2011-04-06 9:01 ` Ingo Molnar
2011-04-06 9:01 ` Ingo Molnar
2011-05-05 15:22 ` [PATCH v2] powerpc: Use the deterministic mode of ar Michal Marek
2011-05-05 15:22 ` Michal Marek
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=20110406085712.GA16597@elte.hu \
--to=mingo@elte.hu \
--cc=IvDoorn@gmail.com \
--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=ccaulfie@redhat.com \
--cc=cluster-devel@redhat.com \
--cc=dedekind1@gmail.com \
--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-media@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mac@melware.de \
--cc=mchehab@redhat.com \
--cc=mingo@redhat.com \
--cc=mmarek@suse.cz \
--cc=netdev@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.