public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/rust] f44: Update to Rust 1.97.0
@ 2026-07-09 22:04 Paul Murphy
  0 siblings, 0 replies; only message in thread
From: Paul Murphy @ 2026-07-09 22:04 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/rust
Branch : f44
Commit : 0597721405e9f8eef01db0910b388f6a9c7f7f88
Author : Paul Murphy <murp@redhat.com>
Date   : 2026-07-09T09:37:11-05:00
Stats  : +74/-269 in 8 file(s)
URL    : https://src.fedoraproject.org/rpms/rust/c/0597721405e9f8eef01db0910b388f6a9c7f7f88?branch=f44

Log:
Update to Rust 1.97.0

---
diff --git a/.gitignore b/.gitignore
index f1b23f3..3cd77c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -478,3 +478,5 @@
 /rustc-1.96.0-src.tar.xz.asc
 /rustc-1.96.1-src.tar.xz
 /rustc-1.96.1-src.tar.xz.asc
+/rustc-1.97.0-src.tar.xz
+/rustc-1.97.0-src.tar.xz.asc

diff --git a/0001-openssl-4-support-2591.patch b/0001-openssl-4-support-2591.patch
deleted file mode 100644
index 97b2b41..0000000
--- a/0001-openssl-4-support-2591.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-From 23e891745313547c7dd86fa3f276ba607f7857cb Mon Sep 17 00:00:00 2001
-From: Paul Kehrer <paul.l.kehrer@gmail.com>
-Date: Wed, 15 Apr 2026 19:07:23 -0500
-Subject: [PATCH] openssl 4 support (#2591)
-
-[cherry-picked for openssl-sys only]
-
-* Add initial support for OpenSSL 4.x betas
-
-Accept OpenSSL 4.x in the version check (raising the ceiling to 4.0.0
-final), add the ossl400 cfg flag, and ignore tests with behavioral
-changes in OpenSSL 4 (tmp_dh_callback, zero_length_buffers).
-
-* Fix zero-length SSL_read_ex/SSL_write_ex calling into OpenSSL
-
-The empty-buffer early return was only on the pre-1.1.1 code path.
-On the ossl111/libressl path, SSL_read_ex and SSL_write_ex were called
-with length 0, causing OpenSSL to perform wire I/O unnecessarily. This
-was exposed by OpenSSL 4 which now errors. Hoist the guard above the
-cfg_if so it applies to all versions.
-
-Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
-* Handle const-qualified return types in OpenSSL 4
-
-OpenSSL 4 changed X509_NAME_ENTRY_get_data, X509_NAME_ENTRY_get_object,
-and X509_CRL_get_issuer to return const pointers. Use const_ptr_if(ossl400)
-in the FFI bindings and cast to *mut at the call sites since we only
-return immutable references.
-
-Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
-* Add Version::Openssl4xx, bind SSL_OP_IGNORE_UNEXPECTED_EOF
-
-Add a distinct Openssl4xx variant to the Version enum and use it for
-OpenSSL 4.x detection. Bind SSL_OP_IGNORE_UNEXPECTED_EOF (gated on
-ossl400) and set it in the default_verify_paths test to handle peers
-that close without close_notify.
-
-Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
-* Add 4.0.0-beta1 in CI
-
-* cargo fmt
-
-* update a comment and some cfg guards
-
-* missed a comment
-
-* 4.0.0
-
----------
-
-Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
----
- openssl-sys/build/cfgs.rs           |  3 +++
- openssl-sys/build/main.rs           | 14 ++++++++++----
- openssl-sys/src/handwritten/x509.rs | 12 +++++++++---
- openssl-sys/src/ssl.rs              |  2 ++
- 4 files changed, 24 insertions(+), 7 deletions(-)
-
-diff --git a/openssl-sys/build/cfgs.rs b/openssl-sys/build/cfgs.rs
-index b5527929d8e6..a544a8b533c9 100644
---- a/openssl-sys/build/cfgs.rs
-+++ b/openssl-sys/build/cfgs.rs
-@@ -93,6 +93,9 @@ pub fn get(openssl_version: Option<u64>, libressl_version: Option<u64>) -> Vec<&
-         if openssl_version >= 0x3_05_00_00_0 {
-             cfgs.push("ossl350");
-         }
-+        if openssl_version >= 0x4_00_00_00_0 {
-+            cfgs.push("ossl400");
-+        }
-     }
- 
-     cfgs
-diff --git a/openssl-sys/build/main.rs b/openssl-sys/build/main.rs
-index 3f9eae069d5b..44c8fad04970 100644
---- a/openssl-sys/build/main.rs
-+++ b/openssl-sys/build/main.rs
-@@ -19,6 +19,7 @@ mod run_bindgen;
- 
- #[derive(PartialEq)]
- enum Version {
-+    Openssl4xx,
-     Openssl3xx,
-     Openssl11x,
-     Libressl,
-@@ -180,6 +181,7 @@ fn main() {
-     println!("cargo:rustc-check-cfg=cfg(ossl320)");
-     println!("cargo:rustc-check-cfg=cfg(ossl330)");
-     println!("cargo:rustc-check-cfg=cfg(ossl340)");
-+    println!("cargo:rustc-check-cfg=cfg(ossl400)");
- 
-     check_ssl_kind();
- 
-@@ -226,7 +228,9 @@ fn main() {
-             }
-         }
-         None => match version {
--            Version::Openssl3xx | Version::Openssl11x if target.contains("windows-msvc") => {
-+            Version::Openssl4xx | Version::Openssl3xx | Version::Openssl11x
-+                if target.contains("windows-msvc") =>
-+            {
-                 vec!["libssl", "libcrypto"]
-             }
-             _ => vec!["ssl", "crypto"],
-@@ -270,7 +274,7 @@ fn main() {
-     }
- 
-     // https://github.com/openssl/openssl/pull/15086
--    if version == Version::Openssl3xx
-+    if (version == Version::Openssl3xx || version == Version::Openssl4xx)
-         && kind == "static"
-         && (env::var("CARGO_CFG_TARGET_OS").unwrap() == "linux"
-             || env::var("CARGO_CFG_TARGET_OS").unwrap() == "android")
-@@ -436,8 +440,10 @@ See rust-openssl documentation for more information:
-         let openssl_version = openssl_version.unwrap();
-         println!("cargo:version_number={openssl_version:x}");
- 
--        if openssl_version >= 0x4_00_00_00_0 {
-+        if openssl_version >= 0x5_00_00_00_0 {
-             version_error()
-+        } else if openssl_version >= 0x4_00_00_00_0 {
-+            Version::Openssl4xx
-         } else if openssl_version >= 0x3_00_00_00_0 {
-             Version::Openssl3xx
-         } else if openssl_version >= 0x1_01_01_00_0 {
-@@ -460,7 +466,7 @@ fn version_error() -> ! {
-     panic!(
-         "
- 
--This crate is only compatible with OpenSSL (version 1.1.0, 1.1.1, or 3.x), or LibreSSL 3.5.0
-+This crate is only compatible with OpenSSL (version 1.1.0, 1.1.1, 3.x, or 4.x), or LibreSSL 3.5.0
- through 4.2.x, but a different version of OpenSSL was found. The build is now aborting
- due to this version mismatch.
- 
-diff --git a/openssl-sys/src/handwritten/x509.rs b/openssl-sys/src/handwritten/x509.rs
-index b103030f6ea9..bd3e38dd0031 100644
---- a/openssl-sys/src/handwritten/x509.rs
-+++ b/openssl-sys/src/handwritten/x509.rs
-@@ -332,7 +332,13 @@ extern "C" {
-     pub fn X509_CRL_get_REVOKED(crl: *mut X509_CRL) -> *mut stack_st_X509_REVOKED;
-     pub fn X509_CRL_get0_nextUpdate(x: *const X509_CRL) -> *const ASN1_TIME;
-     pub fn X509_CRL_get0_lastUpdate(x: *const X509_CRL) -> *const ASN1_TIME;
--    pub fn X509_CRL_get_issuer(x: *const X509_CRL) -> *mut X509_NAME;
-+}
-+const_ptr_api! {
-+    extern "C" {
-+        pub fn X509_CRL_get_issuer(x: *const X509_CRL) -> #[const_ptr_if(ossl400)] X509_NAME;
-+    }
-+}
-+extern "C" {
- 
-     #[cfg(ossl110)]
-     pub fn X509_get0_extensions(req: *const X509) -> *const stack_st_X509_EXTENSION;
-@@ -370,8 +376,8 @@ const_ptr_api! {
-             set: c_int,
-         ) -> c_int;
-         pub fn i2d_X509_NAME(n: #[const_ptr_if(ossl300)] X509_NAME, buf: *mut *mut u8) -> c_int;
--        pub fn X509_NAME_ENTRY_get_object(ne: *const X509_NAME_ENTRY) -> *mut ASN1_OBJECT;
--        pub fn X509_NAME_ENTRY_get_data(ne: *const X509_NAME_ENTRY) -> *mut ASN1_STRING;
-+        pub fn X509_NAME_ENTRY_get_object(ne: *const X509_NAME_ENTRY) -> #[const_ptr_if(ossl400)] ASN1_OBJECT;
-+        pub fn X509_NAME_ENTRY_get_data(ne: *const X509_NAME_ENTRY) -> #[const_ptr_if(ossl400)] ASN1_STRING;
-     }
- }
- extern "C" {
-diff --git a/openssl-sys/src/ssl.rs b/openssl-sys/src/ssl.rs
-index 596fd1e53050..769f1f9ea10f 100644
---- a/openssl-sys/src/ssl.rs
-+++ b/openssl-sys/src/ssl.rs
-@@ -82,6 +82,8 @@ cfg_if! {
- }
- #[cfg(ossl110)]
- pub const SSL_OP_SAFARI_ECDHE_ECDSA_BUG: ssl_op_type!() = 0x00000040;
-+#[cfg(ossl300)]
-+pub const SSL_OP_IGNORE_UNEXPECTED_EOF: ssl_op_type!() = 0x00000080;
- 
- pub const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: ssl_op_type!() = 0x00000800;
- 
--- 
-2.54.0
-

diff --git a/rust.spec b/rust.spec
index 001eff4..8f73dd8 100644
--- a/rust.spec
+++ b/rust.spec
@@ -1,5 +1,5 @@
 Name:           rust
-Version:        1.96.1
+Version:        1.97.0
 Release:        %autorelease
 Summary:        The Rust Programming Language
 License:        (Apache-2.0 OR MIT) AND (Artistic-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND Unicode-3.0)
@@ -9,9 +9,9 @@ URL:            https://www.rust-lang.org
 # To bootstrap from scratch, set the channel and date from src/stage0
 # e.g. 1.89.0 wants rustc: 1.88.0-2025-06-26
 # or nightly wants some beta-YYYY-MM-DD
-%global bootstrap_version 1.95.0
-%global bootstrap_channel 1.95.0
-%global bootstrap_date 2026-04-16
+%global bootstrap_version 1.96.0
+%global bootstrap_channel 1.96.0
+%global bootstrap_date 2026-05-28
 
 # Only the specified arches will use bootstrap binaries.
 # NOTE: Those binaries used to be uploaded with every new release, but that was
@@ -41,7 +41,7 @@ URL:            https://www.rust-lang.org
 # See src/bootstrap/src/core/build_steps/llvm.rs, fn check_llvm_version
 # See src/llvm-project/cmake/Modules/LLVMVersion.cmake for bundled version.
 %global min_llvm_version 21.0.0
-%global bundled_llvm_version 22.1.2
+%global bundled_llvm_version 22.1.6
 #global llvm_compat_version 21
 %global llvm llvm%{?llvm_compat_version}
 %bcond_with bundled_llvm
@@ -129,15 +129,11 @@ Patch4:         0001-bootstrap-allow-disabling-target-self-contained.patch
 Patch5:         0002-set-an-external-library-path-for-wasm32-wasi.patch
 
 # We don't want to use the bundled library in libsqlite3-sys
-Patch6:         rustc-1.96.0-unbundle-sqlite.patch
+Patch6:         rustc-1.97.0-unbundle-sqlite.patch
 
 # stage0 tries to copy all of /usr/lib, sometimes unsuccessfully, see #143735
 Patch7:         0001-only-copy-rustlib-into-stage0-sysroot.patch
 
-# https://github.com/rust-openssl/rust-openssl/pull/2591/
-# (only the openssl-sys changes, backported for 0.9.112)
-Patch8:         0001-openssl-4-support-2591.patch
-
 ### RHEL-specific patches below ###
 
 # Simple rpm macros for rust-toolset (as opposed to full rust-packaging)
@@ -147,7 +143,7 @@ Source102:      cargo_vendor.attr
 Source103:      cargo_vendor.prov
 
 # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949)
-Patch100:       rustc-1.96.1-disable-libssh2.patch
+Patch100:       rustc-1.97.0-disable-libssh2.patch
 
 # Get the Rust triple for any architecture and ABI.
 %{lua: function rust_triple(arch, abi)
@@ -716,7 +712,6 @@ test "$(cut -d' ' -f1 ./version)" = "%{lua: print((rpm.expand('%version'):gsub('
 %patch -P6 -p1
 %endif
 %patch -P7 -p1
-%patch -P8 -p2 -d vendor/openssl-sys-0.9.112
 
 %if %with disabled_libssh2
 %patch -P100 -p1
@@ -760,11 +755,8 @@ rm -rf src/tools/rustc-perf/collector/*-benchmarks/
 %clear_dir vendor/libsqlite3-sys*/sqlite3/
 %endif
 
-%clear_dir src/tools/cargo/third-party/libssh2-sys/libssh2/
-
 %if %with disabled_libssh2
 rm -rf vendor/libssh2-sys*/
-rm -rf src/tools/cargo/third-party/libssh2-sys
 %endif
 
 # This only affects the transient rust-installer, but let it use our dynamic xz-libs

diff --git a/rustc-1.96.0-unbundle-sqlite.patch b/rustc-1.96.0-unbundle-sqlite.patch
deleted file mode 100644
index 27c4129..0000000
--- a/rustc-1.96.0-unbundle-sqlite.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
---- rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2026-04-19 23:11:26.000000000 -0700
-+++ rustc-beta-src/src/tools/cargo/Cargo.lock	2026-04-23 13:19:24.942383499 -0700
-@@ -3152,7 +3152,6 @@ version = "0.37.0"
- source = "registry+https://github.com/rust-lang/crates.io-index"
- checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1"
- dependencies = [
-- "cc",
-  "pkg-config",
-  "vcpkg",
- ]
-diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
---- rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2026-04-19 23:11:26.000000000 -0700
-+++ rustc-beta-src/src/tools/cargo/Cargo.toml	2026-04-23 13:19:13.141462455 -0700
-@@ -89,7 +89,7 @@ proptest = "1.11.0"
- pulldown-cmark = { version = "0.13.3", default-features = false, features = ["html"] }
- rand = "0.10.0"
- regex = "1.12.3"
--rusqlite = { version = "0.39.0", features = ["bundled"] }
-+rusqlite = { version = "0.39.0", features = [] }
- rustc-hash = "2.1.2"
- rustc-stable-hash = "0.1.2"
- rustfix = { version = "0.9.6", path = "crates/rustfix" }

diff --git a/rustc-1.96.1-disable-libssh2.patch b/rustc-1.96.1-disable-libssh2.patch
deleted file mode 100644
index 81fdba3..0000000
--- a/rustc-1.96.1-disable-libssh2.patch
+++ /dev/null
@@ -1,47 +0,0 @@
---- rustc-1.96.1-src/src/tools/cargo/Cargo.lock.orig	2026-06-29 10:12:21.978285655 -0500
-+++ rustc-1.96.1-src/src/tools/cargo/Cargo.lock	2026-06-29 10:13:45.744985498 -0500
-@@ -3110,7 +3110,6 @@ checksum = "c9b3acc4b91781bb0b3386669d32
- dependencies = [
-  "cc",
-  "libc",
-- "libssh2-sys",
-  "libz-sys",
-  "openssl-sys",
-  "pkg-config",
-@@ -3158,18 +3157,6 @@ dependencies = [
-  "pkg-config",
-  "vcpkg",
- ]
--
--[[package]]
--name = "libssh2-sys"
--version = "0.3.1"
--dependencies = [
-- "cc",
-- "libc",
-- "libz-sys",
-- "openssl-sys",
-- "pkg-config",
-- "vcpkg",
--]
- 
- [[package]]
- name = "libz-sys"
---- rustc-1.96.1-src/src/tools/cargo/Cargo.toml.orig	2026-06-29 10:12:33.712458043 -0500
-+++ rustc-1.96.1-src/src/tools/cargo/Cargo.toml	2026-06-30 11:25:16.694756549 -0500
-@@ -51,7 +51,7 @@ filetime = "0.2.27"
- flate2 = { version = "1.1.9", default-features = false, features = ["zlib-rs"] }
- futures = { version = "0.3.32", default-features = false, features = ["std", "executor"]}
- futures-timer = "3.0.3"
--git2 = "0.20.4"
-+git2 = { version = "0.20.4", default-features = false, features = ["https"] }
- git2-curl = "0.21.0"
- # When updating this, also see if `gix-transport` further down needs updating or some auth-related tests will fail.
- gix = { version = "0.81.0", default-features = false, features = ["sha1", "progress-tree", "parallel", "dirwalk", "status"] }
-@@ -300,6 +300,3 @@ http-transport-reqwest = ["gix/blocking-
- 
- [lints]
- workspace = true
--
--[patch.crates-io]
--libssh2-sys = { path = "third-party/libssh2-sys" }

diff --git a/rustc-1.97.0-disable-libssh2.patch b/rustc-1.97.0-disable-libssh2.patch
new file mode 100644
index 0000000..964eef1
--- /dev/null
+++ b/rustc-1.97.0-disable-libssh2.patch
@@ -0,0 +1,42 @@
+--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2026-07-02 11:47:42.914176299 -0500
++++ rustc-beta-src/src/tools/cargo/Cargo.lock	2026-07-02 11:48:03.404372146 -0500
+@@ -3108,7 +3108,6 @@ checksum = "c9b3acc4b91781bb0b3386669d32
+ dependencies = [
+  "cc",
+  "libc",
+- "libssh2-sys",
+  "libz-sys",
+  "openssl-sys",
+  "pkg-config",
+@@ -3156,20 +3155,6 @@ dependencies = [
+  "pkg-config",
+  "vcpkg",
+ ]
+-
+-[[package]]
+-name = "libssh2-sys"
+-version = "0.3.2"
+-source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c04141a07bb0c0bc461cb657808764de571702a59bc5c726c400ac9a7625e3ab"
+-dependencies = [
+- "cc",
+- "libc",
+- "libz-sys",
+- "openssl-sys",
+- "pkg-config",
+- "vcpkg",
+-]
+ 
+ [[package]]
+ name = "libz-sys"
+--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2026-07-02 11:47:42.916176318 -0500
++++ rustc-beta-src/src/tools/cargo/Cargo.toml	2026-07-02 11:48:12.603460071 -0500
+@@ -51,7 +51,7 @@ filetime = "0.2.27"
+ flate2 = { version = "1.1.9", default-features = false, features = ["zlib-rs"] }
+ futures = { version = "0.3.32", default-features = false, features = ["std", "executor", "async-await"]}
+ futures-timer = "3.0.3"
+-git2 = "0.20.4"
++git2 = { version = "0.20.4", default-features = false, features = ["https"] }
+ git2-curl = "0.21.0"
+ # When updating this, also see if `gix-transport` further down needs updating or some auth-related tests will fail.
+ gix = { version = "0.83.0", default-features = false, features = ["sha1", "progress-tree", "parallel", "dirwalk", "status"] }

diff --git a/rustc-1.97.0-unbundle-sqlite.patch b/rustc-1.97.0-unbundle-sqlite.patch
new file mode 100644
index 0000000..8b35a0b
--- /dev/null
+++ b/rustc-1.97.0-unbundle-sqlite.patch
@@ -0,0 +1,21 @@
+--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2026-06-02 15:55:01.625762200 -0500
++++ rustc-beta-src/src/tools/cargo/Cargo.lock	2026-06-02 15:56:06.143120013 -0500
+@@ -3152,7 +3152,6 @@ version = "0.37.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1"
+ dependencies = [
+- "cc",
+  "pkg-config",
+  "vcpkg",
+ ]
+--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2026-06-02 15:54:48.946691882 -0500
++++ rustc-beta-src/src/tools/cargo/Cargo.toml	2026-06-02 15:56:21.480430158 -0500
+@@ -88,7 +88,7 @@ proptest = "1.11.0"
+ pulldown-cmark = { version = "0.13.3", default-features = false, features = ["html"] }
+ rand = "0.10.1"
+ regex = "1.12.3"
+-rusqlite = { version = "0.39.0", features = ["bundled"] }
++rusqlite = { version = "0.39.0", features = [] }
+ rustc-hash = "2.1.2"
+ rustc-stable-hash = "0.1.2"
+ rustfix = { version = "0.9.7", path = "crates/rustfix" }

diff --git a/sources b/sources
index 3e23821..92dcd9b 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
-SHA512 (rustc-1.96.1-src.tar.xz) = fa835f26e1969cababc3c32eeb064548fcb4f05cd1a25fd1b5f6f12660170225b389ca3442da1ef23f999e34ca8ec348810c498d1fff0bee140ec372a37009b1
-SHA512 (rustc-1.96.1-src.tar.xz.asc) = 1765666d2509d93cbbad5f47507ba7510fc07cf650689238a8d39d33be0d85a06c4cd67281d78a1b5e29258002d7dd6da912c9015a8d0e942ee01fc46fa0dca3
+SHA512 (rustc-1.97.0-src.tar.xz) = 0f337f9bd48a4e18e2f440923524ff84db222144c9e8f07f5a2cea40ea894eceaa1ba86cb973f356a416ad22d3b14156a930cccd897773947178d4a03528a223
+SHA512 (rustc-1.97.0-src.tar.xz.asc) = 5cdb7c130bdafc21ff78d873f7dc5afe901bea9217f1aae40cab674467a1502fb3a448cba63dac7e76bbf782fbcd97e5d925bb388690c495e2ab8b0622a71d1e
 SHA512 (wasi-libc-wasi-sdk-32.tar.gz) = 5a07d2d21789c7ad8669d87a33bd0d397b2c64ebb11de81ee3c1c027754a9a88e06c524526b4b7170fa4dfd7e1bfec0a5f58757103a6fe1a8ab136abc7e8a190

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-09 22:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-09 22:04 [rpms/rust] f44: Update to Rust 1.97.0 Paul Murphy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox