nixpkgs/pkgs/servers/mail/mailman/package.nix
Alyssa Ross e161990d40 mailman: remove docutils input
In Nixpkgs, we currently have the strange situation where
pkgs.docutils (which was being used here) is on a different version
than pkgs.python3.pkgs.docutils (which is propagated from sphinx).
This led to a conflict here and a build failure.

Since we'd need to provide the same version as propagated by sphinx
anyway, let's just remove the explicit docutils check input and only
use the version propagated by sphinx, avoiding this kind of conflict
in future.

Fixes: 2312861130 ("docutils: 0.19 -> 0.20.1")
2023-08-31 14:18:22 +00:00

84 lines
2.1 KiB
Nix

{ lib
, fetchpatch
, python3
, fetchPypi
, sphinx
, postfix
, lynx
}:
with python3.pkgs;
buildPythonPackage rec {
pname = "mailman";
version = "3.3.8";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
hash = "sha256-g6wH7lXqK0yJ8AxO1HFxMvBicBJ9NGWlPePFyxl9Qc4=";
};
propagatedBuildInputs = with python3.pkgs; [
aiosmtpd
alembic
authheaders
click
dnspython
falcon
flufl_bounce
flufl_i18n
flufl_lock
gunicorn
importlib-resources
lazr_config
passlib
requests
sqlalchemy
zope-component
zope_configuration
];
checkInputs = [
sphinx
];
patches = [
(fetchpatch {
url = "https://gitlab.com/mailman/mailman/-/commit/4b206e2a5267a0e17f345fd7b2d957122ba57566.patch";
sha256 = "06axmrn74p81wvcki36c7gfj5fp5q15zxz2yl3lrvijic7hbs4n2";
})
(fetchpatch {
url = "https://gitlab.com/mailman/mailman/-/commit/9613154f3c04fa2383fbf017031ef263c291418d.patch";
sha256 = "0vyw87s857vfxbf7kihwb6w094xyxmxbi1bpdqi3ybjamjycp55r";
})
./log-stderr.patch
];
postPatch = ''
substituteInPlace setup.py \
--replace "alembic>=1.6.2,<1.7" "alembic>=1.6.2"
substituteInPlace src/mailman/config/postfix.cfg \
--replace /usr/sbin/postmap ${postfix}/bin/postmap
substituteInPlace src/mailman/config/schema.cfg \
--replace /usr/bin/lynx ${lynx}/bin/lynx
'';
# Mailman assumes that those scripts in $out/bin are Python scripts. Wrapping
# them in shell code breaks this assumption. Use the wrapped version (see
# wrapped.nix) if you need the CLI (rather than the Python library).
#
# This gives a properly wrapped 'mailman' command plus an interpreter that
# has all the necessary search paths to execute unwrapped 'master' and
# 'runner' scripts.
dontWrapPythonPrograms = true;
meta = {
homepage = "https://www.gnu.org/software/mailman/";
description = "Free software for managing electronic mail discussion and newsletter lists";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ qyliss ma27 ];
};
}