From: Chad Walstrom <chewie@wookimus.net>
To: help-gnats@gnu.org
Subject: GNATS debian package cleanups
Date: Mon, 05 Apr 2004 22:45:00 -0000 [thread overview]
Message-ID: <20040405222907.GJ10707@wookimus.net> (raw)
[-- Attachment #1.1.1: Type: text/plain, Size: 1836 bytes --]
Ugh.. gnats Makefine.in files strike again! Looks like the gnats and
gnats-user packages for Debian have some odd path problems[1],[2].
Adding a $(DESTDIR) variable preceeding install and mkinstalldirs path
locations and mkinstalldirs locations fixes this. The debian/rules file
should then be able to specify a DESTDIR for the installation target.
Here's where we come to the kicker. I originally wanted to simply "fix"
the debian/rules file, but since it was originally constructed, the
Debian build utilities and scripts have vastly improved. Much of the
custom scripting necessary to make the gnats and gnats-user packages is
now obsolete.
Additionally, there are some fundamental differences in how packages are
designed. There is a lot of duplicated effort between the gnats and
gnats-user packages. Currently, there are few differences between them.
The gnats-user package contains mostly the same files as gnats, which
contains a few more files and additional scripts to add system users,
cron jobs, and aliases into the MTA aliases file. I plan on changing
the dependencies between these two files. Rather than having gnats
conflict with gnats-user, gnats will depend upon gnats-user and perform
the additional steps to set up the machine as a server.
I really wanted to get a quick fix in the archives, but I believe that
there is no such thing. I may as well put in the initial work to "do it
right" so that further maintainence is minimized.
The patches for the gnats Makefile.in files are attached. I'll roll
them into CVS if there are no objections.
REFERENCES
==========
1. http://bugs.debian.org/241416
2. http://bugs.debian.org/222830
--
Chad Walstrom <chewie@wookimus.net> http://www.wookimus.net/
assert(expired(knowledge)); /* core dump */
[-- Attachment #1.1.2: doc_man_Makefile.in.patch --]
[-- Type: text/plain, Size: 2527 bytes --]
--- doc/man/Makefile.in.bak 2004-04-01 12:37:49.000000000 -0600
+++ doc/man/Makefile.in 2004-04-01 12:38:50.000000000 -0600
@@ -79,7 +79,7 @@
check:
$(SRCS1): ../Makefile $(MAN1)
- $(SHELL) $(srcdir)/../../mkinstalldirs $(man1dir)/
+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(man1dir)/
@echo Creating $@...
@file=`echo $@ | sed -e 's,\$(man1ext),,'` ; \
sed -e 's,xGNATS_ROOTx,$(GNATS_ROOT),g' \
@@ -90,7 +90,7 @@
@mv tmp-$@ $@
$(SRCS5): ../Makefile $(MAN5)
- $(SHELL) $(srcdir)/../../mkinstalldirs $(man5dir)/
+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(man5dir)/
@echo Creating $@...
@file=`echo $@ | sed -e 's,\$(man5ext),,'` ; \
sed -e 's,xGNATS_ROOTx,$(GNATS_ROOT),g' \
@@ -101,7 +101,7 @@
@mv tmp-$@ $@
$(SRCS7): ../Makefile $(MAN7)
- $(SHELL) $(srcdir)/../../mkinstalldirs $(man7dir)/
+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(man7dir)/
@echo Creating $@...
@file=`echo $@ | sed -e 's,\$(man7ext),,'` ; \
sed -e 's,xGNATS_ROOTx,$(GNATS_ROOT),g' \
@@ -112,7 +112,7 @@
@mv tmp-$@ $@
$(SRCS8): ../Makefile $(MAN8)
- $(SHELL) $(srcdir)/../../mkinstalldirs $(man8dir)/
+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(man8dir)/
@echo Creating $@...
@file=`echo $@ | sed -e 's,\$(man8ext),,'` ; \
sed -e 's,xGNATS_ROOTx,$(GNATS_ROOT),g' \
@@ -139,25 +139,25 @@
install-gnats install-gnats-man: all-gnats install-tools
for i in $(SRCS5); do \
- $(INSTALL_DATA) $$i $(man5dir)/$$i; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(man5dir)/$$i; \
done
for i in $(SRCS7); do \
- $(INSTALL_DATA) $$i $(man7dir)/$$i; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(man7dir)/$$i; \
done
for i in $(SRCS8); do \
- $(INSTALL_DATA) $$i $(man8dir)/$$i; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(man8dir)/$$i; \
done
install-tools install-tools-man: all-tools
for i in $(SRCS1); do \
- $(INSTALL_DATA) $$i $(man1dir)/$$i; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(man1dir)/$$i; \
done
uninstall:
- -for i in $(SRCS1); do rm -f $(man1dir)/$$i; done
- -for i in $(SRCS5); do rm -f $(man5dir)/$$i; done
- -for i in $(SRCS7); do rm -f $(man7dir)/$$i; done
- -for i in $(SRCS8); do rm -f $(man8dir)/$$i; done
+ -for i in $(SRCS1); do rm -f $(DESTDIR)$(man1dir)/$$i; done
+ -for i in $(SRCS5); do rm -f $(DESTDIR)$(man5dir)/$$i; done
+ -for i in $(SRCS7); do rm -f $(DESTDIR)$(man7dir)/$$i; done
+ -for i in $(SRCS8); do rm -f $(DESTDIR)$(man8dir)/$$i; done
force:
dist:
[-- Attachment #1.1.3: gnats-Makefile.in.patch --]
[-- Type: text/plain, Size: 9062 bytes --]
--- gnats/Makefile.in.bak 2004-04-01 12:27:11.000000000 -0600
+++ gnats/Makefile.in 2004-04-01 12:32:27.000000000 -0600
@@ -363,37 +363,37 @@
install-tools-arch-dep: install-tools-bin
install-tools-arch-indep: all-tools
- $(SHELL) $(srcdir)/../mkinstalldirs $(datadir)/gnats
- $(SHELL) $(srcdir)/../mkinstalldirs $(sysconfdir)/gnats/defaults
+ $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(datadir)/gnats
+ $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(sysconfdir)/gnats/defaults
@if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
- echo "chown $(GNATS_USER) $(datadir)/gnats" ; \
- chown $(GNATS_USER) $(datadir)/gnats ; \
+ echo "chown $(GNATS_USER) $(DESTDIR)$(datadir)/gnats" ; \
+ chown $(GNATS_USER) $(DESTDIR)$(datadir)/gnats ; \
else \
- echo "*** Warning: Must chown $(GNATS_USER) $(datadir)/gnats" ; \
+ echo "*** Warning: Must chown $(GNATS_USER) $(DESTDIR)$(datadir)/gnats" ; \
fi
- $(INSTALL_DATA) $(srcdir)/gnats.el $(lispdir)/gnats.el
+ $(INSTALL_DATA) $(srcdir)/gnats.el $(DESTDIR)$(lispdir)/gnats.el
for i in categories submitters responsible gnatsd.user_access addresses states classes dbconfig ; do \
if [ -f "$$i" ] ; then \
- $(INSTALL_DATA) $$i $(sysconfdir)/gnats/defaults/$$i ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(sysconfdir)/gnats/defaults/$$i ; \
else \
- $(INSTALL_DATA) $(srcdir)/$$i $(sysconfdir)/gnats/defaults/$$i ; \
+ $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(sysconfdir)/gnats/defaults/$$i ; \
fi ; \
done
install-tools-bin: all-tools
- $(INSTALL_PROGRAM) query-pr $(bindir)/query-pr
- $(INSTALL_PROGRAM) getclose $(bindir)/getclose
- $(INSTALL_SCRIPT) edit-pr $(bindir)/edit-pr
- $(INSTALL_SCRIPT) $(srcdir)/diff-prs $(libexecdir)/gnats/diff-prs
- $(INSTALL_SCRIPT) mail-agent $(libexecdir)/gnats/mail-agent
- $(INSTALL_PROGRAM) file-pr $(libexecdir)/gnats/file-pr
- $(INSTALL_PROGRAM) pr-age $(libexecdir)/gnats/pr-age
- $(INSTALL_PROGRAM) pr-edit $(libexecdir)/gnats/pr-edit
+ $(INSTALL_PROGRAM) query-pr $(DESTDIR)$(bindir)/query-pr
+ $(INSTALL_PROGRAM) getclose $(DESTDIR)$(bindir)/getclose
+ $(INSTALL_SCRIPT) edit-pr $(DESTDIR)$(bindir)/edit-pr
+ $(INSTALL_SCRIPT) $(srcdir)/diff-prs $(DESTDIR)$(libexecdir)/gnats/diff-prs
+ $(INSTALL_SCRIPT) mail-agent $(DESTDIR)$(libexecdir)/gnats/mail-agent
+ $(INSTALL_PROGRAM) file-pr $(DESTDIR)$(libexecdir)/gnats/file-pr
+ $(INSTALL_PROGRAM) pr-age $(DESTDIR)$(libexecdir)/gnats/pr-age
+ $(INSTALL_PROGRAM) pr-edit $(DESTDIR)$(libexecdir)/gnats/pr-edit
@if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
- echo "chown $(GNATS_USER) $(libexecdir)/gnats/pr-edit" ; \
- echo "chmod 4555 $(libexecdir)/gnats/pr-edit" ; \
- chown $(GNATS_USER) $(libexecdir)/gnats/pr-edit ; \
- chmod 4555 $(libexecdir)/gnats/pr-edit ; \
+ echo "chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/pr-edit" ; \
+ echo "chmod 4555 $(DESTDIR)$(libexecdir)/gnats/pr-edit" ; \
+ chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/pr-edit ; \
+ chmod 4555 $(DESTDIR)$(libexecdir)/gnats/pr-edit ; \
else \
echo "*** Warning: Must make pr-edit suid $(GNATS_USER)" ; \
fi
@@ -410,9 +410,9 @@
else \
if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
$(INSTALL_DATA) -o $(GNATS_USER) gnats-databases \
- $(GLOBAL_DB_LIST_FILE) ; \
+ $(DESTDIR)$(GLOBAL_DB_LIST_FILE) ; \
else \
- $(INSTALL_DATA) gnats-databases $(GLOBAL_DB_LIST_FILE) ; \
+ $(INSTALL_DATA) gnats-databases $(DESTDIR)$(GLOBAL_DB_LIST_FILE) ; \
echo "*** Warning: Must chown $(GNATS_USER) $(GLOBAL_DB_LIST_FILE)" ; \
fi \
fi
@@ -422,10 +422,10 @@
else \
if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
$(INSTALL_DATA) -o $(GNATS_USER) $(srcdir)/gnatsd.host_access \
- $(GNATSD_HOST_ACCESS_FILE) ; \
+ $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE) ; \
else \
$(INSTALL_DATA) $(srcdir)/gnatsd.host_access \
- $(GNATSD_HOST_ACCESS_FILE) ; \
+ $(DESTDIR)$(GNATSD_HOST_ACCESS_FILE) ; \
echo "*** Warning: Must chown $(GNATS_USER) $(GNATSD_HOST_ACCESS_FILE)" ; \
fi \
fi
@@ -433,27 +433,29 @@
@echo "*** with $(libexecdir)/gnats/mkdb."
install-gnats-bin: all-gnats install-tools-bin
- $(SHELL) $(srcdir)/../mkinstalldirs $(libexecdir)/gnats
- $(INSTALL_PROGRAM) gnatsd $(libexecdir)/gnats/gnatsd
- $(INSTALL_SCRIPT) at-pr $(libexecdir)/gnats/at-pr
- $(INSTALL_SCRIPT) check-db $(libexecdir)/gnats/check-db
- $(INSTALL_SCRIPT) delete-pr $(libexecdir)/gnats/delete-pr
- $(INSTALL_SCRIPT) mkcat $(libexecdir)/gnats/mkcat
- $(INSTALL_SCRIPT) mkdb $(libexecdir)/gnats/mkdb
- $(INSTALL_SCRIPT) rmcat $(libexecdir)/gnats/rmcat
- $(INSTALL_PROGRAM) queue-pr $(libexecdir)/gnats/queue-pr
- $(INSTALL_PROGRAM) gen-index $(libexecdir)/gnats/gen-index
- $(INSTALL_SCRIPT) mail-query $(libexecdir)/gnats/mail-query
- $(INSTALL_PROGRAM) gnats-pwconv $(libexecdir)/gnats/gnats-pwconv
+ $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libexecdir)/gnats
+ $(INSTALL_PROGRAM) gnatsd $(DESTDIR)$(libexecdir)/gnats/gnatsd
+ $(INSTALL_SCRIPT) at-pr $(DESTDIR)$(libexecdir)/gnats/at-pr
+ $(INSTALL_SCRIPT) check-db $(DESTDIR)$(libexecdir)/gnats/check-db
+ $(INSTALL_SCRIPT) delete-pr $(DESTDIR)$(libexecdir)/gnats/delete-pr
+ $(INSTALL_SCRIPT) mkcat $(DESTDIR)$(libexecdir)/gnats/mkcat
+ $(INSTALL_SCRIPT) mkdb $(DESTDIR)$(libexecdir)/gnats/mkdb
+ $(INSTALL_SCRIPT) rmcat $(DESTDIR)$(libexecdir)/gnats/rmcat
+ $(INSTALL_PROGRAM) queue-pr $(DESTDIR)$(libexecdir)/gnats/queue-pr
+ $(INSTALL_PROGRAM) gen-index $(DESTDIR)$(libexecdir)/gnats/gen-index
+ $(INSTALL_SCRIPT) mail-query $(DESTDIR)$(libexecdir)/gnats/mail-query
+ $(INSTALL_PROGRAM) gnats-pwconv $(DESTDIR)$(libexecdir)/gnats/gnats-pwconv
@if [ `whoami` = root -o `whoami` = $(GNATS_USER) ] ; then \
echo "chown $(GNATS_USER) $(libexecdir)/gnats/queue-pr $(libexecdir)/gnats/file-pr $(libexecdir)/gnats/gen-index" ; \
echo "chmod 4555 $(libexecdir)/gnats/queue-pr $(libexecdir)/gnats/file-pr $(libexecdir)/gnats/gen-index" ; \
- echo "chown $(GNATS_USER) $(libexecdir)/gnats/gnatsd" ; \
- echo "chmod 555 $(libexecdir)/gnats/gnatsd" ; \
- chown $(GNATS_USER) $(libexecdir)/gnats/queue-pr $(libexecdir)/gnats/gen-index ; \
- chmod 4555 $(libexecdir)/gnats/queue-pr $(libexecdir)/gnats/gen-index ; \
- chown $(GNATS_USER) $(libexecdir)/gnats/gnatsd ; \
- chmod 555 $(libexecdir)/gnats/gnatsd ; \
+ echo "chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/gnatsd" ; \
+ echo "chmod 555 $(DESTDIR)$(libexecdir)/gnats/gnatsd" ; \
+ chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/queue-pr \
+ $(DESTDIR)$(libexecdir)/gnats/gen-index ; \
+ chmod 4555 $(DESTDIR)$(libexecdir)/gnats/queue-pr \
+ $(DESTDIR)$(libexecdir)/gnats/gen-index ; \
+ chown $(GNATS_USER) $(DESTDIR)$(libexecdir)/gnats/gnatsd ; \
+ chmod 555 $(DESTDIR)$(libexecdir)/gnats/gnatsd ; \
else \
echo "*** Warning: must make queue-pr and gen-index suid $(GNATS_USER)." ; \
fi
@@ -504,26 +506,26 @@
# Don't use rm -rf in case there's other stuff in the directories
uninstall:
- -rm -f $(bindir)/edit-pr
- -rm -f $(bindir)/query-pr
- -rm -f $(bindir)/getclose
- -rm -f $(libexecdir)/gnats/gnats-edit-pr
- -rm -f $(libexecdir)/gnats/pr-age
- -rm -f $(libexecdir)/gnats/pr-edit
- -rm -f $(libexecdir)/gnats/at-pr
- -rm -f $(libexecdir)/gnats/check-db
- -rm -f $(libexecdir)/gnats/delete-pr
- -rm -f $(libexecdir)/gnats/file-pr
- -rm -f $(libexecdir)/gnats/nfile-pr
- -rm -f $(libexecdir)/gnats/gnats-file-pr
- -rm -f $(libexecdir)/gnats/queue-pr
- -rm -f $(libexecdir)/gnats/mkcat
- -rm -f $(libexecdir)/gnats/mkdb
- -rm -f $(libexecdir)/gnats/rmcat
- -rm -f $(libexecdir)/gnats/gen-index
- -rm -f $(libexecdir)/gnats/mail-query
- -rm -f $(libexecdir)/gnats/gnats-pwconv
- -rmdir $(libexecdir)/gnats
+ -rm -f $(DESTDIR)$(bindir)/edit-pr
+ -rm -f $(DESTDIR)$(bindir)/query-pr
+ -rm -f $(DESTDIR)$(bindir)/getclose
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/gnats-edit-pr
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/pr-age
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/pr-edit
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/at-pr
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/check-db
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/delete-pr
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/file-pr
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/nfile-pr
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/gnats-file-pr
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/queue-pr
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/mkcat
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/mkdb
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/rmcat
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/gen-index
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/mail-query
+ -rm -f $(DESTDIR)$(libexecdir)/gnats/gnats-pwconv
+ -rmdir $(DESTDIR)$(libexecdir)/gnats
TAGS: $(SOURCES) $(LIBSRC)
etags -f TAGS $(SOURCES) $(LIBSRC) *.h gnats.el ;
[-- Attachment #1.1.4: send-pr_Makefile.in.patch --]
[-- Type: text/plain, Size: 824 bytes --]
--- send-pr/Makefile.in.bak 2004-04-01 12:33:27.000000000 -0600
+++ send-pr/Makefile.in 2004-04-01 12:34:55.000000000 -0600
@@ -140,14 +140,14 @@
install-norm-arch-indep:
install-norm-arch-dep:
- $(INSTALL_SCRIPT) send-pr $(bindir)/send-pr
- $(INSTALL_SCRIPT) install-sid $(bindir)/install-sid
- $(INSTALL_DATA) send-pr.1 $(man1dir)/send-pr.1
+ $(INSTALL_SCRIPT) send-pr $(DESTDIR)$(bindir)/send-pr
+ $(INSTALL_SCRIPT) install-sid $(DESTDIR)$(bindir)/install-sid
+ $(INSTALL_DATA) send-pr.1 $(DESTDIR)$(man1dir)/send-pr.1
uninstall:
- -rm -f $(bindir)/send-pr $(bindir)/install-sid
- -rmdir $(datadir)/gnats
- -rm -f $(man1dir)/send-pr.1
+ -rm -f $(DESTDIR)$(bindir)/send-pr $(DESTDIR)$(bindir)/install-sid
+ -rmdir $(DESTDIR)$(datadir)/gnats
+ -rm -f $(DESTDIR)$(man1dir)/send-pr.1
TAGS:
[-- Attachment #1.1.5: doc_Makefile.in.patch --]
[-- Type: text/plain, Size: 1213 bytes --]
--- doc/Makefile.in.bak 2004-04-03 12:00:09.000000000 -0600
+++ doc/Makefile.in 2004-04-03 10:36:03.000000000 -0600
@@ -57,11 +57,11 @@
install-gnats: info man
for i in gnats.info* gnats-faq.info*; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/$$i ; \
done
-if [ -x "$(INSTALL_INFO)" ]; then \
- $(INSTALL_INFO) $(infodir)/gnats.info $(infodir)/dir; \
- $(INSTALL_INFO) $(infodir)/gnats-faq.info $(infodir)/dir; \
+ $(INSTALL_INFO) $(DESTDIR)$(infodir)/gnats.info $(DESTDIR)$(infodir)/dir; \
+ $(INSTALL_INFO) $(DESTDIR)$(infodir)/gnats-faq.info $(DESTDIR)$(infodir)/dir; \
fi
$(MAKE) -C man install-gnats
@@ -69,10 +69,10 @@
uninstall:
-if [ -x "$(INSTALL_INFO)" ]; then \
- $(INSTALL_INFO) --delete $(infodir)/gnats.info \
- $(infodir)/dir; \
- $(INSTALL_INFO) --delete $(infodir)/gnats-faq.info \
- $(infodir)/dir; \
+ $(INSTALL_INFO) --delete $(DESTDIR)$(infodir)/gnats.info \
+ $(DESTDIR)$(infodir)/dir; \
+ $(INSTALL_INFO) --delete $(DESTDIR)$(infodir)/gnats-faq.info \
+ $(DESTDIR)$(infodir)/dir; \
fi
$(MAKE) -C man uninstall
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 139 bytes --]
_______________________________________________
Help-gnats mailing list
Help-gnats@gnu.org
http://mail.gnu.org/mailman/listinfo/help-gnats
next reply other threads:[~2004-04-05 22:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-05 22:45 Chad Walstrom [this message]
2004-04-07 15:55 ` Chad Walstrom
2004-04-07 17:59 ` Mel Hatzis
2004-04-07 18:16 ` Yngve Svendsen
2004-04-14 15:51 ` Chad Walstrom
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040405222907.GJ10707@wookimus.net \
--to=chewie@wookimus.net \
--cc=help-gnats@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).