All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] scripts/package/builddeb: upgrade to current practices
@ 2012-07-17 17:57 Martin-Éric Racine
  2012-07-17 19:39 ` Jonathan Nieder
  0 siblings, 1 reply; 11+ messages in thread
From: Martin-Éric Racine @ 2012-07-17 17:57 UTC (permalink / raw)
  To: Linux Kernel Mailing List

This patch sanitizes and updates the Debian package building script:

1) Updates $fwpackagename to 'firmware-linux' as used by Debian,
2) Removes trailing whitespace,
3) Updates Linus' copyright in the generated packaging files,
4) Updates URL of Linus' GIT tree in the generated packaging files,
5) Removes obsolete references to linux-2.6,
6) Adds installation of missing subarch components to header package,
7) Adds dependency relationships to the firmware package.

Signed-off-by: Martin-Éric Racine <martin-eric.racine@iki.fi>
---
 scripts/package/builddeb |   25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index c95fdda..44ef3d1 100644
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -79,9 +79,9 @@ fwdir="$objtree/debian/fwtmp"
 kernel_headers_dir="$objtree/debian/hdrtmp"
 libc_headers_dir="$objtree/debian/headertmp"
 packagename=linux-image-$version
-fwpackagename=linux-firmware-image
 kernel_headers_packagename=linux-headers-$version
 libc_headers_packagename=linux-libc-dev
+fwpackagename=firmware-linux
 
 if [ "$ARCH" = "um" ] ; then
 	packagename=user-mode-linux-$version
@@ -109,7 +109,7 @@ if [ "$ARCH" = "um" ] ; then
 	cp .config "$tmpdir/usr/share/doc/$packagename/config"
 	gzip "$tmpdir/usr/share/doc/$packagename/config"
 	cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
-else 
+else
 	cp System.map "$tmpdir/boot/System.map-$version"
 	cp .config "$tmpdir/boot/config-$version"
 	# Not all arches include the boot path in KBUILD_IMAGE
@@ -188,17 +188,17 @@ This is a packacked upstream version of the Linux kernel.
 The sources may be found at most Linux ftp sites, including:
 ftp://ftp.kernel.org/pub/linux/kernel
 
-Copyright: 1991 - 2009 Linus Torvalds and others.
+Copyright: 1991-2012 Linus Torvalds and others.
 
-The git repository for mainline kernel development is at:
-git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+The GIT repository for mainline kernel development is at:
+git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; version 2 dated June, 1991.
 
 On Debian GNU/Linux systems, the complete text of the GNU General Public
-License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
+License version 2 can be found in /usr/share/common-licenses/GPL-2.
 EOF
 
 # Generate a control file
@@ -215,7 +215,7 @@ if [ "$ARCH" = "um" ]; then
 	cat <<EOF >> debian/control
 
 Package: $packagename
-Provides: linux-image, linux-image-2.6, linux-modules-$version
+Provides: linux-image, linux-modules-$version
 Architecture: any
 Description: User Mode Linux kernel, version $version
  User-mode Linux is a port of the Linux kernel to its own system call
@@ -232,7 +232,7 @@ else
 	cat <<EOF >> debian/control
 
 Package: $packagename
-Provides: linux-image, linux-image-2.6, linux-modules-$version
+Provides: linux-image, linux-modules-$version
 Suggests: $fwpackagename
 Architecture: any
 Description: Linux kernel, version $version
@@ -243,7 +243,7 @@ EOF
 fi
 
 # Build header package
-(cd $srctree; find . -name Makefile -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles")
+(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles")
 (cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles")
 (cd $objtree; find arch/$SRCARCH/include .config Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles")
 destdir=$kernel_headers_dir/usr/src/linux-headers-$version
@@ -257,12 +257,12 @@ arch=$(dpkg --print-architecture)
 cat <<EOF >> debian/control
 
 Package: $kernel_headers_packagename
-Provides: linux-headers, linux-headers-2.6
+Provides: linux-headers
 Architecture: $arch
 Description: Linux kernel headers for $KERNELRELEASE on $arch
  This package provides kernel header files for $KERNELRELEASE on $arch
  .
- This is useful for people who need to build external modules
+ This is useful for people who need to build external modules.
 EOF
 
 # Do we have firmware? Move it out of the way and build it into a package.
@@ -273,6 +273,9 @@ if [ -e "$tmpdir/lib/firmware" ]; then
 
 Package: $fwpackagename
 Architecture: all
+Conflicts: firmware-linux-free, firmware-linux-nonfree
+Provides: firmware-linux-free, firmware-linux-nonfree
+Replaces: firmware-linux-free, firmware-linux-nonfree
 Description: Linux kernel firmware, version $version
  This package contains firmware from the Linux kernel, version $version.
 EOF
-- 
1.7.10.4



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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-17 17:57 [PATCH] scripts/package/builddeb: upgrade to current practices Martin-Éric Racine
@ 2012-07-17 19:39 ` Jonathan Nieder
  2012-07-17 19:46   ` Martin-Éric Racine
  0 siblings, 1 reply; 11+ messages in thread
From: Jonathan Nieder @ 2012-07-17 19:39 UTC (permalink / raw)
  To: Martin-Éric Racine
  Cc: Linux Kernel Mailing List, linux-kbuild, debian-kernel

Hi,

Martin-Éric Racine wrote:

> Signed-off-by: Martin-Éric Racine <martin-eric.racine@iki.fi>

Thanks.  This patch does many things at once instead of the usual
practice of "one patch per logical change", but oh well.

[...]
> --- a/scripts/package/builddeb
> +++ b/scripts/package/builddeb
> @@ -79,9 +79,9 @@ fwdir="$objtree/debian/fwtmp"
>  kernel_headers_dir="$objtree/debian/hdrtmp"
>  libc_headers_dir="$objtree/debian/headertmp"
>  packagename=linux-image-$version
> -fwpackagename=linux-firmware-image
>  kernel_headers_packagename=linux-headers-$version
>  libc_headers_packagename=linux-libc-dev
> +fwpackagename=firmware-linux

Micronit: any reason the lines are reordered here?

> @@ -188,17 +188,17 @@ This is a packacked upstream version of the Linux kernel.
>  The sources may be found at most Linux ftp sites, including:
>  ftp://ftp.kernel.org/pub/linux/kernel
>  
> -Copyright: 1991 - 2009 Linus Torvalds and others.
> +Copyright: 1991-2012 Linus Torvalds and others.
>  
> -The git repository for mainline kernel development is at:
> -git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
> +The GIT repository for mainline kernel development is at:
> +git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

I personally like to spell it as "Git". ;-)

[...]
> @@ -273,6 +273,9 @@ if [ -e "$tmpdir/lib/firmware" ]; then
>  
>  Package: $fwpackagename
>  Architecture: all
> +Conflicts: firmware-linux-free, firmware-linux-nonfree
> +Provides: firmware-linux-free, firmware-linux-nonfree
> +Replaces: firmware-linux-free, firmware-linux-nonfree

I assume you mean Breaks+Replaces.  Do the files actually overlap,
or is this change being overly cautious?  I would expect the files
not to overlap because the package build with deb-pkg puts firmware
in a versioned subdirectory "/lib/firmware/<version>".

Hope that helps,
Jonathan

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-17 19:39 ` Jonathan Nieder
@ 2012-07-17 19:46   ` Martin-Éric Racine
  2012-07-17 21:23     ` maximilian attems
  2012-08-14 15:46     ` Jan Engelhardt
  0 siblings, 2 replies; 11+ messages in thread
From: Martin-Éric Racine @ 2012-07-17 19:46 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: Linux Kernel Mailing List, linux-kbuild, debian-kernel

2012/7/17 Jonathan Nieder <jrnieder@gmail.com>:
> Hi,
>
> Martin-Éric Racine wrote:
>
>> Signed-off-by: Martin-Éric Racine <martin-eric.racine@iki.fi>
>
> Thanks.  This patch does many things at once instead of the usual
> practice of "one patch per logical change", but oh well.
>
> [...]
>> --- a/scripts/package/builddeb
>> +++ b/scripts/package/builddeb
>> @@ -79,9 +79,9 @@ fwdir="$objtree/debian/fwtmp"
>>  kernel_headers_dir="$objtree/debian/hdrtmp"
>>  libc_headers_dir="$objtree/debian/headertmp"
>>  packagename=linux-image-$version
>> -fwpackagename=linux-firmware-image
>>  kernel_headers_packagename=linux-headers-$version
>>  libc_headers_packagename=linux-libc-dev
>> +fwpackagename=firmware-linux
>
> Micronit: any reason the lines are reordered here?

Mostly to differenciate between versioned and non-versioned package targets.

>> @@ -188,17 +188,17 @@ This is a packacked upstream version of the Linux kernel.
>>  The sources may be found at most Linux ftp sites, including:
>>  ftp://ftp.kernel.org/pub/linux/kernel
>>
>> -Copyright: 1991 - 2009 Linus Torvalds and others.
>> +Copyright: 1991-2012 Linus Torvalds and others.
>>
>> -The git repository for mainline kernel development is at:
>> -git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>> +The GIT repository for mainline kernel development is at:
>> +git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>
> I personally like to spell it as "Git". ;-)

That works for me too. Actually, what's the official spelling for it?

> [...]
>> @@ -273,6 +273,9 @@ if [ -e "$tmpdir/lib/firmware" ]; then
>>
>>  Package: $fwpackagename
>>  Architecture: all
>> +Conflicts: firmware-linux-free, firmware-linux-nonfree
>> +Provides: firmware-linux-free, firmware-linux-nonfree
>> +Replaces: firmware-linux-free, firmware-linux-nonfree
>
> I assume you mean Breaks+Replaces.  Do the files actually overlap,
> or is this change being overly cautious?  I would expect the files
> not to overlap because the package build with deb-pkg puts firmware
> in a versioned subdirectory "/lib/firmware/<version>".

AFAIK they would overlap, hence the Conflicts.

Martin-Éric

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-17 19:46   ` Martin-Éric Racine
@ 2012-07-17 21:23     ` maximilian attems
  2012-07-17 23:19       ` Martin-Éric Racine
  2012-08-14 15:46     ` Jan Engelhardt
  1 sibling, 1 reply; 11+ messages in thread
From: maximilian attems @ 2012-07-17 21:23 UTC (permalink / raw)
  To: Martin-Éric Racine
  Cc: Jonathan Nieder, Linux Kernel Mailing List, linux-kbuild, debian-kernel

On Tue, Jul 17, 2012 at 10:46:23PM +0300, Martin-Éric Racine wrote:
> 2012/7/17 Jonathan Nieder <jrnieder@gmail.com>:
> >>
> >>  Package: $fwpackagename
> >>  Architecture: all
> >> +Conflicts: firmware-linux-free, firmware-linux-nonfree
> >> +Provides: firmware-linux-free, firmware-linux-nonfree
> >> +Replaces: firmware-linux-free, firmware-linux-nonfree
> >
> > I assume you mean Breaks+Replaces.  Do the files actually overlap,
> > or is this change being overly cautious?  I would expect the files
> > not to overlap because the package build with deb-pkg puts firmware
> > in a versioned subdirectory "/lib/firmware/<version>".
> 
> AFAIK they would overlap, hence the Conflicts.

This is wrong and properly fixed in -next.

-- 
maks

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-17 21:23     ` maximilian attems
@ 2012-07-17 23:19       ` Martin-Éric Racine
  2012-07-17 23:27         ` Jonathan Nieder
  2012-07-18  6:56         ` maximilian attems
  0 siblings, 2 replies; 11+ messages in thread
From: Martin-Éric Racine @ 2012-07-17 23:19 UTC (permalink / raw)
  To: maximilian attems
  Cc: Jonathan Nieder, Linux Kernel Mailing List, linux-kbuild, debian-kernel

2012/7/18 maximilian attems <max@stro.at>:
> On Tue, Jul 17, 2012 at 10:46:23PM +0300, Martin-Éric Racine wrote:
>> 2012/7/17 Jonathan Nieder <jrnieder@gmail.com>:
>> >>
>> >>  Package: $fwpackagename
>> >>  Architecture: all
>> >> +Conflicts: firmware-linux-free, firmware-linux-nonfree
>> >> +Provides: firmware-linux-free, firmware-linux-nonfree
>> >> +Replaces: firmware-linux-free, firmware-linux-nonfree
>> >
>> > I assume you mean Breaks+Replaces.  Do the files actually overlap,
>> > or is this change being overly cautious?  I would expect the files
>> > not to overlap because the package build with deb-pkg puts firmware
>> > in a versioned subdirectory "/lib/firmware/<version>".
>>
>> AFAIK they would overlap, hence the Conflicts.
>
> This is wrong and properly fixed in -next.

Max,

Exactly what is wrong with this fix? Could you tell us exactly what
you did differently and why?

Martin-Éric

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-17 23:19       ` Martin-Éric Racine
@ 2012-07-17 23:27         ` Jonathan Nieder
  2012-07-18  6:56         ` maximilian attems
  1 sibling, 0 replies; 11+ messages in thread
From: Jonathan Nieder @ 2012-07-17 23:27 UTC (permalink / raw)
  To: Martin-Éric Racine
  Cc: maximilian attems, Linux Kernel Mailing List, linux-kbuild,
	debian-kernel

Martin-Éric Racine wrote:

>                                      Could you tell us exactly what
> you did differently and why?

At least the "what" should be answerable by looking at what is in
linux-next.

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-17 23:19       ` Martin-Éric Racine
  2012-07-17 23:27         ` Jonathan Nieder
@ 2012-07-18  6:56         ` maximilian attems
  2012-07-18  7:21           ` Martin-Éric Racine
  2012-07-18  7:47           ` Bjørn Mork
  1 sibling, 2 replies; 11+ messages in thread
From: maximilian attems @ 2012-07-18  6:56 UTC (permalink / raw)
  To: Martin-Éric Racine; +Cc: Jonathan Nieder, linux-kbuild, debian-kernel

On Wed, Jul 18, 2012 at 02:19:25AM +0300, Martin-Éric Racine wrote:
> 2012/7/18 maximilian attems <max@stro.at>:
> > On Tue, Jul 17, 2012 at 10:46:23PM +0300, Martin-Éric Racine wrote:
> >> 2012/7/17 Jonathan Nieder <jrnieder@gmail.com>:
> >> >>
> >> >>  Package: $fwpackagename
> >> >>  Architecture: all
> >> >> +Conflicts: firmware-linux-free, firmware-linux-nonfree
> >> >> +Provides: firmware-linux-free, firmware-linux-nonfree
> >> >> +Replaces: firmware-linux-free, firmware-linux-nonfree
> >> >
> >> > I assume you mean Breaks+Replaces.  Do the files actually overlap,
> >> > or is this change being overly cautious?  I would expect the files
> >> > not to overlap because the package build with deb-pkg puts firmware
> >> > in a versioned subdirectory "/lib/firmware/<version>".
> >>
> >> AFAIK they would overlap, hence the Conflicts.
> >
> > This is wrong and properly fixed in -next.
> 
> Exactly what is wrong with this fix? Could you tell us exactly what
> you did differently and why?

Jonathan already answered it, saying that firmwares are put
in versioned dir.

Just use git to look it up, easy:
~/src/linux-next (master %=)$ git log scripts/package/builddeb

6607ddadf93d19c7f64139f1475c342152f39fe5

Your conflict would mean to kick out the official debian firmware
packages which is not something we want!

-- 
maks

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-18  6:56         ` maximilian attems
@ 2012-07-18  7:21           ` Martin-Éric Racine
  2012-07-18  8:05             ` Bjørn Mork
  2012-07-18  7:47           ` Bjørn Mork
  1 sibling, 1 reply; 11+ messages in thread
From: Martin-Éric Racine @ 2012-07-18  7:21 UTC (permalink / raw)
  To: maximilian attems; +Cc: Jonathan Nieder, linux-kbuild, debian-kernel

2012/7/18 maximilian attems <max@stro.at>:
> On Wed, Jul 18, 2012 at 02:19:25AM +0300, Martin-Éric Racine wrote:
>> 2012/7/18 maximilian attems <max@stro.at>:
>> > On Tue, Jul 17, 2012 at 10:46:23PM +0300, Martin-Éric Racine wrote:
>> >> 2012/7/17 Jonathan Nieder <jrnieder@gmail.com>:
>> >> >>
>> >> >>  Package: $fwpackagename
>> >> >>  Architecture: all
>> >> >> +Conflicts: firmware-linux-free, firmware-linux-nonfree
>> >> >> +Provides: firmware-linux-free, firmware-linux-nonfree
>> >> >> +Replaces: firmware-linux-free, firmware-linux-nonfree
>> >> >
>> >> > I assume you mean Breaks+Replaces.  Do the files actually overlap,
>> >> > or is this change being overly cautious?  I would expect the files
>> >> > not to overlap because the package build with deb-pkg puts firmware
>> >> > in a versioned subdirectory "/lib/firmware/<version>".
>> >>
>> >> AFAIK they would overlap, hence the Conflicts.
>> >
>> > This is wrong and properly fixed in -next.
>>
>> Exactly what is wrong with this fix? Could you tell us exactly what
>> you did differently and why?
>
> Jonathan already answered it, saying that firmwares are put
> in versioned dir.

Does the kernel look for modules in versioned, then non-versioned
directories, in that order? More importantly, does it even attempt
looking in the versioned directory at all?

Martin-Éric

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-18  6:56         ` maximilian attems
  2012-07-18  7:21           ` Martin-Éric Racine
@ 2012-07-18  7:47           ` Bjørn Mork
  1 sibling, 0 replies; 11+ messages in thread
From: Bjørn Mork @ 2012-07-18  7:47 UTC (permalink / raw)
  To: maximilian attems
  Cc: Martin-Éric Racine, Jonathan Nieder, linux-kbuild, debian-kernel

maximilian attems <max@stro.at> writes:

> Jonathan already answered it, saying that firmwares are put
> in versioned dir.
>
> Just use git to look it up, easy:
> ~/src/linux-next (master %=)$ git log scripts/package/builddeb
>
> 6607ddadf93d19c7f64139f1475c342152f39fe5

But..but.. won't that prevent installing firmware for more than one
builddeb kernel?  I.e., shouldn't the fw package name also be versioned
if you are going to do this (which it seems you are)?

But then again, I thought versioned firmware was dropped from the
official packages for good reasons.  Any reason why you couldn't add
/lib/firmware/something (where "something" is fixed and independent of
version) to the firmware.agent search path, and use that for unofficial
linux-firmware packages?

That would allow unofficial firmware packages from different kernel
versions to continue sharing their package name without conflicting with
the official packages in any way.


Bjørn

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-18  7:21           ` Martin-Éric Racine
@ 2012-07-18  8:05             ` Bjørn Mork
  0 siblings, 0 replies; 11+ messages in thread
From: Bjørn Mork @ 2012-07-18  8:05 UTC (permalink / raw)
  To: martin-eric.racine
  Cc: maximilian attems, Jonathan Nieder, linux-kbuild, debian-kernel

Martin-Éric Racine <martin-eric.racine@iki.fi> writes:

> Does the kernel look for modules in versioned, then non-versioned
> directories, in that order? More importantly, does it even attempt
> looking in the versioned directory at all?

/lib/udev/firmware.agent does this:

FIRMWARE_DIRS="/lib/firmware/$(uname -r) /lib/firmware /usr/local/lib/firmware /usr/lib/hotplug/firmware"

for DIR in $FIRMWARE_DIRS; do
    [ -e "$DIR/$FIRMWARE" ] || continue



Bjørn

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

* Re: [PATCH] scripts/package/builddeb: upgrade to current practices
  2012-07-17 19:46   ` Martin-Éric Racine
  2012-07-17 21:23     ` maximilian attems
@ 2012-08-14 15:46     ` Jan Engelhardt
  1 sibling, 0 replies; 11+ messages in thread
From: Jan Engelhardt @ 2012-08-14 15:46 UTC (permalink / raw)
  To: Martin-Éric Racine
  Cc: Jonathan Nieder, Linux Kernel Mailing List, linux-kbuild, debian-kernel


On Tuesday 2012-07-17 21:46, Martin-Éric Racine wrote:
>>> @@ -188,17 +188,17 @@ This is a packacked upstream version of the Linux kernel.
>>>  The sources may be found at most Linux ftp sites, including:
>>>  ftp://ftp.kernel.org/pub/linux/kernel
>>>
>>> -Copyright: 1991 - 2009 Linus Torvalds and others.
>>> +Copyright: 1991-2012 Linus Torvalds and others.
>>>
>>> -The git repository for mainline kernel development is at:
>>> -git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>>> +The GIT repository for mainline kernel development is at:
>>> +git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>>
>> I personally like to spell it as "Git". ;-)
>
>That works for me too. Actually, what's the official spelling for it?

The acronymic usage of "GIT" to mean Global Information Tracker has
not caught on. Therefore most likely "Git"; like "Linux", a noun, a
name.


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

end of thread, other threads:[~2012-08-14 15:46 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-17 17:57 [PATCH] scripts/package/builddeb: upgrade to current practices Martin-Éric Racine
2012-07-17 19:39 ` Jonathan Nieder
2012-07-17 19:46   ` Martin-Éric Racine
2012-07-17 21:23     ` maximilian attems
2012-07-17 23:19       ` Martin-Éric Racine
2012-07-17 23:27         ` Jonathan Nieder
2012-07-18  6:56         ` maximilian attems
2012-07-18  7:21           ` Martin-Éric Racine
2012-07-18  8:05             ` Bjørn Mork
2012-07-18  7:47           ` Bjørn Mork
2012-08-14 15:46     ` Jan Engelhardt

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.