All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build
@ 2017-04-05  8:58 Petr Vorel
  2017-04-05  8:58 ` [LTP] [PATCH 2/2] travis: Add out-of-tree build Petr Vorel
  2017-04-06 15:24 ` [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build Cyril Hrubis
  0 siblings, 2 replies; 4+ messages in thread
From: Petr Vorel @ 2017-04-05  8:58 UTC (permalink / raw)
  To: ltp

TODO: Fix make install. This fixes only compile issues, there
are still some data files missing.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/open_posix_testsuite/Makefile            | 46 +++++++++++-----------
 testcases/open_posix_testsuite/Makefile.linux      |  2 +-
 .../scripts/generate-makefiles.sh                  |  2 +-
 3 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/testcases/open_posix_testsuite/Makefile b/testcases/open_posix_testsuite/Makefile
index 0601fa648..21917ae07 100644
--- a/testcases/open_posix_testsuite/Makefile
+++ b/testcases/open_posix_testsuite/Makefile
@@ -24,9 +24,9 @@ BUILD_MAKE=		env $(BUILD_MAKE_ENV) $(MAKE)
 
 TEST_MAKE=		env $(TEST_MAKE_ENV) $(MAKE) -k
 
-top_srcdir?=		.
+open_posix_srcdir := $(if $(top_srcdir),$(top_srcdir)/testcases/open_posix_testsuite,$(abspath .))
 
-prefix?=		`$(top_srcdir)/scripts/print_prefix.sh`
+prefix?=		`$(open_posix_srcdir)/scripts/print_prefix.sh`
 
 datadir?=		$(prefix)/share
 
@@ -35,13 +35,13 @@ exec_prefix?=		$(prefix)
 all: conformance-all functional-all stress-all tools-all
 
 ifeq ($(shell uname -s), Linux)
-include Makefile.linux
+include $(open_posix_srcdir)/Makefile.linux
 endif
 
 clean: $(CRITICAL_MAKEFILE)
 	@rm -f $(LOGFILE)*
 	@for dir in $(SUBDIRS) tools; do \
-	    $(MAKE) -C $$dir clean >/dev/null; \
+	    $(MAKE) -C $(open_posix_srcdir)/$$dir clean >/dev/null; \
 	done
 
 distclean: distclean-makefiles
@@ -49,12 +49,12 @@ distclean: distclean-makefiles
 # Clean out all of the generated Makefiles.
 distclean-makefiles:
 	@for dir in $(SUBDIRS); do \
-		$(MAKE) -C $$dir $@; \
+		$(MAKE) -C $(open_posix_srcdir)/$$dir $@; \
 	done
 
 generate-makefiles: distclean-makefiles
-	@env top_srcdir=$(top_srcdir) \
-	    $(top_srcdir)/scripts/generate-makefiles.sh
+	@env top_srcdir=$(open_posix_srcdir) \
+	    $(open_posix_srcdir)/scripts/generate-makefiles.sh
 
 install: bin-install conformance-install functional-install stress-install
 
@@ -63,47 +63,47 @@ test: conformance-test functional-test stress-test
 # Test build and execution targets.
 conformance-all: $(CRITICAL_MAKEFILE)
 	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
-	@$(BUILD_MAKE) -C conformance -j1 all
+	@$(BUILD_MAKE) -C $(open_posix_srcdir)/conformance -j1 all
 
 conformance-install:
-	@$(MAKE) -C conformance install
+	@$(MAKE) -C $(open_posix_srcdir)/conformance install
 
 conformance-test:
 	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
-	@$(TEST_MAKE) -C conformance test
+	@$(TEST_MAKE) -C $(open_posix_srcdir)/conformance test
 
 functional-all: $(CRITICAL_MAKEFILE)
 	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
-	@$(BUILD_MAKE) -C functional -j1 all
+	@$(BUILD_MAKE) -C $(open_posix_srcdir)/functional -j1 all
 
 functional-install:
-	@$(MAKE) -C functional install
+	@$(MAKE) -C $(open_posix_srcdir)/functional install
 
 functional-test:
 	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
-	@$(TEST_MAKE) -C functional test
+	@$(TEST_MAKE) -C $(open_posix_srcdir)/functional test
 
 stress-all: $(CRITICAL_MAKEFILE)
 	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
-	@$(BUILD_MAKE) -C stress -j1 all
+	@$(BUILD_MAKE) -C $(open_posix_srcdir)/stress -j1 all
 
 stress-install:
-	@$(MAKE) -C stress install
+	@$(MAKE) -C $(open_posix_srcdir)/stress install
 
 stress-test:
 	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
-	@$(TEST_MAKE) -C stress test
+	@$(TEST_MAKE) -C $(open_posix_srcdir)/stress test
 
 # Tools build and install targets.
 bin-install:
-	@$(MAKE) -C bin install
+	@$(MAKE) -C $(open_posix_srcdir)/bin install
 
 tools-all:
-	@$(MAKE) -C tools all
+	@$(MAKE) -C $(open_posix_srcdir)/tools all top_srcdir=$(open_posix_srcdir)
 
 $(CRITICAL_MAKEFILE): \
-    $(top_srcdir)/scripts/generate-makefiles.sh	\
-    $(top_srcdir)/CFLAGS			\
-    $(top_srcdir)/LDFLAGS			\
-    $(top_srcdir)/LDLIBS
-	@$(MAKE) generate-makefiles
+    $(open_posix_srcdir)/scripts/generate-makefiles.sh	\
+    $(open_posix_srcdir)/CFLAGS			\
+    $(open_posix_srcdir)/LDFLAGS			\
+    $(open_posix_srcdir)/LDLIBS
+	@$(MAKE) -f $(open_posix_srcdir)/Makefile generate-makefiles
diff --git a/testcases/open_posix_testsuite/Makefile.linux b/testcases/open_posix_testsuite/Makefile.linux
index 77e20a958..adef565a8 100644
--- a/testcases/open_posix_testsuite/Makefile.linux
+++ b/testcases/open_posix_testsuite/Makefile.linux
@@ -8,7 +8,7 @@ cmd_disable = @set -e; \
 
 BROKEN :=
 
-kver_cmp = $(shell $(top_srcdir)/scripts/tst_kvercmp.sh 2 6 22)
+kver_cmp = $(shell $(open_posix_srcdir)/scripts/tst_kvercmp.sh 2 6 22)
 ifeq ($(kver_cmp), 1)
 BROKEN += t_sigaction_16-1
 endif
diff --git a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
index 67a60c8cb..d50d517ae 100755
--- a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
+++ b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
@@ -22,7 +22,7 @@ generate_locate_test_makefile() {
 
 	echo "Generating $maketype Makefiles"
 
-	locate-test --$maketype | sed -e 's,^./,,g' > make-gen.$maketype
+	locate-test --$maketype $top_srcdir | sed -e 's,^./,,g' > make-gen.$maketype
 
 	generate_makefiles make-gen.$maketype $*
 
-- 
2.12.0


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

* [LTP] [PATCH 2/2] travis: Add out-of-tree build
  2017-04-05  8:58 [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build Petr Vorel
@ 2017-04-05  8:58 ` Petr Vorel
  2017-04-06 15:24 ` [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build Cyril Hrubis
  1 sibling, 0 replies; 4+ messages in thread
From: Petr Vorel @ 2017-04-05  8:58 UTC (permalink / raw)
  To: ltp

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 .travis.yml | 11 +++++++++-
 build.sh    | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+), 1 deletion(-)
 create mode 100755 build.sh

diff --git a/.travis.yml b/.travis.yml
index d937f9dcf..d030cc796 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,6 +10,15 @@ matrix:
                   packages: ['gcc-4.6']
 
         - os: linux
+          compiler: gcc-4.6
+          addons:
+              apt:
+                  sources: ['ubuntu-toolchain-r-test']
+                  packages: ['gcc-4.6']
+          env:
+              OUT_OF_TREE=true
+
+        - os: linux
           compiler: gcc-4.7
           addons:
               apt:
@@ -72,4 +81,4 @@ notifications:
     email:
         secure: "b/xcA/K5OyQvPPnd0PRahTH5LJu8lgz8goGHvhXpHo+ZPsPgTDXNFo5cX9fSOkMuFKeoW8iGl0wOgK2+ptc8mbYDw277K4RFIHRHeV/KIoE1EzjQnEFiL8J0oHCAvDj12o0AXeriTyY9gICXKbR31Br6Zh5eKViDJe2OAGeHeDU="
 
-script: make autotools && ./configure --prefix $HOME/ltp --with-open-posix-testsuite --with-realtime-testsuite && make -j$(getconf _NPROCESSORS_ONLN) && make -j$(getconf _NPROCESSORS_ONLN) install
+script: ./build.sh $OUT_OF_TREE
diff --git a/build.sh b/build.sh
new file mode 100755
index 000000000..62fa4eb76
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+#
+# Copyright (c) Linux Test Project, 2017
+#
+# Script used for travis builds and for local test builds.
+#
+# TODO: Implement comparasion of installed files. List of installed files can
+# be used only for local builds as Travis currently doesn't support sharing
+# file between jobs, see [1].
+# [1]: https://github.com/travis-ci/travis-ci/issues/6054
+#
+# Written by Petr Vorel <pvorel@suse.cz>
+
+set -e
+
+PREFIX="$HOME/ltp"
+CONFIGURE_OPTS="--with-open-posix-testsuite --with-realtime-testsuite"
+
+in_tree_build()
+{
+    echo "===== IN TREE BUILD INTO $PREFIX ====="
+
+    make autotools
+    ./configure $CONFIGURE_OPTS --prefix "$PREFIX"
+    make -j$(getconf _NPROCESSORS_ONLN)
+    make -j$(getconf _NPROCESSORS_ONLN) install
+
+    cd $PREFIX && find | sort > list.in-tree.txt
+}
+
+out_tree_build()
+{
+    echo "===== OUT OF TREE BUILD INTO $PREFIX ====="
+
+    local ltp_git="$PWD"
+    local ltp_out="$PWD/../ltp-build"
+
+    make autotools
+
+    mkdir -p $ltp_out
+    cd $ltp_out
+
+    $ltp_git/configure --prefix="/`basename $PREFIX`" $CONFIGURE_OPTS
+    make -C $ltp_out -f $ltp_git/Makefile top_srcdir=$ltp_git top_builddir=$ltp_out -j$(getconf _NPROCESSORS_ONLN)
+    DESTDIR="`dirname $PREFIX`" make -C $ltp_out -f $ltp_git/Makefile top_srcdir=$ltp_git top_builddir=$ltp_out -j$(getconf _NPROCESSORS_ONLN) install
+
+    cd $PREFIX && find | sort > list.out-tree.txt
+}
+
+if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
+    cat << EOF
+USAGE:
+in tree build:
+$0
+
+out of tree build:
+$0 any-string
+EOF
+    exit 0
+fi
+
+rm -rf $PREFIX
+if [ "$1" ]; then
+    out_tree_build
+else
+    in_tree_build
+fi
+
+# vim: set ft=sh ts=4 sts=4 sw=4 expandtab :
-- 
2.12.0


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

* [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build
  2017-04-05  8:58 [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build Petr Vorel
  2017-04-05  8:58 ` [LTP] [PATCH 2/2] travis: Add out-of-tree build Petr Vorel
@ 2017-04-06 15:24 ` Cyril Hrubis
  2017-04-10 12:31   ` Domenico Andreoli
  1 sibling, 1 reply; 4+ messages in thread
From: Cyril Hrubis @ 2017-04-06 15:24 UTC (permalink / raw)
  To: ltp

Hi!
> -top_srcdir?=		.
> +open_posix_srcdir := $(if $(top_srcdir),$(top_srcdir)/testcases/open_posix_testsuite,$(abspath .))

I wonder if we want to be consistent with the rest of the LTP
buildsystem define the top_srcdir ?= ../.. here so that we could use
it below in both cases when the make is executed in the open posix
directory or from the top level Makefile.

Then we could define the open_posix_srcdir := $(top_srcdir)/testcases/open_posix_testsuite

> -prefix?=		`$(top_srcdir)/scripts/print_prefix.sh`
> +prefix?=		`$(open_posix_srcdir)/scripts/print_prefix.sh`
>  
>  datadir?=		$(prefix)/share
>  
> @@ -35,13 +35,13 @@ exec_prefix?=		$(prefix)
>  all: conformance-all functional-all stress-all tools-all
>  
>  ifeq ($(shell uname -s), Linux)
> -include Makefile.linux
> +include $(open_posix_srcdir)/Makefile.linux
>  endif
>  
>  clean: $(CRITICAL_MAKEFILE)
>  	@rm -f $(LOGFILE)*
>  	@for dir in $(SUBDIRS) tools; do \
> -	    $(MAKE) -C $$dir clean >/dev/null; \
> +	    $(MAKE) -C $(open_posix_srcdir)/$$dir clean >/dev/null; \
>  	done
>  
>  distclean: distclean-makefiles
> @@ -49,12 +49,12 @@ distclean: distclean-makefiles
>  # Clean out all of the generated Makefiles.
>  distclean-makefiles:
>  	@for dir in $(SUBDIRS); do \
> -		$(MAKE) -C $$dir $@; \
> +		$(MAKE) -C $(open_posix_srcdir)/$$dir $@; \
>  	done
>  
>  generate-makefiles: distclean-makefiles
> -	@env top_srcdir=$(top_srcdir) \
> -	    $(top_srcdir)/scripts/generate-makefiles.sh
> +	@env top_srcdir=$(open_posix_srcdir) \
> +	    $(open_posix_srcdir)/scripts/generate-makefiles.sh

Thinking of this, we still put the generated makefiles into the source
directory. I wonder if it's a good idea to even try to put the makefiles
into the build directory and overcomplicate the already overcomplicated
makefile generator.

And don't forget that the generate-makefile.sh script needs to get a
path to the config-openposix.mk which is located in the build directory
under include/mk/ otherwise the top level CFLAGS are not propagated.

Looks like this is really can of worms...

>  install: bin-install conformance-install functional-install stress-install
>  
> @@ -63,47 +63,47 @@ test: conformance-test functional-test stress-test
>  # Test build and execution targets.
>  conformance-all: $(CRITICAL_MAKEFILE)
>  	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> -	@$(BUILD_MAKE) -C conformance -j1 all
> +	@$(BUILD_MAKE) -C $(open_posix_srcdir)/conformance -j1 all
>  
>  conformance-install:
> -	@$(MAKE) -C conformance install
> +	@$(MAKE) -C $(open_posix_srcdir)/conformance install
>  
>  conformance-test:
>  	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> -	@$(TEST_MAKE) -C conformance test
> +	@$(TEST_MAKE) -C $(open_posix_srcdir)/conformance test
>  
>  functional-all: $(CRITICAL_MAKEFILE)
>  	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> -	@$(BUILD_MAKE) -C functional -j1 all
> +	@$(BUILD_MAKE) -C $(open_posix_srcdir)/functional -j1 all
>  
>  functional-install:
> -	@$(MAKE) -C functional install
> +	@$(MAKE) -C $(open_posix_srcdir)/functional install
>  
>  functional-test:
>  	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> -	@$(TEST_MAKE) -C functional test
> +	@$(TEST_MAKE) -C $(open_posix_srcdir)/functional test
>  
>  stress-all: $(CRITICAL_MAKEFILE)
>  	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> -	@$(BUILD_MAKE) -C stress -j1 all
> +	@$(BUILD_MAKE) -C $(open_posix_srcdir)/stress -j1 all
>  
>  stress-install:
> -	@$(MAKE) -C stress install
> +	@$(MAKE) -C $(open_posix_srcdir)/stress install
>  
>  stress-test:
>  	@rm -f `if echo "$(LOGFILE)" | grep -q '^/'; then echo "$(LOGFILE)"; else echo "\`pwd\`/$(LOGFILE)"; fi`.$@
> -	@$(TEST_MAKE) -C stress test
> +	@$(TEST_MAKE) -C $(open_posix_srcdir)/stress test
>  
>  # Tools build and install targets.
>  bin-install:
> -	@$(MAKE) -C bin install
> +	@$(MAKE) -C $(open_posix_srcdir)/bin install
>  
>  tools-all:
> -	@$(MAKE) -C tools all
> +	@$(MAKE) -C $(open_posix_srcdir)/tools all top_srcdir=$(open_posix_srcdir)
>  
>  $(CRITICAL_MAKEFILE): \
> -    $(top_srcdir)/scripts/generate-makefiles.sh	\
> -    $(top_srcdir)/CFLAGS			\
> -    $(top_srcdir)/LDFLAGS			\
> -    $(top_srcdir)/LDLIBS
> -	@$(MAKE) generate-makefiles
> +    $(open_posix_srcdir)/scripts/generate-makefiles.sh	\
> +    $(open_posix_srcdir)/CFLAGS			\
> +    $(open_posix_srcdir)/LDFLAGS			\
> +    $(open_posix_srcdir)/LDLIBS
> +	@$(MAKE) -f $(open_posix_srcdir)/Makefile generate-makefiles
> diff --git a/testcases/open_posix_testsuite/Makefile.linux b/testcases/open_posix_testsuite/Makefile.linux
> index 77e20a958..adef565a8 100644
> --- a/testcases/open_posix_testsuite/Makefile.linux
> +++ b/testcases/open_posix_testsuite/Makefile.linux
> @@ -8,7 +8,7 @@ cmd_disable = @set -e; \
>  
>  BROKEN :=
>  
> -kver_cmp = $(shell $(top_srcdir)/scripts/tst_kvercmp.sh 2 6 22)
> +kver_cmp = $(shell $(open_posix_srcdir)/scripts/tst_kvercmp.sh 2 6 22)
>  ifeq ($(kver_cmp), 1)
>  BROKEN += t_sigaction_16-1
>  endif
> diff --git a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
> index 67a60c8cb..d50d517ae 100755
> --- a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
> +++ b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
> @@ -22,7 +22,7 @@ generate_locate_test_makefile() {
>  
>  	echo "Generating $maketype Makefiles"
>  
> -	locate-test --$maketype | sed -e 's,^./,,g' > make-gen.$maketype
> +	locate-test --$maketype $top_srcdir | sed -e 's,^./,,g' > make-gen.$maketype
>  
>  	generate_makefiles make-gen.$maketype $*
>  
> -- 
> 2.12.0
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz

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

* [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build
  2017-04-06 15:24 ` [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build Cyril Hrubis
@ 2017-04-10 12:31   ` Domenico Andreoli
  0 siblings, 0 replies; 4+ messages in thread
From: Domenico Andreoli @ 2017-04-10 12:31 UTC (permalink / raw)
  To: ltp

On Thu, Apr 06, 2017 at 05:24:49PM +0200, Cyril Hrubis wrote:
> Hi!

Hallo,

> > -top_srcdir?=		.
> > +open_posix_srcdir := $(if $(top_srcdir),$(top_srcdir)/testcases/open_posix_testsuite,$(abspath .))
> 
> I wonder if we want to be consistent with the rest of the LTP
> buildsystem define the top_srcdir ?= ../.. here so that we could use
> it below in both cases when the make is executed in the open posix
> directory or from the top level Makefile.

The important part is the use of abspath somewhere, these variables
are referenced also from processes running in different subdirs.

This is quite visible in the automatically generated makefiles.

> > diff --git a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
> > index 67a60c8cb..d50d517ae 100755
> > --- a/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
> > +++ b/testcases/open_posix_testsuite/scripts/generate-makefiles.sh
> > @@ -22,7 +22,7 @@ generate_locate_test_makefile() {
> >  
> >  	echo "Generating $maketype Makefiles"
> >  
> > -	locate-test --$maketype | sed -e 's,^./,,g' > make-gen.$maketype
> > +	locate-test --$maketype $top_srcdir | sed -e 's,^./,,g' > make-gen.$maketype
> >  	generate_makefiles make-gen.$maketype $*

I had great troubles in enabling this step

Domenico

-- 
3B10 0CA1 8674 ACBA B4FE  FCD2 CE5B CF17 9960 DE13

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

end of thread, other threads:[~2017-04-10 12:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-05  8:58 [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build Petr Vorel
2017-04-05  8:58 ` [LTP] [PATCH 2/2] travis: Add out-of-tree build Petr Vorel
2017-04-06 15:24 ` [LTP] [PATCH 1/2] open_posix_testsuite: Fix recursive build Cyril Hrubis
2017-04-10 12:31   ` Domenico Andreoli

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.