public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Liming Gao" <liming.gao@intel.com>
To: "Zhang, Shenglei" <shenglei.zhang@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Wang, Jian J" <jian.j.wang@intel.com>,
	"Wu, Hao A" <hao.a.wu@intel.com>,
	"Feng, Bob C" <bob.c.feng@intel.com>
Subject: Re: [PATCH v2 0/2] Use submodule way to access brotli
Date: Fri, 3 Apr 2020 04:37:32 +0000	[thread overview]
Message-ID: <8e23fcacda4c4b6a8abf6417c9324c83@intel.com> (raw)
In-Reply-To: <20200401083157.23960-1-shenglei.zhang@intel.com>

Reviewed-by: Liming Gao <liming.gao@intel.com>

> -----Original Message-----
> From: Zhang, Shenglei <shenglei.zhang@intel.com>
> Sent: Wednesday, April 1, 2020 4:32 PM
> To: devel@edk2.groups.io
> Cc: Gao, Liming <liming.gao@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Feng, Bob C
> <bob.c.feng@intel.com>
> Subject: [PATCH v2 0/2] Use submodule way to access brotli
> 
> Currently brotli is used and customized by edk2 in BaseTools
> and MdeModulePkg. These two patches make brotli a submodule in
> edk2.
> https://bugzilla.tianocore.org/show_bug.cgi?id=2558
> https://bugzilla.tianocore.org/show_bug.cgi?id=2559
> 
> v2: Add submodule path in CISettings.py
> 
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Cc: Bob Feng <bob.c.feng@intel.com>
> Shenglei Zhang (2):
>   MdeModulePkg/BrotliCustomDecompressLib: Make brotli a submodule
>   BaseTools: Make brotli a submodule
> 
>  .../C/BrotliCompress/common/dictionary.c      | 5905 -----------------
>  .../C/BrotliCompress/common/transform.c       |  235 -
>  .../Source/C/BrotliCompress/dec/bit_reader.c  |   48 -
>  .../Source/C/BrotliCompress/dec/decode.c      | 2497 -------
>  .../Source/C/BrotliCompress/dec/huffman.c     |  356 -
>  BaseTools/Source/C/BrotliCompress/dec/state.c |  164 -
>  .../BrotliCompress/enc/backward_references.c  |  144 -
>  .../enc/backward_references_hq.c              |  830 ---
>  .../Source/C/BrotliCompress/enc/bit_cost.c    |   35 -
>  .../C/BrotliCompress/enc/block_splitter.c     |  194 -
>  .../C/BrotliCompress/enc/brotli_bit_stream.c  | 1331 ----
>  .../Source/C/BrotliCompress/enc/cluster.c     |   56 -
>  .../C/BrotliCompress/enc/compress_fragment.c  |  790 ---
>  .../enc/compress_fragment_two_pass.c          |  645 --
>  .../C/BrotliCompress/enc/dictionary_hash.c    | 1120 ----
>  .../Source/C/BrotliCompress/enc/encode.c      | 1864 ------
>  .../C/BrotliCompress/enc/encoder_dict.c       |   32 -
>  .../C/BrotliCompress/enc/entropy_encode.c     |  501 --
>  .../Source/C/BrotliCompress/enc/histogram.c   |  100 -
>  .../C/BrotliCompress/enc/literal_cost.c       |  175 -
>  .../Source/C/BrotliCompress/enc/memory.c      |  170 -
>  .../Source/C/BrotliCompress/enc/metablock.c   |  667 --
>  .../Source/C/BrotliCompress/enc/static_dict.c |  486 --
>  .../Source/C/BrotliCompress/enc/utf8_util.c   |   85 -
>  .../Source/C/BrotliCompress/tools/brotli.c    | 1143 ----
>  .../BrotliDecUefiSupport.c                    |   31 +
>  .../common/dictionary.c                       | 5905 -----------------
>  .../common/transform.c                        |  235 -
>  .../dec/bit_reader.c                          |   48 -
>  .../BrotliCustomDecompressLib/dec/decode.c    | 2500 -------
>  .../BrotliCustomDecompressLib/dec/huffman.c   |  356 -
>  .../BrotliCustomDecompressLib/dec/state.c     |  164 -
>  .gitmodules                                   |    6 +
>  .pytool/CISettings.py                         |    4 +
>  BaseTools/Source/C/BrotliCompress/GNUmakefile |   54 +-
>  BaseTools/Source/C/BrotliCompress/LICENSE     |   19 -
>  BaseTools/Source/C/BrotliCompress/Makefile    |   52 +-
>  BaseTools/Source/C/BrotliCompress/README.md   |   26 -
>  BaseTools/Source/C/BrotliCompress/ReadMe.txt  |    2 -
>  BaseTools/Source/C/BrotliCompress/brotli      |    1 +
>  .../C/BrotliCompress/common/constants.h       |   64 -
>  .../Source/C/BrotliCompress/common/context.h  |  261 -
>  .../C/BrotliCompress/common/dictionary.h      |   64 -
>  .../Source/C/BrotliCompress/common/platform.h |  558 --
>  .../C/BrotliCompress/common/transform.h       |   80 -
>  .../Source/C/BrotliCompress/common/version.h  |   26 -
>  .../Source/C/BrotliCompress/dec/bit_reader.h  |  309 -
>  .../Source/C/BrotliCompress/dec/huffman.h     |   72 -
>  .../Source/C/BrotliCompress/dec/prefix.h      |  750 ---
>  BaseTools/Source/C/BrotliCompress/dec/state.h |  258 -
>  .../brotli-comparison-study-2015-09-22.pdf    |  Bin 215208 -> 0 bytes
>  .../BrotliCompress/enc/backward_references.h  |   38 -
>  .../enc/backward_references_hq.h              |   93 -
>  .../enc/backward_references_inc.h             |  153 -
>  .../Source/C/BrotliCompress/enc/bit_cost.h    |   63 -
>  .../C/BrotliCompress/enc/bit_cost_inc.h       |  127 -
>  .../C/BrotliCompress/enc/block_encoder_inc.h  |   34 -
>  .../C/BrotliCompress/enc/block_splitter.h     |   51 -
>  .../C/BrotliCompress/enc/block_splitter_inc.h |  431 --
>  .../C/BrotliCompress/enc/brotli_bit_stream.h  |   84 -
>  .../Source/C/BrotliCompress/enc/cluster.h     |   48 -
>  .../Source/C/BrotliCompress/enc/cluster_inc.h |  317 -
>  .../Source/C/BrotliCompress/enc/command.h     |  190 -
>  .../C/BrotliCompress/enc/compress_fragment.h  |   61 -
>  .../enc/compress_fragment_two_pass.h          |   54 -
>  .../C/BrotliCompress/enc/dictionary_hash.h    |   24 -
>  .../C/BrotliCompress/enc/encoder_dict.h       |   41 -
>  .../C/BrotliCompress/enc/entropy_encode.h     |  122 -
>  .../enc/entropy_encode_static.h               |  539 --
>  .../Source/C/BrotliCompress/enc/fast_log.h    |  147 -
>  .../C/BrotliCompress/enc/find_match_length.h  |   80 -
>  BaseTools/Source/C/BrotliCompress/enc/hash.h  |  497 --
>  .../C/BrotliCompress/enc/hash_composite_inc.h |  133 -
>  .../enc/hash_forgetful_chain_inc.h            |  254 -
>  .../enc/hash_longest_match64_inc.h            |  266 -
>  .../enc/hash_longest_match_inc.h              |  258 -
>  .../enc/hash_longest_match_quickly_inc.h      |  235 -
>  .../C/BrotliCompress/enc/hash_rolling_inc.h   |  215 -
>  .../enc/hash_to_binary_tree_inc.h             |  327 -
>  .../Source/C/BrotliCompress/enc/histogram.h   |   63 -
>  .../C/BrotliCompress/enc/histogram_inc.h      |   51 -
>  .../C/BrotliCompress/enc/literal_cost.h       |   30 -
>  .../Source/C/BrotliCompress/enc/memory.h      |  102 -
>  .../Source/C/BrotliCompress/enc/metablock.h   |  105 -
>  .../C/BrotliCompress/enc/metablock_inc.h      |  183 -
>  .../Source/C/BrotliCompress/enc/params.h      |   44 -
>  .../Source/C/BrotliCompress/enc/prefix.h      |   53 -
>  .../Source/C/BrotliCompress/enc/quality.h     |  165 -
>  .../Source/C/BrotliCompress/enc/ringbuffer.h  |  164 -
>  .../Source/C/BrotliCompress/enc/static_dict.h |   40 -
>  .../C/BrotliCompress/enc/static_dict_lut.h    | 5864 ----------------
>  .../Source/C/BrotliCompress/enc/utf8_util.h   |   32 -
>  .../Source/C/BrotliCompress/enc/write_bits.h  |   85 -
>  .../C/BrotliCompress/include/brotli/decode.h  |  344 -
>  .../C/BrotliCompress/include/brotli/encode.h  |  427 --
>  .../C/BrotliCompress/include/brotli/port.h    |  274 -
>  .../C/BrotliCompress/include/brotli/types.h   |   83 -
>  .../Source/C/BrotliCompress/tools/brotli.md   |  107 -
>  .../BrotliCustomDecompressLib.inf             |   48 +-
>  .../BrotliDecUefiSupport.h                    |   43 +
>  .../BrotliDecompressLibInternal.h             |   23 +-
>  .../Library/BrotliCustomDecompressLib/LICENSE |   19 -
>  .../BrotliCustomDecompressLib/README.md       |   26 -
>  .../BrotliCustomDecompressLib/ReadMe.txt      |    2 -
>  .../Library/BrotliCustomDecompressLib/brotli  |    1 +
>  .../BrotliCustomDecompressLib/brotli/decode.h |  344 -
>  .../BrotliCustomDecompressLib/brotli/port.h   |  274 -
>  .../BrotliCustomDecompressLib/brotli/types.h  |   92 -
>  .../common/constants.h                        |   64 -
>  .../common/context.h                          |  261 -
>  .../common/dictionary.h                       |   64 -
>  .../common/platform.h                         |  559 --
>  .../common/transform.h                        |   80 -
>  .../common/version.h                          |   26 -
>  .../dec/bit_reader.h                          |  309 -
>  .../BrotliCustomDecompressLib/dec/huffman.h   |   72 -
>  .../BrotliCustomDecompressLib/dec/prefix.h    |  750 ---
>  .../BrotliCustomDecompressLib/dec/state.h     |  258 -
>  .../brotli-comparison-study-2015-09-22.pdf    |  Bin 215208 -> 0 bytes
>  .../BrotliCustomDecompressLib/stddef.h        |    9 +
>  .../BrotliCustomDecompressLib/stdint.h        |    9 +
>  .../BrotliCustomDecompressLib/stdlib.h        |    9 +
>  .../BrotliCustomDecompressLib/string.h        |    9 +
>  MdeModulePkg/MdeModulePkg.dec                 |    2 +
>  Readme.md                                     |    6 +-
>  125 files changed, 212 insertions(+), 47663 deletions(-)
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/dictionary.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/transform.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/bit_reader.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/decode.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/huffman.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/state.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/backward_references.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/bit_cost.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/block_splitter.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/cluster.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/compress_fragment.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/encode.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/encoder_dict.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/entropy_encode.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/histogram.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/literal_cost.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/memory.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/metablock.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/static_dict.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/utf8_util.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/tools/brotli.c
>  create mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/dictionary.c
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/transform.c
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/bit_reader.c
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/decode.c
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/huffman.c
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/state.c
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/LICENSE
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/README.md
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/ReadMe.txt
>  create mode 160000 BaseTools/Source/C/BrotliCompress/brotli
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/constants.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/context.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/dictionary.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/platform.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/transform.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/common/version.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/bit_reader.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/huffman.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/prefix.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/dec/state.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/docs/brotli-comparison-study-2015-09-22.pdf
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/backward_references.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/backward_references_hq.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/backward_references_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/bit_cost.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/bit_cost_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/block_encoder_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/block_splitter.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/block_splitter_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/brotli_bit_stream.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/cluster.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/cluster_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/command.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/compress_fragment.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/compress_fragment_two_pass.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/dictionary_hash.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/encoder_dict.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/entropy_encode.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/entropy_encode_static.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/fast_log.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/find_match_length.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash_composite_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash_forgetful_chain_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash_longest_match64_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash_longest_match_quickly_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash_rolling_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/hash_to_binary_tree_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/histogram.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/histogram_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/literal_cost.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/memory.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/metablock.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/metablock_inc.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/params.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/prefix.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/quality.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/ringbuffer.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/static_dict.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/static_dict_lut.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/utf8_util.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/enc/write_bits.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/include/brotli/decode.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/include/brotli/encode.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/include/brotli/port.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/include/brotli/types.h
>  delete mode 100644 BaseTools/Source/C/BrotliCompress/tools/brotli.md
>  create mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/LICENSE
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/README.md
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/ReadMe.txt
>  create mode 160000 MdeModulePkg/Library/BrotliCustomDecompressLib/brotli
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/decode.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/port.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/types.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/constants.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/context.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/dictionary.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/platform.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/transform.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/common/version.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/bit_reader.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/huffman.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/prefix.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/dec/state.h
>  delete mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/docs/brotli-comparison-study-2015-09-22.pdf
>  create mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/stddef.h
>  create mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/stdint.h
>  create mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/stdlib.h
>  create mode 100644 MdeModulePkg/Library/BrotliCustomDecompressLib/string.h
> 
> --
> 2.18.0.windows.1


  parent reply	other threads:[~2020-04-03  4:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-01  8:31 [PATCH v2 0/2] Use submodule way to access brotli Zhang, Shenglei
2020-04-01  8:31 ` [PATCH v2 1/2] MdeModulePkg/BrotliCustomDecompressLib: Make brotli a submodule Zhang, Shenglei
2020-04-01  8:31 ` [PATCH v2 2/2] BaseTools: " Zhang, Shenglei
2020-04-03  4:37 ` Liming Gao [this message]
2020-04-16  9:36 ` [edk2-devel] [PATCH v2 0/2] Use submodule way to access brotli Ard Biesheuvel
2020-04-20  5:40   ` Zhang, Shenglei
  -- strict thread matches above, loose matches on Subject: below --
2020-03-09  6:32 Zhang, Shenglei
2020-03-12  3:18 ` Liming Gao

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-list 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=8e23fcacda4c4b6a8abf6417c9324c83@intel.com \
    --to=devel@edk2.groups.io \
    /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