All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ray Kinsella <mdr@ashroe.eu>
To: "Hemant Agrawal (OSS)" <hemant.agrawal@oss.nxp.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v3 01/12] common/dpaax: move internal symbols into INTERNAL section
Date: Thu, 14 May 2020 08:13:34 +0100	[thread overview]
Message-ID: <63aee4d4-db63-de05-2ff1-5f9ae748da80@ashroe.eu> (raw)
In-Reply-To: <DB7PR04MB445944CD0A3C1D9A533BE3BD89BF0@DB7PR04MB4459.eurprd04.prod.outlook.com>

Hi Hemant,

So validate_abi.sh has been somewhat deprecated - it may be removed in future.
To run the libabigail abi checks, you need to run the magic command.

DPDK_ABI_REF_DIR=/build/dpdk/reference/ DPDK_ABI_REF_VERSION=v20.02 ./devtools/test-meson-builds.sh

DPDK_ABI_REF_DIR - needs an absolute path, for reasons that are still unclear to me. 
DPDK_ABI_REF_VERSION - you need to use the last DPDK release.

Thanks, 

Ray K

On 13/05/2020 15:06, Hemant Agrawal (OSS) wrote:
> Hi Ray,
> 	I could not find validate_abi using libabigail.abignore.  Am I missing something. 
> Though check_abi.sh uses it. 
> 
> When I am checking with validate_abi.sh, I still see warnings.
> 
> Regards,
> Hemant
> 
>> -----Original Message-----
>> From: Hemant Agrawal <hemant.agrawal@nxp.com>
>> Sent: Wednesday, May 13, 2020 6:58 PM
>> To: dev@dpdk.org; david.marchand@redhat.com; mdr@ashroe.eu
>> Cc: Hemant Agrawal <hemant.agrawal@nxp.com>
>> Subject: [PATCH v3 01/12] common/dpaax: move internal symbols into
>> INTERNAL section
>>
>> This patch moves the internal symbols to INTERNAL sections so that any
>> change in them is not reported as ABI breakage.
>>
>> Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
>> ---
>>  devtools/libabigail.abignore                      |  3 +++
>>  drivers/common/dpaax/dpaa_of.h                    | 15 +++++++++++++++
>>  drivers/common/dpaax/dpaax_iova_table.h           |  4 ++++
>>  drivers/common/dpaax/rte_common_dpaax_version.map |  2 +-
>>  4 files changed, 23 insertions(+), 1 deletion(-)
>>
>> diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore index
>> c9ee73cb3c..b1488d5549 100644
>> --- a/devtools/libabigail.abignore
>> +++ b/devtools/libabigail.abignore
>> @@ -48,3 +48,6 @@
>>          changed_enumerators = RTE_CRYPTO_AEAD_LIST_END
>> [suppress_variable]
>>          name = rte_crypto_aead_algorithm_strings
>> +; Ignore moving DPAAx stable functions to INTERNAL tag [suppress_file]
>> +	file_name_regexp = ^librte_common_dpaax\.
>> diff --git a/drivers/common/dpaax/dpaa_of.h
>> b/drivers/common/dpaax/dpaa_of.h index 960b421766..38d91a1afe 100644
>> --- a/drivers/common/dpaax/dpaa_of.h
>> +++ b/drivers/common/dpaax/dpaa_of.h
>> @@ -24,6 +24,7 @@
>>  #include <limits.h>
>>  #include <rte_common.h>
>>  #include <dpaa_list.h>
>> +#include <rte_compat.h>
>>
>>  #ifndef OF_INIT_DEFAULT_PATH
>>  #define OF_INIT_DEFAULT_PATH "/proc/device-tree"
>> @@ -102,6 +103,7 @@ struct dt_file {
>>  	uint64_t buf[OF_FILE_BUF_MAX >> 3];
>>  };
>>
>> +__rte_internal
>>  const struct device_node *of_find_compatible_node(
>>  					const struct device_node *from,
>>  					const char *type __rte_unused,
>> @@ -113,32 +115,44 @@ const struct device_node
>> *of_find_compatible_node(
>>  		dev_node != NULL; \
>>  		dev_node = of_find_compatible_node(dev_node, type,
>> compatible))
>>
>> +__rte_internal
>>  const void *of_get_property(const struct device_node *from, const char
>> *name,
>>  			    size_t *lenp) __attribute__((nonnull(2)));
>> +__rte_internal
>>  bool of_device_is_available(const struct device_node *dev_node);
>>
>> +
>> +__rte_internal
>>  const struct device_node *of_find_node_by_phandle(uint64_t ph);
>>
>> +__rte_internal
>>  const struct device_node *of_get_parent(const struct device_node
>> *dev_node);
>>
>> +__rte_internal
>>  const struct device_node *of_get_next_child(const struct device_node
>> *dev_node,
>>  					    const struct device_node *prev);
>>
>> +__rte_internal
>>  const void *of_get_mac_address(const struct device_node *np);
>>
>>  #define for_each_child_node(parent, child) \
>>  	for (child = of_get_next_child(parent, NULL); child != NULL; \
>>  			child = of_get_next_child(parent, child))
>>
>> +
>> +__rte_internal
>>  uint32_t of_n_addr_cells(const struct device_node *dev_node);  uint32_t
>> of_n_size_cells(const struct device_node *dev_node);
>>
>> +__rte_internal
>>  const uint32_t *of_get_address(const struct device_node *dev_node, size_t
>> idx,
>>  			       uint64_t *size, uint32_t *flags);
>>
>> +__rte_internal
>>  uint64_t of_translate_address(const struct device_node *dev_node,
>>  			      const uint32_t *addr) __attribute__((nonnull));
>>
>> +__rte_internal
>>  bool of_device_is_compatible(const struct device_node *dev_node,
>>  			     const char *compatible);
>>
>> @@ -146,6 +160,7 @@ bool of_device_is_compatible(const struct
>> device_node *dev_node,
>>   * subsystem that is device-tree-dependent. Eg. Qman/Bman, config layers,
>> etc.
>>   * The path should usually be "/proc/device-tree".
>>   */
>> +__rte_internal
>>  int of_init_path(const char *dt_path);
>>
>>  /* of_finish() allows a controlled tear-down of the device-tree layer, eg. if a
>> diff --git a/drivers/common/dpaax/dpaax_iova_table.h
>> b/drivers/common/dpaax/dpaax_iova_table.h
>> index fc3b9e7a8f..230fba8ba0 100644
>> --- a/drivers/common/dpaax/dpaax_iova_table.h
>> +++ b/drivers/common/dpaax/dpaax_iova_table.h
>> @@ -61,9 +61,13 @@ extern struct dpaax_iova_table *dpaax_iova_table_p;
>> #define DPAAX_MEM_SPLIT_MASK_OFF (DPAAX_MEM_SPLIT - 1) /**< Offset */
>>
>>  /* APIs exposed */
>> +__rte_internal
>>  int dpaax_iova_table_populate(void);
>> +__rte_internal
>>  void dpaax_iova_table_depopulate(void);
>> +__rte_internal
>>  int dpaax_iova_table_update(phys_addr_t paddr, void *vaddr, size_t length);
>> +__rte_internal
>>  void dpaax_iova_table_dump(void);
>>
>>  static inline void *dpaax_iova_table_get_va(phys_addr_t paddr) __rte_hot;
>> diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map
>> b/drivers/common/dpaax/rte_common_dpaax_version.map
>> index f72eba761d..ad2b2b3fec 100644
>> --- a/drivers/common/dpaax/rte_common_dpaax_version.map
>> +++ b/drivers/common/dpaax/rte_common_dpaax_version.map
>> @@ -1,4 +1,4 @@
>> -DPDK_20.0 {
>> +INTERNAL {
>>  	global:
>>
>>  	dpaax_iova_table_depopulate;
>> --
>> 2.17.1
> 

  reply	other threads:[~2020-05-14  7:13 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-05 14:08 [dpdk-dev] [PATCH 1/7] common/dpaax: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-05 14:08 ` [dpdk-dev] [PATCH 2/7] mempool/dpaa2: " Hemant Agrawal
2020-05-05 14:08 ` [dpdk-dev] [PATCH 3/7] bus/fslmc: " Hemant Agrawal
2020-05-05 14:08 ` [dpdk-dev] [PATCH 4/7] bus/dpaa: " Hemant Agrawal
2020-05-05 14:08 ` [dpdk-dev] [PATCH 5/7] crypto: " Hemant Agrawal
2020-05-05 14:08 ` [dpdk-dev] [PATCH 6/7] net/dpaa2: " Hemant Agrawal
2020-05-05 14:08 ` [dpdk-dev] [PATCH 7/7] net/dpaa: " Hemant Agrawal
2020-05-05 17:07 ` [dpdk-dev] [PATCH 1/7] common/dpaax: " David Marchand
2020-05-07  6:20   ` Hemant Agrawal
2020-05-07  6:54     ` Ray Kinsella
2020-05-12 14:00 ` [dpdk-dev] [PATCH v2 01/12] " Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 02/12] mempool/dpaa2: " Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 03/12] bus/fslmc: " Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 04/12] bus/fslmc: share mcp ptr as function across libs Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 05/12] bus/fslmc: remove unused symbols Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 06/12] bus/dpaa: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 07/12] crypto: " Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 08/12] net/dpaa2: " Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 09/12] net/dpaa: " Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 10/12] bus/dpaa: share qman portal ids as function calls Hemant Agrawal
2020-05-12 14:00   ` [dpdk-dev] [PATCH v2 11/12] bus/dpaa: move log into to respective dpaa drivers Hemant Agrawal
2020-05-12 14:01   ` [dpdk-dev] [PATCH v2 12/12] bus/dpaa: change netcfg access as function Hemant Agrawal
2020-05-13 12:44   ` [dpdk-dev] [PATCH v2 01/12] common/dpaax: move internal symbols into INTERNAL section Thomas Monjalon
2020-05-13 13:27   ` [dpdk-dev] [PATCH v3 00/12] NXP DPAAx: move internal symbols to INTERNAL Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 01/12] common/dpaax: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-13 14:06       ` Hemant Agrawal (OSS)
2020-05-14  7:13         ` Ray Kinsella [this message]
2020-05-14  9:53           ` Hemant Agrawal (OSS)
2020-05-14 10:09             ` Ray Kinsella
2020-05-14 11:06               ` Hemant Agrawal (OSS)
2020-05-14 11:10                 ` Ray Kinsella
2020-05-14 11:19                   ` David Marchand
2020-05-14 11:23                     ` Hemant Agrawal (OSS)
2020-05-14 12:38                       ` Hemant Agrawal (OSS)
2020-05-14 13:31                         ` David Marchand
2020-05-14 14:10                           ` Hemant Agrawal (OSS)
2020-05-14 16:28                           ` David Marchand
2020-05-14 17:15                             ` Hemant Agrawal (OSS)
2020-05-15  9:26                               ` Thomas Monjalon
2020-05-15 11:19                                 ` Thomas Monjalon
2020-05-14 11:21                   ` Hemant Agrawal (OSS)
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 02/12] mempool/dpaa2: " Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 03/12] bus/fslmc: " Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 04/12] bus/dpaa: " Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 05/12] crypto: " Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 06/12] net/dpaa2: " Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 07/12] net/dpaa: " Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 08/12] bus/dpaa: share qman portal ids as function calls Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 09/12] bus/dpaa: move log into to respective dpaa drivers Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 10/12] bus/dpaa: change netcfg access as function Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 11/12] bus/fslmc: share mcp ptr as function across libs Hemant Agrawal
2020-05-13 13:27     ` [dpdk-dev] [PATCH v3 12/12] bus/fslmc: remove unused symbols Hemant Agrawal
2020-05-14 13:25     ` [dpdk-dev] [PATCH v4 00/13]NXP DPAAx: move internal symbols to INTERNAL Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 01/13] common/dpaax: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 02/13] bus/fslmc: " Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 03/13] bus/dpaa: " Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 04/13] crypto: " Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 05/13] mempool/dpaa2: " Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 06/13] net/dpaa: " Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 07/13] net/dpaa2: " Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 08/13] mempool/dpaa2: fix to add the include file Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 09/13] bus/dpaa: share qman portal ids as function calls Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 10/13] bus/dpaa: move log into to respective dpaa drivers Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 11/13] bus/dpaa: change netcfg access as function Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 12/13] bus/fslmc: share mcp ptr as function across libs Hemant Agrawal
2020-05-14 13:25       ` [dpdk-dev] [PATCH v4 13/13] bus/fslmc: remove unused symbols Hemant Agrawal
2020-05-14 14:24       ` [dpdk-dev] [PATCH v5 00/13] NXP DPAAx: move internal symbols to INTERNAL Hemant Agrawal
2020-05-14 14:24         ` [dpdk-dev] [PATCH v5 01/13] common/dpaax: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-14 14:24         ` [dpdk-dev] [PATCH] temp Hemant Agrawal
2020-05-14 14:24         ` [dpdk-dev] [PATCH v5 02/13] bus/fslmc: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-14 14:24         ` [dpdk-dev] [PATCH v5 03/13] bus/dpaa: " Hemant Agrawal
2020-05-14 14:24         ` [dpdk-dev] [PATCH v5 04/13] crypto: " Hemant Agrawal
2020-05-14 14:29       ` [dpdk-dev] [PATCH v6 00/13] NXP DPAAx: move internal symbols to INTERNAL Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 01/13] common/dpaax: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 02/13] bus/fslmc: " Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 03/13] bus/dpaa: " Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 04/13] crypto: " Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 05/13] mempool/dpaa2: " Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 06/13] net/dpaa: " Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 07/13] net/dpaa2: " Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 08/13] mempool/dpaa2: fix to add the include file Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 09/13] bus/dpaa: share qman portal ids as function calls Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 10/13] bus/dpaa: move log into to respective dpaa drivers Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 11/13] bus/dpaa: change netcfg access as function Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 12/13] bus/fslmc: share mcp ptr as function across libs Hemant Agrawal
2020-05-14 14:29         ` [dpdk-dev] [PATCH v6 13/13] bus/fslmc: remove unused symbols Hemant Agrawal
2020-05-15  5:08         ` [dpdk-dev] [PATCH v7 00/13] NXP DPAAx: move internal symbols to INTERNAL Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 01/13] common/dpaax: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 02/13] bus/fslmc: " Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 03/13] bus/dpaa: " Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 04/13] mempool/dpaa2: " Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 05/13] net/dpaa: " Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 06/13] net/dpaa2: " Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 07/13] crypto: " Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 08/13] mempool/dpaa2: fix to add the include file Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 09/13] bus/dpaa: share qman portal ids as function calls Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 10/13] bus/dpaa: move log into to respective dpaa drivers Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 11/13] bus/dpaa: change netcfg access as function Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 12/13] bus/fslmc: share mcp ptr as function across libs Hemant Agrawal
2020-05-15  5:08           ` [dpdk-dev] [PATCH v7 13/13] bus/fslmc: remove unused symbols Hemant Agrawal
2020-05-15  9:47       ` [dpdk-dev] [PATCH v8 00/13] NXP DPAAx: move internal symbols to INTERNAL Hemant Agrawal
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 01/13] common/dpaax: move internal symbols into INTERNAL section Hemant Agrawal
2020-05-19  6:43           ` Hemant Agrawal
2020-05-19  6:44             ` Ray Kinsella
2020-05-19  9:51           ` Ray Kinsella
2020-05-19 10:39             ` Hemant Agrawal
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 02/13] bus/fslmc: " Hemant Agrawal
2020-05-19 10:00           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 03/13] bus/dpaa: " Hemant Agrawal
2020-05-19 10:56           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 04/13] mempool/dpaa2: " Hemant Agrawal
2020-05-19 11:03           ` Ray Kinsella
2020-05-19 11:16             ` Hemant Agrawal
2020-05-19 11:30               ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 05/13] net/dpaa: " Hemant Agrawal
2020-05-19 11:14           ` Ray Kinsella
2020-05-19 11:39             ` Hemant Agrawal
2020-05-19 11:41               ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 06/13] net/dpaa2: " Hemant Agrawal
2020-05-19 11:15           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 07/13] crypto: " Hemant Agrawal
2020-05-19 11:17           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 08/13] mempool/dpaa2: fix to add the include file Hemant Agrawal
2020-05-19 11:18           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 09/13] bus/dpaa: share qman portal ids as function calls Hemant Agrawal
2020-05-19 11:20           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 10/13] bus/dpaa: move log into to respective dpaa drivers Hemant Agrawal
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 11/13] bus/dpaa: change netcfg access as function Hemant Agrawal
2020-05-19 11:22           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 12/13] bus/fslmc: share mcp ptr as function across libs Hemant Agrawal
2020-05-19 11:26           ` Ray Kinsella
2020-05-15  9:47         ` [dpdk-dev] [PATCH v8 13/13] bus/fslmc: remove unused symbols Hemant Agrawal
2020-05-19 11:29           ` Ray Kinsella
2020-05-19 13:49         ` [dpdk-dev] [PATCH v8 00/13] NXP DPAAx: move internal symbols to INTERNAL David Marchand

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=63aee4d4-db63-de05-2ff1-5f9ae748da80@ashroe.eu \
    --to=mdr@ashroe.eu \
    --cc=dev@dpdk.org \
    --cc=hemant.agrawal@oss.nxp.com \
    /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.