public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] EAPI 7 in Portage needs YOU!
@ 2018-02-19 10:49 Michał Górny
  2018-02-19 11:00 ` Anthony G. Basile
  2018-02-19 17:07 ` Michael Lienhardt
  0 siblings, 2 replies; 13+ messages in thread
From: Michał Górny @ 2018-02-19 10:49 UTC (permalink / raw
  To: gentoo-dev

Hi, everyone.

The time for EAPI 7 cutoff is coming near, and as usual it looks like we're going to scratch the hardest bits due to lack of implementation. Most notably, the following two features are unlikely to be implemented:

1. Runtime-switchable USE flags,

2. ||= (binding any-of) dep groups.

If you want to see either of them in EAPI 7, you need to start working on implementing them in Portage *right now*. I can help you comprehend the spec and Zac can give you some implementation tips but you have to do the coding yourself.

That said, help with other EAPI 7 items as well as reviews and testing of the existing code are also welcome.

The combined work of all developers involved in the implementation as well as complete change list and linked documentation can be found in the following pull request:

https://github.com/gentoo/portage/pull/208
-- 
Best regards,
Michał Górny (by phone)


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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 10:49 [gentoo-dev] EAPI 7 in Portage needs YOU! Michał Górny
@ 2018-02-19 11:00 ` Anthony G. Basile
  2018-02-19 11:14   ` Luigi Mantellini
  2018-02-19 15:15   ` Michał Górny
  2018-02-19 17:07 ` Michael Lienhardt
  1 sibling, 2 replies; 13+ messages in thread
From: Anthony G. Basile @ 2018-02-19 11:00 UTC (permalink / raw
  To: gentoo-dev

On 2/19/18 5:49 AM, Michał Górny wrote:

> 1. Runtime-switchable USE flags,

I need to understand this.  Where are the specs?

-- 
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail    : blueness@gentoo.org
GnuPG FP  : 1FED FAD9 D82C 52A5 3BAB  DC79 9384 FA6E F52D 4BBA
GnuPG ID  : F52D4BBA


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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 11:00 ` Anthony G. Basile
@ 2018-02-19 11:14   ` Luigi Mantellini
  2018-02-19 15:15   ` Michał Górny
  1 sibling, 0 replies; 13+ messages in thread
From: Luigi Mantellini @ 2018-02-19 11:14 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1258 bytes --]

See this bug https://bugs.gentoo.org/424283

Speaking as a monkey user, I would like to have a fast dependency tree
resolution on emerge tasks.
Another exotic feature is to use a layered filesystem in order to keep
different sets on different layers. (Example: layer system: core utils,
layer desktop: application, layer user: other stuffs). Something like nixos
or coreos (rip.).  When install, portage will create a snapshot of the
destination layer, and install on this. This will increase the complexity
and will us happy to discover something of new.

ciao

luigi



On Mon, Feb 19, 2018 at 12:00 PM, Anthony G. Basile <blueness@gentoo.org>
wrote:

> On 2/19/18 5:49 AM, Michał Górny wrote:
>
> > 1. Runtime-switchable USE flags,
>
> I need to understand this.  Where are the specs?
>
> --
> Anthony G. Basile, Ph.D.
> Gentoo Linux Developer [Hardened]
> E-Mail    : blueness@gentoo.org
> GnuPG FP  : 1FED FAD9 D82C 52A5 3BAB  DC79 9384 FA6E F52D 4BBA
> GnuPG ID  : F52D4BBA
>
>


-- 
Luigi 'Comio' Mantellini
R&D - Software
Industrie Dial Face S.p.A.
Via Canzo, 4
20068 Peschiera Borromeo (MI), Italy

Tel.: +39 02 5167 2813
Fax: +39 02 5167 2459
web: www.idf-hit.com
mail: luigi.mantellini@idf-hit.com

[-- Attachment #2: Type: text/html, Size: 2048 bytes --]

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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 11:00 ` Anthony G. Basile
  2018-02-19 11:14   ` Luigi Mantellini
@ 2018-02-19 15:15   ` Michał Górny
  1 sibling, 0 replies; 13+ messages in thread
From: Michał Górny @ 2018-02-19 15:15 UTC (permalink / raw
  To: gentoo-dev

W dniu pon, 19.02.2018 o godzinie 06∶00 -0500, użytkownik Anthony G.
Basile napisał:
> On 2/19/18 5:49 AM, Michał Górny wrote:
> 
> > 1. Runtime-switchable USE flags,
> 
> I need to understand this.  Where are the specs?

https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-670007.3

Long story short, IUSE_RUNTIME specifies extra USE flags that do not
require rebuilding the package and whose status can be updated in place
(provided that the necessary dependencies are installed).

Implementation-wise, I think you would need to find the place where
Portage decides to rebuild package because of use flag changes (either
due to deps, --changed-use or --newuse).  You'd have to check if all
changed flags belong in IUSE_RUNTIME and if that's the case (and there
is no other reason to rebuild), use a new 'update-in-place' state
instead of 'rebuild'.

-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 10:49 [gentoo-dev] EAPI 7 in Portage needs YOU! Michał Górny
  2018-02-19 11:00 ` Anthony G. Basile
@ 2018-02-19 17:07 ` Michael Lienhardt
  2018-02-19 17:34   ` Ulrich Mueller
  1 sibling, 1 reply; 13+ messages in thread
From: Michael Lienhardt @ 2018-02-19 17:07 UTC (permalink / raw
  To: gentoo-dev



Il 19/02/2018 11:49, Michał Górny ha scritto:
> 2. ||= (binding any-of) dep groups.

I don't understand what this group means, and the PMS-7 is unclear as well:
  "binding-any-of A binding-any-of group, which has the same format as the any-of group, but begins with the string ||= instead."
Is it a "or", like the "any-of" group, but with a different behavior at compiling/linking time?

Michael Lienhardt


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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 17:07 ` Michael Lienhardt
@ 2018-02-19 17:34   ` Ulrich Mueller
  2018-02-19 19:32     ` Mart Raudsepp
  2018-02-20  2:30     ` Ian Stakenvicius
  0 siblings, 2 replies; 13+ messages in thread
From: Ulrich Mueller @ 2018-02-19 17:34 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

>>>>> On Mon, 19 Feb 2018, Michael Lienhardt wrote:

>> 2. ||= (binding any-of) dep groups.

> I don't understand what this group means, and the PMS-7 is unclear as well:
>   "binding-any-of A binding-any-of group, which has the same format
>   as the any-of group, but begins with the string ||= instead."
> Is it a "or", like the "any-of" group, but with a different behavior
> at compiling/linking time?

It is explained in section 8.2.4:
https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4

Ulrich

[-- Attachment #2: Type: application/pgp-signature, Size: 490 bytes --]

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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 17:34   ` Ulrich Mueller
@ 2018-02-19 19:32     ` Mart Raudsepp
  2018-02-19 19:38       ` Michał Górny
  2018-02-20  2:30     ` Ian Stakenvicius
  1 sibling, 1 reply; 13+ messages in thread
From: Mart Raudsepp @ 2018-02-19 19:32 UTC (permalink / raw
  To: gentoo-dev

On Mon, 2018-02-19 at 18:34 +0100, Ulrich Mueller wrote:
> > > > > > On Mon, 19 Feb 2018, Michael Lienhardt wrote:
> > > 2. ||= (binding any-of) dep groups.
> > I don't understand what this group means, and the PMS-7 is unclear
> > as well:
> >   "binding-any-of A binding-any-of group, which has the same format
> >   as the any-of group, but begins with the string ||= instead."
> > Is it a "or", like the "any-of" group, but with a different
> > behavior
> > at compiling/linking time?
> 
> It is explained in section 8.2.4:
> https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4

Maybe I missed this, but a real world use case example would be nice,
maybe someone feels a harder itch to scratch then :)



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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 19:32     ` Mart Raudsepp
@ 2018-02-19 19:38       ` Michał Górny
  2018-02-19 19:58         ` Zac Medico
  2018-02-20  0:19         ` Michael Lienhardt
  0 siblings, 2 replies; 13+ messages in thread
From: Michał Górny @ 2018-02-19 19:38 UTC (permalink / raw
  To: gentoo-dev

W dniu pon, 19.02.2018 o godzinie 21∶32 +0200, użytkownik Mart Raudsepp
napisał:
> On Mon, 2018-02-19 at 18:34 +0100, Ulrich Mueller wrote:
> > > > > > > On Mon, 19 Feb 2018, Michael Lienhardt wrote:
> > > > 
> > > > 2. ||= (binding any-of) dep groups.
> > > 
> > > I don't understand what this group means, and the PMS-7 is unclear
> > > as well:
> > >   "binding-any-of A binding-any-of group, which has the same format
> > >   as the any-of group, but begins with the string ||= instead."
> > > Is it a "or", like the "any-of" group, but with a different
> > > behavior
> > > at compiling/linking time?
> > 
> > It is explained in section 8.2.4:
> > https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4
> 
> Maybe I missed this, but a real world use case example would be nice,
> maybe someone feels a harder itch to scratch then :)
> 

The original use case was for providers-like thingies, e.g.:

  ||= ( ffmpeg:0= libav:0= )

That said, I'd personally prefer doing that with proper USE_EXPAND
and REQUIRED_USE enforcing but this has been rejected.

-- 
Best regards,
Michał Górny



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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 19:38       ` Michał Górny
@ 2018-02-19 19:58         ` Zac Medico
  2018-02-20  0:19         ` Michael Lienhardt
  1 sibling, 0 replies; 13+ messages in thread
From: Zac Medico @ 2018-02-19 19:58 UTC (permalink / raw
  To: gentoo-dev, Michał Górny


[-- Attachment #1.1: Type: text/plain, Size: 1383 bytes --]

On 02/19/2018 11:38 AM, Michał Górny wrote:
> W dniu pon, 19.02.2018 o godzinie 21∶32 +0200, użytkownik Mart Raudsepp
> napisał:
>> On Mon, 2018-02-19 at 18:34 +0100, Ulrich Mueller wrote:
>>>>>>>> On Mon, 19 Feb 2018, Michael Lienhardt wrote:
>>>>>
>>>>> 2. ||= (binding any-of) dep groups.
>>>>
>>>> I don't understand what this group means, and the PMS-7 is unclear
>>>> as well:
>>>>   "binding-any-of A binding-any-of group, which has the same format
>>>>   as the any-of group, but begins with the string ||= instead."
>>>> Is it a "or", like the "any-of" group, but with a different
>>>> behavior
>>>> at compiling/linking time?
>>>
>>> It is explained in section 8.2.4:
>>> https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4
>>
>> Maybe I missed this, but a real world use case example would be nice,
>> maybe someone feels a harder itch to scratch then :)
>>
> 
> The original use case was for providers-like thingies, e.g.:
> 
>   ||= ( ffmpeg:0= libav:0= )
> 
> That said, I'd personally prefer doing that with proper USE_EXPAND
> and REQUIRED_USE enforcing but this has been rejected.

Indeed, the tendency of || deps to make things less deterministic can be
troublesome. Maybe automatic REQUIRED_USE satisfaction will make the
REQUIRED_USE approach more acceptable to those who have rejected it.
-- 
Thanks,
Zac


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 224 bytes --]

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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 19:38       ` Michał Górny
  2018-02-19 19:58         ` Zac Medico
@ 2018-02-20  0:19         ` Michael Lienhardt
  2018-02-20  2:45           ` Ian Stakenvicius
  1 sibling, 1 reply; 13+ messages in thread
From: Michael Lienhardt @ 2018-02-20  0:19 UTC (permalink / raw
  To: gentoo-dev



Il 19/02/2018 20:38, Michał Górny ha scritto:
> W dniu pon, 19.02.2018 o godzinie 21∶32 +0200, użytkownik Mart Raudsepp
> napisał:
>> On Mon, 2018-02-19 at 18:34 +0100, Ulrich Mueller wrote:
>>> It is explained in section 8.2.4:
>>> https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4
>>
>> Maybe I missed this, but a real world use case example would be nice,
>> maybe someone feels a harder itch to scratch then :)
>>
> 
> The original use case was for providers-like thingies, e.g.:
> 
>    ||= ( ffmpeg:0= libav:0= )
> 
> That said, I'd personally prefer doing that with proper USE_EXPAND
> and REQUIRED_USE enforcing but this has been rejected.
> 

So, if I understand correctly, the ||= group is an "or" that must be resolved in the same way in the DEPEND and RDEPEND dependencies, right?

The documentation does not specify how this group interacts between different ebuilds.
I guess there is no interaction, but just to be sure, let consider the following corner-case example:
  - a package A has RDEPEND=||= ( ffmpeg:0= libav:0= ) while another package B has DEPEND=ffmpeg
  - the solver choose libav to solve the dependency of the first package and ffmpeg to solve the second, removing ffmpeg afterward
  - will package A break?

Michael Lienhardt




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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-19 17:34   ` Ulrich Mueller
  2018-02-19 19:32     ` Mart Raudsepp
@ 2018-02-20  2:30     ` Ian Stakenvicius
  2018-02-20  4:31       ` Michał Górny
  1 sibling, 1 reply; 13+ messages in thread
From: Ian Stakenvicius @ 2018-02-20  2:30 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1228 bytes --]

On 2018-02-19 12:34 PM, Ulrich Mueller wrote:
>>>>>> On Mon, 19 Feb 2018, Michael Lienhardt wrote:
> 
>>> 2. ||= (binding any-of) dep groups.
> 
>> I don't understand what this group means, and the PMS-7 is
>> unclear as well: "binding-any-of A binding-any-of group, which
>> has the same format as the any-of group, but begins with the
>> string ||= instead." Is it a "or", like the "any-of" group, but
>> with a different behavior at compiling/linking time?
> 
> It is explained in section 8.2.4: 
> https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4
> 
> Ulrich
> 


Could we get some clarification/confirmation on this language?:


> In addition, for runtime dependencies, indicates that the package
> will break unless a matching package corresponding to the first
> immediate child element (in order of listing) installed as a
> build-time (DEPEND) dependency is available


...if I am reading this right, this means that the list of atoms is
iterated through first->last, and as soon as one is found to be
available at build-time, it chosen as the one that this package is
bound to and after that the package will be considered broken if it
doesn't exist/is later removed?



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 248 bytes --]

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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-20  0:19         ` Michael Lienhardt
@ 2018-02-20  2:45           ` Ian Stakenvicius
  0 siblings, 0 replies; 13+ messages in thread
From: Ian Stakenvicius @ 2018-02-20  2:45 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 3178 bytes --]

On 2018-02-19 07:19 PM, Michael Lienhardt wrote:
> 
> 
> Il 19/02/2018 20:38, Michał Górny ha scritto:
>> W dniu pon, 19.02.2018 o godzinie 21∶32 +0200, użytkownik Mart Raudsepp
>> napisał:
>>> On Mon, 2018-02-19 at 18:34 +0100, Ulrich Mueller wrote:
>>>> It is explained in section 8.2.4:
>>>> https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4
>>>
>>> Maybe I missed this, but a real world use case example would be nice,
>>> maybe someone feels a harder itch to scratch then :)
>>>
>>
>> The original use case was for providers-like thingies, e.g.:
>>
>>    ||= ( ffmpeg:0= libav:0= )
>>
>> That said, I'd personally prefer doing that with proper USE_EXPAND
>> and REQUIRED_USE enforcing but this has been rejected.
>>
> 
> So, if I understand correctly, the ||= group is an "or" that must be
> resolved in the same way in the DEPEND and RDEPEND dependencies, right?
> 
> The documentation does not specify how this group interacts between
> different ebuilds.
> I guess there is no interaction, but just to be sure, let consider the
> following corner-case example:
>  - a package A has RDEPEND=||= ( ffmpeg:0= libav:0= ) while another
> package B has DEPEND=ffmpeg
>  - the solver choose libav to solve the dependency of the first
> package and ffmpeg to solve the second, removing ffmpeg afterward
>  - will package A break?
> 
> Michael Lienhardt


I don't think interaction with other ebuilds is necessarily important,
or at least, not any different as what occurs with a package manager
decides to do something with the bound atom.  Using your example of
pkg-A built with libav:0= bound:

1- ffmpeg is merged (lets ignore that ffmpeg blocks libav for now) --
this wouldn't change anything regarding pkg-A as it is currently
merged, but if pkg-A is re-emerged for whatever reason then I believe
the package manager needs to decide according to the rules to build
against ffmpeg.

2- libav is unmerged -- pkg-A is broken.  It's likely up to the PM
implementation what to do here.  In the case of portage, and the
libav-unmerge being a soft-blocker, I believe the behaviour would be
to trigger a re-emerge of pkg-A which would then through standard
dependency resolution decide that it will now depend on ffmpeg.    An
alternative would be to upgrade the soft-blocker to a hard-blocker
since pkg-A is bound to libav:0= and so it can't be resolved
automatically.  A manual unmerge likely should trigger something about
pkg-A too but even in portage's case the user can do that and break
dependencies, so it's not obvious to me what would be done.

Now, since ffmpeg and libav do block eachother, the switch from one to
another would trigger both of these cases which IMO would mean portage
would therefore rebuild pkg-A after ffmpeg is emerged (and libav would
be unmerged before ffmpeg is merged).  And the multi-ebuild
interaction that you speak of would simply force ffmpeg as a hard
dependency in resolution, triggering the soft-block and therefore the
rebuild.

EAPI7 is TL;DR for me right now but I assume that it doesn't specify a
required action for "package broken"?


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 248 bytes --]

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

* Re: [gentoo-dev] EAPI 7 in Portage needs YOU!
  2018-02-20  2:30     ` Ian Stakenvicius
@ 2018-02-20  4:31       ` Michał Górny
  0 siblings, 0 replies; 13+ messages in thread
From: Michał Górny @ 2018-02-20  4:31 UTC (permalink / raw
  To: gentoo-dev, Ian Stakenvicius

Dnia 20 lutego 2018 03:30:10 CET, Ian Stakenvicius <axs@gentoo.org> napisał(a):
>On 2018-02-19 12:34 PM, Ulrich Mueller wrote:
>>>>>>> On Mon, 19 Feb 2018, Michael Lienhardt wrote:
>> 
>>>> 2. ||= (binding any-of) dep groups.
>> 
>>> I don't understand what this group means, and the PMS-7 is
>>> unclear as well: "binding-any-of A binding-any-of group, which
>>> has the same format as the any-of group, but begins with the
>>> string ||= instead." Is it a "or", like the "any-of" group, but
>>> with a different behavior at compiling/linking time?
>> 
>> It is explained in section 8.2.4: 
>> https://dev.gentoo.org/~ulm/pms/7-draft/pms.html#x1-800008.2.4
>> 
>> Ulrich
>> 
>
>
>Could we get some clarification/confirmation on this language?:
>
>
>> In addition, for runtime dependencies, indicates that the package
>> will break unless a matching package corresponding to the first
>> immediate child element (in order of listing) installed as a
>> build-time (DEPEND) dependency is available
>
>
>...if I am reading this right, this means that the list of atoms is
>iterated through first->last, and as soon as one is found to be
>available at build-time, it chosen as the one that this package is
>bound to and after that the package will be considered broken if it
>doesn't exist/is later removed?

Yes. Let me expand on that. Given a dep:

  ||= ( p[0] p[1] p[2]... )

p[i] with lower i has higher priority.

Implementation-wise, at the very minimum:

1. PM needs to ensure that at least one of p[i] is installed (doesn't matter which one).

2. PM needs to seek through p[i] at build time and record the p[i] with lowest i that was satisfied somehow (with explicit indication how it was obtained).

3. PM needs to treat this p[i] as unconditional (but weak-ish) dep, i.e. 'emerge --depclean' must not remove it even if p[j], j!=i is present.

4. Also, it needs to handle missing all p[i] in a non-crashing fashion, i.e. without requiring user to fix it manually.

However, if we want it to do more then locking deps forever, we should also consider the following (with i!=j):

1. If p[i] is locked, and p[j] is requested and blocking p[i], package should be rebuilt after installing p[j] and removing p[i]. 

2. If p[i] is locked, and p[j] gets installed where j<i (no blockers), PM may want to rebuild pkg to unlock p[i] (this should probably be controlled by option).

3. If p[i] is locked, and p[j] is installed where j>i (no blockers), PM should provide some way of uninstalling p[i] (and rebuilding pkg afterwards). My idea was to allow blocker syntax for emerge, i.e. "emerge -1v !dev-libs/foo " which would uninstall it like a blocker and rebuild all pkgs with weak deps.

-- 
Best regards,
Michał Górny (by phone)


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

end of thread, other threads:[~2018-02-20  4:31 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-19 10:49 [gentoo-dev] EAPI 7 in Portage needs YOU! Michał Górny
2018-02-19 11:00 ` Anthony G. Basile
2018-02-19 11:14   ` Luigi Mantellini
2018-02-19 15:15   ` Michał Górny
2018-02-19 17:07 ` Michael Lienhardt
2018-02-19 17:34   ` Ulrich Mueller
2018-02-19 19:32     ` Mart Raudsepp
2018-02-19 19:38       ` Michał Górny
2018-02-19 19:58         ` Zac Medico
2018-02-20  0:19         ` Michael Lienhardt
2018-02-20  2:45           ` Ian Stakenvicius
2018-02-20  2:30     ` Ian Stakenvicius
2018-02-20  4:31       ` Michał Górny

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