* [gentoo-user] Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
@ 2007-08-02 18:15 Alexander Skwar
2007-08-02 18:21 ` Jan Seeger
0 siblings, 1 reply; 9+ messages in thread
From: Alexander Skwar @ 2007-08-02 18:15 UTC (permalink / raw
To: gentoo-user
Hello.
I'm trying to compile sys-apps/texinfo-4.8-r5, which fails with this
error message:
$restore $backupdir/* `echo "./texinfo.info" | sed 's|[^/]*$||'`; \
fi; \
rm -rf $backupdir; exit $rc
/bin/sh: line 13: 9091 Illegal instruction ..//makeinfo/makeinfo -I . -o texinfo.info `test -f 'texinfo.txi' || echo './'`texinfo.txi
make[2]: *** [texinfo.info] Error 132
make[2]: Leaving directory `/var/tmp/portage/sys-apps/texinfo-4.8-r5/work/texinfo-4.8/doc'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/sys-apps/texinfo-4.8-r5/work/texinfo-4.8'
make: *** [all] Error 2
!!! ERROR: sys-apps/texinfo-4.8-r5 failed.
Call stack:
ebuild.sh, line 1632: Called dyn_compile
ebuild.sh, line 983: Called qa_call 'src_compile'
ebuild.sh, line 44: Called src_compile
texinfo-4.8-r5.ebuild, line 56: Called die
Quite some time ago, I ran into the same problem and commented this in
bgo at <https://bugs.gentoo.org/show_bug.cgi?id=98951>. The issue "back
then" was:
| Ok, I butchered your output a bit, but the fact is that you are using
| -march=pentium4 on a AMD XP, which will not work ...
I'm now trying to do something like this again. I'm trying to compile
Gentoo on AMD XP for my Celeron M ("Pentium4") machine. To do this,
I have in make.conf:
CFLAGS="-O2 -march=pentium-m -mtune=athlon-xp -pipe -fomit-frame-pointer"
Build machine is a Athlon XP system, target system shall be a Pentium M
system.
Why do I get the illegal instruction error? I thought that because of the
"-mtune=athlon-xp", the compiler would generate code which would work
on athlon-xp machines and also on pentium-m machines, thanks to the -march
flag.
Or did I mix those two flags up? Should I use -march=athlon-xp -mtune=pentium-m
instead?
hetzner / # emerge --info
Portage 2.1.2.11 (default-linux/x86/2007.0/desktop, gcc-4.1.1, glibc-2.5-r0, 2.6.21-gentoo-r4.04.non-hardened i686)
=================================================================
System uname: 2.6.21-gentoo-r4.04.non-hardened i686 AMD Athlon(tm) XP 2000+
Gentoo Base System release 1.12.9
Timestamp of tree: Thu, 02 Aug 2007 11:50:01 +0000
dev-lang/python: 2.4.3-r4
dev-python/pycrypto: 2.0.1-r5
sys-apps/sandbox: 1.2.17
sys-devel/autoconf: 2.61
sys-devel/automake: 1.10
sys-devel/binutils: 2.16.1-r3
sys-devel/gcc-config: 1.3.14
sys-devel/libtool: 1.5.22
virtual/os-headers: 2.6.21
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i486-pc-linux-gnu"
CFLAGS="-O2 -march=pentium-m -mtune=athlon-xp -pipe -fomit-frame-pointer"
CHOST="i486-pc-linux-gnu"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/terminfo"
CXXFLAGS="-O2 -march=pentium-m -mtune=athlon-xp -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--alphabetical"
FEATURES="collision-protect distlocks metadata-transfer parallel-fetch sandbox sfperms strict"
GENTOO_MIRRORS="http://mirror.switch.ch/ftp/mirror/gentoo/ http://gentoo.mirror.solnet.ch http://distfiles.gentoo.org/"
LINGUAS="de"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.ch.gentoo.org/gentoo-portage"
USE="X acpi alsa bash-completion berkdb bitmap-fonts cairo cdr cli cracklib crypt cups dbus dri dvd dvdr dvdread emboss encode esd evo fam firefox fortran gdbm gif gnome gstreamer gtk hal iconv isdnlog jpeg kde kdeenablefinal kdehiddenvisibility libg++ libnotify mad midi mikmod mmx mp3 mpeg mudflap ncurses nfs nls nptl nptlonly offensive ogg opengl openmp pam pcre pdf perl png pppd python qt3 qt3support qt4 quicktime readline reflection samba sdl session spell spl ssl svg tiff truetype truetype-fonts type1-fonts unicode vim-syntax vorbis wifi win32codecs x86 xml xorg xv zlib" ALSA_CARDS="loopback usb-audio via82xx" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="evdev keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de" USERLAND="GNU" VID
EO_CARDS="fbdev vesa vga via"
Unset: CTARGET, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, MAKEOPTS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
Thanks a lot,
Alexander Skwar
--
Can you MAIL a BEAN CAKE?
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [gentoo-user] Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-02 18:15 [gentoo-user] Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags? Alexander Skwar
@ 2007-08-02 18:21 ` Jan Seeger
2007-08-02 19:41 ` [gentoo-user] " Alexander Skwar
0 siblings, 1 reply; 9+ messages in thread
From: Jan Seeger @ 2007-08-02 18:21 UTC (permalink / raw
To: gentoo-user
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I'd think that using -march overrides -mtune. You cannot at the same time tune
for two architectures. To cross-compile, you would need crossdev.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
iD8DBQFGsiCaMmLQdC6jvocRAuuSAJ0dMe4r+RXvJHvzZ/hYrYkE7+rYGgCfe6S0
CgWpT96ojIDcsmjJlItzWdo=
=3Di6
-----END PGP SIGNATURE-----
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 9+ messages in thread
* [gentoo-user] Re: Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-02 18:21 ` Jan Seeger
@ 2007-08-02 19:41 ` Alexander Skwar
2007-08-02 20:07 ` Alexander Skwar
0 siblings, 1 reply; 9+ messages in thread
From: Alexander Skwar @ 2007-08-02 19:41 UTC (permalink / raw
To: gentoo-user
· Jan Seeger <jan.seeger@gmail.com>:
> I'd think that using -march overrides -mtune. You cannot at the same time tune
> for two architectures.
Hm, what's an "architecture"? From my understanding, I'd need crossdev
if I'd try to compile for, lets say, PA-RISC on a x86 system. But that's
not what I'm trying to do - I'm trying to compile for x86 on a x86
system.
Indeed, I think that I just have mixed up -march and -mtune (aka. -mcpu).
The GCC 3.4.6 docs have it quite clear:
,----[ http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options ]
| -mcpu=cpu-type
| [...]
| While picking a specific cpu-type will schedule things appropriately
| for that particular chip, the compiler will not generate any code that
| does not run on the i386 without the -march=cpu-type option being used.
`----
That's for -mcpu, which is, in 4.x, a deprecated synonym for -mtune.
Well, I'll just give it a try.
Alexander Skwar
--
Another dream that failed. There's nothing sadder.
-- Kirk, "This side of Paradise", stardate 3417.3
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 9+ messages in thread
* [gentoo-user] Re: Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-02 19:41 ` [gentoo-user] " Alexander Skwar
@ 2007-08-02 20:07 ` Alexander Skwar
2007-08-02 20:31 ` Florian Philipp
0 siblings, 1 reply; 9+ messages in thread
From: Alexander Skwar @ 2007-08-02 20:07 UTC (permalink / raw
To: gentoo-user
· Me, myself & I:
> Indeed, I think that I just have mixed up -march and -mtune (aka. -mcpu).
Seems like. I now have:
CFLAGS="-O2 -mtune=pentium-m -march=athlon-xp -pipe -fomit-frame-pointer"
and with this CFLAGS, I am able to compile texinfo.
Alexander Skwar
--
Q: What does it say on the bottom of Coke cans in North Dakota?
A: Open other end.
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [gentoo-user] Re: Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-02 20:07 ` Alexander Skwar
@ 2007-08-02 20:31 ` Florian Philipp
2007-08-02 21:36 ` Alexander Skwar
0 siblings, 1 reply; 9+ messages in thread
From: Florian Philipp @ 2007-08-02 20:31 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 663 bytes --]
Am Donnerstag 02 August 2007 22:07 schrieb Alexander Skwar:
> · Me, myself & I:
> > Indeed, I think that I just have mixed up -march and -mtune (aka. -mcpu).
>
> Seems like. I now have:
>
> CFLAGS="-O2 -mtune=pentium-m -march=athlon-xp -pipe -fomit-frame-pointer"
>
> and with this CFLAGS, I am able to compile texinfo.
>
> Alexander Skwar
> --
-march=pentium-m activates MMX, SSE and SSE2
-march=athlon-xp activates MMX, 3dNOW!, enhanced 3dNOW! and SSE
You see, they are not compatible and even if some code works I wouldn't bet
multimedia apps will perform well.
With -mtune the instruction set stays the same. It is just "rearranged".
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [gentoo-user] Re: Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-02 20:31 ` Florian Philipp
@ 2007-08-02 21:36 ` Alexander Skwar
2007-08-02 22:07 ` Florian Philipp
0 siblings, 1 reply; 9+ messages in thread
From: Alexander Skwar @ 2007-08-02 21:36 UTC (permalink / raw
To: gentoo-user
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=utf-8, Size: 1901 bytes --]
· Florian Philipp <f.philipp@addcom.de>:
> You see, they are not compatible and even if some code works I wouldn't bet
> multimedia apps will perform well.
>
> With -mtune the instruction set stays the same. It is just "rearranged".
Hm. Allright. When using just -mtune (ie. without -march), the
docs at http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/i386-and-x86_002d64-Options.html
say:
| While picking a specific cpu-type will schedule things appropriately
| for that particular chip, the compiler will not generate any code that
| does not run on the i386 without the -march=cpu-type option being used.
If -mtune=athlon-xp is used, code is generated which may make
use of 3dNOW!. 3dNOW! is, of course, not to be found on 386 :)
If the instruction set stays the same, code generated with
-mtune=athlon-xp would not be executable on 386 machines, if
I understand you correctly.
Hm. With -mtune, the set of available instructions (ie.
stuff like 3dNOW!, I suppose?) is NOT changed from the default
of i386, is it? Or what does "Tune to cpu-type everything applicable
about the generated code, except for the ABI and the set of available
instructions." mean - especially note the "except for [...] the set of
available instructions" part.
So with "-mtune=pentium-m -march=athlon-xp" I'm making the compiler
generate code which is "ordered" the way it's best for pentium-m
machines while allowing it to use athlon-xp instruction set? Is
that what I'm doing?
If so, then it seems you're right - code will run, but maybe not
so well.
Is that understanding correct? If so, then I really should think
twice about using "-mtune=pentium-m -march=athlon-xp", shouldn't
I?
Curious,
Alexander Skwar
--
No matter how many resources you have, it is never enough.
-- Murphy's Computer Laws n°1
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [gentoo-user] Re: Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-02 21:36 ` Alexander Skwar
@ 2007-08-02 22:07 ` Florian Philipp
2007-08-03 1:06 ` Daniel da Veiga
0 siblings, 1 reply; 9+ messages in thread
From: Florian Philipp @ 2007-08-02 22:07 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 2239 bytes --]
Am Donnerstag 02 August 2007 23:36 schrieb Alexander Skwar:
> · Florian Philipp <f.philipp@addcom.de>:
> > You see, they are not compatible and even if some code works I wouldn't
> > bet multimedia apps will perform well.
> >
> > With -mtune the instruction set stays the same. It is just "rearranged".
>
> Hm. Allright. When using just -mtune (ie. without -march), the
> docs at
> http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/i386-and-x86_002d64-Options.htm
>l
>
> say:
> | While picking a specific cpu-type will schedule things appropriately
> | for that particular chip, the compiler will not generate any code that
> | does not run on the i386 without the -march=cpu-type option being used.
>
> If -mtune=athlon-xp is used, code is generated which may make
> use of 3dNOW!. 3dNOW! is, of course, not to be found on 386 :)
> If the instruction set stays the same, code generated with
> -mtune=athlon-xp would not be executable on 386 machines, if
> I understand you correctly.
>
> Hm. With -mtune, the set of available instructions (ie.
> stuff like 3dNOW!, I suppose?) is NOT changed from the default
> of i386, is it? Or what does "Tune to cpu-type everything applicable
> about the generated code, except for the ABI and the set of available
> instructions." mean - especially note the "except for [...] the set of
> available instructions" part.
>
> So with "-mtune=pentium-m -march=athlon-xp" I'm making the compiler
> generate code which is "ordered" the way it's best for pentium-m
> machines while allowing it to use athlon-xp instruction set? Is
> that what I'm doing?
>
> If so, then it seems you're right - code will run, but maybe not
> so well.
>
> Is that understanding correct? If so, then I really should think
> twice about using "-mtune=pentium-m -march=athlon-xp", shouldn't
> I?
>
> Curious,
>
> Alexander Skwar
> --
At least that's how I understand the issue. At the moment I've got two ideas
to solve your problem:
1. set march to an inferior target (pentium-3 and pentium-3m seem okay: mmx
and sse) and mtune for one (or even both?) of them
2. set march to one of them and disable incompatible instruction sets with
options like -mno-sse2 or -mno-3dnow
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [gentoo-user] Re: Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-02 22:07 ` Florian Philipp
@ 2007-08-03 1:06 ` Daniel da Veiga
2007-08-03 10:11 ` Florian Philipp
0 siblings, 1 reply; 9+ messages in thread
From: Daniel da Veiga @ 2007-08-03 1:06 UTC (permalink / raw
To: gentoo-user
On 8/2/07, Florian Philipp <f.philipp@addcom.de> wrote:
> Am Donnerstag 02 August 2007 23:36 schrieb Alexander Skwar:
> > · Florian Philipp <f.philipp@addcom.de>:
> > > You see, they are not compatible and even if some code works I wouldn't
> > > bet multimedia apps will perform well.
> > >
> > > With -mtune the instruction set stays the same. It is just "rearranged".
> >
> > Hm. Allright. When using just -mtune (ie. without -march), the
> > docs at
> > http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/i386-and-x86_002d64-Options.htm
> >l
> >
> > say:
> > | While picking a specific cpu-type will schedule things appropriately
> > | for that particular chip, the compiler will not generate any code that
> > | does not run on the i386 without the -march=cpu-type option being used.
> >
> > If -mtune=athlon-xp is used, code is generated which may make
> > use of 3dNOW!. 3dNOW! is, of course, not to be found on 386 :)
> > If the instruction set stays the same, code generated with
> > -mtune=athlon-xp would not be executable on 386 machines, if
> > I understand you correctly.
> >
> > Hm. With -mtune, the set of available instructions (ie.
> > stuff like 3dNOW!, I suppose?) is NOT changed from the default
> > of i386, is it? Or what does "Tune to cpu-type everything applicable
> > about the generated code, except for the ABI and the set of available
> > instructions." mean - especially note the "except for [...] the set of
> > available instructions" part.
> >
> > So with "-mtune=pentium-m -march=athlon-xp" I'm making the compiler
> > generate code which is "ordered" the way it's best for pentium-m
> > machines while allowing it to use athlon-xp instruction set? Is
> > that what I'm doing?
> >
> > If so, then it seems you're right - code will run, but maybe not
> > so well.
> >
> > Is that understanding correct? If so, then I really should think
> > twice about using "-mtune=pentium-m -march=athlon-xp", shouldn't
> > I?
> >
> > Curious,
> >
> > Alexander Skwar
> > --
>
> At least that's how I understand the issue. At the moment I've got two ideas
> to solve your problem:
>
> 1. set march to an inferior target (pentium-3 and pentium-3m seem okay: mmx
> and sse) and mtune for one (or even both?) of them
> 2. set march to one of them and disable incompatible instruction sets with
> options like -mno-sse2 or -mno-3dnow
>
>
Isn't the -march=i686 valid?
I guess that would be the most "compatible" option for binaries that
will run on AMD and Intel processors... Or simply use no "-march"
setting, only "-mtune"... I did that recently to switch a whole system
from an Athlon XP to a Intel Core Duo...
--
Daniel da Veiga
Computer Operator - RS - Brazil
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCM/IT/P/O d-? s:- a? C++$ UBLA++ P+ L++ E--- W+++$ N o+ K- w O M- V-
PS PE Y PGP- t+ 5 X+++ R+* tv b+ DI+++ D+ G+ e h+ r+ y++
------END GEEK CODE BLOCK------
--
gentoo-user@gentoo.org mailing list
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [gentoo-user] Re: Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags?
2007-08-03 1:06 ` Daniel da Veiga
@ 2007-08-03 10:11 ` Florian Philipp
0 siblings, 0 replies; 9+ messages in thread
From: Florian Philipp @ 2007-08-03 10:11 UTC (permalink / raw
To: gentoo-user
[-- Attachment #1: Type: text/plain, Size: 3046 bytes --]
Am Freitag 03 August 2007 03:06 schrieb Daniel da Veiga:
> On 8/2/07, Florian Philipp <f.philipp@addcom.de> wrote:
> > Am Donnerstag 02 August 2007 23:36 schrieb Alexander Skwar:
> > > · Florian Philipp <f.philipp@addcom.de>:
> > > > You see, they are not compatible and even if some code works I
> > > > wouldn't bet multimedia apps will perform well.
> > > >
> > > > With -mtune the instruction set stays the same. It is just
> > > > "rearranged".
> > >
> > > Hm. Allright. When using just -mtune (ie. without -march), the
> > > docs at
> > > http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/i386-and-x86_002d64-Options
> > >.htm l
> > >
> > > say:
> > > | While picking a specific cpu-type will schedule things appropriately
> > > | for that particular chip, the compiler will not generate any code
> > > | that does not run on the i386 without the -march=cpu-type option
> > > | being used.
> > >
> > > If -mtune=athlon-xp is used, code is generated which may make
> > > use of 3dNOW!. 3dNOW! is, of course, not to be found on 386 :)
> > > If the instruction set stays the same, code generated with
> > > -mtune=athlon-xp would not be executable on 386 machines, if
> > > I understand you correctly.
> > >
> > > Hm. With -mtune, the set of available instructions (ie.
> > > stuff like 3dNOW!, I suppose?) is NOT changed from the default
> > > of i386, is it? Or what does "Tune to cpu-type everything applicable
> > > about the generated code, except for the ABI and the set of available
> > > instructions." mean - especially note the "except for [...] the set of
> > > available instructions" part.
> > >
> > > So with "-mtune=pentium-m -march=athlon-xp" I'm making the compiler
> > > generate code which is "ordered" the way it's best for pentium-m
> > > machines while allowing it to use athlon-xp instruction set? Is
> > > that what I'm doing?
> > >
> > > If so, then it seems you're right - code will run, but maybe not
> > > so well.
> > >
> > > Is that understanding correct? If so, then I really should think
> > > twice about using "-mtune=pentium-m -march=athlon-xp", shouldn't
> > > I?
> > >
> > > Curious,
> > >
> > > Alexander Skwar
> > > --
> >
> > At least that's how I understand the issue. At the moment I've got two
> > ideas to solve your problem:
> >
> > 1. set march to an inferior target (pentium-3 and pentium-3m seem okay:
> > mmx and sse) and mtune for one (or even both?) of them
> > 2. set march to one of them and disable incompatible instruction sets
> > with options like -mno-sse2 or -mno-3dnow
>
> Isn't the -march=i686 valid?
> I guess that would be the most "compatible" option for binaries that
> will run on AMD and Intel processors... Or simply use no "-march"
> setting, only "-mtune"... I did that recently to switch a whole system
> from an Athlon XP to a Intel Core Duo...
>
-march=i686 -mmmx -msse would be the better choice, then.
I'd still like to know what gcc does when you enable two mtune settings. Use
the last one? Use both?
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-08-03 10:19 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-02 18:15 [gentoo-user] Cannot compile texinfo: Illegal instruction -> Wrong -march and -mtune flags? Alexander Skwar
2007-08-02 18:21 ` Jan Seeger
2007-08-02 19:41 ` [gentoo-user] " Alexander Skwar
2007-08-02 20:07 ` Alexander Skwar
2007-08-02 20:31 ` Florian Philipp
2007-08-02 21:36 ` Alexander Skwar
2007-08-02 22:07 ` Florian Philipp
2007-08-03 1:06 ` Daniel da Veiga
2007-08-03 10:11 ` Florian Philipp
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox