From fb6fb89c6fee68ec25b7de4b3378553d31e772de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sat, 20 Jun 2020 13:18:53 +0200 Subject: [PATCH 1/3] radicale2: 2.1.11 -> 2.1.12 --- pkgs/servers/radicale/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/radicale/default.nix b/pkgs/servers/radicale/default.nix index fc98795bbc7..8d36717ec69 100644 --- a/pkgs/servers/radicale/default.nix +++ b/pkgs/servers/radicale/default.nix @@ -2,14 +2,14 @@ python3.pkgs.buildPythonApplication rec { pname = "Radicale"; - version = "2.1.11"; + version = "2.1.12"; # No tests in PyPI tarball src = fetchFromGitHub { owner = "Kozea"; repo = "Radicale"; rev = version; - sha256 = "1k32iy55lnyyp1r75clarhwdqvw6w8mxb5v0l5aysga07fg2mix4"; + sha256 = "14f9ql0fiwapaa4xaslwgk1ah9fzxxan2p1p2rxb4a5iqph1z0cl"; }; # We only want functional tests @@ -31,7 +31,7 @@ python3.pkgs.buildPythonApplication rec { ]; meta = with stdenv.lib; { - homepage = "https://www.radicale.org/"; + homepage = "https://www.radicale.org/2.x.nix"; description = "CalDAV CardDAV server"; longDescription = '' The Radicale Project is a complete CalDAV (calendar) and CardDAV From 45bf7757c0a3f810ce23e8346028bdfd2bb11c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sat, 20 Jun 2020 14:18:58 +0200 Subject: [PATCH 2/3] radicale3: init at 3.0.3 --- .../servers/radicale/{default.nix => 2.x.nix} | 0 pkgs/servers/radicale/3.x.nix | 38 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 ++- 3 files changed, 41 insertions(+), 2 deletions(-) rename pkgs/servers/radicale/{default.nix => 2.x.nix} (100%) create mode 100644 pkgs/servers/radicale/3.x.nix diff --git a/pkgs/servers/radicale/default.nix b/pkgs/servers/radicale/2.x.nix similarity index 100% rename from pkgs/servers/radicale/default.nix rename to pkgs/servers/radicale/2.x.nix diff --git a/pkgs/servers/radicale/3.x.nix b/pkgs/servers/radicale/3.x.nix new file mode 100644 index 00000000000..7b42bd3be34 --- /dev/null +++ b/pkgs/servers/radicale/3.x.nix @@ -0,0 +1,38 @@ +{ lib, python3, fetchFromGitHub }: + +python3.pkgs.buildPythonApplication rec { + pname = "radicale"; + version = "3.0.3"; + + # No tests in PyPI tarball + src = fetchFromGitHub { + owner = "Kozea"; + repo = "Radicale"; + rev = version; + sha256 = "170mqxlnfzx15img4wb71axq9cnxwllk5cabsv8i008q7wyjqp0n"; + }; + + propagatedBuildInputs = with python3.pkgs; [ + defusedxml + passlib + vobject + python-dateutil + setuptools + ]; + + checkInputs = with python3.pkgs; [ + pytestrunner + pytest + pytestcov + pytest-flake8 + pytest-isort + waitress + ]; + + meta = with lib; { + homepage = "https://www.radicale.org/3.0.html"; + description = "CalDAV and CardDAV server"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ dotlambda ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6d380d480e3..0dce5ceb139 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16302,9 +16302,10 @@ in }; radicale1 = callPackage ../servers/radicale/1.x.nix { }; - radicale2 = callPackage ../servers/radicale { }; + radicale2 = callPackage ../servers/radicale/2.x.nix { }; + radicale3 = callPackage ../servers/radicale/3.x.nix { }; - radicale = radicale2; + radicale = radicale3; rake = callPackage ../development/tools/build-managers/rake { }; From d77fb3729dbad2a38e36d3b5726813866f43b545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sat, 20 Jun 2020 14:30:33 +0200 Subject: [PATCH 3/3] nixos/radicale: use radicale3 --- nixos/doc/manual/release-notes/rl-2009.xml | 10 +++++++ .../modules/services/networking/radicale.nix | 11 +++++--- nixos/tests/radicale.nix | 28 +++++++++++++++---- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-2009.xml b/nixos/doc/manual/release-notes/rl-2009.xml index a0a0b2cb40e..d830d5eff03 100644 --- a/nixos/doc/manual/release-notes/rl-2009.xml +++ b/nixos/doc/manual/release-notes/rl-2009.xml @@ -495,6 +495,16 @@ systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/www" ]; In the resilio module, has been changed to listen to [::1] instead of 0.0.0.0. + + + Radicale's default package has changed from 2.x to 3.x. An upgrade + checklist can be found + here. + You can use the newer version in the NixOS service by setting the + package to radicale3, which is done + automatically if stateVersion is 20.09 or higher. + + diff --git a/nixos/modules/services/networking/radicale.nix b/nixos/modules/services/networking/radicale.nix index 30bf22586f8..5af035fd59e 100644 --- a/nixos/modules/services/networking/radicale.nix +++ b/nixos/modules/services/networking/radicale.nix @@ -8,8 +8,10 @@ let confFile = pkgs.writeText "radicale.conf" cfg.config; - # This enables us to default to version 2 while still not breaking configurations of people with version 1 - defaultPackage = if versionAtLeast config.system.stateVersion "17.09" then { + defaultPackage = if versionAtLeast config.system.stateVersion "20.09" then { + pkg = pkgs.radicale3; + text = "pkgs.radicale3"; + } else if versionAtLeast config.system.stateVersion "17.09" then { pkg = pkgs.radicale2; text = "pkgs.radicale2"; } else { @@ -35,8 +37,9 @@ in defaultText = defaultPackage.text; description = '' Radicale package to use. This defaults to version 1.x if - system.stateVersion < 17.09 and version 2.x - otherwise. + system.stateVersion < 17.09, version 2.x if + 17.09 ≤ system.stateVersion < 20.09, and + version 3.x otherwise. ''; }; diff --git a/nixos/tests/radicale.nix b/nixos/tests/radicale.nix index c81e78a8f99..1d3679c82a2 100644 --- a/nixos/tests/radicale.nix +++ b/nixos/tests/radicale.nix @@ -14,9 +14,6 @@ let [storage] filesystem_folder = /tmp/collections - - [logging] - debug = True ''; }; # WARNING: DON'T DO THIS IN PRODUCTION! @@ -49,13 +46,18 @@ in services.radicale.extraArgs = [ "--export-storage" "/tmp/collections-new" ]; + system.stateVersion = "17.03"; }; radicale2_verify = lib.recursiveUpdate radicale2 { - services.radicale.extraArgs = [ "--verify-storage" ]; + services.radicale.extraArgs = [ "--debug" "--verify-storage" ]; + system.stateVersion = "17.09"; }; radicale2 = lib.recursiveUpdate (common args) { system.stateVersion = "17.09"; }; + radicale3 = lib.recursiveUpdate (common args) { + system.stateVersion = "20.09"; + }; }; # This tests whether the web interface is accessible to an authenticated user @@ -117,6 +119,22 @@ in retcode == 0 and "VCALENDAR" in output ), "Could not read calendar from Radicale 2" - radicale.succeed("curl --fail http://${user}:${password}@localhost:${port}/.web/") + radicale.succeed("curl --fail http://${user}:${password}@localhost:${port}/.web/") + + with subtest("Check Radicale 3 functionality"): + radicale.succeed( + "${switchToConfig "radicale3"} >&2" + ) + radicale.wait_for_unit("radicale.service") + radicale.wait_for_open_port(${port}) + + (retcode, output) = radicale.execute( + "curl --fail http://${user}:${password}@localhost:${port}/someuser/calendar.ics/" + ) + assert ( + retcode == 0 and "VCALENDAR" in output + ), "Could not read calendar from Radicale 3" + + radicale.succeed("curl --fail http://${user}:${password}@localhost:${port}/.web/") ''; })