Hello community, here is the log from the commit of package mailman for openSUSE:Factory checked in at 2018-12-12 17:29:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mailman (Old) and /work/SRC/openSUSE:Factory/.mailman.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mailman" Wed Dec 12 17:29:09 2018 rev:47 rq:657139 version:2.1.29 Changes: -------- --- /work/SRC/openSUSE:Factory/mailman/mailman.changes 2018-08-24 17:10:48.738549801 +0200 +++ /work/SRC/openSUSE:Factory/.mailman.new.28833/mailman.changes 2018-12-12 17:29:13.698820367 +0100 @@ -1,0 +2,16 @@ +Tue Dec 11 10:58:06 UTC 2018 - Jan Engelhardt <jeng...@inai.de> + +- Use multi-argument find -exec. +- Set bash as build shell due to occurrence of "=~". + +------------------------------------------------------------------- +Fri Dec 7 11:40:02 CET 2018 - mc...@suse.com + +- Add systemd timers to be used instead of cron. (boo#1115446) +- Rewrite whole package to use systemd services instead of SysV + init. (boo#1116022) +- Lots and lots of cleanup to minimize rpmlint warnings + (remainings are either false positives or they don't make + much sense) + +------------------------------------------------------------------- New: ---- mailman-rpmlintrc mailman.service systemd-units.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mailman.spec ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.786818990 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.786818990 +0100 @@ -12,10 +12,11 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # +%global _buildshell /bin/bash %define m_uid 72 %define m_gid 67 %define apache2_confd %{_sysconfdir}/apache2/conf.d @@ -25,13 +26,19 @@ %if ! %{defined _fillupdir} %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif + +# optional: checkdbs, gate_news, nightly_gzip, +# switched on per default: cull_bad_shunt, disabled, mailpasswds, +# nightly_archives, senddigests +%define timers mailman_cull_bad_shunt.timer mailman_disabled.timer mailman_gate_news.timer mailman_checkdbs.timer mailman_mailpasswds.timer mailman_nightly_archives.timer mailman_nightly_gzip.timer mailman_senddigests.timer mailman_cull_bad_shunt.service mailman_disabled.service mailman_gate_news.service mailman_checkdbs.service mailman_mailpasswds.service mailman_nightly_archives.service mailman_nightly_gzip.service mailman_senddigests.service + Name: mailman Version: 2.1.29 Release: 0 Summary: The GNU Mailing List Manager License: GPL-2.0-or-later Group: Productivity/Networking/Email/Mailinglists -Url: http://www.gnu.org/software/mailman/mailman.html +URL: http://www.gnu.org/software/mailman/mailman.html Source0: https://ftp.gnu.org/gnu/mailman/%{name}-%{version}.tgz Source1: README.SUSE Source2: mailman-2.1-manpages.tgz @@ -41,10 +48,13 @@ Source7: sysconfig.mailman Source8: mailman.sgidlist Source9: mailman-apache2.conf +Source10: mailman-rpmlintrc Source11: logrotate.mailman Source12: mm-text.png Source13: https://ftp.gnu.org/gnu/mailman/%{name}-%{version}.tgz.sig Source14: %{name}.keyring +Source15: systemd-units.tar.xz +Source16: mailman.service Patch1: mailman-wrapper.patch Patch3: mailman-2.1.14-python.dif Patch5: mailman-2.1.14-editarch.patch @@ -55,29 +65,61 @@ Patch17: mailman-weak-password.diff Patch18: mailman-2.1.5-no_extra_asian.dif Patch19: reproducible.patch +BuildRequires: aaa_base +BuildRequires: fdupes BuildRequires: krb5 BuildRequires: pcre-devel +BuildRequires: pkgconfig BuildRequires: postfix BuildRequires: pwdutils BuildRequires: python-devel BuildRequires: python-dnspython +BuildRequires: systemd-rpm-macros +BuildRequires: pkgconfig(systemd) #!BuildIgnore: sendmail -Requires: cron +Requires: aaa_base Requires: logrotate Requires: python Requires: python-dnspython Requires: smtp_daemon Requires: w3m Requires(post): %fillup_prereq -Requires(post): %insserv_prereq Requires(post): coreutils Requires(post): gawk Requires(post): group(nobody) Requires(post): openssl Requires(post): user(nobody) Requires(post): user(wwwrun) -Requires(pre): shadow +Requires(post): permissions Requires(pre): permissions +Requires(pre): shadow +%{?systemd_requires} + +# Installation directories +# rpmlint will give an error about hardcoded library path, +# but this is necessary, because there are python executables inside, +# which the user can run in their scripts. +# see rhbz#226117 for more information +%global mmdir %{_libexecdir}/%{name} +%global varmmdir /var/lib/%{name} +%global docdir %{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}} +%global configdir /etc/%{name} +%global datadir %{varmmdir}/data +%global archivesdir %{varmmdir}/archives +%global logdir /var/log/%{name} +%global piddir /var/run/%{name} +%global queuedir /var/spool/%{name} +%global templatedir %{mmdir}/templates +%global httpdconfdir /etc/httpd/conf.d +%global restart_flag /var/run/%{name}-restart-after-rpm-install +%global mmbuilddir %{_builddir}/%{name}-%{version} + +%global httpdconffile %{name}.conf +# Now, the user and group the CGIs will expect to be run under. This should +# match the user and group the web server is configured to run as. The scripts +# will error out if they are invoked by any other user. +%global cgiuser apache +%global cgigroup apache %description This is the GNU Mailing List manager. Mailman provides an @@ -86,17 +128,10 @@ %prep %setup -q -%patch1 -%patch3 -%patch5 -p1 -%patch6 -p1 -%patch7 -%patch10 -p1 -%patch11 -p1 -%patch17 -p1 -%patch18 -%patch19 -p1 +%autopatch -p1 cp -av %{SOURCE1} . +cp -av %{SOURCE8} . +tar -xvf %{SOURCE15} find . -name \*.py |while read PYFN ; do sed -i -e '1s/env python/python/' $PYFN @@ -104,134 +139,217 @@ %build %configure \ - --prefix=%{_libexecdir}/mailman \ - --exec-prefix=%{_libexecdir}/mailman \ + --prefix=%{mmdir} \ + --exec-prefix=%{mmdir} \ --localstatedir=%{_localstatedir}/run \ - --libexecdir=%{_libexecdir}/mailman \ + --libexecdir=%{mmdir} \ --with-groupname=mailman \ --with-username=mailman \ - --with-var-prefix=%{_localstatedir}/lib/mailman \ + --with-var-prefix=%{varmmdir} \ --without-permcheck \ - --with-cgi-gid=nobody \ - --with-mail-gid=nobody + --with-cgi-gid=%{cgiuser} \ + --with-mail-gid=%{cgigroup} make %{?_smp_mflags} OPT="%{optflags} -fpie -pie" # Mark sitemappgen as non-executable -find . -name sitemapgen -print -exec chmod -x '{}' \; +find . -name sitemapgen -print -exec chmod -x '{}' + %install install -d %{buildroot}/{usr/sbin,etc/{mailman,sysconfig,init.d,logrotate.d},%{_fillupdir},bin/conf.d}/ %make_install -# add a hint to the crontab -cat <<EOF > %{buildroot}%{_libexecdir}/mailman/cron/crontab -# -# if you want to make changes to this file, please modify -# /usr/lib/mailman/cron/crontab and restart mailman -# -EOF -# add user mailman in column 6 since we are going to use it as system crontab -awk '/^[0-9,\*]/ { print $1 " " $2 " " $3 " " $4 " " $5 " mailman " $6 " " $7 " " $8 } /^\#/ { print $0 }' \ - %{buildroot}%{_libexecdir}/mailman/cron/crontab.in \ - >> %{buildroot}%{_libexecdir}/mailman/cron/crontab # write initial wrapper id files: . %{SOURCE7} -getent group $MAILMAN_CGI_GID | cut -d: -f3 > $RPM_BUILD_ROOT/%{mailman_confd}/mailman.cgi-gid +getent group $MAILMAN_CGI_GID \ + | cut -d: -f3 > %{buildroot}/%{mailman_confd}/mailman.cgi-gid echo %{m_gid} > %{buildroot}/%{mailman_confd}/mailman.mail-gid + # SuSEconfig stuff: install -m 644 %{SOURCE7} %{buildroot}%{_fillupdir}/ -install -m 755 %{SOURCE4} %{buildroot}%{_libexecdir}/mailman/bin/ -install -m 644 %{SOURCE8} %{buildroot}%{_libexecdir}/mailman/sgidlist -# start script: -ln -sf ../..%{_initddir}/mailman %{buildroot}%{_sbindir}/rcmailman -install -m 755 %{SOURCE5} %{buildroot}%{_initddir}/mailman +install -m 755 %{SOURCE4} %{buildroot}%{mmdir}/bin/ +install -m 644 %{SOURCE8} %{buildroot}%{mmdir}/sgidlist + +# Move configuration files to proper location +mv -v %{buildroot}%{mmdir}/Mailman/mm_cfg.py* %{buildroot}%{configdir}/ +ln -srf %{buildroot}%{configdir}/mm_cfg.py* %{buildroot}%{mmdir}/Mailman/ + # make sure there is a valid group writable aliases.db # if the aliases.db would be generated later on, list creation # through the web interface would not work! -install -m 664 %{SOURCE6} %{buildroot}%{_localstatedir}/lib/mailman/data/aliases +install -m 664 %{SOURCE6} %{buildroot}%{datadir}/aliases + # created in %%post and marked as %%ghost in the file section, so simply fake it: -%{_bindir}/touch %{buildroot}%{_localstatedir}/lib/mailman/data/aliases.db +%{_bindir}/touch \ + %{buildroot}%{datadir}/aliases.db + # apache stuff: mkdir -p %{buildroot}/%{apache2_confd} cp -av %{SOURCE9} %{buildroot}/%{apache2_confd}/mailman.conf + # link to enhance interoperability with Sendmail mkdir -p %{buildroot}/%{sendmail_libd}/bin -ln -sf %{_libexecdir}/mailman/mail/mailman %{buildroot}/%{sendmail_libd}/bin/mailman +ln -sf %{mmdir}/mail/mailman %{buildroot}/%{sendmail_libd}/bin/mailman + +# Install manpages install -d %{buildroot}%{_mandir}/man8/ tar xz -C %{buildroot}%{_mandir}/man8/ -f %{SOURCE2} + +# Install configuration of logrotate install -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/logrotate.d/mailman +# Install timer systemd files +install -D -m 0644 -t %{buildroot}%{_unitdir}/ systemd-units/* + +# Install mailman.service +install -m 0644 -t %{buildroot}%{_unitdir}/ %{SOURCE16} + +# Install rcmailman to _sbindir +ln -sf /usr/sbin/service %{buildroot}%{_sbindir}/rcmailman + +# Add symlinks to _sbindir +for service in %{timers} mailman.service ; do + if [[ $service =~ \.service ]] ; then + ln -sf %{_unitdir}/${service} %{buildroot}%{_sbindir}/ + fi +done + +# Deduplicate +%fdupes %{buildroot}%{mmdir} + +# Change permissions of directories to keep rpmlint silent +find %{buildroot}/%{mmdir} -type d -exec chmod 755 {} + +find %{buildroot}/%{templatedir} -type d -exec chmod 755 {} + +# There is no need for setgid bit in all files in those directories except cgi-bin +chmod %{buildroot}/%{mmdir} -s -R +chmod -s %{buildroot}/%{mmdir} %{buildroot}/%{mmdir}/Mailman +chmod -s %{buildroot}/%{varmmdir} %{buildroot}/%{datadir} +# cgi-bin contains ELF executables which have to have setgid +chmod g+s %{buildroot}/%{mmdir}/cgi-bin/* +chmod g+s %{buildroot}/%{mmdir}/mail/mailman + +# Add executable bits to help scripts +chmod +x %{buildroot}/%{mmdir}/Mailman/Archiver/pipermail.py \ + %{buildroot}/%{mmdir}/Mailman/Post.py + +# no need for setgid in configdir +chmod %{buildroot}/%{configdir} -s -R +chmod %{buildroot}/%{varmmdir} -s -R + %pre -getent group mailman >/dev/null || %{_sbindir}/groupadd -g %{m_gid} -o -r mailman -getent passwd mailman >/dev/null || %{_sbindir}/useradd -r -o -g mailman -u %{m_uid} -s /bin/bash -c "GNU mailing list manager" -d %{_localstatedir}/lib/mailman mailman +%service_add_pre %{timers} mailman.service +getent group mailman >/dev/null \ + || %{_sbindir}/groupadd -g %{m_gid} -o -r mailman +getent passwd mailman >/dev/null \ + || %{_sbindir}/useradd -r -o -g mailman -u %{m_uid} -s /bin/bash \ + -c "GNU mailing list manager" -d %{varmmdir} mailman exit 0 %post -%{fillup_and_insserv mailman} -if [ -e %{_localstatedir}/lib/mailman/logs/error ]; then - chown wwwrun.mailman %{_localstatedir}/lib/mailman/logs/error +%service_add_post %{timers} mailman.service +%set_permissions %{mmdir} +%set_permissions %{mmdir}/cgi-bin/admin +%set_permissions %{mmdir}/cgi-bin/admindb +%set_permissions %{mmdir}/cgi-bin/confirm +%set_permissions %{mmdir}/cgi-bin/create +%set_permissions %{mmdir}/cgi-bin/editarch +%set_permissions %{mmdir}/cgi-bin/edithtml +%set_permissions %{mmdir}/cgi-bin/listinfo +%set_permissions %{mmdir}/cgi-bin/options +%set_permissions %{mmdir}/cgi-bin/private +%set_permissions %{mmdir}/cgi-bin/rmlist +%set_permissions %{mmdir}/cgi-bin/roster +%set_permissions %{mmdir}/cgi-bin/subscribe +%set_permissions %{mmdir}/mail/mailman +%set_permissions %{mmdir}/Mailman +%set_permissions %{varmmdir} +%set_permissions %{datadir} + +if [ -e %{varmmdir}/logs/error ]; then + chown wwwrun.mailman %{varmmdir}/logs/error else - install -m 664 -o wwwrun -g mailman /dev/null %{_localstatedir}/lib/mailman/logs/error + install -m 664 -o wwwrun -g mailman /dev/null %{varmmdir}/logs/error fi # handle very old installations test -d %{_localstatedir}/spool/mailman && { - echo -n "Moving %{_localstatedir}/spool/mailman -> %{_localstatedir}/lib/mailman... " - (cd %{_localstatedir}/lib/mailman && cp -a %{_localstatedir}/spool/mailman/* .) && rm -rf %{_localstatedir}/spool/mailman + echo -n "Moving %{_localstatedir}/spool/mailman -> %{varmmdir}... " + (cd %{varmmdir} && \ + cp -a %{_localstatedir}/spool/mailman/* .) && \ + rm -rf %{_localstatedir}/spool/mailman echo "Done." } echo "All done." + # use Mailman facilities for updating old data -%{_libexecdir}/mailman/bin/update +%{mmdir}/bin/update if test -z "$YAST_IS_RUNNING" ; then - echo "Please remember to run '%{_libexecdir}/mailman/bin/mailman-generate-sysconfig' to configure mailman" + echo "Please remember to run '%{mmdir}/bin/mailman-generate-sysconfig' to configure mailman" fi + # re-create the list aliases -%{_libexecdir}/mailman/bin/genaliases > /dev/null -# update the alias db file and make it group-writeable (important for being able to create mailing lists thru the web interface) -if [ -x %{_sbindir}/postalias -a -r %{_localstatedir}/lib/mailman/data/aliases ]; then - %{_sbindir}/postalias %{_localstatedir}/lib/mailman/data/aliases || : - chmod g+w %{_localstatedir}/lib/mailman/data/aliases.db +%{mmdir}/bin/genaliases > /dev/null + +# update the alias db file and make it group-writeable (important for +# being able to create mailing lists thru the web interface) +if [ -x %{_sbindir}/postalias -a -r %{datadir}/aliases ]; then + %{_sbindir}/postalias %{datadir}/aliases || : + chmod g+w %{datadir}/aliases.db fi exit 0 %verifyscript -%verify_permissions -f %{_libexecdir}/mailman/sgidlist +%verify_permissions -e %{mmdir} +%verify_permissions -e %{mmdir}/cgi-bin/admin +%verify_permissions -e %{mmdir}/cgi-bin/admindb +%verify_permissions -e %{mmdir}/cgi-bin/confirm +%verify_permissions -e %{mmdir}/cgi-bin/create +%verify_permissions -e %{mmdir}/cgi-bin/editarch +%verify_permissions -e %{mmdir}/cgi-bin/edithtml +%verify_permissions -e %{mmdir}/cgi-bin/listinfo +%verify_permissions -e %{mmdir}/cgi-bin/options +%verify_permissions -e %{mmdir}/cgi-bin/private +%verify_permissions -e %{mmdir}/cgi-bin/rmlist +%verify_permissions -e %{mmdir}/cgi-bin/roster +%verify_permissions -e %{mmdir}/cgi-bin/subscribe +%verify_permissions -e %{mmdir}/mail/mailman +%verify_permissions -e %{mmdir}/Mailman +%verify_permissions -e %{varmmdir} +%verify_permissions -e %{datadir} %preun +%service_del_preun %{timers} mailman.service %stop_on_removal mailman %postun +%service_del_postun %{timers} mailman.service %restart_on_update mailman -%insserv_cleanup %files %license gnu-COPYING-GPL -%doc ACKNOWLEDGMENTS BUGS FAQ INSTALL NEWS TODO UPGRADING contrib doc/mailman-admin +%doc ACKNOWLEDGMENTS BUGS FAQ NEWS TODO UPGRADING contrib doc/mailman-admin %doc README README.* %{_mandir}/man8/*.8%{?ext_man} %dir %{mailman_confd} %config(noreplace) %{_sysconfdir}/logrotate.d/mailman %config(noreplace) %{mailman_confd}/mailman.*-gid -%dir %attr(2755, root, mailman) %{_libexecdir}/mailman/ -%{_libexecdir}/mailman/sgidlist -%attr(-, root, mailman) %{_libexecdir}/mailman/[^Mmc]* -%attr(-, root, mailman) %{_libexecdir}/mailman/cron -%dir %attr(-, root, mailman) %{_libexecdir}/mailman/cgi-bin -%verify(not mode) %attr(2755, root, mailman) %{_libexecdir}/mailman/cgi-bin/* -%dir %attr(2755, root, mailman) %{_libexecdir}/mailman/Mailman/ -%attr(-, root, mailman) %{_libexecdir}/mailman/Mailman/[^m]* -%attr(-, root, mailman) %{_libexecdir}/mailman/messages -%dir %attr(-, root, mailman) %{_libexecdir}/mailman/mail -%verify(not mode) %attr(2755, root, mailman) %{_libexecdir}/mailman/mail/mailman -%config(noreplace) %attr(-, root, mailman) %{_libexecdir}/mailman/Mailman/m* -%dir %attr(2755, mailman, mailman) %{_localstatedir}/lib/mailman/ -%attr(-, root, mailman) %{_localstatedir}/lib/mailman/[^d]* -%dir %attr(2775, root, mailman) %{_localstatedir}/lib/mailman/data/ -%config(noreplace) %attr(-, root, mailman) %{_localstatedir}/lib/mailman/data/[^a]* -%config(noreplace) %attr(-, mailman, mailman) %{_localstatedir}/lib/mailman/data/aliases -%ghost %attr(0664, mailman, mailman) %{_localstatedir}/lib/mailman/data/aliases.db +%config(noreplace) %attr(-, root, mailman) %{configdir}/mm_cfg.py* +%dir %attr(755, root, mailman) %{mmdir}/ +%attr(-, root, mailman) %{mmdir}/[^Mmc]* +%attr(-, root, mailman) %{mmdir}/cron +%dir %attr(-, root, mailman) %{mmdir}/cgi-bin +%verify(not mode) %attr(2755, root, mailman) %{mmdir}/cgi-bin/* +%dir %attr(755, root, mailman) %{mmdir}/Mailman/ +%attr(-, root, mailman) %{mmdir}/Mailman/* +%attr(-, root, mailman) %{mmdir}/messages +%dir %attr(-, root, mailman) %{mmdir}/mail +%verify(not mode) %attr(2755, root, mailman) %{mmdir}/mail/mailman +%dir %attr(755, mailman, mailman) %{varmmdir}/ +%attr(-, root, mailman) %{varmmdir}/[^d]* +%dir %attr(775, root, mailman) %{datadir}/ +%config(noreplace) %attr(-, root, mailman) %{datadir}/[^a]* +%config(noreplace) %attr(-, mailman, mailman) %{datadir}/aliases +%ghost %attr(0664, mailman, mailman) %{datadir}/aliases.db %{_fillupdir}/* +%{_unitdir}/* %{_sbindir}/* -%{_initddir}/* %dir %{_sysconfdir}/apache2 %dir %{apache2_confd} %config (noreplace) %{apache2_confd}/mailman.conf ++++++ mailman-2.1.14-editarch.patch ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.858818898 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.858818898 +0100 @@ -1,8 +1,6 @@ -Index: mailman-2.1.14/Mailman/Cgi/admin.py -=================================================================== ---- mailman-2.1.14.orig/Mailman/Cgi/admin.py -+++ mailman-2.1.14/Mailman/Cgi/admin.py -@@ -416,6 +416,8 @@ def show_results(mlist, doc, category, s +--- a/Mailman/Cgi/admin.py ++++ b/Mailman/Cgi/admin.py +@@ -471,6 +471,8 @@ def show_results(mlist, doc, category, s _('Go to the general list information page'))) otherlinks.AddItem(Link(mlist.GetScriptURL('edithtml'), _('Edit the public HTML pages and text files'))) @@ -11,10 +9,8 @@ otherlinks.AddItem(Link(mlist.GetBaseArchiveURL(), _('Go to list archives')).Format() + '<br> <br>') -Index: mailman-2.1.14/Mailman/Cgi/editarch.py -=================================================================== --- /dev/null -+++ mailman-2.1.14/Mailman/Cgi/editarch.py ++++ b/Mailman/Cgi/editarch.py @@ -0,0 +1,509 @@ +# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc. +# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc. @@ -525,11 +521,9 @@ + for thing, repl in repls: + s = s.replace(thing, repl) + return Utils.uncanonstr(s, lang) -Index: mailman-2.1.14/Mailman/Defaults.py.in -=================================================================== ---- mailman-2.1.14.orig/Mailman/Defaults.py.in -+++ mailman-2.1.14/Mailman/Defaults.py.in -@@ -1390,6 +1390,10 @@ PIDFILE = os.path.join(DATA_DIR, 'master +--- a/Mailman/Defaults.py.in ++++ b/Mailman/Defaults.py.in +@@ -1733,6 +1733,10 @@ PIDFILE = os.path.join(DATA_DIR, 'master SITE_PW_FILE = os.path.join(DATA_DIR, 'adm.pw') LISTCREATOR_PW_FILE = os.path.join(DATA_DIR, 'creator.pw') @@ -540,11 +534,9 @@ # Import a bunch of version numbers from Version import * -Index: mailman-2.1.14/configure -=================================================================== ---- mailman-2.1.14.orig/configure -+++ mailman-2.1.14/configure -@@ -5029,6 +5029,7 @@ build/cron/cull_bad_shunt:cron/cull_bad_ +--- a/configure ++++ b/configure +@@ -4585,6 +4585,7 @@ build/cron/cull_bad_shunt:cron/cull_bad_ build/cron/disabled:cron/disabled \ build/cron/gate_news:cron/gate_news \ build/cron/mailpasswds:cron/mailpasswds \ @@ -552,11 +544,9 @@ build/cron/nightly_gzip:cron/nightly_gzip \ build/cron/senddigests:cron/senddigests \ " -Index: mailman-2.1.14/configure.in -=================================================================== ---- mailman-2.1.14.orig/configure.in -+++ mailman-2.1.14/configure.in -@@ -688,6 +688,7 @@ cron/cull_bad_shunt \ +--- a/configure.in ++++ b/configure.in +@@ -733,6 +733,7 @@ cron/cull_bad_shunt \ cron/disabled \ cron/gate_news \ cron/mailpasswds \ @@ -564,10 +554,8 @@ cron/nightly_gzip \ cron/senddigests \ ]) -Index: mailman-2.1.14/cron/Makefile.in -=================================================================== ---- mailman-2.1.14.orig/cron/Makefile.in -+++ mailman-2.1.14/cron/Makefile.in +--- a/cron/Makefile.in ++++ b/cron/Makefile.in @@ -42,7 +42,7 @@ CRONDIR= $(prefix)/cron SHELL= /bin/sh @@ -577,10 +565,8 @@ FILES= crontab.in BUILDDIR= ../build/cron -Index: mailman-2.1.14/cron/crontab.in.in -=================================================================== ---- mailman-2.1.14.orig/cron/crontab.in.in -+++ mailman-2.1.14/cron/crontab.in.in +--- a/cron/crontab.in.in ++++ b/cron/crontab.in.in @@ -25,3 +25,7 @@ # # At 4:30AM daily, cull old entries from the 'bad' and 'shunt' queues. @@ -589,10 +575,8 @@ +# At 3:57am every night, reprocess archives that have been edited. +57 3 * * * @PYTHON@ -S @prefix@/cron/nightly_archives + -Index: mailman-2.1.14/cron/nightly_archives -=================================================================== --- /dev/null -+++ mailman-2.1.14/cron/nightly_archives ++++ b/cron/nightly_archives @@ -0,0 +1,126 @@ +#! @PYTHON@ +# @@ -720,11 +704,9 @@ + +if __name__ == '__main__': + main() -Index: mailman-2.1.14/src/Makefile.in -=================================================================== ---- mailman-2.1.14.orig/src/Makefile.in -+++ mailman-2.1.14/src/Makefile.in -@@ -70,7 +70,7 @@ DIRSETGID= chmod g+s +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -72,7 +72,7 @@ DIRSETGID= chmod g+s # Fixed definitions ++++++ mailman-2.1.14-misc-PACKAGES.diff ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.870818884 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.870818884 +0100 @@ -1,5 +1,5 @@ ---- mailman-2.1.11.orig/Makefile.in -+++ mailman-2.1.11/Makefile.in +--- a/Makefile.in ++++ b/Makefile.in @@ -125,6 +125,7 @@ doinstall: $(SUBDIRS) (cd $$d; $(MAKE) DESTDIR=$(DESTDIR) install); \ done @@ -8,9 +8,9 @@ # Only run bin/update if we aren't installing in DESTDIR, as this # means there are probably no lists to deal with, and it wouldn't ---- mailman-2.1.14/misc/Makefile.in 2010-09-20 20:18:27.000000000 +0200 -+++ mailman-2.1.14/misc/Makefile.in 2010-11-15 10:34:50.013318554 +0100 -@@ -57,7 +57,7 @@ +--- a/misc/Makefile.in ++++ b/misc/Makefile.in +@@ -57,7 +57,7 @@ EMAILPKG= @EMAILPKG@ JACODECSPKG= @JACODECSPKG@ KOCODECSPKG= @KOCODECSPKG@ ++++++ mailman-2.1.14-python.dif ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.882818868 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.882818868 +0100 @@ -1,8 +1,6 @@ -Index: Mailman/Defaults.py.in -=================================================================== ---- Mailman/Defaults.py.in.orig 2014-02-14 18:26:31.045186987 +0100 -+++ Mailman/Defaults.py.in 2014-02-14 18:26:32.847196660 +0100 -@@ -83,8 +83,8 @@ +--- a/Mailman/Defaults.py.in ++++ b/Mailman/Defaults.py.in +@@ -83,8 +83,8 @@ MAILMAN_URL = 'http://www.gnu.org/softwa # add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) # # because otherwise the default mappings won't be correct. @@ -13,7 +11,7 @@ DEFAULT_URL_PATTERN = 'http://%s/mailman/' # DEFAULT_HOST_NAME has been replaced with DEFAULT_EMAIL_HOST, however some -@@ -1408,8 +1408,8 @@ +@@ -1604,8 +1604,8 @@ if EXEC_PREFIX == '${prefix}': CGIEXT = '@CGIEXT@' # Group id that group-owns the Mailman installation @@ -24,11 +22,9 @@ # Enumeration for Mailman cgi widget types Toggle = 1 -Index: misc/Makefile.in -=================================================================== ---- misc/Makefile.in.orig 2014-02-14 18:26:31.045186987 +0100 -+++ misc/Makefile.in 2014-02-14 18:26:32.848196665 +0100 -@@ -47,9 +47,9 @@ +--- a/misc/Makefile.in ++++ b/misc/Makefile.in +@@ -47,9 +47,9 @@ SCRIPTSDIR= $(prefix)/scripts SHELL= /bin/sh PYTHONLIBDIR= $(prefix)/pythonlib ++++++ mailman-2.1.26-list_lists.patch ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.894818853 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.894818853 +0100 @@ -1,6 +1,6 @@ ---- bin/list_lists 2018-02-04 18:04:39.000000000 +0100 -+++ bin/list_lists 2018-03-15 17:00:17.090758128 +0100 -@@ -37,6 +37,13 @@ +--- a/bin/list_lists ++++ b/bin/list_lists +@@ -37,6 +37,13 @@ Where: -b / --bare Displays only the list name, with no description. @@ -14,7 +14,7 @@ -h / --help Print this text and exit. -@@ -69,8 +76,10 @@ +@@ -69,8 +76,10 @@ def usage(code, msg=''): def main(): try: @@ -26,7 +26,7 @@ 'virtual-host-overview=', 'help']) except getopt.error, msg: -@@ -80,17 +89,20 @@ +@@ -80,17 +89,20 @@ def main(): public = 0 vhost = None bare = 0 @@ -48,7 +48,7 @@ names = Utils.list_names() names.sort() -@@ -107,6 +119,8 @@ +@@ -107,6 +119,8 @@ def main(): continue if public and mlist.archive_private: continue ++++++ mailman-2.1.4-dirmode.patch ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.914818828 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.914818828 +0100 @@ -1,6 +1,6 @@ ---- mailman-2.1.6/Makefile.in -+++ mailman-2.1.6/Makefile.in -@@ -103,7 +103,7 @@ +--- a/Makefile.in ++++ b/Makefile.in +@@ -103,7 +103,7 @@ doinstall: $(SUBDIRS) if test ! -d $$dir; then \ echo "Creating directory hierarchy $$dir"; \ $(srcdir)/mkinstalldirs $$dir; \ @@ -9,7 +9,7 @@ $(DIRSETGID) $$dir; \ else true; \ fi; \ -@@ -115,7 +115,7 @@ +@@ -115,7 +115,7 @@ doinstall: $(SUBDIRS) if test ! -d $$dir; then \ echo "Creating directory hierarchy $$dir"; \ $(srcdir)/mkinstalldirs $$dir; \ @@ -18,9 +18,9 @@ $(DIRSETGID) $$dir; \ else true; \ fi; \ ---- mailman-2.1.6/bin/check_perms -+++ mailman-2.1.6/bin/check_perms -@@ -70,6 +70,7 @@ +--- a/bin/check_perms ++++ b/bin/check_perms +@@ -71,6 +71,7 @@ class State: STATE = State() DIRPERMS = S_ISGID | S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH @@ -28,7 +28,7 @@ QFILEPERMS = S_ISGID | S_IRWXU | S_IRWXG PYFILEPERMS = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ARTICLEFILEPERMS = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP -@@ -174,8 +175,7 @@ +@@ -182,8 +183,7 @@ def checkall(): prefix = mm_cfg.PREFIX print C_('checking mode for %(prefix)s') dirs = {} @@ -38,7 +38,7 @@ dirs[d] = True for d in dirs.keys(): try: -@@ -184,14 +184,24 @@ +@@ -192,14 +192,24 @@ def checkall(): if e.errno <> errno.ENOENT: raise print C_('WARNING: directory does not exist: %(d)s') continue ++++++ mailman-2.1.4-notavaliduser.patch ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.926818813 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.926818813 +0100 @@ -1,6 +1,6 @@ ---- mailman-2.1.4/Mailman/Cgi/options.py -+++ mailman-2.1.4/Mailman/Cgi/options.py -@@ -626,6 +626,10 @@ +--- a/Mailman/Cgi/options.py ++++ b/Mailman/Cgi/options.py +@@ -789,6 +789,10 @@ address. Upon confirmation, any other m msg += _('You may get one last digest.') options_page(mlist, doc, user, cpuser, userlang, msg) ++++++ mailman-2.1.5-no_extra_asian.dif ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.934818803 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.938818797 +0100 @@ -1,6 +1,6 @@ ---- misc/paths.py.in -+++ misc/paths.py.in -@@ -70,14 +70,14 @@ +--- a/misc/paths.py.in ++++ b/misc/paths.py.in +@@ -71,14 +71,14 @@ sys.path.append(distdir) # In a normal interactive Python environment, the japanese.pth and korean.pth # files would be imported automatically. But because we inhibit the importing # of the site module, we need to be explicit about importing these codecs. ++++++ mailman-rpmlintrc ++++++ addFilter("zero-length /usr/share/doc/packages/mailman/mailman-admin/index.dat") ++++++ mailman-weak-password.diff ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.974818752 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.978818747 +0100 @@ -1,6 +1,6 @@ ---- mailman-2.1.6/Mailman/Defaults.py.in.orig 2005-07-03 01:06:10.377504831 +0200 -+++ mailman-2.1.6/Mailman/Defaults.py.in 2005-07-03 01:06:20.566725790 +0200 -@@ -797,7 +797,7 @@ +--- a/Mailman/Defaults.py.in ++++ b/Mailman/Defaults.py.in +@@ -1069,7 +1069,7 @@ DEFAULT_NEW_MEMBER_OPTIONS = 256 # Set this value to No to use more cryptographically secure, but harder to # remember, passwords -- if your operating system and Python version support # the necessary feature (specifically that /dev/urandom be available). ++++++ mailman-wrapper.patch ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:14.986818737 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:14.986818737 +0100 @@ -1,5 +1,5 @@ ---- src/cgi-wrapper.c -+++ src/cgi-wrapper.c +--- a/src/cgi-wrapper.c ++++ b/src/cgi-wrapper.c @@ -33,7 +33,7 @@ const char* logident = LOG_IDENT; char* script = SCRIPTNAME; @@ -9,7 +9,7 @@ int main(int argc, char** argv, char** env) -@@ -42,7 +42,7 @@ +@@ -42,7 +42,7 @@ main(int argc, char** argv, char** env) char* fake_argv[3]; running_as_cgi = 1; @@ -18,9 +18,9 @@ /* For these CGI programs, we can ignore argc and argv since they * don't contain anything useful. `script' will always be the driver ---- src/common.c -+++ src/common.c -@@ -117,47 +117,27 @@ +--- a/src/common.c ++++ b/src/common.c +@@ -117,47 +117,27 @@ fatal(const char* ident, int exitcode, c /* Is the parent process allowed to call us? */ void @@ -32,7 +32,10 @@ - char* option; - char* server; - char* wrapper; -- ++ FILE *gidfile_h; ++ GID_T parentgid; ++ GID_T mygid = getgid(); + - if (running_as_cgi) { - option = "--with-cgi-gid"; - server = "web"; @@ -43,10 +46,6 @@ - server = "mail"; - wrapper = "mail"; - } -+ FILE *gidfile_h; -+ GID_T parentgid; -+ GID_T mygid = getgid(); -+ + if ((gidfile_h = fopen(gidfile, "r")) == NULL) + fatal(ident, GROUP_NAME_NOT_FOUND, + "Cannot open wrapper configuration file: %s", @@ -55,12 +54,6 @@ + fatal(ident, GROUP_NAME_NOT_FOUND, + "Cannot read wrapper configuration file."); + fclose(gidfile_h); -+ -+ if (parentgid != mygid) { -+ fatal(ident, GROUP_MISMATCH, -+ "Failure to exec script. WANTED gid %ld, GOT gid %ld.", -+ parentgid, mygid); -+ } - if (!mygroup) - fatal(ident, GROUP_NAME_NOT_FOUND, @@ -73,7 +66,12 @@ - "\"%s\".", - mygid, wrapper, parentgroup, server, mygid, mygid, - parentgroup, server, parentgroup); -- ++ if (parentgid != mygid) { ++ fatal(ident, GROUP_MISMATCH, ++ "Failure to exec script. WANTED gid %ld, GOT gid %ld.", ++ parentgid, mygid); ++ } + - if (strcmp(parentgroup, mygroup->gr_name)) - fatal(ident, GROUP_MISMATCH, - "Group mismatch error. Mailman expected the %s\n" @@ -87,8 +85,8 @@ } ---- src/mail-wrapper.c -+++ src/mail-wrapper.c +--- a/src/mail-wrapper.c ++++ b/src/mail-wrapper.c @@ -27,6 +27,7 @@ const char* parentgroup = LEGAL_PARENT_GROUP; @@ -97,7 +95,7 @@ -@@ -74,7 +75,7 @@ +@@ -74,7 +75,7 @@ main(int argc, char** argv, char** env) fatal(logident, MAIL_ILLEGAL_COMMAND, "Illegal command: %s", argv[1]); ++++++ mailman.service ++++++ [Unit] Description=GNU Mailing List Manager After=syslog.target network.target apache.target [Service] ExecStartPre=/usr/lib/mailman/bin/mailman-update-cfg ExecStartPre=/bin/touch /var/lib/mailman/logs/error ExecStartPre=/bin/chown mailman:mailman /var/lib/mailman/logs/error ExecStartPre=/bin/chmod 660 /var/lib/mailman/logs/error ExecStart=/usr/lib/mailman/bin/mailmanctl -s start ExecReload=/usr/lib/mailman/bin/mailmanctl restart ExecStop=/usr/lib/mailman/bin/mailman-update-cfg ExecStop=/usr/lib/mailman/bin/mailmanctl stop Type=forking [Install] WantedBy=multi-user.target ++++++ reproducible.patch ++++++ --- /var/tmp/diff_new_pack.Sm6zOW/_old 2018-12-12 17:29:15.038818671 +0100 +++ /var/tmp/diff_new_pack.Sm6zOW/_new 2018-12-12 17:29:15.038818671 +0100 @@ -4,10 +4,8 @@ Based on https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=889637 -Index: mailman-2.1.26/configure -=================================================================== ---- mailman-2.1.26.orig/configure -+++ mailman-2.1.26/configure +--- a/configure ++++ b/configure @@ -2144,7 +2144,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu CONFIGURE_OPTS=`echo $@`