* avoid warning: Line references path below legacy directory /var/run OBS-URL: https://build.opensuse.org/package/show/server:mail/inn?expand=0&rev=72
339 lines
11 KiB
RPMSpec
339 lines
11 KiB
RPMSpec
#
|
|
# spec file for package inn
|
|
#
|
|
# Copyright (c) 2024 SUSE LLC
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%if "%{_libexecdir}"=="/usr/libexec"
|
|
%define search usr\\/libexec
|
|
%define nslash usr/libexec
|
|
%else
|
|
%define search usr\\/lib
|
|
%define nslash usr/lib
|
|
%endif
|
|
Name: inn
|
|
BuildRequires: bison
|
|
BuildRequires: gdbm-devel
|
|
BuildRequires: openssl-devel
|
|
BuildRequires: pam-devel
|
|
BuildRequires: postfix
|
|
BuildRequires: python3-devel
|
|
BuildRequires: zlib-devel
|
|
BuildRequires: perl(GD)
|
|
BuildRequires: perl(MIME::Parser)
|
|
URL: https://www.isc.org/othersoftware/#INN
|
|
Summary: InterNetNews
|
|
License: BSD-4-Clause AND GPL-2.0-or-later
|
|
Group: Productivity/Networking/News/Servers
|
|
Provides: inn_pkg
|
|
Provides: nntp_daemon
|
|
Conflicts: cnews
|
|
Conflicts: mininews
|
|
Conflicts: nntpd
|
|
PreReq: perl
|
|
PreReq: permissions
|
|
PreReq: group(news)
|
|
PreReq: group(uucp)
|
|
PreReq: user(news)
|
|
Requires: perl-MIME-tools
|
|
Requires: perl(GD)
|
|
Requires: perl(MIME::Parser)
|
|
%{?systemd_requires}
|
|
%{?libperl_requires}
|
|
Version: 2.6.5
|
|
Release: 0
|
|
%define PatchVersion -%{version}
|
|
Source: https://downloads.isc.org/isc/inn/inn%{PatchVersion}.tar.gz
|
|
Source1: doc-inn.tar.bz2
|
|
Source2: pubring.pgp
|
|
Source3: inn-emptydb.tar.gz
|
|
Source4: inn.reg
|
|
Source5: https://downloads.isc.org/isc/inn/inn%{PatchVersion}.tar.gz.asc
|
|
Source6: %{name}.keyring
|
|
Source7: inn.service
|
|
Patch0: inn-%{version}.diff
|
|
#
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
#
|
|
|
|
%description
|
|
Rich Salz's InterNetNews news transport system.
|
|
|
|
%package devel
|
|
Requires: %name = %version
|
|
Summary: InterNetNews development files
|
|
Group: Development/Languages/C and C++
|
|
Requires: bison
|
|
Requires: gdbm-devel
|
|
Requires: pam-devel
|
|
Requires: zlib-devel
|
|
|
|
%description devel
|
|
Rich Salz's InterNetNews news transport system.
|
|
|
|
This package contains the files needed to develop software depending on
|
|
inn.
|
|
|
|
%package -n mininews
|
|
Summary: Inews - Post News from an NNTP Client
|
|
Group: Productivity/Networking/News/Utilities
|
|
Provides: nntp_daemon
|
|
PreReq: permissions
|
|
PreReq: group(news)
|
|
PreReq: group(uucp)
|
|
PreReq: user(news)
|
|
|
|
%description -n mininews
|
|
Rich Salz's InterNetNews news transport system.
|
|
|
|
%prep
|
|
%setup -n inn%{PatchVersion}
|
|
%setup -n inn%{PatchVersion} -D -T -a 1
|
|
%setup -n inn%{PatchVersion} -D -T -a 3
|
|
sed -e 's-@LIBEXECDIR@-%{_libexecdir}-g' -i %{SOURCE7} %{PATCH0}
|
|
%patch -P 0 -p1
|
|
cp -a $RPM_SOURCE_DIR/pubring.pgp .
|
|
|
|
%build
|
|
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
|
|
LDFLAGS="-pie" CFLAGS="$RPM_OPT_FLAGS -pipe -fno-strict-aliasing -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fPIE -fstack-protector -fcommon" ./configure \
|
|
--enable-uucp-rnews \
|
|
--enable-setgid-inews \
|
|
--prefix=%{_libexecdir}/news \
|
|
--sysconfdir=/etc/news \
|
|
--mandir=%{_mandir} \
|
|
--disable-shared \
|
|
--enable-tagged-hash \
|
|
--with-perl \
|
|
--with-zlib \
|
|
--with-python \
|
|
--with-openssl \
|
|
--with-sendmail=/usr/sbin/sendmail \
|
|
--with-news-user=news \
|
|
--with-news-group=news \
|
|
--with-news-master=news \
|
|
--with-db-dir=/var/lib/news \
|
|
--with-run-dir=/var/run/news \
|
|
--with-log-dir=/var/log/news \
|
|
--with-http-dir=/var/log/news/http \
|
|
--with-spool-dir=/var/spool/news \
|
|
--with-tmp-dir=/var/spool/news/tmp
|
|
make
|
|
cp site/inn.conf inn.conf.tmp
|
|
echo 'domain: test.com' >> inn.conf.tmp
|
|
echo "runasuser: $(id -n -u)" >> inn.conf.tmp
|
|
echo "runasgroup: $(id -n -g)" >> inn.conf.tmp
|
|
INNCONF=inn.conf.tmp expire/makedbz -f `pwd`/inn-emptydb/history -s 666666
|
|
rm -f inn.conf.tmp
|
|
|
|
%install
|
|
mkdir -p %{buildroot}/etc
|
|
mkdir -p %{buildroot}%{_libexecdir}
|
|
mkdir -p %{buildroot}/usr/bin
|
|
mkdir -p %{buildroot}/var/lib
|
|
mkdir -p %{buildroot}/var/log
|
|
mkdir -p %{buildroot}/var/spool
|
|
mkdir -p %{buildroot}%{_mandir}
|
|
#
|
|
make DESTDIR=%{buildroot} OWNER= ROWNER= install
|
|
# rename list manpage as it conflicts with the man-pages package
|
|
for i in %{buildroot}%{_mandir}/*/* ; do
|
|
if test -L "$i" ; then
|
|
il=$(readlink "$i")
|
|
ln -s "$il.gz" "$i.gz"
|
|
rm -f "$i"
|
|
else
|
|
gzip -nf9 "$i"
|
|
fi
|
|
done
|
|
chmod 444 %{buildroot}%{_libexecdir}/news/lib/*.a
|
|
# those just die("BerkeleyDB support not compiled");
|
|
rm %{buildroot}%{_libexecdir}/news/bin/ovdb_server
|
|
rm %{buildroot}%{_libexecdir}/news/bin/ovdb_stat
|
|
ln %{buildroot}%{_libexecdir}/news/bin/ovdb_init %{buildroot}%{_libexecdir}/news/bin/ovdb_server
|
|
ln %{buildroot}%{_libexecdir}/news/bin/ovdb_init %{buildroot}%{_libexecdir}/news/bin/ovdb_stat
|
|
#
|
|
#
|
|
#
|
|
%define installnews install -o news -g news -m
|
|
%define installnews install -m
|
|
%define installroot install -o root -g root -m
|
|
%define installroot install -m
|
|
%{installnews} 0755 -d %{buildroot}/var/log/news/http
|
|
%{installnews} 0644 samples/subscriptions %{buildroot}/etc/news
|
|
%{installnews} 0644 distributions %{buildroot}/etc/news
|
|
%{installnews} 0644 crontab.sample %{buildroot}/etc/news
|
|
%{installnews} 0644 profile %{buildroot}/etc/news/.profile
|
|
%{installnews} 0755 -d %{buildroot}/etc/news/.pgp
|
|
%{installnews} 0600 pubring.pgp %{buildroot}/etc/news/.pgp
|
|
%{installnews} 0644 samples/send-uucp.cf %{buildroot}/etc/news
|
|
%{installnews} 0755 -d %{buildroot}/var/log/news/http
|
|
%{installnews} 0755 -d %{buildroot}/var/log/news/http/pics
|
|
%{installnews} 0555 convertspool %{buildroot}%{_libexecdir}/news/bin
|
|
%{installnews} 0755 -d %{buildroot}%{_libexecdir}/news/include
|
|
%{installnews} 0755 -d %{buildroot}%{_libexecdir}/news/include/inn
|
|
#
|
|
#
|
|
#
|
|
%{installnews} 0644 inn-emptydb/* %{buildroot}/var/lib/news
|
|
%{installnews} 0755 -d %{buildroot}/var/lib/news/backoff
|
|
#
|
|
# compat links
|
|
#
|
|
ln -sf bin/inews %{buildroot}%{_libexecdir}/news/inews
|
|
ln -sf %{_libexecdir}/news/bin/inews %{buildroot}/usr/bin/inews
|
|
ln -sf %{_libexecdir}/news/bin/rnews %{buildroot}/usr/bin/rnews
|
|
#
|
|
# other links
|
|
#
|
|
ln -sf ../innfeed.status %{buildroot}/var/log/news/http/innfeed.status.txt
|
|
ln -sf ../inn.status %{buildroot}/var/log/news/http/inn.status.txt
|
|
#
|
|
#
|
|
#
|
|
%{installnews} 0755 -d %{buildroot}/usr/lib/systemd/system
|
|
%{installroot} 0644 %{SOURCE7} %{buildroot}/usr/lib/systemd/system/inn.service
|
|
%{installnews} 0755 -d %{buildroot}/usr/sbin
|
|
ln -sf service %{buildroot}/usr/sbin/rcinn
|
|
#
|
|
touch %{buildroot}/var/log/news/news
|
|
touch %{buildroot}/var/log/news/news.notice
|
|
touch %{buildroot}/var/log/news/news.err
|
|
touch %{buildroot}/var/log/news/news.crit
|
|
touch %{buildroot}/var/log/news/inn.status
|
|
touch %{buildroot}/var/log/news/innfeed.status
|
|
#
|
|
# SLP regfile
|
|
#
|
|
%{installroot} 0755 -d %{buildroot}/etc/slp.reg.d
|
|
%{installroot} 0644 %{SOURCE4} %{buildroot}/etc/slp.reg.d/
|
|
# /run/news
|
|
mkdir -p $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/
|
|
echo "d /run/news 0750 news news -" > %{buildroot}/usr/lib/tmpfiles.d/inn.conf
|
|
|
|
#
|
|
# build filelist
|
|
#
|
|
%define filelist %{name}-filelist
|
|
find %{buildroot} -type d -printf "/%%P\n" | awk '
|
|
! /^\/(etc|%{search}|var\/lib|var\/log|var\/spool|var\/run)\/news/ { next }
|
|
$0 == "/etc/news" { next }
|
|
$0 == "%{_libexecdir}/news/include" { next }
|
|
$0 == "%{_libexecdir}/news/include/inn" { next }
|
|
$0 == "/var/run/news" { next }
|
|
{ pfx="" }
|
|
$0 == "%{_libexecdir}/news" { pfx = "%%attr(755,root,root) " }
|
|
$0 == "/var/lib/news" { pfx = "%%attr(755,news,news) " }
|
|
$0 == "%{_libexecdir}/news/bin" { pfx = "%%attr(755,root,root) " }
|
|
$0 == "/var/spool/news" { pfx = "%%attr(775,news,news) " }
|
|
$0 == "/var/run/news" { pfx = "%ghost %%attr(750,news,news) "}
|
|
/\/news/ {
|
|
if (!match(pfx, /%%attr/)) pfx = "%%attr(-,news,news) " pfx
|
|
}
|
|
{ print "%dir " pfx $0 }
|
|
' > %{filelist}
|
|
find %{buildroot} ! -type d -printf "/%%P\n" | awk '
|
|
{ pfx="" }
|
|
/^\/%{search}\/news\/include/ { next }
|
|
/^\/%{search}\/news\/lib\/.*\.a/ { next }
|
|
$0 == "%{_libexecdir}/news/bin/inews" { pfx="%attr(2555,news,news) " }
|
|
$0 == "%{_libexecdir}/news/bin/rnews" { pfx="%attr(4550,news,uucp) " }
|
|
$0 == "%{_libexecdir}/news/bin/innbind" { pfx="%verify(not mode) %attr(4550,root,news) " }
|
|
/^\/(etc\/news|%{search}\/news\/bin\/filter|var\/lib\/news)\// {
|
|
pfx="%config(noreplace) "pfx
|
|
}
|
|
/\/man\/man/ {
|
|
pfx="%doc %attr(444,root,root) "pfx
|
|
}
|
|
/^\/var\/log\/news\/(news|inn\.status|innfeed\.status)/ {
|
|
pfx="%ghost %attr(644,news,news) "pfx
|
|
}
|
|
/\/news\// {
|
|
if (!match(pfx, /%%attr/)) pfx = "%%attr(-,news,news) " pfx
|
|
}
|
|
/^\/etc\/slp\.reg\.d\// { next }
|
|
{ print pfx $0 }
|
|
' >> %{filelist}
|
|
|
|
#
|
|
#
|
|
#
|
|
|
|
%pre
|
|
test -f var/log/news && mv var/log/news var/log/news.bak
|
|
%service_add_pre inn.service
|
|
exit 0
|
|
|
|
%post
|
|
runuser -u news -g news touch \
|
|
var/log/news/news.notice \
|
|
var/log/news/news.err \
|
|
var/log/news/news.crit \
|
|
var/log/news/news \
|
|
var/log/news/inn.status \
|
|
var/log/news/innfeed.status
|
|
if test -e %{nslash}/news/bin/control/version -o -e %{nslash}/news/bin/inndstart ; then
|
|
rm -f etc/news/inn.conf.OLD
|
|
rm -f etc/news/newsfeeds.OLD
|
|
%{nslash}/news/bin/innupgrade etc/news
|
|
fi
|
|
if ! test -d /var/run/news ; then
|
|
install -d -m 750 -o news -g news /var/run/news
|
|
fi
|
|
%set_permissions %{_libexecdir}/news/bin/innbind %{_libexecdir}/news/bin/inews %{_libexecdir}/news/bin/rnews
|
|
%service_add_post inn.service
|
|
%tmpfiles_create inn.conf
|
|
|
|
%post -n mininews
|
|
%set_permissions %{_libexecdir}/news/bin/inews %{_libexecdir}/news/bin/rnews
|
|
%tmpfiles_create inn.conf
|
|
|
|
%verifyscript
|
|
%verify_permissions -e %{_libexecdir}/news/bin/innbind -e %{_libexecdir}/news/bin/inews -e %{_libexecdir}/news/bin/rnews
|
|
|
|
%verifyscript -n mininews
|
|
%verify_permissions -e %{_libexecdir}/news/bin/inews -e %{_libexecdir}/news/bin/rnews
|
|
|
|
%preun
|
|
%service_del_preun inn.service
|
|
|
|
%postun
|
|
%service_del_postun inn.service
|
|
|
|
%files -f %{filelist}
|
|
%defattr(-,root,root)
|
|
%dir /etc/slp.reg.d
|
|
%config(noreplace) /etc/slp.reg.d/inn.reg
|
|
%doc NEWS INSTALL README*
|
|
%doc doc-inn/*
|
|
|
|
%files devel
|
|
%defattr(-,root,root)
|
|
%{_libexecdir}/news/include
|
|
%{_libexecdir}/news/lib/*.a
|
|
|
|
%files -n mininews
|
|
%defattr(-,root,root)
|
|
%config(noreplace) /etc/news/inn.conf
|
|
%dir %{_libexecdir}/news/bin
|
|
%attr(4550,news,uucp) %{_libexecdir}/news/bin/rnews
|
|
%attr(2555,news,news) %{_libexecdir}/news/bin/inews
|
|
/usr/bin/[ri]news
|
|
%{_libexecdir}/news/[ri]news
|
|
%doc %{_mandir}/*/inn.conf.*
|
|
%doc %{_mandir}/*/[ri]news.*
|
|
|
|
%changelog
|