* patch: a few Makefile improvements for egcs
[not found] <17517.891801462@hurl.cygnus.com>
@ 1998-04-05 21:29 ` Alexandre Oliva
0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Oliva @ 1998-04-05 21:29 UTC (permalink / raw)
To: egcs
[-- Attachment #1: Type: text/plain, Size: 1918 bytes --]
By Jeff's request, I resend the attached patches. The original
description follows...
The first thing that annoyed me was that `make check' would leave lots
of files behind on /tmp. Furthermore, this would sometimes prevent me
from running concurrent tests, so I thought it would be nice to be
able to override the default choice of /tmp. The first attached patch
does just that.
The second thing that annoyed me was that, if some host crashed during
a build, I'd not be able to continue the build with -lean; it would
have to take much more disk space. The second attached patch provides
for bootstrap[234]-lean targets.
Finally, there's Robert Lipe's suggestion of running tests for all
multilibs. The third patch is a tentative implementation of that. It
requires CHECK_MULTI to be defined to something different from empty,
`n' or `no' in order to pass to runtest the appropriate target_board
argument. It does not take care of adding -fpic/-fPIC for each
individual multilib, as I had intended originally, primarily because
I don't know of any good way to check whether -fpic and -fPIC are
synonymous or not (so as to avoid checking both unnecessarily).
If we didn't care about unnecessary testing, a possible implementation
of this would require modifying SET_TARGET_BOARD as follows:
sed -e 's/.*\;//' -e 's/@/-/' -e 's/@/ -/g' | \
+ while read f; do \
+ case "$f" in \
+ *-fpic*|*-fPIC*) echo "$f";; \
+ *) for pic in "" $(AVAILABLE_PIC_FLAGS); do \
+ echo "$pic $f"; \
+ done;; \
+ esac; \
+ done | sed -e 's/^ //' -e 's/ $$//' | sort -u | \
tr '\012' ',' | \
If only there were a simple way to define AVAILABLE_PIC_FLAGS... Does
anyone know any?
--
Alexandre Oliva
mailto:oliva@dcc.unicamp.br mailto:aoliva@acm.org
http://www.dcc.unicamp.br/~oliva
Universidade Estadual de Campinas, SP, Brasil
[-- Attachment #2: bootstrapN-lean.diff --]
[-- Type: text/x-diff, Size: 2976 bytes --]
* Makefile.in (boostrap2-lean, bootstrap3-lean,
bootstrap4-lean): new targets
* gcc/Makefile.in (boostrap2-lean, bootstrap3-lean,
bootstrap4-lean): ditto
Index: Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/Makefile.in,v
retrieving revision 1.16
diff -u -r1.16 Makefile.in
--- Makefile.in 1998/02/18 00:18:26 1.16
+++ Makefile.in 1998/03/03 00:22:44
@@ -1293,8 +1294,8 @@
# In theory, on an SMP all those dependencies can be resolved
# in parallel.
#
-.PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap3 bootstrap4
-bootstrap bootstrap-lean bootstrap2 bootstrap3 bootstrap4: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
+.PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean
+bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd`; export s; \
$(SET_LIB_PATH) \
@@ -1303,6 +1304,9 @@
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd`; export s; \
case "$@" in \
+ *bootstrap4-lean ) \
+ msg="Comparing stage3 and stage4 of the compiler"; \
+ compare=compare3-lean ;; \
*bootstrap4 ) msg="Comparing stage3 and stage4 of the compiler"; \
compare=compare3 ;; \
*-lean ) msg="Comparing stage2 and stage3 of the compiler"; \
Index: gcc/Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/Makefile.in,v
retrieving revision 1.69
diff -u -r1.69 Makefile.in
--- Makefile.in 1998/02/19 19:12:33 1.69
+++ Makefile.in 1998/03/03 00:22:46
@@ -2609,15 +2624,16 @@
-if test $@ = bootstrap-lean; then rm -rf stage1; else true; fi
$(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-bootstrap2: force
+bootstrap2 bootstrap2-lean: force
$(MAKE) CC="stage1/xgcc -Bstage1/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
$(MAKE) stage2
+ -if test $@ = bootstrap2-lean; then rm -rf stage1; else true; fi
$(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-bootstrap3: force
+bootstrap3 bootstrap3-lean: force
$(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-bootstrap4: force
+bootstrap4 bootstrap4-lean: force
$(MAKE) CC="stage3/xgcc -Bstage3/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)"
# Compare the object files in the current directory with those in the
[-- Attachment #3: checkmulti.diff --]
[-- Type: text/x-diff, Size: 3036 bytes --]
* Makefile.in (FLAGS_TO_PASS): pass CHECK_MULTI on
* gcc/Makefile.in (SET_TARGET_BOARD): new variable: if
CHECK_MULTI is not empty nor `n' nor `no', sets target_board
to unix{...}, where `...' expands to a comma-separated list of
multilib options.
(TARGET_BOARD): new variable: expands to --target_board
"$target_board", iff target_board is set
(check-g++, check-gcc, check_g77): use SET_TARGET_BOARD and
TARGET_BOARD
Index: Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/Makefile.in,v
retrieving revision 1.16
diff -u -r1.16 Makefile.in
--- Makefile.in 1998/02/18 00:18:26 1.16
+++ Makefile.in 1998/03/03 00:22:44
@@ -324,6 +324,7 @@
"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
"CFLAGS=$(CFLAGS)" \
"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+ "CHECK_MULTI=$(CHECK_MULTI)" \
"CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
"CXXFLAGS=$(CXXFLAGS)" \
"CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \
Index: gcc/Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/Makefile.in,v
retrieving revision 1.69
diff -u -r1.69 Makefile.in
--- Makefile.in 1998/02/19 19:12:33 1.69
+++ Makefile.in 1998/03/03 00:22:46
@@ -2468,35 +2468,50 @@
rm -rf testsuite/site.exp
cp site.exp testsuite/site.exp
+SET_TARGET_BOARD = case "$(CHECK_MULTI)" in \
+ ""|n|no) unset target_board;; \
+ *) target_board="\"unix`\
+ $(GCC_FOR_TARGET) -print-multi-lib | \
+ sed -e 's/.*\;//' -e 's/@/-/' -e 's/@/ -/g' | \
+ tr '\012' ',' | \
+ sed -e 's/,$$//' -e 's/^/{/' -e 's/$$/}/' -e 's/{}//' \
+ `\"";; \
+ esac
+
+TARGET_BOARD = $${target_board+--target_board} $${target_board+"$$target_board"}
+
check-g++: testsuite/site.exp
-rootme=`pwd`; export rootme; \
+ $(SET_TARGET_BOARD); \
srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd testsuite; \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
TCL_LIBRARY=$${srcdir}/../tcl/library ; \
export TCL_LIBRARY ; fi ; \
- $(RUNTEST) --tool g++ $(RUNTESTFLAGS)
+ $(RUNTEST) --tool g++ $(TARGET_BOARD) $(RUNTESTFLAGS)
check-gcc: testsuite/site.exp
-rootme=`pwd`; export rootme; \
+ $(SET_TARGET_BOARD); \
srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd testsuite; \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
TCL_LIBRARY=$${srcdir}/../tcl/library ; \
export TCL_LIBRARY ; fi ; \
- $(RUNTEST) --tool gcc $(RUNTESTFLAGS)
+ $(RUNTEST) --tool gcc $(TARGET_BOARD) $(RUNTESTFLAGS)
check-g77: testsuite/site.exp
-rootme=`pwd`; export rootme; \
+ $(SET_TARGET_BOARD); \
srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd testsuite; \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
TCL_LIBRARY=$${srcdir}/../tcl/library ; \
export TCL_LIBRARY ; fi ; \
- $(RUNTEST) --tool g77 $(RUNTESTFLAGS)
+ $(RUNTEST) --tool g77 $(TARGET_BOARD) $(RUNTESTFLAGS)
# These exist for maintenance purposes.
[-- Attachment #4: testsuite-tmp.diff --]
[-- Type: text/x-diff, Size: 728 bytes --]
* gcc/Makefile.in (site.exp): if TESTSUITE_TMPDIR environment
variable is defined, use it instead of /tmp to define tmpdir.
Index: gcc/Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/Makefile.in,v
retrieving revision 1.69
diff -u -r1.69 Makefile.in
--- Makefile.in 1998/02/19 19:12:33 1.69
+++ Makefile.in 1998/03/03 00:22:46
@@ -2445,7 +2445,7 @@
else true; \
fi
@if [ $(build_canonical) != $(host_canonical) ] ; then \
- echo "set tmpdir /tmp" >> ./tmp0 ; \
+ echo "set tmpdir $${TESTSUITE_TMPDIR-/tmp}" >> ./tmp0 ; \
else echo "set tmpdir $(objdir)/testsuite" >> ./tmp0 ; \
fi
@echo "set srcdir \"\$${srcdir}/testsuite\"" >> ./tmp0
^ permalink raw reply [flat|nested] 2+ messages in thread
* patch: a few Makefile improvements for egcs
@ 1998-03-03 1:08 Alexandre Oliva
0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Oliva @ 1998-03-03 1:08 UTC (permalink / raw)
To: egcs
[-- Attachment #1: Type: text/plain, Size: 1825 bytes --]
Hi!
I've just been working a bit on egcs's Makefiles.
The first thing that annoyed me was that `make check' would leave lots
of files behind on /tmp. Furthermore, this would sometimes prevent me
from running concurrent tests, so I thought it would be nice to be
able to override the default choice of /tmp. The first attached patch
does just that.
The second thing that annoyed me was that, if some host crashed during
a build, I'd not be able to continue the build with -lean; it would
have to take much more disk space. The second attached patch provides
for bootstrap[234]-lean targets.
Finally, there's Robert Lipe's suggestion of running tests for all
multilibs. The third patch is a tentative implementation of that. It
requires CHECK_MULTI to be defined to something different from empty,
`n' or `no' in order to pass to runtest the appropriate target_board
argument. It does not take care of adding -fpic/-fPIC for each
individual multilib, as I had intended originally, primarily because
I don't know of any good way to check whether -fpic and -fPIC are
synonymous or not (so as to avoid checking both unnecessarily).
If we didn't care about unnecessary testing, a possible implementation
of this would require modifying SET_TARGET_BOARD as follows:
sed -e 's/.*\;//' -e 's/@/-/' -e 's/@/ -/g' | \
+ while read f; do \
+ case "$f" in \
+ *-fpic*|*-fPIC*) echo "$f";; \
+ *) for pic in "" $(AVAILABLE_PIC_FLAGS); do \
+ echo "$pic $f"; \
+ done;; \
+ esac; \
+ done | sed -e 's/^ //' -e 's/ $$//' | sort -u | \
tr '\012' ',' | \
If only there were a simple way to define AVAILABLE_PIC_FLAGS... Does
anyone know any?
--
Alexandre Oliva
mailto:oliva@dcc.unicamp.br mailto:aoliva@acm.org
http://www.dcc.unicamp.br/~oliva
Universidade Estadual de Campinas, SP, Brasil
[-- Attachment #2: bootstrapN-lean.diff --]
[-- Type: text/x-diff, Size: 2976 bytes --]
* Makefile.in (boostrap2-lean, bootstrap3-lean,
bootstrap4-lean): new targets
* gcc/Makefile.in (boostrap2-lean, bootstrap3-lean,
bootstrap4-lean): ditto
Index: Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/Makefile.in,v
retrieving revision 1.16
diff -u -r1.16 Makefile.in
--- Makefile.in 1998/02/18 00:18:26 1.16
+++ Makefile.in 1998/03/03 00:22:44
@@ -1293,8 +1294,8 @@
# In theory, on an SMP all those dependencies can be resolved
# in parallel.
#
-.PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap3 bootstrap4
-bootstrap bootstrap-lean bootstrap2 bootstrap3 bootstrap4: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
+.PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean
+bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd`; export s; \
$(SET_LIB_PATH) \
@@ -1303,6 +1304,9 @@
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd`; export s; \
case "$@" in \
+ *bootstrap4-lean ) \
+ msg="Comparing stage3 and stage4 of the compiler"; \
+ compare=compare3-lean ;; \
*bootstrap4 ) msg="Comparing stage3 and stage4 of the compiler"; \
compare=compare3 ;; \
*-lean ) msg="Comparing stage2 and stage3 of the compiler"; \
Index: gcc/Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/Makefile.in,v
retrieving revision 1.69
diff -u -r1.69 Makefile.in
--- Makefile.in 1998/02/19 19:12:33 1.69
+++ Makefile.in 1998/03/03 00:22:46
@@ -2609,15 +2624,16 @@
-if test $@ = bootstrap-lean; then rm -rf stage1; else true; fi
$(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-bootstrap2: force
+bootstrap2 bootstrap2-lean: force
$(MAKE) CC="stage1/xgcc -Bstage1/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
$(MAKE) stage2
+ -if test $@ = bootstrap2-lean; then rm -rf stage1; else true; fi
$(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-bootstrap3: force
+bootstrap3 bootstrap3-lean: force
$(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
-bootstrap4: force
+bootstrap4 bootstrap4-lean: force
$(MAKE) CC="stage3/xgcc -Bstage3/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)"
# Compare the object files in the current directory with those in the
[-- Attachment #3: checkmulti.diff --]
[-- Type: text/x-diff, Size: 3036 bytes --]
* Makefile.in (FLAGS_TO_PASS): pass CHECK_MULTI on
* gcc/Makefile.in (SET_TARGET_BOARD): new variable: if
CHECK_MULTI is not empty nor `n' nor `no', sets target_board
to unix{...}, where `...' expands to a comma-separated list of
multilib options.
(TARGET_BOARD): new variable: expands to --target_board
"$target_board", iff target_board is set
(check-g++, check-gcc, check_g77): use SET_TARGET_BOARD and
TARGET_BOARD
Index: Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/Makefile.in,v
retrieving revision 1.16
diff -u -r1.16 Makefile.in
--- Makefile.in 1998/02/18 00:18:26 1.16
+++ Makefile.in 1998/03/03 00:22:44
@@ -324,6 +324,7 @@
"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
"CFLAGS=$(CFLAGS)" \
"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
+ "CHECK_MULTI=$(CHECK_MULTI)" \
"CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
"CXXFLAGS=$(CXXFLAGS)" \
"CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \
Index: gcc/Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/Makefile.in,v
retrieving revision 1.69
diff -u -r1.69 Makefile.in
--- Makefile.in 1998/02/19 19:12:33 1.69
+++ Makefile.in 1998/03/03 00:22:46
@@ -2468,35 +2468,50 @@
rm -rf testsuite/site.exp
cp site.exp testsuite/site.exp
+SET_TARGET_BOARD = case "$(CHECK_MULTI)" in \
+ ""|n|no) unset target_board;; \
+ *) target_board="\"unix`\
+ $(GCC_FOR_TARGET) -print-multi-lib | \
+ sed -e 's/.*\;//' -e 's/@/-/' -e 's/@/ -/g' | \
+ tr '\012' ',' | \
+ sed -e 's/,$$//' -e 's/^/{/' -e 's/$$/}/' -e 's/{}//' \
+ `\"";; \
+ esac
+
+TARGET_BOARD = $${target_board+--target_board} $${target_board+"$$target_board"}
+
check-g++: testsuite/site.exp
-rootme=`pwd`; export rootme; \
+ $(SET_TARGET_BOARD); \
srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd testsuite; \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
TCL_LIBRARY=$${srcdir}/../tcl/library ; \
export TCL_LIBRARY ; fi ; \
- $(RUNTEST) --tool g++ $(RUNTESTFLAGS)
+ $(RUNTEST) --tool g++ $(TARGET_BOARD) $(RUNTESTFLAGS)
check-gcc: testsuite/site.exp
-rootme=`pwd`; export rootme; \
+ $(SET_TARGET_BOARD); \
srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd testsuite; \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
TCL_LIBRARY=$${srcdir}/../tcl/library ; \
export TCL_LIBRARY ; fi ; \
- $(RUNTEST) --tool gcc $(RUNTESTFLAGS)
+ $(RUNTEST) --tool gcc $(TARGET_BOARD) $(RUNTESTFLAGS)
check-g77: testsuite/site.exp
-rootme=`pwd`; export rootme; \
+ $(SET_TARGET_BOARD); \
srcdir=`cd ${srcdir}; pwd` ; export srcdir ; \
cd testsuite; \
EXPECT=${EXPECT} ; export EXPECT ; \
if [ -f $${rootme}/../expect/expect ] ; then \
TCL_LIBRARY=$${srcdir}/../tcl/library ; \
export TCL_LIBRARY ; fi ; \
- $(RUNTEST) --tool g77 $(RUNTESTFLAGS)
+ $(RUNTEST) --tool g77 $(TARGET_BOARD) $(RUNTESTFLAGS)
# These exist for maintenance purposes.
[-- Attachment #4: testsuite-tmp.diff --]
[-- Type: text/x-diff, Size: 728 bytes --]
* gcc/Makefile.in (site.exp): if TESTSUITE_TMPDIR environment
variable is defined, use it instead of /tmp to define tmpdir.
Index: gcc/Makefile.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/Makefile.in,v
retrieving revision 1.69
diff -u -r1.69 Makefile.in
--- Makefile.in 1998/02/19 19:12:33 1.69
+++ Makefile.in 1998/03/03 00:22:46
@@ -2445,7 +2445,7 @@
else true; \
fi
@if [ $(build_canonical) != $(host_canonical) ] ; then \
- echo "set tmpdir /tmp" >> ./tmp0 ; \
+ echo "set tmpdir $${TESTSUITE_TMPDIR-/tmp}" >> ./tmp0 ; \
else echo "set tmpdir $(objdir)/testsuite" >> ./tmp0 ; \
fi
@echo "set srcdir \"\$${srcdir}/testsuite\"" >> ./tmp0
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~1998-04-05 21:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <17517.891801462@hurl.cygnus.com>
1998-04-05 21:29 ` patch: a few Makefile improvements for egcs Alexandre Oliva
1998-03-03 1:08 Alexandre Oliva
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).