From e3492eff4675585a44c7034e6e7eda3a94a49fad Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Thu, 29 Aug 2019 18:37:20 +0200 Subject: mailman: build full paths to postmap and lynx into the package No more need to rely on $PATH. --- ...al-tools-via-PATH-rather-than-hard-coding.patch | 51 ---------------------- pkgs/servers/mail/mailman/core.nix | 11 +++-- 2 files changed, 8 insertions(+), 54 deletions(-) delete mode 100644 pkgs/servers/mail/mailman/0001-Find-external-tools-via-PATH-rather-than-hard-coding.patch (limited to 'pkgs/servers/mail/mailman') diff --git a/pkgs/servers/mail/mailman/0001-Find-external-tools-via-PATH-rather-than-hard-coding.patch b/pkgs/servers/mail/mailman/0001-Find-external-tools-via-PATH-rather-than-hard-coding.patch deleted file mode 100644 index b8a5476c055..00000000000 --- a/pkgs/servers/mail/mailman/0001-Find-external-tools-via-PATH-rather-than-hard-coding.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 47469af384a6d4a0877c76d3c52013b40ab61f04 Mon Sep 17 00:00:00 2001 -From: Peter Simons -Date: Mon, 26 Aug 2019 16:10:04 +0200 -Subject: [PATCH] Find external tools via $PATH rather than hard-coding - /usr/bin. - ---- - src/mailman/config/mhonarc.cfg | 2 +- - src/mailman/config/postfix.cfg | 2 +- - src/mailman/config/schema.cfg | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/mailman/config/mhonarc.cfg b/src/mailman/config/mhonarc.cfg -index b00f93aea..096e9521b 100644 ---- a/src/mailman/config/mhonarc.cfg -+++ b/src/mailman/config/mhonarc.cfg -@@ -24,4 +24,4 @@ base_url: http://$hostname/archives/$fqdn_listname - - # If the archiver works by calling a command on the local machine, this is the - # command to call. --command: /usr/bin/mhonarc -outdir /path/to/archive/$listname -add -+command: mhonarc -outdir /path/to/archive/$listname -add -diff --git a/src/mailman/config/postfix.cfg b/src/mailman/config/postfix.cfg -index cddda220a..934c9a977 100644 ---- a/src/mailman/config/postfix.cfg -+++ b/src/mailman/config/postfix.cfg -@@ -5,7 +5,7 @@ - # db file, from the associated plain text files. The file being updated will - # be appended to this string (with a separating space), so it must be - # appropriate for os.system(). --postmap_command: /usr/sbin/postmap -+postmap_command: postmap - - # This variable describes the type of transport maps that will be generated by - # mailman to be used with postfix for LMTP transport. By default, it is set to -diff --git a/src/mailman/config/schema.cfg b/src/mailman/config/schema.cfg -index fa06ccced..406999e13 100644 ---- a/src/mailman/config/schema.cfg -+++ b/src/mailman/config/schema.cfg -@@ -65,7 +65,7 @@ filtered_messages_are_preservable: no - # where the substitution variable $filename is filled in by Mailman, and - # contains the path to the temporary file that the command should read from. - # The command should print the converted text to stdout. --html_to_plain_text_command: /usr/bin/lynx -dump $filename -+html_to_plain_text_command: lynx -dump $filename - - # Specify what characters are allowed in list names. Characters outside of - # the class [-_.+=!$*{}~0-9a-z] matched case insensitively are never allowed, --- -2.22.0 - diff --git a/pkgs/servers/mail/mailman/core.nix b/pkgs/servers/mail/mailman/core.nix index fcd594270db..1ba220039ea 100644 --- a/pkgs/servers/mail/mailman/core.nix +++ b/pkgs/servers/mail/mailman/core.nix @@ -1,15 +1,13 @@ { stdenv, buildPythonPackage, fetchPypi, alembic, aiosmtpd, dnspython , flufl_bounce, flufl_i18n, flufl_lock, lazr_config, lazr_delegates, passlib , requests, zope_configuration, click, falcon, importlib-resources -, zope_component +, zope_component, lynx, postfix }: buildPythonPackage rec { pname = "mailman"; version = "3.2.2"; - patches = [ ./0001-Find-external-tools-via-PATH-rather-than-hard-coding.patch ]; - src = fetchPypi { inherit pname version; sha256 = "09s9p5pb8gff6zblwidyq830yfgcvv50p5drdaxj1qpy8w46lvc6"; @@ -21,6 +19,13 @@ buildPythonPackage rec { zope_component ]; + patchPhase = '' + 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. The proper way to use mailman is # to create a specialized python interpreter: -- cgit 1.4.1 From 131910992beecf518df8d2420750978d343d2e9c Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Fri, 30 Aug 2019 14:23:02 +0200 Subject: python-HyperKitty: initial version 1.2.2 Package the mail archiver for GNU Mailman. I liberally borrowed code from @globin's repository [1]. [1] https://github.com/mayflower/nixexprs/tree/master/pkgs/python --- pkgs/development/python-modules/cssmin/default.nix | 20 ++++++++++++ .../python-modules/django-paintstore/default.nix | 20 ++++++++++++ .../python-modules/django-q/default.nix | 24 ++++++++++++++ .../python-modules/robot-detection/default.nix | 22 +++++++++++++ pkgs/servers/mail/mailman/hyperkitty.nix | 38 ++++++++++++++++++++++ pkgs/top-level/python-packages.nix | 10 ++++++ 6 files changed, 134 insertions(+) create mode 100644 pkgs/development/python-modules/cssmin/default.nix create mode 100644 pkgs/development/python-modules/django-paintstore/default.nix create mode 100644 pkgs/development/python-modules/django-q/default.nix create mode 100644 pkgs/development/python-modules/robot-detection/default.nix create mode 100644 pkgs/servers/mail/mailman/hyperkitty.nix (limited to 'pkgs/servers/mail/mailman') diff --git a/pkgs/development/python-modules/cssmin/default.nix b/pkgs/development/python-modules/cssmin/default.nix new file mode 100644 index 00000000000..7cb01001fac --- /dev/null +++ b/pkgs/development/python-modules/cssmin/default.nix @@ -0,0 +1,20 @@ +{ stdenv, buildPythonPackage, fetchPypi }: + +buildPythonPackage rec { + pname = "cssmin"; + version = "0.2.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"; + }; + + # no tests + doCheck = false; + + meta = with stdenv.lib; { + description = "A Python port of the YUI CSS compression algorithm"; + homepage = http://github.com/zacharyvoase/cssmin; + license = licenses.bsd3; + }; +} diff --git a/pkgs/development/python-modules/django-paintstore/default.nix b/pkgs/development/python-modules/django-paintstore/default.nix new file mode 100644 index 00000000000..096215a70ab --- /dev/null +++ b/pkgs/development/python-modules/django-paintstore/default.nix @@ -0,0 +1,20 @@ +{ stdenv, buildPythonPackage, fetchPypi, requests, requests_oauthlib +, django, python3-openid }: + +buildPythonPackage rec { + pname = "django-paintstore"; + version = "0.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "12wxgwv1qbkfq7w5i7bm7aidv655c2sxp0ym73qf8606dxbjcwwg"; + }; + + doCheck = false; + + meta = with stdenv.lib; { + description = "Django app that integrates jQuery ColorPicker with the Django admin"; + homepage = https://github.com/gsiegman/django-paintstore; + license = licenses.mit; + }; +} diff --git a/pkgs/development/python-modules/django-q/default.nix b/pkgs/development/python-modules/django-q/default.nix new file mode 100644 index 00000000000..f671674ffe2 --- /dev/null +++ b/pkgs/development/python-modules/django-q/default.nix @@ -0,0 +1,24 @@ +{ stdenv, buildPythonPackage, fetchPypi, django-picklefield, arrow +, blessed, django, future }: + +buildPythonPackage rec { + pname = "django-q"; + version = "1.0.1"; + + src = fetchPypi { + inherit pname version; + sha256 = "17mqxiacsp2yszak6j48fm7vx0w44pcg86flc63r9y5yhx490n5r"; + }; + + propagatedBuildInputs = [ + django-picklefield arrow blessed django future + ]; + + doCheck = false; + + meta = with stdenv.lib; { + description = "A multiprocessing distributed task queue for Django"; + homepage = https://django-q.readthedocs.org; + license = licenses.mit; + }; +} diff --git a/pkgs/development/python-modules/robot-detection/default.nix b/pkgs/development/python-modules/robot-detection/default.nix new file mode 100644 index 00000000000..81428b44ad9 --- /dev/null +++ b/pkgs/development/python-modules/robot-detection/default.nix @@ -0,0 +1,22 @@ +{ stdenv, buildPythonPackage, fetchPypi, six }: + +buildPythonPackage rec { + pname = "robot-detection"; + version = "0.4"; + + src = fetchPypi { + inherit pname version; + sha256 = "1xd2jm3yn31bnk1kqzggils2rxj26ylxsfz3ap7bhr3ilhnbg3rx"; + }; + + propagatedBuildInputs = [ six ]; + + # no tests in archive + doCheck = false; + + meta = with stdenv.lib; { + description = "Library for detecting if a HTTP User Agent header is likely to be a bot"; + homepage = https://github.com/rory/robot-detection; + license = licenses.gpl3Plus; + }; +} diff --git a/pkgs/servers/mail/mailman/hyperkitty.nix b/pkgs/servers/mail/mailman/hyperkitty.nix new file mode 100644 index 00000000000..8f060da3446 --- /dev/null +++ b/pkgs/servers/mail/mailman/hyperkitty.nix @@ -0,0 +1,38 @@ +{ stdenv, buildPythonPackage, fetchPypi, coverage, mock +, robot-detection, django_extensions, rjsmin, cssmin, django-mailman3 +, django-haystack, lockfile, networkx, dateutil, defusedxml +, django-paintstore, djangorestframework, django, django-q +, django_compressor, beautifulsoup4, six, psycopg2, whoosh +}: + +buildPythonPackage rec { + pname = "HyperKitty"; + version = "1.2.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "1z2zswlml6nppxhzw9a4nrj7i5wsxd29s3q78ka1rwr5m5n7s1rz"; + }; + + buildInputs = [ coverage mock ]; + propagatedBuildInputs = [ + robot-detection django_extensions rjsmin cssmin django-mailman3 + django-haystack lockfile networkx dateutil defusedxml + django-paintstore djangorestframework django django-q + django_compressor beautifulsoup4 six psycopg2 whoosh + ]; + + checkPhase = '' + cd $NIX_BUILD_TOP/$sourceRoot + PYTHONPATH=.:$PYTHONPATH python example_project/manage.py test \ + --settings=hyperkitty.tests.settings_test hyperkitty + ''; + + meta = { + homepage = "http://www.gnu.org/software/mailman/"; + description = "Archiver for GNU Mailman v3"; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ peti globin ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e8dca7c924b..bdaae932f68 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2720,6 +2720,16 @@ in { sunpy = callPackage ../development/python-modules/sunpy { }; + hyperkitty = disabledIf (!isPy3k) (callPackage ../servers/mail/mailman/hyperkitty.nix { }); + + robot-detection = callPackage ../development/python-modules/robot-detection {}; + + cssmin = callPackage ../development/python-modules/cssmin {}; + + django-paintstore = callPackage ../development/python-modules/django-paintstore {}; + + django-q = callPackage ../development/python-modules/django-q {}; + hyperlink = callPackage ../development/python-modules/hyperlink {}; zope_copy = callPackage ../development/python-modules/zope_copy {}; -- cgit 1.4.1