public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/meshlab] f44: update to 2025.07, full credit to Tom Lake
@ 2026-08-28 16:45 Tom spot Callaway
0 siblings, 0 replies; only message in thread
From: Tom spot Callaway @ 2026-08-28 16:45 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/meshlab
Branch : f44
Commit : 95915ce95dac62c6fd8ce0617c4ad284f2ca803c
Author : Tom spot Callaway <spotaws@amazon.com>
Date : 2026-08-28T12:44:49-04:00
Stats : +105/-212 in 7 file(s)
URL : https://src.fedoraproject.org/rpms/meshlab/c/95915ce95dac62c6fd8ce0617c4ad284f2ca803c?branch=f44
Log:
update to 2025.07, full credit to Tom Lake
---
diff --git a/.gitignore b/.gitignore
index b7083ea..5bfaa02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,5 @@
/1.5.1.zip
/v2.6.3.zip
/u3d-1.5.1.zip
+/corto.zip
+/nexus.zip
diff --git a/meshlab-2023.12-fix-invalid-vars.patch b/meshlab-2023.12-fix-invalid-vars.patch
deleted file mode 100644
index 2852a49..0000000
--- a/meshlab-2023.12-fix-invalid-vars.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/SparseMatrix.inl.fix-invalid-vars meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/SparseMatrix.inl
---- meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/SparseMatrix.inl.fix-invalid-vars 2025-03-24 09:42:13.730188185 -0400
-+++ meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/SparseMatrix.inl 2025-03-24 09:44:30.374921811 -0400
-@@ -196,7 +196,8 @@ void SparseMatrix< T >::SetRowSize( int
- template<class T>
- void SparseMatrix<T>::SetZero()
- {
-- Resize(this->m_N, this->m_M);
-+ // I have no idea what this was trying to do, but m_N and m_M are non-existent variables
-+ // Resize(this->m_N, this->m_M);
- }
-
- template<class T>
diff --git a/meshlab-2023.12-fix-nonexistent-value.patch b/meshlab-2023.12-fix-nonexistent-value.patch
deleted file mode 100644
index 4d3a420..0000000
--- a/meshlab-2023.12-fix-nonexistent-value.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/PlyVertexMini.h.fix-nonexistent-value meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/PlyVertexMini.h
---- meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/PlyVertexMini.h.fix-nonexistent-value 2023-12-12 06:14:45.000000000 -0500
-+++ meshlab-MeshLab-2023.12/src/meshlabplugins/filter_screened_poisson/Src/PlyVertexMini.h 2025-03-24 09:32:06.181331255 -0400
-@@ -68,7 +68,7 @@ public:
- PlyOrientedVertex( void ) { ; }
- PlyOrientedVertex( Point3D< Real > p , Point3D< Real > n ) : point(p) , normal(n) { ; }
- PlyOrientedVertex operator + ( PlyOrientedVertex p ) const { return PlyOrientedVertex( point+p.point , normal+p.normal ); }
-- PlyOrientedVertex operator - ( PlyOrientedVertex p ) const { return PlyOrientedVertex( point-p.value , normal-p.normal ); }
-+ PlyOrientedVertex operator - ( PlyOrientedVertex p ) const { return PlyOrientedVertex( point-p.point , normal-p.normal ); }
- template< class _Real > PlyOrientedVertex operator * ( _Real s ) const { return PlyOrientedVertex( point*s , normal*s ); }
- template< class _Real > PlyOrientedVertex operator / ( _Real s ) const { return PlyOrientedVertex( point/s , normal/s ); }
- PlyOrientedVertex& operator += ( PlyOrientedVertex p ) { point += p.point , normal += p.normal ; return *this; }
-@@ -97,7 +97,7 @@ public:
- }
-
- _PlyColorVertex operator + ( _PlyColorVertex p ) const { return _PlyColorVertex( point+p.point , color+p.color ); }
-- _PlyColorVertex operator - ( _PlyColorVertex p ) const { return _PlyColorVertex( point-p.value , color-p.color ); }
-+ _PlyColorVertex operator - ( _PlyColorVertex p ) const { return _PlyColorVertex( point-p.point , color-p.color ); }
- template< class _Real > _PlyColorVertex operator * ( _Real s ) const { return _PlyColorVertex( point*s , color*s ); }
- template< class _Real > _PlyColorVertex operator / ( _Real s ) const { return _PlyColorVertex( point/s , color/s ); }
- _PlyColorVertex& operator += ( _PlyColorVertex p ) { point += p.point , color += p.color ; return *this; }
diff --git a/meshlab-2023.12-vcglib-no-LoadCamera.patch b/meshlab-2023.12-vcglib-no-LoadCamera.patch
deleted file mode 100644
index e74ef55..0000000
--- a/meshlab-2023.12-vcglib-no-LoadCamera.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-diff -up meshlab-MeshLab-2023.12/src/vcglib/wrap/io_trimesh/import_ply.h.no-LoadCamera meshlab-MeshLab-2023.12/src/vcglib/wrap/io_trimesh/import_ply.h
---- meshlab-MeshLab-2023.12/src/vcglib/wrap/io_trimesh/import_ply.h.no-LoadCamera 2025-03-24 09:03:16.976556627 -0400
-+++ meshlab-MeshLab-2023.12/src/vcglib/wrap/io_trimesh/import_ply.h 2025-03-24 09:04:16.334655273 -0400
-@@ -1084,77 +1084,77 @@ public:
-
-
- // Caricamento camera da un ply
-- int LoadCamera(const char * filename)
-- {
-- vcg::ply::PlyFile pf;
-- if( pf.Open(filename,vcg::ply::PlyFile::MODE_READ)==-1 )
-- {
-- this->pi.status = pf.GetError();
-- return this->pi.status;
-- }
--
--
-- bool found = true;
-- for(int i=0;i<23;++i)
-- {
-- if( pf.AddToRead(CameraDesc(i))==-1 )
-- {
-- found = false;
-- break;
-- }
-- }
--
-- if(!found)
-- return this->pi.status;
--
-- for(size_t i=0;i<pf.elements.size();i++)
-- {
-- int n = pf.ElemNumber(i);
--
-- if( !strcmp( pf.ElemName(i),"camera" ) )
-- {
-- pf.SetCurElement(i);
--
-- LoadPly_Camera ca;
--
-- for(int j=0;j<n;++j)
-- {
-- if( pf.Read( (void *)&(ca) )==-1 )
-- {
-- this->pi.status = PlyInfo::E_SHORTFILE;
-- return this->pi.status;
-- }
-- this->camera.valid = true;
-- this->camera.view_p[0] = ca.view_px;
-- this->camera.view_p[1] = ca.view_py;
-- this->camera.view_p[2] = ca.view_pz;
-- this->camera.x_axis[0] = ca.x_axisx;
-- this->camera.x_axis[1] = ca.x_axisy;
-- this->camera.x_axis[2] = ca.x_axisz;
-- this->camera.y_axis[0] = ca.y_axisx;
-- this->camera.y_axis[1] = ca.y_axisy;
-- this->camera.y_axis[2] = ca.y_axisz;
-- this->camera.z_axis[0] = ca.z_axisx;
-- this->camera.z_axis[1] = ca.z_axisy;
-- this->camera.z_axis[2] = ca.z_axisz;
-- this->camera.f = ca.focal;
-- this->camera.s[0] = ca.scalex;
-- this->camera.s[1] = ca.scaley;
-- this->camera.c[0] = ca.centerx;
-- this->camera.c[1] = ca.centery;
-- this->camera.viewport[0] = ca.viewportx;
-- this->camera.viewport[1] = ca.viewporty;
-- this->camera.k[0] = ca.k1;
-- this->camera.k[1] = ca.k2;
-- this->camera.k[2] = ca.k3;
-- this->camera.k[3] = ca.k4;
-- }
-- break;
-- }
-- }
--
-- return 0;
-- }
-+// int LoadCamera(const char * filename)
-+// {
-+// vcg::ply::PlyFile pf;
-+// if( pf.Open(filename,vcg::ply::PlyFile::MODE_READ)==-1 )
-+// {
-+// this->pi.status = pf.GetError();
-+// return this->pi.status;
-+// }
-+//
-+//
-+// bool found = true;
-+// for(int i=0;i<23;++i)
-+// {
-+// if( pf.AddToRead(CameraDesc(i))==-1 )
-+// {
-+// found = false;
-+// break;
-+// }
-+// }
-+//
-+// if(!found)
-+// return this->pi.status;
-+//
-+// for(size_t i=0;i<pf.elements.size();i++)
-+// {
-+// int n = pf.ElemNumber(i);
-+//
-+// if( !strcmp( pf.ElemName(i),"camera" ) )
-+// {
-+// pf.SetCurElement(i);
-+//
-+// LoadPly_Camera ca;
-+//
-+// for(int j=0;j<n;++j)
-+// {
-+// if( pf.Read( (void *)&(ca) )==-1 )
-+// {
-+// this->pi.status = PlyInfo::E_SHORTFILE;
-+// return this->pi.status;
-+// }
-+// this->camera.valid = true;
-+// this->camera.view_p[0] = ca.view_px;
-+// this->camera.view_p[1] = ca.view_py;
-+// this->camera.view_p[2] = ca.view_pz;
-+// this->camera.x_axis[0] = ca.x_axisx;
-+// this->camera.x_axis[1] = ca.x_axisy;
-+// this->camera.x_axis[2] = ca.x_axisz;
-+// this->camera.y_axis[0] = ca.y_axisx;
-+// this->camera.y_axis[1] = ca.y_axisy;
-+// this->camera.y_axis[2] = ca.y_axisz;
-+// this->camera.z_axis[0] = ca.z_axisx;
-+// this->camera.z_axis[1] = ca.z_axisy;
-+// this->camera.z_axis[2] = ca.z_axisz;
-+// this->camera.f = ca.focal;
-+// this->camera.s[0] = ca.scalex;
-+// this->camera.s[1] = ca.scaley;
-+// this->camera.c[0] = ca.centerx;
-+// this->camera.c[1] = ca.centery;
-+// this->camera.viewport[0] = ca.viewportx;
-+// this->camera.viewport[1] = ca.viewporty;
-+// this->camera.k[0] = ca.k1;
-+// this->camera.k[1] = ca.k2;
-+// this->camera.k[2] = ca.k3;
-+// this->camera.k[3] = ca.k4;
-+// }
-+// break;
-+// }
-+// }
-+//
-+// return 0;
-+// }
-
-
- static bool LoadMask(const char * filename, int &mask)
diff --git a/meshlab-2025.07-vcglib-no-LoadCamera.patch b/meshlab-2025.07-vcglib-no-LoadCamera.patch
new file mode 100644
index 0000000..50a1dbc
--- /dev/null
+++ b/meshlab-2025.07-vcglib-no-LoadCamera.patch
@@ -0,0 +1,83 @@
+--- meshlab-MeshLab-2023.12/src/vcglib/wrap/io_trimesh/import_ply.h.no-LoadCamera 2025-07-21 13:50:32.000000000 +0100
++++ meshlab-MeshLab-2023.12/src/vcglib/wrap/io_trimesh/import_ply.h 2026-08-25 22:25:31.610593113 +0100
+@@ -1049,80 +1049,6 @@
+ }
+
+
+- // Loading only a Camera from PLY
+- int LoadCamera(const char * filename, vcg::Camera<ScalarType> camera, PlyInfo &pi)
+- {
+- vcg::ply::PlyFile pf;
+- if( pf.Open(filename,vcg::ply::PlyFile::MODE_READ)==-1 )
+- {
+- pi.status = pf.GetError();
+- return pi.status;
+- }
+-
+-
+- bool found = true;
+- for(int i=0;i<23;++i)
+- {
+- if( pf.AddToRead(CameraDesc(i))==-1 )
+- {
+- found = false;
+- break;
+- }
+- }
+-
+- if(!found)
+- return pi.status;
+-
+- for(size_t i=0;i<pf.elements.size();i++)
+- {
+- int n = pf.ElemNumber(i);
+-
+- if( !strcmp( pf.ElemName(i),"camera" ) )
+- {
+- pf.SetCurElement(i);
+-
+- LoadPly_Camera ca;
+-
+- for(int j=0;j<n;++j)
+- {
+- if( pf.Read( (void *)&(ca) )==-1 )
+- {
+- pi.status = PlyInfo::E_SHORTFILE;
+- return pi.status;
+- }
+- camera.valid = true;
+- camera.view_p[0] = ca.view_px;
+- camera.view_p[1] = ca.view_py;
+- camera.view_p[2] = ca.view_pz;
+- camera.x_axis[0] = ca.x_axisx;
+- camera.x_axis[1] = ca.x_axisy;
+- camera.x_axis[2] = ca.x_axisz;
+- camera.y_axis[0] = ca.y_axisx;
+- camera.y_axis[1] = ca.y_axisy;
+- camera.y_axis[2] = ca.y_axisz;
+- camera.z_axis[0] = ca.z_axisx;
+- camera.z_axis[1] = ca.z_axisy;
+- camera.z_axis[2] = ca.z_axisz;
+- camera.f = ca.focal;
+- camera.s[0] = ca.scalex;
+- camera.s[1] = ca.scaley;
+- camera.c[0] = ca.centerx;
+- camera.c[1] = ca.centery;
+- camera.viewport[0] = ca.viewportx;
+- camera.viewport[1] = ca.viewporty;
+- camera.k[0] = ca.k1;
+- camera.k[1] = ca.k2;
+- camera.k[2] = ca.k3;
+- camera.k[3] = ca.k4;
+- }
+- break;
+- }
+- }
+-
+- return 0;
+- }
+-
+-
+ static bool LoadMask(const char * filename, int &mask)
+ {
+ PlyInfo pi;
diff --git a/meshlab.spec b/meshlab.spec
index e4a528c..8eeab84 100644
--- a/meshlab.spec
+++ b/meshlab.spec
@@ -1,6 +1,6 @@
Name: meshlab
Summary: A system for processing and editing unstructured 3D triangular meshes
-Version: 2023.12
+Version: 2025.07
Release: %autorelease
URL: https://github.com/cnr-isti-vclab/meshlab
# Bundled e57 is Boost-licensed
@@ -8,8 +8,8 @@ URL: https://github.com/cnr-isti-vclab/meshlab
# bundled picojson is BSD-2-Clause
License: GPL-2.0-or-later AND BSD-2-Clause AND BSD-3-Clause AND LicenseRef-Fedora-Public-Domain AND Apache-2.0 AND BSL-1.0
Source0: https://github.com/cnr-isti-vclab/meshlab/archive/MeshLab-%{version}/%{name}-%{version}.tar.gz
-# Matches 2023.12:
-%global vcglibver 88c881d
+# Matches 2025.07:
+%global vcglibver c94ef4e
# Probably belongs in its own package, but nothing else seems to depend on it.
Source2: https://github.com/cnr-isti-vclab/vcglib/archive/%{vcglibver}/vcglib-%{vcglibver}.tar.gz
# Notes for Fedora users (around issues with Wayland)
@@ -22,9 +22,11 @@ Source5: https://github.com/libigl/libigl/archive/refs/tags/v2.4.0.zip
# This nexus is not the same as the nexus package in Fedora.
# This nexus is a c++/javascript library for creation and visualization of a batched multiresolution
# 3D model structure
-Source6: https://www.meshlab.net/data/libs/nexus-master.zip
+%define nexus_version 2025.05
+Source6: https://github.com/cnr-isti-vclab/nexus/archive/refs/tags/v%{nexus_version}.zip#/nexus.zip
# It also needs corto, a library for compression and decompression meshes and point clouds (C++/Javascript)
-Source7: https://www.meshlab.net/data/libs/corto-master.zip
+%define corto_version 2025.07
+Source7: https://github.com/cnr-isti-vclab/corto/archive/refs/tags/v%{corto_version}.zip#/corto.zip
# Long bundled, now pulled out of the source tarball, it's OpenCTM!
# Could be made into it's own package, but A) it is very old and B) unlikely anything else needs it
Source8: https://www.meshlab.net/data/libs/OpenCTM-1.0.3-src.zip
@@ -49,16 +51,10 @@ Patch2: meshlab-2023.12-system-levmar.patch
# Fix FTBFS with GCC 13+ by adding include <cstdint>
# Upstream already added that in https://github.com/asmaloney/libE57Format/pull/176
Patch3: meshlab-2023.12-e57-gcc13.patch
-# Include cstdint when corto uses uint32_t
-Patch4: meshlab-2023.12-corto-cstdint.patch
# Cmake fix
-Patch5: meshlab-2023.12-cmake-fix.patch
+Patch4: meshlab-2023.12-cmake-fix.patch
# Comment out LoadCamera (it is broken and unused)
-Patch6: meshlab-2023.12-vcglib-no-LoadCamera.patch
-# This struct doesn't define "value". I think it actually wants to use "point" in the - operator, like it does in the + operator, but... who knows.
-Patch7: meshlab-2023.12-fix-nonexistent-value.patch
-# There are also undefined variables in a function that does not seem to be called. :/
-Patch8: meshlab-2023.12-fix-invalid-vars.patch
+Patch5: meshlab-2025.07-vcglib-no-LoadCamera.patch
# Bundled things
Provides: bundled(u3d) = 1.5.1
@@ -80,6 +76,7 @@ BuildRequires: glew-devel
BuildRequires: gmp-devel
BuildRequires: levmar-devel
BuildRequires: lib3ds-devel
+BuildRequires: lib3mf-devel
BuildRequires: muParser-devel
BuildRequires: qhull-devel
BuildRequires: qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtxmlpatterns-devel qt5-qtscript-devel
@@ -122,21 +119,17 @@ unzip %{SOURCE8}
unzip %{SOURCE9}
unzip %{SOURCE10}
unzip %{SOURCE11}
-pushd nexus-master/src
+pushd nexus-%{nexus_version}/src
rm -rf corto
unzip %{SOURCE7}
-mv corto-master corto
+mv corto-%{corto_version} corto
popd
popd
# These patches need to apply after we build the bundled tree
%patch -P 3 -p1 -b .e57-gcc13
-%patch -P 4 -p1 -b .cstdint
-
-%patch -P 5 -p1 -b .cmake-fix
-%patch -P 6 -p1 -b .no-LoadCamera
-%patch -P 7 -p1 -b .fix-nonexistent-value
-%patch -P 8 -p1 -b .fix-invalid-vars
+%patch -P 4 -p1 -b .cmake-fix
+%patch -P 5 -p1 -b .no-LoadCamera
# remove some bundles
@@ -161,6 +154,7 @@ export CXXFLAGS=`echo %{optflags} -std=c++14 -fopenmp -DSYSTEM_QHULL -I/usr/incl
%global _vpath_srcdir src
%cmake \
-DMESHLAB_USE_DEFAULT_BUILD_AND_INSTALL_DIRS=ON \
+ -DMESHLAB_ALLOW_DOWNLOAD_SOURCE_LIB3MF=OFF \
-DCMAKE_SKIP_RPATH=ON \
-DCMAKE_VERBOSE_MAKEFILE=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
@@ -205,6 +199,7 @@ EOF
mkdir -p %{buildroot}%{_datadir}/pixmaps/
cp -a meshlab.png %{buildroot}%{_datadir}/pixmaps/
+rm %{buildroot}%{_libdir}/libIDTF.a
# add desktop link
install -d -m 755 %{buildroot}%{_datadir}/applications
diff --git a/sources b/sources
index 953f881..f40fc4e 100644
--- a/sources
+++ b/sources
@@ -1,11 +1,10 @@
-SHA512 (meshlab-2023.12.tar.gz) = c5e82aa1bfc42b9c40513fb393404d09d2fa595659c0b6a6c874ad728f46c1a6015637e52cf331539fa80637485f7a8459ca02a6c6fca08c40f873c9c0757955
-SHA512 (vcglib-6ac9e0c.tar.gz) = d04ed6e87ed3d3af06586583592431938473d2e393dba1b80d2551f2c0617be90d9463a8117f99a3bcecc505be9a775f602af4f61a00ff2c67790e50bfebe36e
SHA512 (v2.3.0.zip) = 84eaf9c7d925457fceb4c4d94824cc052e6a1e488d17f2c6355f875fd3c0efe415cf1d73a80aeef233f6d2a9509e69fd77ce0ff97f474ec410337acc2af5c51b
SHA512 (v2.4.0.zip) = a291f2f418570c29112b80df7e8f3d83e79843a65498a840df16361488749e69117293a912178749b0e0f3a0d2baadca0e735ab6a821f5694f5ac19a82c9e38e
-SHA512 (nexus-master.zip) = 35f15459465b609330589a10d49463313061a1bb292cb309f9d8a9e520fe7c53fe9eef59b19454d6b080cbc147895221f16704790cfb22686dcc513a43ef4a63
-SHA512 (corto-master.zip) = 90e51d82308188ea88397059f00d53aabb1687d21ef50f9dd62f05feaebaff0ed466c6bbe35348869fee79ebd8bc6a92141fac2b54948d7a733b29baf4b10c06
SHA512 (OpenCTM-1.0.3-src.zip) = b4c9e8b1289529993071ffc5b76e37c2363cce847bfdf33fad857c75f4723517d59cdf0ca70b8f1f09b8968b3a8b62b6214dc10c2eb7514ff92b419637fa9d5a
SHA512 (1.5.1.zip) = ffe4fd2a4123c11f035cff25c540cc73bda83dbb4ff03f9f51c23d395bef3d599ff6800810fa37f6cb65542e057f19a33f5cc55057ef1f08dd03a1f344e395f3
SHA512 (v2.6.3.zip) = 626a5f5a9b44981a17167a72ebce5bbca62eacf973393f7ff5f35ae6537c543f21d9547e28f02bb48820e93af19810a742c7d9099876e6f4f02c76e74565b8cd
SHA512 (u3d-1.5.1.zip) = 96783b18915906c1b23a0b655e27cb913690beca1d0baa2e9332a259858dee0f20352c2ff112a9671f9628467141853d59c7970e70e758a76cd60ee701d8cdea
-SHA512 (vcglib-88c881d.tar.gz) = eff2cb4a0fc658708a505a4a7375c128244c7ef96f80671db0874e7e0878b714dbe8002c9d7b26c6022db51ca23ad979d29e6a5ae552453ed8af46f2279093c6
+SHA512 (meshlab-2025.07.tar.gz) = 5b2ce483e790f12e33d2e7ababc02ffea57cdf25ae848ce4e798b07d9d2d16983086e1433f85cd94c0b65c5f9b6fbd6dd09e0fa9988b7685b9a2ce225c45a32f
+SHA512 (corto.zip) = c1bfcb77e809a1492fb1729c4892f00ceafca5084f94895c13fb6c6da448cfa3f0c892ea22bc73e9e482901baa9f723a55cf236fc0979b412018ca97a826b987
+SHA512 (nexus.zip) = 3ca7eef9131d53e32e6ed0bb62ecae6ece4f71d32e1bc55db6a308bc56c163bd02d21d257e57c287ff270112b9d04c7d9f397fe0ca4f28523d429815b5e26f20
+SHA512 (vcglib-c94ef4e.tar.gz) = e432fc60dd8bdfa3ef7eebdc1e67bd76e7c3f62747c27bedd34e5722ec2153097c1c3cf50bfd9c87fce5f1f8745d581828b33969b4e5b874a7e0f7470b93b850
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-28 16:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-28 16:45 [rpms/meshlab] f44: update to 2025.07, full credit to Tom Lake Tom spot Callaway
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox