aboutsummaryrefslogtreecommitdiffstats
path: root/news/inn
diff options
context:
space:
mode:
authorshaun <shaun@FreeBSD.org>2006-10-31 10:35:52 +0800
committershaun <shaun@FreeBSD.org>2006-10-31 10:35:52 +0800
commitf0a38891db9552b462124246a1435a30c4fdb7a9 (patch)
tree67b6397e5a2240b701cca22ffb6a3da181f1d4d3 /news/inn
parent02ac8df28c1f9bcd506325d39ae1276937186928 (diff)
downloadfreebsd-ports-gnome-f0a38891db9552b462124246a1435a30c4fdb7a9.tar.gz
freebsd-ports-gnome-f0a38891db9552b462124246a1435a30c4fdb7a9.tar.zst
freebsd-ports-gnome-f0a38891db9552b462124246a1435a30c4fdb7a9.zip
Overhaul for the inn ports:
- Turn inn-stable and inn-current into slaves, as they are pretty much clones of news/inn. - Update the above ports to recent snapshots. - Allow inn's database and spool directories to be placed outside PREFIX (e.g. under /var). - Add OPTIONS knobs.
Diffstat (limited to 'news/inn')
-rw-r--r--news/inn/Makefile220
-rw-r--r--news/inn/Makefile.layout58
-rw-r--r--news/inn/files/innd.sh.in6
-rw-r--r--news/inn/files/patch-site::Makefile99
-rw-r--r--news/inn/files/pkg-install.in88
-rw-r--r--news/inn/pkg-install80
-rw-r--r--news/inn/pkg-plist503
7 files changed, 506 insertions, 548 deletions
diff --git a/news/inn/Makefile b/news/inn/Makefile
index f8f2d7d3027d..9677d4e92177 100644
--- a/news/inn/Makefile
+++ b/news/inn/Makefile
@@ -5,45 +5,54 @@
# $FreeBSD$
#
-PORTNAME= inn
-PORTVERSION= 2.4.3
-PORTREVISION= 2
+PORTNAME?= inn
+PORTVERSION?= 2.4.3
+PORTREVISION?= 2
CATEGORIES= news ipv6
-MASTER_SITES= ${MASTER_SITE_ISC}
-MASTER_SITE_SUBDIR= ${PORTNAME}
+MASTER_SITES?= ${MASTER_SITE_ISC}
+MASTER_SITE_SUBDIR?= ${PORTNAME}
MAINTAINER= shaun@FreeBSD.org
COMMENT= InterNetNews -- the Internet meets Netnews
USE_RC_SUBR= innd.sh
+SUB_FILES= pkg-install
+
+LATEST_LINK= ${PORTNAME}${PKGNAMESUFFIX}
-NO_LATEST_LINK= yes
USE_GMAKE= yes
-USE_PERL5= yes
USE_OPENSSL= yes
-CONFLICTS= inn-stable-* inn-current-*
+CONFLICTS?= inn-stable-[0-9]* inn-current-[0-9]*
-.if exists(/var/news) && !defined(PACKAGE_BUILDING)
-INN_NEWSSPOOL?=/var/news
-.elif exists(/var/spool/news) && !defined(PACKAGE_BUILDING)
-INN_NEWSSPOOL?=/var/spool/news
-.else
-INN_NEWSSPOOL?=${PREFIX}/news/spool
-.endif
-INN_NEWSLOG?=/var/log/news
+BRANCH?= # Empty
+
+OPTIONS= PERL "Embedded Perl script support" On \
+ PYTHON "Embedded Python module support" Off \
+ TCL "Embedded TCL support" Off \
+ KERBEROS "Enable Kerberos auth support" Off \
+ SASL "Enable SASL support (for imapfeed auth)" Off \
+ TAGGED_HASH "Use tagged hash table for history" Off \
+ LARGE_FILES "Support for files larger than 2GB" Off \
+ KEYWORDS "Automatic keyword generation support" On \
+ BERKELEYDB "Enable BerkeleyDB (for ovdb overview method)" Off
+
+VARBASE?= /var
+
+.include "Makefile.layout"
HAS_CONFIGURE= yes
CONFIGURE_ENV+= LOCALBASE=${LOCALBASE}
-CONFIGURE_ARGS+= --mandir=${PREFIX}/man \
- --prefix=${PREFIX}/news \
- --with-spool-dir=${INN_NEWSSPOOL} \
- --with-log-dir=${INN_NEWSLOG} \
- --with-perl \
- --with-tmp-dir=${INN_NEWSSPOOL}/tmp \
- --with-openssl=${OPENSSLBASE} \
- --enable-ipv6 \
- --with-etc-dir=${ETC_DIR}
+CONFIGURE_ARGS+= --mandir=${PREFIX}/man \
+ --prefix=${INN_NEWSBASE} \
+ --with-spool-dir=${INN_NEWSSPOOL} \
+ --with-log-dir=${INN_NEWSLOG} \
+ --with-tmp-dir=${INN_TMPDIR} \
+ --with-openssl=${OPENSSLBASE} \
+ --with-etc-dir=${INN_ETCDIR} \
+ --enable-ipv6
+
+.include <bsd.port.pre.mk>
.if defined(WITH_BERKELEYDB)
CONFIGURE_ARGS+= --with-berkeleydb
@@ -61,9 +70,28 @@ CONFIGURE_ENV+= DB_VER=db${WITH_BDB_VER}
CONFIGURE_ARGS+= --with-berkeleydb=${LOCALBASE}
.endif
+.if defined(WITH_KERBEROS)
+. if exists(${LOCALBASE}/bin/krb5-config)
+LIB_DEPENDS+= gssapi_krb5:${PORTSDIR}/security/krb5
+CONFIGURE_ARGS+= --enable-kerberos=${LOCALBASE}
+. else
+CONFIGURE_ARGS+= --enable-kerberos=/usr
+. endif
+CONFIGURE_ENV+= ac_cv_search_krb5_parse_name="-lcrypt -lcrypto -lkrb5 -lasn1 -lroken"
+CONFIGURE_ENV+= ac_cv_func_krb5_init_ets=yes
+.else
+CONFIGURE_ARGS+= --disable-kerberos
+.endif
+
+.if !defined(WITHOUT_PERL)
+USE_PERL5= yes
+CONFIGURE_ARGS+= --with-perl
+.endif
+
.if defined(WITH_PYTHON)
USE_PYTHON= YES
CONFIGURE_ARGS+= --with-python
+. include "${PORTSDIR}/Mk/bsd.python.mk"
.endif
.if defined(WITH_TCL)
@@ -71,11 +99,18 @@ CONFIGURE_ARGS+= --with-tcl=${LOCALBASE}
BUILD_DEPENDS+= ${LOCALBASE}/include/tcl8.3/tcl.h:${PORTSDIR}/lang/tcl83
.endif
-.if defined (WITH_MAXSOCKET)
+.if defined(WITH_MAXSOCKET)
CONFIGURE_ARGS+= --with-max-sockets=${WITH_MAXSOCKET}
.endif
-.if defined(WITH_KEYWORDS)
+.if defined(WITH_LARGE_FILES)
+CONFIGURE_ARGS+= --enable-largefiles
+. if defined(WITH_TAGGED_HASH)
+IGNORE= cannot be compiled with both LARGE_FILES and TAGGED_HASH: please re-run make config
+. endif
+.endif
+
+.if !defined(WITHOUT_KEYWORDS)
CONFIGURE_ARGS+= --enable-keywords
.endif
@@ -87,39 +122,53 @@ LIB_DEPENDS+= sasl2:${PORTSDIR}/security/cyrus-sasl2
.if defined(WITH_TAGGED_HASH)
CONFIGURE_ARGS+= --enable-tagged-hash
DBZ_FILES= dir pag
-PLIST_SUB= SUB_WITH_TAGGED_HASH=""
-PLIST_SUB+= SUB_WITHOUT_TAGGED_HASH="@comment "
+PLIST_SUB+= WITH_TAGGED_HASH=""
+PLIST_SUB+= WITHOUT_TAGGED_HASH="@comment "
.else
CONFIGURE_ARGS+= --enable-largefiles
DBZ_FILES= dir hash index
-PLIST_SUB= SUB_WITH_TAGGED_HASH="@comment "
-PLIST_SUB+= SUB_WITHOUT_TAGGED_HASH=""
+PLIST_SUB+= WITH_TAGGED_HASH="@comment "
+PLIST_SUB+= WITHOUT_TAGGED_HASH=""
.endif
-EXTRA= CONTRIBUTORS HACKING INSTALL LICENSE MANIFEST NEWS README TODO
+PORTDOCS= CONTRIBUTORS HACKING INSTALL LICENSE MANIFEST NEWS README TODO
HEADERS= clibrary.h config.h dbz.h libinn.h storage.h
-MAN1= convdate.1 fastrm.1 getlist.1 grephistory.1 inews.1 innconfval.1 \
- innfeed.1 innmail.1 nntpget.1 pgpverify.1 rnews.1 shlock.1 \
- shrinkfile.1 simpleftp.1 sm.1 startinnfeed.1 pullnews.1
-MAN3= clientlib.3 dbz.3 inndcomm.3 libauth.3 libinn.3 libinnhist.3 \
- libstorage.3 list.3 parsedate.3 qio.3 tst.3 uwildmat.3
-MAN5= active.5 active.times.5 buffindexed.conf.5 control.ctl.5 \
- cycbuff.conf.5 distrib.pats.5 expire.ctl.5 history.5 incoming.conf.5 \
- inn.conf.5 innfeed.conf.5 innwatch.ctl.5 moderators.5 motd.news.5 \
- newsfeeds.5 newslog.5 nnrpd.track.5 nntpsend.ctl.5 ovdb.5 \
- overview.fmt.5 passwd.nntp.5 radius.conf.5 readers.conf.5 \
- sasl.conf.5 storage.conf.5 subscriptions.5
-MAN8= actsync.8 actsyncd.8 archive.8 auth_smb.8 batcher.8 buffchan.8 \
- ckpasswd.8 cnfsheadconf.8 cnfsstat.8 controlchan.8 ctlinnd.8 \
- cvtbatch.8 domain.8 expire.8 expireover.8 expirerm.8 filechan.8 \
- ident.8 inncheck.8 innd.8 inndf.8 inndstart.8 innreport.8 innstat.8 \
- innupgrade.8 innwatch.8 innxbatch.8 innxmit.8 mailpost.8 makedbz.8 \
- makehistory.8 mod-active.8 news.daily.8 news2mail.8 ninpaths.8 \
- nnrpd.8 nntpsend.8 ovdb_init.8 ovdb_monitor.8 ovdb_server.8 \
- ovdb_stat.8 overchan.8 perl-nocem.8 prunehistory.8 \
- radius.8 rc.news.8 scanlogs.8 send-nntp.8 send-uucp.8 sendinpaths.8 \
- tally.control.8 tdx-util.8 writelog.8
+MAN1= convdate.1 fastrm.1 getlist.1 grephistory.1 inews.1 innconfval.1 \
+ innfeed.1 innmail.1 nntpget.1 pgpverify.1 rnews.1 shlock.1 \
+ shrinkfile.1 simpleftp.1 sm.1 pullnews.1
+MAN3= clientlib.3 dbz.3 inndcomm.3 libauth.3 libinn.3 libinnhist.3 \
+ libstorage.3 list.3 qio.3 tst.3 uwildmat.3
+MAN5= active.5 active.times.5 buffindexed.conf.5 control.ctl.5 \
+ cycbuff.conf.5 distrib.pats.5 expire.ctl.5 history.5 incoming.conf.5 \
+ inn.conf.5 innfeed.conf.5 innwatch.ctl.5 moderators.5 motd.news.5 \
+ newsfeeds.5 newslog.5 nnrpd.track.5 nntpsend.ctl.5 ovdb.5 \
+ overview.fmt.5 passwd.nntp.5 radius.conf.5 readers.conf.5 \
+ storage.conf.5 subscriptions.5
+MAN8= actsync.8 archive.8 auth_smb.8 batcher.8 buffchan.8 \
+ ckpasswd.8 cnfsheadconf.8 cnfsstat.8 controlchan.8 ctlinnd.8 \
+ cvtbatch.8 domain.8 expire.8 expireover.8 expirerm.8 filechan.8 \
+ ident.8 inncheck.8 innd.8 inndf.8 innreport.8 innstat.8 \
+ innupgrade.8 innwatch.8 innxbatch.8 innxmit.8 mailpost.8 makedbz.8 \
+ makehistory.8 mod-active.8 news.daily.8 news2mail.8 ninpaths.8 \
+ nnrpd.8 nntpsend.8 ovdb_init.8 ovdb_monitor.8 ovdb_server.8 \
+ ovdb_stat.8 overchan.8 perl-nocem.8 prunehistory.8 \
+ radius.8 rc.news.8 scanlogs.8 send-nntp.8 send-uucp.8 sendinpaths.8 \
+ tally.control.8 tdx-util.8 writelog.8
+
+.if ${BRANCH} != "current"
+MAN1+= startinnfeed.1
+MAN3+= parsedate.3
+MAN5+= sasl.conf.5
+MAN8+= actsyncd.8 inndstart.8
+PLIST_SUB+= NOTCURRENT=""
+.else
+PLIST_SUB+= NOTCURRENT="@comment "
+.endif
+
+.if defined(WITH_KERBEROS)
+MAN8+= auth_krb5.8
+.endif
TO_BE_STRIPPED= bin/auth/resolv/domain bin/auth/resolv/ident bin/auth/passwd/auth_smb \
bin/auth/passwd/ckpasswd bin/auth/passwd/radius bin/rnews.libexec/decode \
@@ -132,58 +181,73 @@ TO_BE_STRIPPED= bin/auth/resolv/domain bin/auth/resolv/ident bin/auth/passwd/aut
bin/filechan bin/inndf bin/innxmit bin/innxbatch bin/ninpaths bin/nntpget \
bin/overchan bin/shlock bin/shrinkfile
-.include <bsd.port.pre.mk>
+CONFIG_FILES= actsync.cfg actsync.ign buffindexed.conf control.ctl cycbuff.conf \
+ distrib.pats expire.ctl incoming.conf inn.conf innfeed.conf \
+ innreport.conf innwatch.ctl moderators motd.news news2mail.cf \
+ newsfeeds nnrpd.track nntpsend.ctl ovdb.conf overview.fmt \
+ passwd.nntp radius.conf readers.conf sasl.conf storage.conf \
+ subscriptions
-.if defined(WITH_STANDARD_ETC)
-ETC_DIR= ${PREFIX}/etc/inn
-PLIST_SUB+= ETCDIR="etc/inn"
-.else
-ETC_DIR= ${PREFIX}/news/etc
-PLIST_SUB+= ETCDIR="news/etc"
-.endif
+SUB_LIST+= EGDIR="${EXAMPLESDIR:C,^${PREFIX},\\$\\${PREFIX},}"
+PLIST_SUB+= ETCFILES="${CONFIG_FILES}"
post-patch:
+ @${REINPLACE_CMD} -E 's!\$$[{(]PATHETC[})]!${EXAMPLESDIR}!g' \
+ ${WRKSRC}/site/Makefile
.if defined(WITH_TCL)
@${REINPLACE_CMD} -e 's!<tcl.h>!<tcl8.3/tcl.h>!' ${WRKSRC}/innd/innd.h
- @${REINPLACE_CMD} -e 's!-ltcl!-ltcl83!' ${WRKSRC}/configure
+ @${REINPLACE_CMD} -e 's!-ltcl!-ltcl83!' \
+ ${WRKSRC}/configure
.endif
+ @${REINPLACE_CMD} -e 's!et/com_err\.h!com_err.h!g' \
+ -e 's!-lk5crypto!!g' \
+ ${WRKSRC}/configure
+ @${ECHO_CMD} '/^$$D$$(PATH_HISTORY)' > ${WRKDIR}/ex.script
+ @${ECHO_CMD} '+' >> ${WRKDIR}/ex.script
+ @${ECHO_CMD} 'mark t' >> ${WRKDIR}/ex.script
+ @${ECHO_CMD} '/^$$' >> ${WRKDIR}/ex.script
+ @${ECHO_CMD} "'t, d" >> ${WRKDIR}/ex.script
+ @${ECHO_CMD} 'wq!' >> ${WRKDIR}/ex.script
+ @cd ${WRKDIR} && ex ${WRKSRC}/site/Makefile < ex.script > /dev/null
pre-install:
@${SETENV} "PKG_PREFIX=${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
+post-build:
+ @${FIND} ${WRKSRC} -name "inn.conf" \
+ | ${XARGS} ${REINPLACE_CMD} -e 's/^pathhost:.*/pathhost: host.example.com/'
+
post-install:
.if !defined(WITHOUT_STRIP)
-.for FILE in ${TO_BE_STRIPPED}
- ${STRIP_CMD} ${PREFIX}/news/${FILE}
-.endfor
+. for FILE in ${TO_BE_STRIPPED}
+ ${STRIP_CMD} ${INN_NEWSBASE}/${FILE}
+. endfor
.endif
- ${CHOWN} root:wheel ${PREFIX}/man ${PREFIX}/man/man1 ${PREFIX}/man/man3 \
+ ${CHOWN} ${MANOWN}:${MANGRP} ${PREFIX}/man ${PREFIX}/man/man1 ${PREFIX}/man/man3 \
${PREFIX}/man/man5 ${PREFIX}/man/man8
${MKDIR} ${INN_NEWSSPOOL}
.if !defined(NOPORTDOCS)
${MKDIR} ${DOCSDIR}
-.for FILE in ${EXTRA}
+. for FILE in ${PORTDOCS}
${INSTALL_DATA} ${WRKSRC}/${FILE} ${DOCSDIR}
-.endfor
+. endfor
.endif
- ${MKDIR} ${PREFIX}/news/include
+ ${MKDIR} ${INN_NEWSBASE}/include
.for FILE in ${HEADERS}
- ${INSTALL_DATA} ${WRKSRC}/include/${FILE} ${PREFIX}/news/include/
+ ${INSTALL_DATA} ${WRKSRC}/include/${FILE} ${INN_NEWSBASE}/include/
.endfor
- @${CHOWN} root:news ${PREFIX}/news/bin/auth/passwd/ckpasswd
- @${CHMOD} 4755 ${PREFIX}/news/bin/auth/passwd/ckpasswd
- @${FIND} ${WRKSRC} -name "inn.conf" \
- | ${XARGS} ${REINPLACE_CMD} -e 's/^pathhost:.*/pathhost: host.example.com/'
- @${SETENV} "PKG_PREFIX=${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} CHECK-CONF ${ETC_DIR}
- @(if [ ! -f ${PREFIX}/news/db/history ] ; then \
+ @${CHOWN} ${BINOWN}:news ${INN_NEWSBASE}/bin/auth/passwd/ckpasswd
+ @${CHMOD} 4755 ${INN_NEWSBASE}/bin/auth/passwd/ckpasswd
+ @${SETENV} "PKG_PREFIX=${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} CHECK-CONF ${INN_ETCDIR}
+ @(if [ ! -f ${INN_DBDIR}/history ] ; then \
${ECHO} 'Creating empty history database...' ; \
- cd ${PREFIX}/news/db ; \
+ cd ${INN_DBDIR} ; \
${TOUCH} history ; \
${CHMOD} 644 history ; \
${CHOWN} news:news history ; \
su -fm news -c "../bin/makedbz -i" ; \
for s in ${DBZ_FILES} ; do \
- ${MV} history.n.$${s} history.$${s} ; \
+ ${MV} history.n.$${s} history.$${s} ; \
done ; \
fi)
@${SETENV} "PKG_PREFIX=${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL PORTMODE
diff --git a/news/inn/Makefile.layout b/news/inn/Makefile.layout
new file mode 100644
index 000000000000..052fc51745c4
--- /dev/null
+++ b/news/inn/Makefile.layout
@@ -0,0 +1,58 @@
+# $FreeBSD$
+
+.if !empty(INN_LAYOUT:L:Mnew)
+#-----------------------------------------------------------------------
+# New-style layout. Keep database, spool, and other transient data under
+# /var, where it should be.
+#-----------------------------------------------------------------------
+INN_NEWSBASE= ${PREFIX}/news
+INN_ETCDIR= ${INN_NEWSBASE}/etc
+INN_RUNDIR= ${VARBASE}/run/news
+INN_LOGDIR= ${VARBASE}/log/news
+INN_DBDIR= ${VARBASE}/news/db
+INN_TMPDIR= ${VARBASE}/news/tmp
+INN_NEWSSPOOL= ${VARBASE}/news
+.elif !empty(INN_LAYOUT:L:Mhier)
+#-----------------------------------------------------------------------
+# hier(7)-ish layout. As above, but try to use standard directories
+# under /var.
+#-----------------------------------------------------------------------
+INN_NEWSBASE= ${PREFIX}/news
+INN_ETCDIR= ${PREFIX}/etc/news
+INN_RUNDIR= ${VARBASE}/run/news
+INN_LOGDIR= ${VARBASE}/log/news
+INN_DBDIR= ${VARBASE}/db/news
+INN_TMPDIR= ${VARBASE}/tmp/news
+INN_NEWSSPOOL= ${VARBASE}/spool/news
+.else
+#-----------------------------------------------------------------------
+# Default layout ("old") - put everything in one place,
+# except for log files (and possible spool data)
+# Respect some legacy variables for backwards-compatibility.
+#-----------------------------------------------------------------------
+INN_NEWSBASE= ${PREFIX}/news
+. if defined(WITH_STANDARD_ETC)
+INN_ETCDIR= ${PREFIX}/etc/inn
+. else
+INN_ETCDIR?= ${INN_NEWSBASE}/etc
+. endif
+INN_RUNDIR= ${INN_NEWSBASE}/run
+INN_NEWSLOG?= ${VARBASE}/log/news
+INN_LOGDIR?= ${INN_NEWSLOG}
+INN_DBDIR= ${INN_NEWSBASE}/db
+INN_TMPDIR= ${INN_NEWSBASE}/tmp
+. if exists(${VARBASE}/news) && !defined(PACKAGE_BUILDING)
+INN_NEWSSPOOL?= ${VARBASE}/news
+. elif exists(${VARBASE}/spool/news) && !defined(PACKAGE_BUILDING)
+INN_NEWSSPOOL?= ${VARBASE}/spool/news
+. else
+INN_NEWSSPOOL?= ${PREFIX}/news/spool
+. endif
+.endif
+
+.for sub in NEWSBASE ETCDIR RUNDIR LOGDIR DBDIR TMPDIR NEWSSPOOL
+PLIST_SUB+= ${sub}="${INN_${sub}:C,^${PREFIX},%D,}"
+SUB_LIST+= ${sub}="${INN_${sub}:C,^${PREFIX},\\$\\${PREFIX},}"
+.endfor
+
+PLIST_SUB+= CWDNEWSBASE="@cwd ${INN_NEWSBASE}"
diff --git a/news/inn/files/innd.sh.in b/news/inn/files/innd.sh.in
index 94d612dbe42b..7b027c28c441 100644
--- a/news/inn/files/innd.sh.in
+++ b/news/inn/files/innd.sh.in
@@ -11,11 +11,13 @@
name=innd
+PREFIX=%%PREFIX%%
+
innd_enable=${innd_enable-"NO"}
innd_user=${innd_user-"news"}
innd_group=${innd_group-"news"}
-required_files="%%PREFIX%%/news/db/history.dir"
+required_files="%%DBDIR%%/history.dir"
load_rc_config ${name}
@@ -24,7 +26,7 @@ stop_cmd=${name}_stop
rcvar=`set_rcvar`
-command=%%PREFIX%%/news/bin/rc.news
+command=%%NEWSBASE%%/bin/rc.news
innd_start() {
su -fm ${innd_user} -c "${command} start"
diff --git a/news/inn/files/patch-site::Makefile b/news/inn/files/patch-site::Makefile
deleted file mode 100644
index f99e162dd478..000000000000
--- a/news/inn/files/patch-site::Makefile
+++ /dev/null
@@ -1,99 +0,0 @@
---- site/Makefile.orig Mon Mar 20 04:14:57 2006
-+++ site/Makefile Sat May 6 04:15:50 2006
-@@ -24,29 +24,29 @@
- PATH_NNRPYAUTH = ${PATHFILTER}/nnrpd_auth.py
- PATH_NNRPACCESS = ${PATHFILTER}/nnrpd_access.pl
-
--PATH_CONFIG = ${PATHETC}/inn.conf
--PATH_CONTROLCTL = ${PATHETC}/control.ctl
--PATH_EXPIRECTL = ${PATHETC}/expire.ctl
--PATH_INNDHOSTS = ${PATHETC}/incoming.conf
--PATH_MODERATORS = ${PATHETC}/moderators
--PATH_DISTPATS = ${PATHETC}/distrib.pats
--PATH_NEWSFEEDS = ${PATHETC}/newsfeeds
--PATH_READERSCONF = ${PATHETC}/readers.conf
--PATH_NNRPDTRACK = ${PATHETC}/nnrpd.track
--PATH_SCHEMA = ${PATHETC}/overview.fmt
--PATH_NNTPPASS = ${PATHETC}/passwd.nntp
--PATH_CTLWATCH = ${PATHETC}/innwatch.ctl
--PATH_ACTSYNC_IGN = ${PATHETC}/actsync.ign
--PATH_ACTSYNC_CFG = ${PATHETC}/actsync.cfg
--PATH_MOTD = ${PATHETC}/motd.news
--PATH_STORAGECONF = ${PATHETC}/storage.conf
--PATH_CYCBUFFCONFIG = ${PATHETC}/cycbuff.conf
--PATH_INNFEEDCTL = ${PATHETC}/innfeed.conf
--PATH_BUFFINDEXED = ${PATHETC}/buffindexed.conf
--PATH_RADIUS_CONF = ${PATHETC}/radius.conf
--PATH_OVDB_CONF = ${PATHETC}/ovdb.conf
--PATH_SASL_CONF = ${PATHETC}/sasl.conf
--PATH_SUBSCRIPTIONS = ${PATHETC}/subscriptions
-+PATH_CONFIG = ${PATHETC}/inn.conf.dist
-+PATH_CONTROLCTL = ${PATHETC}/control.ctl.dist
-+PATH_EXPIRECTL = ${PATHETC}/expire.ctl.dist
-+PATH_INNDHOSTS = ${PATHETC}/incoming.conf.dist
-+PATH_MODERATORS = ${PATHETC}/moderators.dist
-+PATH_DISTPATS = ${PATHETC}/distrib.pats.dist
-+PATH_NEWSFEEDS = ${PATHETC}/newsfeeds.dist
-+PATH_READERSCONF = ${PATHETC}/readers.conf.dist
-+PATH_NNRPDTRACK = ${PATHETC}/nnrpd.track.dist
-+PATH_SCHEMA = ${PATHETC}/overview.fmt.dist
-+PATH_NNTPPASS = ${PATHETC}/passwd.nntp.dist
-+PATH_CTLWATCH = ${PATHETC}/innwatch.ctl.dist
-+PATH_ACTSYNC_IGN = ${PATHETC}/actsync.ign.dist
-+PATH_ACTSYNC_CFG = ${PATHETC}/actsync.cfg.dist
-+PATH_MOTD = ${PATHETC}/motd.news.dist
-+PATH_STORAGECONF = ${PATHETC}/storage.conf.dist
-+PATH_CYCBUFFCONFIG = ${PATHETC}/cycbuff.conf.dist
-+PATH_INNFEEDCTL = ${PATHETC}/innfeed.conf.dist
-+PATH_BUFFINDEXED = ${PATHETC}/buffindexed.conf.dist
-+PATH_RADIUS_CONF = ${PATHETC}/radius.conf.dist
-+PATH_OVDB_CONF = ${PATHETC}/ovdb.conf.dist
-+PATH_SASL_CONF = ${PATHETC}/sasl.conf.dist
-+PATH_SUBSCRIPTIONS = ${PATHETC}/subscriptions.dist
-
- PATH_ACTIVE = ${PATHDB}/active
- PATH_ACTIVE_TIMES = ${PATHDB}/active.times
-@@ -73,8 +73,8 @@
- $D$(PATH_NEWSFEEDS) $D$(PATH_INNDHOSTS) \
- $D$(PATH_NNRPDTRACK) $D$(PATH_NNTPPASS) \
- $D$(PATH_CONFIG) $D$(PATH_MODERATORS) \
-- $D$(PATH_CONTROLCTL) $D$(PATH_EXPIRECTL) $D$(PATHETC)/nntpsend.ctl \
-- $D$(PATHETC)/innreport.conf \
-+ $D$(PATH_CONTROLCTL) $D$(PATH_EXPIRECTL) $D$(PATHETC)/nntpsend.ctl.dist \
-+ $D$(PATHETC)/innreport.conf.dist \
- $D$(PATH_CTLWATCH) $D$(PATH_DISTPATS) $D$(PATH_SCHEMA) \
- $D$(PATH_ACTSYNC_CFG) $D$(PATH_ACTSYNC_IGN) \
- $D$(PATH_MOTD) $D$(PATH_STORAGECONF) \
-@@ -83,7 +83,7 @@
- $D$(PATH_PERL_FILTER_INND) $D$(PATH_PERL_FILTER_NNRPD) \
- $D$(PATH_PYTHON_FILTER_INND) $D$(PATH_PYTHON_INN_MODULE) \
- $D$(PATH_TCL_STARTUP) $D$(PATH_TCL_FILTER) \
-- $D$(PATH_NNRPAUTH) $D$(PATHETC)/news2mail.cf $D$(PATH_READERSCONF) \
-+ $D$(PATH_NNRPAUTH) $D$(PATHETC)/news2mail.cf.dist $D$(PATH_READERSCONF) \
- $D$(PATH_RADIUS_CONF) $D$(PATH_NNRPYAUTH) $D$(PATH_OVDB_CONF) \
- $D$(PATH_SASL_CONF) $D$(PATH_SUBSCRIPTIONS) $D$(PATH_NNRPACCESS)
-
-@@ -136,8 +136,8 @@
- chgrp $(NEWSGROUP) $@
- chmod $(FILEMODE) $@
- $D$(PATH_HISTORY):
-- touch $@
-- $(PATHBIN)/makedbz -i -o
-+# touch $@
-+# $(PATHBIN)/makedbz -i -o
-
- ## Remove files that are unchanged from the release version.
- clean:
-@@ -176,9 +176,9 @@
- $D$(PATH_MODERATORS): moderators ; $(COPY_RPUB) $? $@
- $D$(PATH_DISTPATS): distrib.pats ; $(COPY_RPUB) $? $@
- $D$(PATH_NNTPPASS): passwd.nntp ; $(COPY_RPRI) $? $@
--$D$(PATHETC)/nntpsend.ctl: nntpsend.ctl ; $(COPY_RPUB) $? $@
--$D$(PATHETC)/news2mail.cf: news2mail.cf ; $(COPY_RPUB) $? $@
--$D$(PATHETC)/innreport.conf: innreport.conf ; $(COPY_RPUB) $? $@
-+$D$(PATHETC)/nntpsend.ctl.dist: nntpsend.ctl ; $(COPY_RPUB) $? $@
-+$D$(PATHETC)/news2mail.cf.dist: news2mail.cf ; $(COPY_RPUB) $? $@
-+$D$(PATHETC)/innreport.conf.dist: innreport.conf ; $(COPY_RPUB) $? $@
- $D$(PATH_STORAGECONF): storage.conf ; $(COPY_RPUB) $? $@
- $D$(PATH_CYCBUFFCONFIG): cycbuff.conf ; $(COPY_RPUB) $? $@
- $D$(PATH_BUFFINDEXED): buffindexed.conf ; $(COPY_RPUB) $? $@
diff --git a/news/inn/files/pkg-install.in b/news/inn/files/pkg-install.in
new file mode 100644
index 000000000000..24307e0aa623
--- /dev/null
+++ b/news/inn/files/pkg-install.in
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+PKGNAME=$1
+[ ! -n ${PKG_PREFIX} ] && exit 1
+PREFIX=${PKG_PREFIX}
+
+DBDIR="%%DBDIR%%"
+ETCDIR="%%ETCDIR%%"
+RUNDIR="%%RUNDIR%%"
+TMPDIR="%%TMPDIR%%"
+NEWSBASE="%%NEWSBASE%%"
+NEWSSPOOL="%%NEWSSPOOL%%"
+
+EGDIR="%%EGDIR%%"
+
+case $2 in
+ PRE-INSTALL)
+ echo "===> Checking for old database files"
+ if [ ! -d ${DBDIR} ]; then
+ mkdir -p ${EGDIR}/db
+ fi
+ ;;
+ CHECK-CONF)
+ ETCDIR=${3}
+ echo "Checking for configuration files"
+ for f in $(find ${EGDIR} -type f -mindepth 1 -maxdepth 1 -execdir echo "{}" \;)
+ do
+ REALFILE=${ETCDIR}/${f}
+ EGFILE=${EGDIR}/${f}
+ echo -n "Checking if ${REALFILE} exists: "
+ if [ -e ${REALFILE} ]
+ then
+ echo "[YES]"
+ else
+ echo "[NO] Installing ${EGFILE} to ${REALFILE}"
+ cp -p ${EGFILE} ${REALFILE}
+ fi
+ done
+ ;;
+ POST-INSTALL)
+ install -d -o news -g news -m 755 \
+ ${RUNDIR} \
+ ${NEWSSPOOL} \
+ ${NEWSSPOOL}/archive \
+ ${NEWSSPOOL}/articles \
+ ${NEWSSPOOL}/incoming \
+ ${NEWSSPOOL}/incoming/bad \
+ ${NEWSSPOOL}/innfeed \
+ ${NEWSSPOOL}/outgoing \
+ ${NEWSSPOOL}/overview \
+ ${TMPDIR}
+
+ if [ ${3:-""} = "PORTMODE" ]; then
+ fc=`ls ${EGDIR}/db/* 2>/dev/null | wc -l`
+
+ if [ -d ${EGDIR}/db -a $fc -eq 0 ]; then
+ for f in ${DBDIR}/*; do
+ cp -pR ${f} ${EGDIR}/db
+ done
+ else
+ mkdir -p ${EGDIR}/db
+ for f in ${DBDIR}/*; do
+ touch ${EGDIR}/db/${f##*/}
+ done
+ fi
+
+ # Fix permissions
+
+ for f in ${ETCDIR}/*.ctl ${ETCDIR}/readers.conf; do
+ chmod 640 ${f}
+ done
+ else
+ fc=`ls ${DBDIR}/* 2>/dev/null | wc -l`
+
+ if [ -d ${DBDIR} -a $fc -eq 0 ]; then
+ for f in ${EGDIR}/db/*; do
+ cp -pR ${f} ${DBDIR}
+ done
+ fi
+ fi
+
+ ;;
+ *)
+ echo "Unexpected Argument $2!!!"
+ exit 1
+ ;;
+esac
+exit 0
diff --git a/news/inn/pkg-install b/news/inn/pkg-install
deleted file mode 100644
index 4d0029184e9c..000000000000
--- a/news/inn/pkg-install
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/bin/sh
-
-PKGNAME=$1
-[ ! -n PKG_PREFIX ] && exit 1
-PKG_PREFIX=${PKG_PREFIX:-/usr/local}
-
-case $2 in
- PRE-INSTALL)
- echo "===> Checking for old database files"
- if [ ! -d ${PKG_PREFIX}/news/db ]; then
- mkdir -p ${PKG_PREFIX}/news/db.dist
- fi
- ;;
- CHECK-CONF)
- ETC_DIR=${3}
- echo "Checking for configuration files"
- for f in $(find ${ETC_DIR} -name "*.dist" -type f)
- do
- REALFILE=${f%%.dist}
- echo -n "Checking if ${REALFILE} exists: "
- if [ -e ${REALFILE} ]
- then
- echo "[YES]"
- else
- echo "[NO]"
- echo " Installing ${f} to ${REALFILE}"
- cp -p ${f} ${REALFILE}
- fi
- done
- ;;
- POST-INSTALL)
- NEWSBASE=${PKG_PREFIX}/news
- install -d -o news -g news -m 755 \
- ${NEWSBASE}/run \
- ${NEWSBASE}/spool \
- ${NEWSBASE}/spool/archive \
- ${NEWSBASE}/spool/articles \
- ${NEWSBASE}/spool/incoming \
- ${NEWSBASE}/spool/incoming/bad \
- ${NEWSBASE}/spool/innfeed \
- ${NEWSBASE}/spool/outgoing \
- ${NEWSBASE}/spool/overview \
- ${NEWSBASE}/spool/tmp
-
- if [ ${3:-""} = "PORTMODE" ]; then
- fc=`ls ${NEWSBASE}/db.dist/* 2>/dev/null | wc -l`
-
- if [ -d ${NEWSBASE}/db.dist -a $fc -eq 0 ]; then
- for f in ${NEWSBASE}/db/*; do
- cp -pR ${f} ${NEWSBASE}/db.dist
- done
- else
- mkdir -p ${NEWSBASE}/db.dist
- for f in ${NEWSBASE}/db/*; do
- touch ${NEWSBASE}/db.dist/${f##*/}
- done
- fi
-
- # Fix permissions
-
- for f in ${NEWSBASE}/etc/*.ctl ${NEWSBASE}/etc/readers.conf; do
- chmod 640 ${f}
- done
- else
- fc=`ls ${NEWSBASE}/db/* 2>/dev/null | wc -l`
-
- if [ -d ${NEWSBASE}/db -a $fc -eq 0 ]; then
- for f in ${NEWSBASE}/db.dist/*; do
- cp -pR ${f} ${NEWSBASE}/db
- done
- fi
- fi
-
- ;;
- *)
- echo "Unexpected Argument $2!!!"
- exit 1
- ;;
-esac
-exit 0
diff --git a/news/inn/pkg-plist b/news/inn/pkg-plist
index 5ea49eba6fee..bb7ff854573d 100644
--- a/news/inn/pkg-plist
+++ b/news/inn/pkg-plist
@@ -1,289 +1,214 @@
-@exec mkdir -p %D/news/db
-news/bin/actmerge
-news/bin/actsync
-news/bin/actsyncd
-news/bin/archive
-news/bin/auth/passwd/auth_smb
-news/bin/auth/passwd/ckpasswd
-news/bin/auth/passwd/radius
-news/bin/auth/resolv/domain
-news/bin/auth/resolv/ident
-news/bin/batcher
-news/bin/buffchan
-news/bin/cnfsheadconf
-news/bin/cnfsstat
-news/bin/control/checkgroups.pl
-news/bin/control/ihave.pl
-news/bin/control/newgroup.pl
-news/bin/control/rmgroup.pl
-news/bin/control/sendme.pl
-news/bin/control/sendsys.pl
-news/bin/control/senduuname.pl
-news/bin/control/version.pl
-news/bin/controlbatch
-news/bin/controlchan
-news/bin/convdate
-news/bin/ctlinnd
-news/bin/cvtbatch
-news/bin/docheckgroups
-news/bin/expire
-news/bin/expireover
-news/bin/expirerm
-news/bin/fastrm
-news/bin/filechan
-news/bin/filter/INN.py
-news/bin/filter/filter.tcl
-news/bin/filter/filter_innd.pl
-news/bin/filter/filter_innd.py
-news/bin/filter/filter_nnrpd.pl
-news/bin/filter/nnrpd_access.pl
-news/bin/filter/nnrpd_auth.pl
-news/bin/filter/nnrpd_auth.py
-news/bin/filter/startup.tcl
-news/bin/filter/startup_innd.pl
-news/bin/getlist
-news/bin/gpgverify
-news/bin/grephistory
-news/bin/imapfeed
-news/bin/inews
-news/bin/inncheck
-news/bin/innconfval
-news/bin/innd
-news/bin/inndf
-news/bin/inndstart
-news/bin/innfeed
-news/bin/innmail
-news/bin/innreport
-news/bin/innstat
-news/bin/innupgrade
-news/bin/innwatch
-news/bin/innxbatch
-news/bin/innxmit
-news/bin/mailpost
-news/bin/makedbz
-news/bin/makehistory
-news/bin/mod-active
-news/bin/news.daily
-news/bin/news2mail
-news/bin/ninpaths
-news/bin/nnrpd
-news/bin/nntpget
-news/bin/nntpsend
-news/bin/ovdb_init
-news/bin/ovdb_monitor
-news/bin/ovdb_server
-news/bin/ovdb_stat
-news/bin/overchan
-news/bin/perl-nocem
-news/bin/pgpverify
-news/bin/procbatch
-news/bin/prunehistory
-news/bin/pullnews
-news/bin/rc.news
-news/bin/rnews
-news/bin/rnews.libexec/c7unbatch
-news/bin/rnews.libexec/decode
-news/bin/rnews.libexec/encode
-news/bin/rnews.libexec/gunbatch
-news/bin/scanlogs
-news/bin/scanspool
-news/bin/send-ihave
-news/bin/send-nntp
-news/bin/send-uucp
-news/bin/sendinpaths
-news/bin/sendxbatches
-news/bin/shlock
-news/bin/shrinkfile
-news/bin/signcontrol
-news/bin/simpleftp
-news/bin/sm
-news/bin/startinnfeed
-news/bin/tally.control
-news/bin/tdx-util
-news/bin/writelog
-@unexec f=active; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-@unexec f=active.times; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-@unexec f=history; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-@unexec f=history.dir; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-@unexec f=newsgroups; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-news/db.dist/active
-news/db.dist/active.times
-news/db.dist/history
-news/db.dist/history.dir
-news/db.dist/newsgroups
-@unexec rm -f %D/news/db.dist/active.old || true
-@unexec rm -f %D/news/db.dist/history.n.dir || true
-@unexec rm -f %D/news/db.dist/history.n.hash || true
-@unexec rm -f %D/news/db.dist/history.n.index || true
-%%SUB_WITHOUT_TAGGED_HASH%%@unexec f=history.hash; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-%%SUB_WITHOUT_TAGGED_HASH%%@unexec f=history.index; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-%%SUB_WITHOUT_TAGGED_HASH%%@unexec rm -f %D/news/db.dist/history.hash 2> /dev/null || true
-%%SUB_WITHOUT_TAGGED_HASH%%@unexec rm -f %D/news/db.dist/history.index 2> /dev/null || true
-%%SUB_WITH_TAGGED_HASH%%@unexec f=history.pag; if cmp -s %D/news/db/$f %D/news/db.dist/$f; then rm -f %D/news/db/$f; fi
-%%SUB_WITH_TAGGED_HASH%%@unexec rm -f %D/news/db.dist/history.pag 2> /dev/null || true
-news/doc/CONTRIBUTORS
-news/doc/GPL
-news/doc/HACKING
-news/doc/INSTALL
-news/doc/LICENSE
-news/doc/NEWS
-news/doc/README
-news/doc/TODO
-news/doc/compliance-nntp
-news/doc/config-design
-news/doc/config-semantics
-news/doc/config-syntax
-news/doc/external-auth
-news/doc/history
-news/doc/hook-perl
-news/doc/hook-python
-news/doc/hook-tcl
-news/doc/sample-control
-@unexec if cmp -s %D/%%ETCDIR%%/actsync.cfg %D/%%ETCDIR%%/actsync.cfg.dist; then rm -f %D/%%ETCDIR%%/actsync.cfg ; fi
-%%ETCDIR%%/actsync.cfg.dist
-@exec [ -f %B/actsync.cfg ] || cp -fp %B/%f %B/actsync.cfg
-@unexec if cmp -s %D/%%ETCDIR%%/actsync.ign %D/%%ETCDIR%%/actsync.ign.dist; then rm -f %D/%%ETCDIR%%/actsync.ign ; fi
-%%ETCDIR%%/actsync.ign.dist
-@exec [ -f %B/actsync.ign ] || cp -fp %B/%f %B/actsync.ign
-@unexec if cmp -s %D/%%ETCDIR%%/buffindexed.conf %D/%%ETCDIR%%/buffindexed.conf.dist; then rm -f %D/%%ETCDIR%%/buffindexed.conf ; fi
-%%ETCDIR%%/buffindexed.conf.dist
-@exec [ -f %B/buffindexed.conf ] || cp -fp %B%/%f %B/buffindexed.conf
-@unexec if cmp -s %D/%%ETCDIR%%/control.ctl %D/%%ETCDIR%%/control.ctl.dist; then rm -f %D/%%ETCDIR%%/control.ctl ; fi
-%%ETCDIR%%/control.ctl.dist
-@exec [ -f %B/control.ctl ] || cp -fp %B/%f %B/control.ctl
-@unexec if cmp -s %D/%%ETCDIR%%/cycbuff.conf %D/%%ETCDIR%%/cycbuff.conf.dist; then rm -f %D/%%ETCDIR%%/cycbuff.conf ; fi
-%%ETCDIR%%/cycbuff.conf.dist
-@exec [ -f %B/cycbuff.conf ] || cp -fp %B/%f %B/cycbuff.conf
-@unexec if cmp -s %D/%%ETCDIR%%/distrib.pats %D/%%ETCDIR%%/distrib.pats.dist; then rm -f %D/%%ETCDIR%%/distrib.pats ; fi
-%%ETCDIR%%/distrib.pats.dist
-@exec [ -f %B/distrib.pats ] || cp -fp %B/%f %B/distrib.pats
-@unexec if cmp -s %D/%%ETCDIR%%/expire.ctl %D/%%ETCDIR%%/expire.ctl.dist; then rm -f %D/%%ETCDIR%%/expire.ctl ; fi
-%%ETCDIR%%/expire.ctl.dist
-@exec [ -f %B/expire.ctl ] || cp -fp %B/%f %B/expire.ctl
-@unexec if cmp -s %D/%%ETCDIR%%/incoming.conf %D/%%ETCDIR%%/incoming.conf.dist; then rm -f %D/%%ETCDIR%%/incoming.conf ; fi
-%%ETCDIR%%/incoming.conf.dist
-@exec [ -f %B/incoming ] || cp -fp %B/%f %B/incoming.conf
-@unexec if cmp -s %D/%%ETCDIR%%/inn.conf %D/%%ETCDIR%%/inn.conf.dist; then rm -f %D/%%ETCDIR%%/inn.conf ; fi
-%%ETCDIR%%/inn.conf.dist
-@exec [ -f %B/inn.conf ] || cp -fp %B/%f %B/inn.conf
-@unexec if cmp -s %D/%%ETCDIR%%/innfeed.conf %D/%%ETCDIR%%/innfeed.conf.dist; then rm -f %D/%%ETCDIR%%/innfeed.conf ; fi
-%%ETCDIR%%/innfeed.conf.dist
-@exec [ -f %B/innfeed.conf.dist ] || cp -fp %B/%f %B/innfeed.conf.dist
-@unexec if cmp -s %D/%%ETCDIR%%/innreport.conf %D/%%ETCDIR%%/innreport.conf.dist; then rm -f %D/%%ETCDIR%%/innreport.conf ; fi
-%%ETCDIR%%/innreport.conf.dist
-@exec [ -f %B/innreport.conf ] || cp -fp %B/%f %B/innreport.conf
-@unexec if cmp -s %D/%%ETCDIR%%/innwatch.ctl %D/%%ETCDIR%%/innwatch.ctl.dist; then rm -f %D/%%ETCDIR%%/innwatch.ctl ; fi
-%%ETCDIR%%/innwatch.ctl.dist
-@exec [ -f %B/innwatch.ctl ] || cp -fp %B/%f %B/innwatch.ctl
-@unexec if cmp -s %D/%%ETCDIR%%/moderators %D/%%ETCDIR%%/moderators.dist; then rm -f %D/%%ETCDIR%%/moderators ; fi
-%%ETCDIR%%/moderators.dist
-@exec [ -f %B/moderators ] || cp -fp %B/%f %B/moderators
-@unexec if cmp -s %D/%%ETCDIR%%/motd.news %D/%%ETCDIR%%/motd.news.dist; then rm -f %D/%%ETCDIR%%/motd.news ; fi
-%%ETCDIR%%/motd.news.dist
-@exec [ -f %B/motd.news ] || cp -fp %B/%f %B/motd.news
-@unexec if cmp -s %D/%%ETCDIR%%/news2mail.cf %D/%%ETCDIR%%/news2mail.cf.dist; then rm -f %D/%%ETCDIR%%/news2mail.cf ; fi
-%%ETCDIR%%/news2mail.cf.dist
-@exec [ -f %B/news2mail.cf ] || cp -fp %B/%f %B/news2mail.cf
-@unexec if cmp -s %D/%%ETCDIR%%/newsfeeds %D/%%ETCDIR%%/newsfeeds.dist; then rm -f %D/%%ETCDIR%%/newsfeeds ; fi
-%%ETCDIR%%/newsfeeds.dist
-@exec [ -f %B/newsfeeds ] || cp -fp %B/%f %B/newsfeeds
-@unexec if cmp -s %D/%%ETCDIR%%/nnrpd.track %D/%%ETCDIR%%/nnrpd.track.dist; then rm -f %D/%%ETCDIR%%/nnrpd.track ; fi
-%%ETCDIR%%/nnrpd.track.dist
-@exec [ -f %B/nnrpd.track ] || cp -fp %B/%f %B/nnrpd.track
-@unexec if cmp -s %D/%%ETCDIR%%/nntpsend.ctl %D/%%ETCDIR%%/nntpsend.ctl.dist; then rm -f %D/%%ETCDIR%%/nntpsend.ctl ; fi
-%%ETCDIR%%/nntpsend.ctl.dist
-@exec [ -f %B/nntpsend.ctl ] || cp -fp %B/%f %B/nntpsend.ctl
-@unexec if cmp -s %D/%%ETCDIR%%/ovdb.conf %D/%%ETCDIR%%/ovdb.conf.dist; then rm -f %D/%%ETCDIR%%/ovdb.conf ; fi
-%%ETCDIR%%/ovdb.conf.dist
-@exec [ -f %B/ovdb.conf ] || cp -fp %B/%f %B/ovdb.conf
-@unexec if cmp -s %D/%%ETCDIR%%/overview.fmt %D/%%ETCDIR%%/overview.fmt.dist; then rm -f %D/%%ETCDIR%%/overview.fmt ; fi
-%%ETCDIR%%/overview.fmt.dist
-@exec [ -f %B/overview.fmt ] || cp -fp %B/%f %B/overview.fmt
-@unexec if cmp -s %D/%%ETCDIR%%/passwd.nntp %D/%%ETCDIR%%/passwd.nntp.dist; then rm -f %D/%%ETCDIR%%/passwd.nntp ; fi
-%%ETCDIR%%/passwd.nntp.dist
-@exec [ -f %B/passwd.nntp ] || cp -fp %B/%f %B/passwd.nntp
-@unexec if cmp -s %D/%%ETCDIR%%/radius.conf %D/%%ETCDIR%%/radius.conf.dist; then rm -f %D/%%ETCDIR%%/radius.conf ; fi
-%%ETCDIR%%/radius.conf.dist
-@exec [ -f %B/radius.conf ] || cp -fp %B/%f %B/radius.conf
-@unexec if cmp -s %D/%%ETCDIR%%/readers.conf %D/%%ETCDIR%%/readers.conf.dist; then rm -f %D/%%ETCDIR%%/readers.conf; fi
-%%ETCDIR%%/readers.conf.dist
-@exec [ -f %B/readers.conf ] || cp -fp %B/%f %B/readers.conf
-@unexec if cmp -s %D/%%ETCDIR%%/sasl.conf %D/%%ETCDIR%%/sasl.conf.dist; then rm -f %D/%%ETCDIR%%/sasl.conf ; fi
-%%ETCDIR%%/sasl.conf.dist
-@exec [ -f %B/sasl.conf ] || cp -fp %B/%f %B/sasl.conf
-@unexec if cmp -s %D/%%ETCDIR%%/storage.conf %D/%%ETCDIR%%/storage.conf.dist; then rm -f %D/%%ETCDIR%%/storage.conf ; fi
-%%ETCDIR%%/storage.conf.dist
-@exec [ -f %B/storage.conf ] || cp -fp %B/%f %B/storage.conf
-@unexec if cmp -s %D/%%ETCDIR%%/subscriptions %D/%%ETCDIR%%/subscriptions.dist; then rm -f %D/%%ETCDIR%%/subscriptions ; fi
-%%ETCDIR%%/subscriptions.dist
-@exec [ -f %B/subscriptions ] || cp -fp %B/%f %B/subscriptions
-news/include/clibrary.h
-news/include/conffile.h
-news/include/config.h
-news/include/dbz.h
-news/include/inn/buffer.h
-news/include/inn/confparse.h
-news/include/inn/defines.h
-news/include/inn/hashtab.h
-news/include/inn/history.h
-news/include/inn/innconf.h
-news/include/inn/list.h
-news/include/inn/md5.h
-news/include/inn/messages.h
-news/include/inn/mmap.h
-news/include/inn/qio.h
-news/include/inn/sequence.h
-news/include/inn/system.h
-news/include/inn/timer.h
-news/include/inn/tst.h
-news/include/inn/vector.h
-news/include/inn/version.h
-news/include/inn/wire.h
-news/include/inndcomm.h
-news/include/libinn.h
-news/include/nntp.h
-news/include/ov.h
-news/include/paths.h
-news/include/storage.h
-news/lib/innreport_inn.pm
-news/lib/innshellvars
-news/lib/innshellvars.pl
-news/lib/innshellvars.tcl
-news/lib/libinn.a
-news/lib/libinnhist.a
-news/lib/libstorage.a
-%%PORTDOCS%%%%DOCSDIR%%/CONTRIBUTORS
-%%PORTDOCS%%%%DOCSDIR%%/HACKING
-%%PORTDOCS%%%%DOCSDIR%%/INSTALL
-%%PORTDOCS%%%%DOCSDIR%%/LICENSE
-%%PORTDOCS%%%%DOCSDIR%%/MANIFEST
-%%PORTDOCS%%%%DOCSDIR%%/NEWS
-%%PORTDOCS%%%%DOCSDIR%%/README
-%%PORTDOCS%%%%DOCSDIR%%/TODO
-%%PORTDOCS%%@dirrm %%DOCSDIR%%
-@dirrmtry news/tmp
-@dirrmtry news/spool/overview
-@dirrmtry news/spool/outgoing
-@dirrmtry news/spool/innfeed
-@dirrmtry news/spool/incoming/bad
-@dirrmtry news/spool/incoming
-@dirrmtry news/spool/articles
-@dirrmtry news/spool/archive
-@dirrmtry news/spool/tmp
-@dirrmtry news/spool
-@dirrm news/run
-@dirrm news/lib
-@dirrm news/include/inn
-@dirrm news/include
-@dirrmtry %%ETCDIR%%
-@dirrm news/doc
-@dirrmtry news/db
-@dirrmtry news/db.dist
-@dirrm news/bin/rnews.libexec
-@dirrm news/bin/filter
-@dirrm news/bin/control
-@dirrm news/bin/auth/resolv
-@dirrm news/bin/auth/passwd
-@dirrm news/bin/auth
-@dirrm news/bin
-@unexec rmdir %D/news 2>/dev/null ||( echo "===> If you don't plan to use inn later, you can safely remove %D/news. Deinstall process kept these files intact:" | fmt && for i in $(find %D/news -type f); do echo " - $i"; done)
+@exec mkdir -p %%NEWSBASE%%
+%%CWDNEWSBASE%%
+bin/actmerge
+bin/actsync
+bin/actsyncd
+bin/archive
+bin/auth/passwd/auth_smb
+bin/auth/passwd/ckpasswd
+bin/auth/passwd/radius
+bin/auth/resolv/domain
+bin/auth/resolv/ident
+bin/batcher
+bin/buffchan
+bin/cnfsheadconf
+bin/cnfsstat
+bin/control/checkgroups.pl
+bin/control/ihave.pl
+bin/control/newgroup.pl
+bin/control/rmgroup.pl
+bin/control/sendme.pl
+bin/control/sendsys.pl
+bin/control/senduuname.pl
+bin/control/version.pl
+bin/controlbatch
+bin/controlchan
+bin/convdate
+bin/ctlinnd
+bin/cvtbatch
+bin/docheckgroups
+bin/expire
+bin/expireover
+bin/expirerm
+bin/fastrm
+bin/filechan
+bin/filter/INN.py
+%%NOTCURRENT%%bin/filter/filter.tcl
+bin/filter/filter_innd.pl
+bin/filter/filter_innd.py
+bin/filter/filter_nnrpd.pl
+bin/filter/nnrpd_access.pl
+bin/filter/nnrpd_auth.pl
+bin/filter/nnrpd_auth.py
+%%NOTCURRENT%%bin/filter/startup.tcl
+bin/filter/startup_innd.pl
+bin/getlist
+bin/gpgverify
+bin/grephistory
+bin/imapfeed
+bin/inews
+bin/inncheck
+bin/innconfval
+bin/innd
+bin/inndf
+%%NOTCURRENT%%bin/inndstart
+bin/innfeed
+bin/innmail
+bin/innreport
+bin/innstat
+bin/innupgrade
+bin/innwatch
+bin/innxbatch
+bin/innxmit
+bin/mailpost
+bin/makedbz
+bin/makehistory
+bin/mod-active
+bin/news.daily
+bin/news2mail
+bin/ninpaths
+bin/nnrpd
+bin/nntpget
+bin/nntpsend
+bin/ovdb_init
+bin/ovdb_monitor
+bin/ovdb_server
+bin/ovdb_stat
+bin/overchan
+bin/perl-nocem
+bin/pgpverify
+bin/procbatch
+bin/prunehistory
+bin/pullnews
+bin/rc.news
+bin/rnews
+bin/rnews.libexec/c7unbatch
+bin/rnews.libexec/decode
+bin/rnews.libexec/encode
+bin/rnews.libexec/gunbatch
+bin/scanlogs
+bin/scanspool
+bin/send-ihave
+bin/send-nntp
+bin/send-uucp
+bin/sendinpaths
+bin/sendxbatches
+bin/shlock
+bin/shrinkfile
+bin/signcontrol
+bin/simpleftp
+bin/sm
+%%NOTCURRENT%%bin/startinnfeed
+bin/tally.control
+bin/tdx-util
+bin/writelog
+doc/CONTRIBUTORS
+doc/GPL
+doc/HACKING
+doc/INSTALL
+doc/LICENSE
+doc/NEWS
+doc/README
+doc/TODO
+doc/compliance-nntp
+doc/config-design
+doc/config-semantics
+doc/config-syntax
+doc/external-auth
+doc/history
+doc/hook-perl
+doc/hook-python
+%%NOTCURRENT%%doc/hook-tcl
+doc/sample-control
+include/clibrary.h
+include/conffile.h
+include/config.h
+include/dbz.h
+include/inn/buffer.h
+include/inn/confparse.h
+include/inn/defines.h
+include/inn/hashtab.h
+include/inn/history.h
+include/inn/innconf.h
+include/inn/list.h
+include/inn/md5.h
+include/inn/messages.h
+include/inn/mmap.h
+include/inn/qio.h
+include/inn/sequence.h
+include/inn/system.h
+include/inn/timer.h
+include/inn/tst.h
+include/inn/vector.h
+include/inn/version.h
+include/inn/wire.h
+include/inndcomm.h
+include/libinn.h
+include/nntp.h
+include/ov.h
+include/paths.h
+include/storage.h
+lib/innreport_inn.pm
+lib/innshellvars
+lib/innshellvars.pl
+lib/innshellvars.tcl
+lib/libinn.a
+lib/libinnhist.a
+lib/libstorage.a
+@comment --------------------------------------------------------------
+@cwd
+@exec mkdir -p %%DBDIR%%
+@exec mkdir -p %%EXAMPLESDIR%%/db
+@unexec f=active; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+@unexec f=active.times; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+@unexec f=history; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+@unexec f=history.dir; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+@unexec f=newsgroups; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+%%EXAMPLESDIR%%/db/active
+%%EXAMPLESDIR%%/db/active.times
+%%EXAMPLESDIR%%/db/history
+%%EXAMPLESDIR%%/db/history.dir
+%%EXAMPLESDIR%%/db/newsgroups
+@unexec rm -f %D/%%EXAMPLESDIR%%/db/active.old 2> /dev/null || true
+@unexec rm -f %D/%%EXAMPLESDIR%%/db/history.n.dir 2> /dev/null || true
+@unexec rm -f %D/%%EXAMPLESDIR%%/db/history.n.hash 2> /dev/null || true
+@unexec rm -f %D/%%EXAMPLESDIR%%/db/history.n.index 2> /dev/null || true
+@comment --------------------------------------------------------------
+%%WITHOUT_TAGGED_HASH%%@unexec f=history.hash; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+%%WITHOUT_TAGGED_HASH%%@unexec f=history.index; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+%%WITHOUT_TAGGED_HASH%%@unexec rm -f %D/%%EXAMPLESDIR%%/db/history.hash 2> /dev/null || true
+%%WITHOUT_TAGGED_HASH%%@unexec rm -f %D/%%EXAMPLESDIR%%/db/history.index 2> /dev/null || true
+%%WITH_TAGGED_HASH%%@unexec f=history.pag; if cmp -s %%DBDIR%%/$f %D/%%EXAMPLESDIR%%/db/$f; then rm -f %%DBDIR%%/$f; fi
+%%WITH_TAGGED_HASH%%@unexec rm -f %D/%%EXAMPLESDIR%%/db/history.pag 2> /dev/null || true
+@comment --------------------------------------------------------------
+@unexec for f in %%ETCFILES%%; do if cmp -s %%ETCDIR%%/${f} %D/%%EXAMPLESDIR%%/${f}; then rm -f %%ETCDIR%%/${f}; fi; done
+@unexec for f in %%ETCFILES%%; do rm -f %D/%%EXAMPLESDIR%%/${f}; done
+@exec for f in %%ETCFILES%%; do [ -f %%ETCDIR%%/${f} ] || cp -fp %D/%%EXAMPLESDIR%%/${f} %%ETCDIR%%/${f}; done
+@comment --------------------------------------------------------------
+@dirrm %%EXAMPLESDIR%%/db
+@dirrm %%EXAMPLESDIR%%
+@unexec rm -Rf %%TMPDIR%% 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%%/overview 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%%/outgoing 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%%/innfeed 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%%/incoming/bad 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%%/incoming 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%%/articles 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%%/archive 2>/dev/null || true
+@unexec rm -Rf %%NEWSSPOOL%%/tmp 2>/dev/null || true
+@unexec rmdir %%NEWSSPOOL%% 2>/dev/null || true
+@unexec rm -Rf %%RUNDIR%% 2>/dev/null || true
+@unexec rm -R %%NEWSBASE%%/lib
+@unexec rm -R %%NEWSBASE%%/include/inn
+@unexec rm -R %%NEWSBASE%%/include
+@unexec rmdir %%ETCDIR%% 2>/dev/null || true
+@unexec rm -Rf %%NEWSBASE%%/doc
+@unexec rmdir %%DBDIR%%
+@unexec rm -Rf %%NEWSBASE%%/bin/rnews.libexec
+@unexec rm -Rf %%NEWSBASE%%/bin/filter
+@unexec rm -Rf %%NEWSBASE%%/bin/control
+@unexec rm -Rf %%NEWSBASE%%/bin/auth/resolv
+@unexec rm -Rf %%NEWSBASE%%/bin/auth/passwd
+@unexec rm -Rf %%NEWSBASE%%/bin/auth
+@unexec rm -Rf %%NEWSBASE%%/bin
+@unexec rmdir %%NEWSBASE%% 2>/dev/null ||( echo "===> If you don't plan to use inn later, you can safely remove %%NEWSBASE%%. Deinstall process kept these files intact:" | fmt && for i in $(find %D/news -type f); do echo " - $i"; done)