diff options
author | Austin English <wizardedit@gentoo.org> | 2016-05-02 18:15:34 -0500 |
---|---|---|
committer | Austin English <wizardedit@gentoo.org> | 2016-05-02 18:16:13 -0500 |
commit | 0b6802a3d3ab74d5c6a46b6465b185aa4948dd64 (patch) | |
tree | 74f9687c2f0635623000acad9c34cf37eaabd766 /net-nntp/inn | |
parent | net-news/amphetadesk: use #!/sbin/openrc-run instead of #!/sbin/runscript (diff) | |
download | gentoo-0b6802a3d3ab74d5c6a46b6465b185aa4948dd64.tar.gz gentoo-0b6802a3d3ab74d5c6a46b6465b185aa4948dd64.tar.bz2 gentoo-0b6802a3d3ab74d5c6a46b6465b185aa4948dd64.zip |
net-nntp/inn: use #!/sbin/openrc-run instead of #!/sbin/runscript
Gentoo-Bug: https://bugs.gentoo.org/573846
Package-Manager: portage-2.2.26
Diffstat (limited to 'net-nntp/inn')
-rw-r--r-- | net-nntp/inn/files/innd-r1 | 4 | ||||
-rw-r--r-- | net-nntp/inn/inn-2.5.3-r3.ebuild | 287 | ||||
-rw-r--r-- | net-nntp/inn/inn-2.5.4-r1.ebuild | 287 | ||||
-rw-r--r-- | net-nntp/inn/inn-2.5.5-r1.ebuild | 287 |
4 files changed, 863 insertions, 2 deletions
diff --git a/net-nntp/inn/files/innd-r1 b/net-nntp/inn/files/innd-r1 index 1169a6755b8b..1e79074daaef 100644 --- a/net-nntp/inn/files/innd-r1 +++ b/net-nntp/inn/files/innd-r1 @@ -1,5 +1,5 @@ -#!/sbin/runscript -# Copyright 1999-2013 Gentoo Foundation +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ diff --git a/net-nntp/inn/inn-2.5.3-r3.ebuild b/net-nntp/inn/inn-2.5.3-r3.ebuild new file mode 100644 index 000000000000..62eb9c616886 --- /dev/null +++ b/net-nntp/inn/inn-2.5.3-r3.ebuild @@ -0,0 +1,287 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +PYTHON_COMPAT=( python2_7 ) + +inherit autotools eutils multilib python-single-r1 ssl-cert toolchain-funcs + +DESCRIPTION="The Internet News daemon, fully featured NNTP server" +HOMEPAGE="https://www.isc.org/software/inn" +SRC_URI="ftp://ftp.isc.org/isc/inn/${P}.tar.gz" + +# GPL-2 only for init script +LICENSE="ISC GPL-2+ public-domain BSD-4 BSD-2 RSA BSD MIT GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="berkdb innkeywords inntaggedhash ipv6 kerberos perl python sasl ssl" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +DEPEND=" + virtual/mta + dev-perl/MIME-tools + sys-libs/pam + sys-libs/zlib + kerberos? ( virtual/krb5 ) + sasl? ( >=dev-libs/cyrus-sasl-2 ) + ssl? ( dev-libs/openssl ) + python? ( ${PYTHON_DEPS} ) + berkdb? ( sys-libs/db ) +" +RDEPEND="${DEPEND}" + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + epatch "${FILESDIR}"/${P}-ar.patch + epatch "${FILESDIR}"/${P}-tests.patch + + sed -e 's: -B .OLD::' -i Makefile.global.in || die + + # Do not treat LDFLAGS as if it contained libraries to link to + sed -e 's:LDFLAGS::g' -i m4/python.m4 || die + + # We do not have the biff service, but we do have comsat + sed -e 's:"biff":"comsat":g' -i tests/lib/getnameinfo-t.c || die + + eautoreconf +} + +src_configure() { + tc-export AR + + econf \ + --prefix=/usr/$(get_libdir)/news \ + --sysconfdir=/etc/news \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --with-control-dir=/usr/$(get_libdir)/news/bin/control \ + --with-filter-dir=/usr/$(get_libdir)/news/bin/filter \ + --with-db-dir=/var/spool/news/db \ + --with-doc-dir=/usr/share/doc/${PF} \ + --with-spool-dir=/var/spool/news \ + --with-log-dir=/var/log/news \ + --with-run-dir=/run/news \ + --with-tmp-dir=/var/spool/news/tmp \ + --disable-libtool \ + --with-gnu-ld \ + --enable-setgid-inews \ + --enable-uucp-rnews \ + $(use_with perl) \ + $(use_with python) \ + $(use_with kerberos kerberos /usr) \ + $(use_with sasl) \ + $(use_with ssl openssl) \ + $(use_with berkdb berkeleydb /usr) \ + $(use_enable ipv6) \ + $(use_enable !inntaggedhash largefiles) \ + $(use_enable inntaggedhash tagged-hash) \ + $(use_enable innkeywords keywords) +} + +src_install() { + emake DESTDIR="${D}/" P="" SPECIAL="" install + + chown -R root:0 \ + "${D}"/usr/$(get_libdir)/news/$(get_libdir) \ + "${D}"/usr/$(get_libdir)/news/include \ + "${D}"/usr/share/doc \ + "${D}"/usr/share/man \ + || die + chmod 644 "${D}"/etc/news/* || die + chmod 640 \ + "${D}"/etc/news/control.ctl \ + "${D}"/etc/news/expire.ctl \ + "${D}"/etc/news/incoming.conf \ + "${D}"/etc/news/innfeed.conf \ + "${D}"/etc/news/nntpsend.ctl \ + "${D}"/etc/news/passwd.nntp \ + "${D}"/etc/news/readers.conf \ + || die + + # Prevent old db/* files from being overwritten + insinto /usr/share/inn/dbexamples + newins site/active.minimal active + newins site/newsgroups.minimal newsgroups + + keepdir \ + /var/log/news \ + /var/spool/news/archive \ + /var/spool/news/articles \ + /var/spool/news/db \ + /var/spool/news/incoming \ + /var/spool/news/incoming/bad \ + /var/spool/news/innfeed \ + /var/spool/news/outgoing \ + /var/spool/news/overview \ + /var/spool/news/tmp + + fowners news:news /var/log/news + + dodoc ChangeLog MANIFEST README* doc/checklist + use ipv6 && dodoc doc/IPv6-info + + # So other programs can build against INN + insinto /usr/$(get_libdir)/news/include + doins include/*.h + + newinitd "${FILESDIR}"/innd-r1 innd +} + +pkg_postinst() { + for db_file in active newsgroups + do + [[ -f ${ROOT}var/spool/news/db/${db_file} ]] && continue + + if [[ -f ${ROOT}usr/share/inn/dbexamples/${db_file} ]] + then + cp "${ROOT}"usr/share/inn/dbexamples/${db_file} \ + "${ROOT}"var/spool/news/db/${db_file} + else + touch "${ROOT}"var/spool/news/db/${db_file} + fi + + chown news:news "${ROOT}"var/spool/news/db/${db_file} + chmod 664 "${ROOT}"var/spool/news/db/${db_file} + done + + elog "It is recommended to run emerge --config ${CATEGORY}/${PN}" + elog "now to finish setting up this package." + elog + elog "Do not forget to update your cron entries, and also run" + elog "makedbz if you need to. If this is a first-time installation" + elog "a minimal active file has been installed. You will need to" + elog "touch history and run 'makedbz -i' to initialize the history" + elog "database. See INSTALL for more information." + elog + elog "You need to assign a real shell to the news user, or else" + elog "starting inn will fail. You can use 'usermod -s /bin/bash news'" + elog "for this." + + if use ssl + then + install_cert /etc/news/cert/cert + chown news:news \ + "${ROOT}"etc/news/cert/cert.{crt,csr,key,pem} + + elog + elog "You may want to start nnrpd manually for native ssl support." + elog "If you choose to do so, automating this with a bootscript might" + elog "also be a good choice." + elog "Have a look at man nnrpd for valid parameters." + elog + elog "The certificate location in /etc/news/sasl.conf has been changed" + elog "to /etc/news/cert!" + + fi +} + +pkg_postrm() { + elog + elog "If you want your newsspool or altered configuration files" + elog "to be removed, please do so now manually." + elog +} + +pkg_config() { + NEWSSPOOL_DIR="${ROOT}var/spool/news" + NEWS_SHELL="$( awk -F':' '/^news:/ {print $7;}' ${ROOT}etc/passwd )" + NEWS_ERRFLAG="0" + + if [[ ${NEWS_SHELL} == /bin/false || ${NEWS_SHELL} == /dev/null ]]; then + einfo "Changing shell to /bin/bash for user news..." + usermod -s /bin/bash news + else + einfo "Shell for user news unchanged ('${NEWS_SHELL}')." + if [[ ${NEWS_SHELL} != /bin/sh && ${NEWS_SHELL} != /bin/bash ]]; then + ewarn "You might want to change it to '/bin/bash', though." + fi + fi + + if [[ ! -e ${NEWSSPOOL_DIR}/db/history ]]; then + if [[ ! -f ${NEWSSPOOL_DIR}/db/history.dir \ + && ! -f ${NEWSSPOOL_DIR}/db/history.pag \ + && ! -f ${NEWSSPOOL_DIR}/db/history.hash \ + && ! -f ${NEWSSPOOL_DIR}/db/history.index ]] + then + einfo "Building history database ..." + + touch "${NEWSSPOOL_DIR}"/db/history + chown news:news "${NEWSSPOOL_DIR}"/db/history + chmod 644 "${NEWSSPOOL_DIR}"/db/history + + einfo "Running makedbz -i ..." + su - news -c "/usr/$(get_libdir)/news/bin/makedbz -i" + + einfo "Moving files into place ..." + [[ -f ${NEWSSPOOL_DIR}/db/history.n.dir ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.dir \ + "${NEWSSPOOL_DIR}"/db/history.dir + [[ -f ${NEWSSPOOL_DIR}/db/history.n.pag ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.pag \ + "${NEWSSPOOL_DIR}"/db/history.pag + [[ -f ${NEWSSPOOL_DIR}/db/history.n.hash ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.hash \ + "${NEWSSPOOL_DIR}"/db/history.hash + [[ -f ${NEWSSPOOL_DIR}/db/history.n.index ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.index \ + "${NEWSSPOOL_DIR}"/db/history.index + + einfo "Running makehistory ..." + su - news -c /usr/$(get_libdir)/news/bin/makehistory + else + NEWS_ERRFLAG="1" + eerror "Your installation seems to be screwed up." + eerror "${NEWSSPOOL_DIR}/db/history does not exist, but there's" + eerror "one of the files history.dir, history.hash or history.index" + eerror "within ${NEWSSPOOL_DIR}/db." + eerror "Use your backup to restore the history database." + fi + else + einfo "${NEWSSPOOL_DIR}/db/history found." + einfo "Leaving history database as it is." + fi + + INNCFG_INODES=$( + sed /etc/news/inn.conf \ + -e '/innwatchspoolnodes/ ! d; s:[^ ]*[ ]*\([^ ]*\):\1:' + ) + INNSPOOL_INODES=$( + df -Pi ${NEWSSPOOL_DIR} | \ + sed -e 's:[^ ]*[ ]*\([^ ]*\).*:\1:; 1 d' + ) + if [[ ${INNCFG_INODES} -gt ${INNSPOOL_INODES} ]]; then + ewarn "Setting innwatchspoolinodes to zero, because the filesystem behind" + ewarn "$NEWSSPOOL_DIR works without inodes." + ewarn + cp /etc/news/inn.conf /etc/news/inn.conf.OLD + einfo "A copy of your old inn.conf has been saved to /etc/news/inn.conf.OLD." + sed -i /etc/news/inn.conf \ + -e '/innwatchspoolnodes/ s:\([^ ]*\)\([ ]*\).*:\1\20:' + chown news:news /etc/news/inn.conf + chmod 644 /etc/news/inn.conf + fi + + INNCHECK_LINES=$( + su - news -c "/usr/$(get_libdir)/news/bin/inncheck | wc -l" + ) + if [[ ${INNCHECK_LINES} -gt 0 ]]; then + NEWS_ERRFLAG="1" + ewarn "inncheck most certainly found an error." + ewarn "Please check its output:" + eerror "`su - news -c /usr/$(get_libdir)/news/bin/inncheck`" + fi + + if [[ ${NEWS_ERRFLAG} -gt 0 ]]; then + eerror "There were one or more errors/warnings checking your" + eerror "configuration. Please read inn's documentation and" + eerror "fix them accordingly." + else + einfo "INN configuration tests passed successfully." + ewarn "Please ensure you have configured inn properly." + fi +} diff --git a/net-nntp/inn/inn-2.5.4-r1.ebuild b/net-nntp/inn/inn-2.5.4-r1.ebuild new file mode 100644 index 000000000000..0d55e3fc0e52 --- /dev/null +++ b/net-nntp/inn/inn-2.5.4-r1.ebuild @@ -0,0 +1,287 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +PYTHON_COMPAT=( python2_7 ) + +inherit autotools eutils multilib python-single-r1 ssl-cert toolchain-funcs + +DESCRIPTION="The Internet News daemon, fully featured NNTP server" +HOMEPAGE="https://www.isc.org/software/inn" +SRC_URI="ftp://ftp.isc.org/isc/inn/${P}.tar.gz" + +# GPL-2 only for init script +LICENSE="ISC GPL-2+ public-domain BSD-4 BSD-2 RSA BSD MIT GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="berkdb innkeywords inntaggedhash ipv6 kerberos perl python sasl ssl" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +DEPEND=" + virtual/mta + dev-perl/MIME-tools + sys-libs/pam + sys-libs/zlib + kerberos? ( virtual/krb5 ) + sasl? ( >=dev-libs/cyrus-sasl-2 ) + ssl? ( dev-libs/openssl ) + python? ( ${PYTHON_DEPS} ) + berkdb? ( sys-libs/db ) +" +RDEPEND="${DEPEND}" + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + epatch "${FILESDIR}"/${PN}-2.5.3-ar.patch + epatch "${FILESDIR}"/${PN}-2.5.3-tests.patch + + sed -e 's: -B .OLD::' -i Makefile.global.in || die + + # Do not treat LDFLAGS as if it contained libraries to link to + sed -e 's:LDFLAGS::g' -i m4/python.m4 || die + + # We do not have the biff service, but we do have comsat + sed -e 's:"biff":"comsat":g' -i tests/lib/getnameinfo-t.c || die + + eautoreconf +} + +src_configure() { + tc-export AR + + econf \ + --prefix=/usr/$(get_libdir)/news \ + --sysconfdir=/etc/news \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --with-control-dir=/usr/$(get_libdir)/news/bin/control \ + --with-filter-dir=/usr/$(get_libdir)/news/bin/filter \ + --with-db-dir=/var/spool/news/db \ + --with-doc-dir=/usr/share/doc/${PF} \ + --with-spool-dir=/var/spool/news \ + --with-log-dir=/var/log/news \ + --with-run-dir=/run/news \ + --with-tmp-dir=/var/spool/news/tmp \ + --disable-libtool \ + --with-gnu-ld \ + --enable-setgid-inews \ + --enable-uucp-rnews \ + $(use_with perl) \ + $(use_with python) \ + $(use_with kerberos kerberos /usr) \ + $(use_with sasl) \ + $(use_with ssl openssl) \ + $(use_with berkdb berkeleydb /usr) \ + $(use_enable ipv6) \ + $(use_enable !inntaggedhash largefiles) \ + $(use_enable inntaggedhash tagged-hash) \ + $(use_enable innkeywords keywords) +} + +src_install() { + emake DESTDIR="${D}/" P="" SPECIAL="" install + + chown -R root:0 \ + "${D}"/usr/$(get_libdir)/news/$(get_libdir) \ + "${D}"/usr/$(get_libdir)/news/include \ + "${D}"/usr/share/doc \ + "${D}"/usr/share/man \ + || die + chmod 644 "${D}"/etc/news/* || die + chmod 640 \ + "${D}"/etc/news/control.ctl \ + "${D}"/etc/news/expire.ctl \ + "${D}"/etc/news/incoming.conf \ + "${D}"/etc/news/innfeed.conf \ + "${D}"/etc/news/nntpsend.ctl \ + "${D}"/etc/news/passwd.nntp \ + "${D}"/etc/news/readers.conf \ + || die + + # Prevent old db/* files from being overwritten + insinto /usr/share/inn/dbexamples + newins site/active.minimal active + newins site/newsgroups.minimal newsgroups + + keepdir \ + /var/log/news \ + /var/spool/news/archive \ + /var/spool/news/articles \ + /var/spool/news/db \ + /var/spool/news/incoming \ + /var/spool/news/incoming/bad \ + /var/spool/news/innfeed \ + /var/spool/news/outgoing \ + /var/spool/news/overview \ + /var/spool/news/tmp + + fowners news:news /var/log/news + + dodoc ChangeLog MANIFEST README* doc/checklist + use ipv6 && dodoc doc/IPv6-info + + # So other programs can build against INN + insinto /usr/$(get_libdir)/news/include + doins include/*.h + + newinitd "${FILESDIR}"/innd-r1 innd +} + +pkg_postinst() { + for db_file in active newsgroups + do + [[ -f ${ROOT}var/spool/news/db/${db_file} ]] && continue + + if [[ -f ${ROOT}usr/share/inn/dbexamples/${db_file} ]] + then + cp "${ROOT}"usr/share/inn/dbexamples/${db_file} \ + "${ROOT}"var/spool/news/db/${db_file} + else + touch "${ROOT}"var/spool/news/db/${db_file} + fi + + chown news:news "${ROOT}"var/spool/news/db/${db_file} + chmod 664 "${ROOT}"var/spool/news/db/${db_file} + done + + elog "It is recommended to run emerge --config ${CATEGORY}/${PN}" + elog "now to finish setting up this package." + elog + elog "Do not forget to update your cron entries, and also run" + elog "makedbz if you need to. If this is a first-time installation" + elog "a minimal active file has been installed. You will need to" + elog "touch history and run 'makedbz -i' to initialize the history" + elog "database. See INSTALL for more information." + elog + elog "You need to assign a real shell to the news user, or else" + elog "starting inn will fail. You can use 'usermod -s /bin/bash news'" + elog "for this." + + if use ssl + then + install_cert /etc/news/cert/cert + chown news:news \ + "${ROOT}"etc/news/cert/cert.{crt,csr,key,pem} + + elog + elog "You may want to start nnrpd manually for native ssl support." + elog "If you choose to do so, automating this with a bootscript might" + elog "also be a good choice." + elog "Have a look at man nnrpd for valid parameters." + elog + elog "The certificate location in /etc/news/sasl.conf has been changed" + elog "to /etc/news/cert!" + + fi +} + +pkg_postrm() { + elog + elog "If you want your newsspool or altered configuration files" + elog "to be removed, please do so now manually." + elog +} + +pkg_config() { + NEWSSPOOL_DIR="${ROOT}var/spool/news" + NEWS_SHELL="$( awk -F':' '/^news:/ {print $7;}' ${ROOT}etc/passwd )" + NEWS_ERRFLAG="0" + + if [[ ${NEWS_SHELL} == /bin/false || ${NEWS_SHELL} == /dev/null ]]; then + einfo "Changing shell to /bin/bash for user news..." + usermod -s /bin/bash news + else + einfo "Shell for user news unchanged ('${NEWS_SHELL}')." + if [[ ${NEWS_SHELL} != /bin/sh && ${NEWS_SHELL} != /bin/bash ]]; then + ewarn "You might want to change it to '/bin/bash', though." + fi + fi + + if [[ ! -e ${NEWSSPOOL_DIR}/db/history ]]; then + if [[ ! -f ${NEWSSPOOL_DIR}/db/history.dir \ + && ! -f ${NEWSSPOOL_DIR}/db/history.pag \ + && ! -f ${NEWSSPOOL_DIR}/db/history.hash \ + && ! -f ${NEWSSPOOL_DIR}/db/history.index ]] + then + einfo "Building history database ..." + + touch "${NEWSSPOOL_DIR}"/db/history + chown news:news "${NEWSSPOOL_DIR}"/db/history + chmod 644 "${NEWSSPOOL_DIR}"/db/history + + einfo "Running makedbz -i ..." + su - news -c "/usr/$(get_libdir)/news/bin/makedbz -i" + + einfo "Moving files into place ..." + [[ -f ${NEWSSPOOL_DIR}/db/history.n.dir ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.dir \ + "${NEWSSPOOL_DIR}"/db/history.dir + [[ -f ${NEWSSPOOL_DIR}/db/history.n.pag ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.pag \ + "${NEWSSPOOL_DIR}"/db/history.pag + [[ -f ${NEWSSPOOL_DIR}/db/history.n.hash ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.hash \ + "${NEWSSPOOL_DIR}"/db/history.hash + [[ -f ${NEWSSPOOL_DIR}/db/history.n.index ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.index \ + "${NEWSSPOOL_DIR}"/db/history.index + + einfo "Running makehistory ..." + su - news -c /usr/$(get_libdir)/news/bin/makehistory + else + NEWS_ERRFLAG="1" + eerror "Your installation seems to be screwed up." + eerror "${NEWSSPOOL_DIR}/db/history does not exist, but there's" + eerror "one of the files history.dir, history.hash or history.index" + eerror "within ${NEWSSPOOL_DIR}/db." + eerror "Use your backup to restore the history database." + fi + else + einfo "${NEWSSPOOL_DIR}/db/history found." + einfo "Leaving history database as it is." + fi + + INNCFG_INODES=$( + sed /etc/news/inn.conf \ + -e '/innwatchspoolnodes/ ! d; s:[^ ]*[ ]*\([^ ]*\):\1:' + ) + INNSPOOL_INODES=$( + df -Pi ${NEWSSPOOL_DIR} | \ + sed -e 's:[^ ]*[ ]*\([^ ]*\).*:\1:; 1 d' + ) + if [[ ${INNCFG_INODES} -gt ${INNSPOOL_INODES} ]]; then + ewarn "Setting innwatchspoolinodes to zero, because the filesystem behind" + ewarn "$NEWSSPOOL_DIR works without inodes." + ewarn + cp /etc/news/inn.conf /etc/news/inn.conf.OLD + einfo "A copy of your old inn.conf has been saved to /etc/news/inn.conf.OLD." + sed -i /etc/news/inn.conf \ + -e '/innwatchspoolnodes/ s:\([^ ]*\)\([ ]*\).*:\1\20:' + chown news:news /etc/news/inn.conf + chmod 644 /etc/news/inn.conf + fi + + INNCHECK_LINES=$( + su - news -c "/usr/$(get_libdir)/news/bin/inncheck | wc -l" + ) + if [[ ${INNCHECK_LINES} -gt 0 ]]; then + NEWS_ERRFLAG="1" + ewarn "inncheck most certainly found an error." + ewarn "Please check its output:" + eerror "`su - news -c /usr/$(get_libdir)/news/bin/inncheck`" + fi + + if [[ ${NEWS_ERRFLAG} -gt 0 ]]; then + eerror "There were one or more errors/warnings checking your" + eerror "configuration. Please read inn's documentation and" + eerror "fix them accordingly." + else + einfo "INN configuration tests passed successfully." + ewarn "Please ensure you have configured inn properly." + fi +} diff --git a/net-nntp/inn/inn-2.5.5-r1.ebuild b/net-nntp/inn/inn-2.5.5-r1.ebuild new file mode 100644 index 000000000000..0d55e3fc0e52 --- /dev/null +++ b/net-nntp/inn/inn-2.5.5-r1.ebuild @@ -0,0 +1,287 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +PYTHON_COMPAT=( python2_7 ) + +inherit autotools eutils multilib python-single-r1 ssl-cert toolchain-funcs + +DESCRIPTION="The Internet News daemon, fully featured NNTP server" +HOMEPAGE="https://www.isc.org/software/inn" +SRC_URI="ftp://ftp.isc.org/isc/inn/${P}.tar.gz" + +# GPL-2 only for init script +LICENSE="ISC GPL-2+ public-domain BSD-4 BSD-2 RSA BSD MIT GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="berkdb innkeywords inntaggedhash ipv6 kerberos perl python sasl ssl" + +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +DEPEND=" + virtual/mta + dev-perl/MIME-tools + sys-libs/pam + sys-libs/zlib + kerberos? ( virtual/krb5 ) + sasl? ( >=dev-libs/cyrus-sasl-2 ) + ssl? ( dev-libs/openssl ) + python? ( ${PYTHON_DEPS} ) + berkdb? ( sys-libs/db ) +" +RDEPEND="${DEPEND}" + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + epatch "${FILESDIR}"/${PN}-2.5.3-ar.patch + epatch "${FILESDIR}"/${PN}-2.5.3-tests.patch + + sed -e 's: -B .OLD::' -i Makefile.global.in || die + + # Do not treat LDFLAGS as if it contained libraries to link to + sed -e 's:LDFLAGS::g' -i m4/python.m4 || die + + # We do not have the biff service, but we do have comsat + sed -e 's:"biff":"comsat":g' -i tests/lib/getnameinfo-t.c || die + + eautoreconf +} + +src_configure() { + tc-export AR + + econf \ + --prefix=/usr/$(get_libdir)/news \ + --sysconfdir=/etc/news \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --with-control-dir=/usr/$(get_libdir)/news/bin/control \ + --with-filter-dir=/usr/$(get_libdir)/news/bin/filter \ + --with-db-dir=/var/spool/news/db \ + --with-doc-dir=/usr/share/doc/${PF} \ + --with-spool-dir=/var/spool/news \ + --with-log-dir=/var/log/news \ + --with-run-dir=/run/news \ + --with-tmp-dir=/var/spool/news/tmp \ + --disable-libtool \ + --with-gnu-ld \ + --enable-setgid-inews \ + --enable-uucp-rnews \ + $(use_with perl) \ + $(use_with python) \ + $(use_with kerberos kerberos /usr) \ + $(use_with sasl) \ + $(use_with ssl openssl) \ + $(use_with berkdb berkeleydb /usr) \ + $(use_enable ipv6) \ + $(use_enable !inntaggedhash largefiles) \ + $(use_enable inntaggedhash tagged-hash) \ + $(use_enable innkeywords keywords) +} + +src_install() { + emake DESTDIR="${D}/" P="" SPECIAL="" install + + chown -R root:0 \ + "${D}"/usr/$(get_libdir)/news/$(get_libdir) \ + "${D}"/usr/$(get_libdir)/news/include \ + "${D}"/usr/share/doc \ + "${D}"/usr/share/man \ + || die + chmod 644 "${D}"/etc/news/* || die + chmod 640 \ + "${D}"/etc/news/control.ctl \ + "${D}"/etc/news/expire.ctl \ + "${D}"/etc/news/incoming.conf \ + "${D}"/etc/news/innfeed.conf \ + "${D}"/etc/news/nntpsend.ctl \ + "${D}"/etc/news/passwd.nntp \ + "${D}"/etc/news/readers.conf \ + || die + + # Prevent old db/* files from being overwritten + insinto /usr/share/inn/dbexamples + newins site/active.minimal active + newins site/newsgroups.minimal newsgroups + + keepdir \ + /var/log/news \ + /var/spool/news/archive \ + /var/spool/news/articles \ + /var/spool/news/db \ + /var/spool/news/incoming \ + /var/spool/news/incoming/bad \ + /var/spool/news/innfeed \ + /var/spool/news/outgoing \ + /var/spool/news/overview \ + /var/spool/news/tmp + + fowners news:news /var/log/news + + dodoc ChangeLog MANIFEST README* doc/checklist + use ipv6 && dodoc doc/IPv6-info + + # So other programs can build against INN + insinto /usr/$(get_libdir)/news/include + doins include/*.h + + newinitd "${FILESDIR}"/innd-r1 innd +} + +pkg_postinst() { + for db_file in active newsgroups + do + [[ -f ${ROOT}var/spool/news/db/${db_file} ]] && continue + + if [[ -f ${ROOT}usr/share/inn/dbexamples/${db_file} ]] + then + cp "${ROOT}"usr/share/inn/dbexamples/${db_file} \ + "${ROOT}"var/spool/news/db/${db_file} + else + touch "${ROOT}"var/spool/news/db/${db_file} + fi + + chown news:news "${ROOT}"var/spool/news/db/${db_file} + chmod 664 "${ROOT}"var/spool/news/db/${db_file} + done + + elog "It is recommended to run emerge --config ${CATEGORY}/${PN}" + elog "now to finish setting up this package." + elog + elog "Do not forget to update your cron entries, and also run" + elog "makedbz if you need to. If this is a first-time installation" + elog "a minimal active file has been installed. You will need to" + elog "touch history and run 'makedbz -i' to initialize the history" + elog "database. See INSTALL for more information." + elog + elog "You need to assign a real shell to the news user, or else" + elog "starting inn will fail. You can use 'usermod -s /bin/bash news'" + elog "for this." + + if use ssl + then + install_cert /etc/news/cert/cert + chown news:news \ + "${ROOT}"etc/news/cert/cert.{crt,csr,key,pem} + + elog + elog "You may want to start nnrpd manually for native ssl support." + elog "If you choose to do so, automating this with a bootscript might" + elog "also be a good choice." + elog "Have a look at man nnrpd for valid parameters." + elog + elog "The certificate location in /etc/news/sasl.conf has been changed" + elog "to /etc/news/cert!" + + fi +} + +pkg_postrm() { + elog + elog "If you want your newsspool or altered configuration files" + elog "to be removed, please do so now manually." + elog +} + +pkg_config() { + NEWSSPOOL_DIR="${ROOT}var/spool/news" + NEWS_SHELL="$( awk -F':' '/^news:/ {print $7;}' ${ROOT}etc/passwd )" + NEWS_ERRFLAG="0" + + if [[ ${NEWS_SHELL} == /bin/false || ${NEWS_SHELL} == /dev/null ]]; then + einfo "Changing shell to /bin/bash for user news..." + usermod -s /bin/bash news + else + einfo "Shell for user news unchanged ('${NEWS_SHELL}')." + if [[ ${NEWS_SHELL} != /bin/sh && ${NEWS_SHELL} != /bin/bash ]]; then + ewarn "You might want to change it to '/bin/bash', though." + fi + fi + + if [[ ! -e ${NEWSSPOOL_DIR}/db/history ]]; then + if [[ ! -f ${NEWSSPOOL_DIR}/db/history.dir \ + && ! -f ${NEWSSPOOL_DIR}/db/history.pag \ + && ! -f ${NEWSSPOOL_DIR}/db/history.hash \ + && ! -f ${NEWSSPOOL_DIR}/db/history.index ]] + then + einfo "Building history database ..." + + touch "${NEWSSPOOL_DIR}"/db/history + chown news:news "${NEWSSPOOL_DIR}"/db/history + chmod 644 "${NEWSSPOOL_DIR}"/db/history + + einfo "Running makedbz -i ..." + su - news -c "/usr/$(get_libdir)/news/bin/makedbz -i" + + einfo "Moving files into place ..." + [[ -f ${NEWSSPOOL_DIR}/db/history.n.dir ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.dir \ + "${NEWSSPOOL_DIR}"/db/history.dir + [[ -f ${NEWSSPOOL_DIR}/db/history.n.pag ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.pag \ + "${NEWSSPOOL_DIR}"/db/history.pag + [[ -f ${NEWSSPOOL_DIR}/db/history.n.hash ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.hash \ + "${NEWSSPOOL_DIR}"/db/history.hash + [[ -f ${NEWSSPOOL_DIR}/db/history.n.index ]] && \ + mv -vf "${NEWSSPOOL_DIR}"/db/history.n.index \ + "${NEWSSPOOL_DIR}"/db/history.index + + einfo "Running makehistory ..." + su - news -c /usr/$(get_libdir)/news/bin/makehistory + else + NEWS_ERRFLAG="1" + eerror "Your installation seems to be screwed up." + eerror "${NEWSSPOOL_DIR}/db/history does not exist, but there's" + eerror "one of the files history.dir, history.hash or history.index" + eerror "within ${NEWSSPOOL_DIR}/db." + eerror "Use your backup to restore the history database." + fi + else + einfo "${NEWSSPOOL_DIR}/db/history found." + einfo "Leaving history database as it is." + fi + + INNCFG_INODES=$( + sed /etc/news/inn.conf \ + -e '/innwatchspoolnodes/ ! d; s:[^ ]*[ ]*\([^ ]*\):\1:' + ) + INNSPOOL_INODES=$( + df -Pi ${NEWSSPOOL_DIR} | \ + sed -e 's:[^ ]*[ ]*\([^ ]*\).*:\1:; 1 d' + ) + if [[ ${INNCFG_INODES} -gt ${INNSPOOL_INODES} ]]; then + ewarn "Setting innwatchspoolinodes to zero, because the filesystem behind" + ewarn "$NEWSSPOOL_DIR works without inodes." + ewarn + cp /etc/news/inn.conf /etc/news/inn.conf.OLD + einfo "A copy of your old inn.conf has been saved to /etc/news/inn.conf.OLD." + sed -i /etc/news/inn.conf \ + -e '/innwatchspoolnodes/ s:\([^ ]*\)\([ ]*\).*:\1\20:' + chown news:news /etc/news/inn.conf + chmod 644 /etc/news/inn.conf + fi + + INNCHECK_LINES=$( + su - news -c "/usr/$(get_libdir)/news/bin/inncheck | wc -l" + ) + if [[ ${INNCHECK_LINES} -gt 0 ]]; then + NEWS_ERRFLAG="1" + ewarn "inncheck most certainly found an error." + ewarn "Please check its output:" + eerror "`su - news -c /usr/$(get_libdir)/news/bin/inncheck`" + fi + + if [[ ${NEWS_ERRFLAG} -gt 0 ]]; then + eerror "There were one or more errors/warnings checking your" + eerror "configuration. Please read inn's documentation and" + eerror "fix them accordingly." + else + einfo "INN configuration tests passed successfully." + ewarn "Please ensure you have configured inn properly." + fi +} |