From bbff4aa072b77a22fbbeb1d47652b79367385ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Thu, 30 Dec 2021 17:33:20 +0000 Subject: [PATCH 1/4] python3Packages.pysearpc: use correct Python version (cherry picked from commit 14ded1fd6f37bc3846ecfb3659148f9185910412) --- .../libraries/libsearpc/default.nix | 27 +++++++++++++++---- pkgs/top-level/python-packages.nix | 4 ++- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/pkgs/development/libraries/libsearpc/default.nix b/pkgs/development/libraries/libsearpc/default.nix index 199ae0b685cf..bbd892c33ee8 100644 --- a/pkgs/development/libraries/libsearpc/default.nix +++ b/pkgs/development/libraries/libsearpc/default.nix @@ -1,5 +1,12 @@ -{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, python3Packages -, glib, jansson }: +{ lib +, stdenv +, fetchFromGitHub +, autoreconfHook +, pkg-config +, python3 +, glib +, jansson +}: stdenv.mkDerivation rec { version = "3.2.0"; @@ -12,9 +19,19 @@ stdenv.mkDerivation rec { sha256 = "18i5zvrp6dv6vygxx5nc93mai2p2x786n5lnf5avrin6xiz2j6hd"; }; - nativeBuildInputs = [ autoreconfHook pkg-config ]; - buildInputs = with python3Packages; [ python simplejson ]; - propagatedBuildInputs = [ glib jansson ]; + nativeBuildInputs = [ + autoreconfHook + pkg-config + ]; + + buildInputs = [ + python3 + ]; + + propagatedBuildInputs = [ + glib + jansson + ]; meta = with lib; { homepage = "https://github.com/haiwen/libsearpc"; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4cd67fbbba56..b81ec0c7273d 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7132,7 +7132,9 @@ in { pysdl2 = callPackage ../development/python-modules/pysdl2 { }; - pysearpc = toPythonModule pkgs.libsearpc; + pysearpc = toPythonModule (pkgs.libsearpc.override { + python3 = self.python; + }); pysecuritas = callPackage ../development/python-modules/pysecuritas { }; From 61f39604d0ec77f46a0b3538590cb3e064f977d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Fri, 31 Dec 2021 10:48:48 +0000 Subject: [PATCH 2/4] python3Packages.seaserv: use correct Python version (cherry picked from commit 23b5627b7a5f859ecadcab7087763cceb31694ef) --- pkgs/servers/seafile-server/default.nix | 4 ++-- pkgs/top-level/python-packages.nix | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/servers/seafile-server/default.nix b/pkgs/servers/seafile-server/default.nix index d60dd7809913..464c808bac06 100644 --- a/pkgs/servers/seafile-server/default.nix +++ b/pkgs/servers/seafile-server/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, pkg-config, python3Packages, autoreconfHook +{ stdenv, lib, fetchFromGitHub, pkg-config, python3, autoreconfHook , libuuid, sqlite, glib, libevent, libsearpc, openssl, fuse, libarchive, which , vala, cmake, oniguruma }: @@ -28,7 +28,7 @@ in stdenv.mkDerivation rec { glib libsearpc libevent - python3Packages.python + python3 fuse libarchive which diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b81ec0c7273d..725e3e46dfc0 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8523,7 +8523,9 @@ in { seahub = callPackage ../development/python-modules/seahub { }; - seaserv = toPythonModule pkgs.seafile-server; + seaserv = toPythonModule (pkgs.seafile-server.override { + python3 = self.python; + }); seccomp = callPackage ../development/python-modules/seccomp { }; From b07e43801f3c64b9aa76863a2675d878430b5140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Fri, 31 Dec 2021 10:51:34 +0000 Subject: [PATCH 3/4] python3Packages.seahub: remove It is not a Python module. (cherry picked from commit f081decbac6975ccec6e5130a915dea46bdcbc61) --- .../python-modules/seahub/default.nix | 56 ------------------- pkgs/top-level/python-packages.nix | 2 - 2 files changed, 58 deletions(-) delete mode 100644 pkgs/development/python-modules/seahub/default.nix diff --git a/pkgs/development/python-modules/seahub/default.nix b/pkgs/development/python-modules/seahub/default.nix deleted file mode 100644 index 81728dfe7864..000000000000 --- a/pkgs/development/python-modules/seahub/default.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ lib, fetchFromGitHub, python3Packages, makeWrapper }: - -python3Packages.buildPythonPackage rec { - pname = "seahub"; - version = "8.0.7"; - - src = fetchFromGitHub { - owner = "haiwen"; - repo = "seahub"; - rev = "4f7bb3f617dd847cf0a6b33c0bfb567b44c06059"; # using a fixed revision because upstream may re-tag releases :/ - sha256 = "09d05sxly1bljxxzm77limhwsbg8c4b54fzv3kmaih59pjnjyr03"; - }; - - dontBuild = true; - doCheck = false; # disabled because it requires a ccnet environment - - nativeBuildInputs = [ makeWrapper ]; - - propagatedBuildInputs = with python3Packages; [ - django - future - django-statici18n - django-webpack-loader - django-simple-captcha - django-picklefield - django-formtools - mysqlclient - pillow - python-dateutil - django_compressor - djangorestframework - openpyxl - requests - requests_oauthlib - pyjwt - pycryptodome - qrcode - pysearpc - seaserv - ]; - - installPhase = '' - cp -dr --no-preserve='ownership' . $out/ - wrapProgram $out/manage.py \ - --prefix PYTHONPATH : "$PYTHONPATH:$out/thirdpart:" \ - --prefix PATH : "${python3Packages.python}/bin" - ''; - - meta = with lib; { - homepage = "https://github.com/haiwen/seahub"; - description = "The web end of seafile server"; - license = licenses.asl20; - platforms = platforms.linux; - maintainers = with maintainers; [ greizgh schmittlauch ]; - }; -} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 725e3e46dfc0..5498e91626f4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8521,8 +8521,6 @@ in { seabreeze = callPackage ../development/python-modules/seabreeze { }; - seahub = callPackage ../development/python-modules/seahub { }; - seaserv = toPythonModule (pkgs.seafile-server.override { python3 = self.python; }); From cfbbb9133c397411e7054a935caa1685d6906244 Mon Sep 17 00:00:00 2001 From: Greizgh Date: Mon, 3 Jan 2022 21:17:46 +0100 Subject: [PATCH 4/4] seahub: init at 8.0.8 (cherry picked from commit 4094fcb66f551c5eeb56618138149be5adcb5f54) --- nixos/modules/services/networking/seafile.nix | 30 ++++---- .../networking/seahub/default.nix | 74 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 pkgs/applications/networking/seahub/default.nix diff --git a/nixos/modules/services/networking/seafile.nix b/nixos/modules/services/networking/seafile.nix index 856797b6b020..199eeb628ceb 100644 --- a/nixos/modules/services/networking/seafile.nix +++ b/nixos/modules/services/networking/seafile.nix @@ -1,7 +1,6 @@ { config, lib, pkgs, ... }: with lib; let - python = pkgs.python3Packages.python; cfg = config.services.seafile; settingsFormat = pkgs.formats.ini { }; @@ -220,9 +219,7 @@ in { ''; }; - seahub = let - penv = (pkgs.python3.withPackages (ps: with ps; [ gunicorn seahub ])); - in { + seahub = { description = "Seafile Server Web Frontend"; wantedBy = [ "seafile.target" ]; partOf = [ "seafile.target" ]; @@ -230,8 +227,7 @@ in { requires = [ "seaf-server.service" ]; restartTriggers = [ seahubSettings ]; environment = { - PYTHONPATH = - "${pkgs.python3Packages.seahub}/thirdpart:${pkgs.python3Packages.seahub}:${penv}/${python.sitePackages}"; + PYTHONPATH = "${pkgs.seahub.pythonPath}:${pkgs.seahub}/thirdpart:${pkgs.seahub}"; DJANGO_SETTINGS_MODULE = "seahub.settings"; CCNET_CONF_DIR = ccnetDir; SEAFILE_CONF_DIR = dataDir; @@ -248,7 +244,7 @@ in { LogsDirectory = "seafile"; ConfigurationDirectory = "seafile"; ExecStart = '' - ${penv}/bin/gunicorn seahub.wsgi:application \ + ${pkgs.seahub.python.pkgs.gunicorn}/bin/gunicorn seahub.wsgi:application \ --name seahub \ --workers ${toString cfg.workers} \ --log-level=info \ @@ -261,27 +257,27 @@ in { preStart = '' mkdir -p ${seahubDir}/media # Link all media except avatars - for m in `find ${pkgs.python3Packages.seahub}/media/ -maxdepth 1 -not -name "avatars"`; do + for m in `find ${pkgs.seahub}/media/ -maxdepth 1 -not -name "avatars"`; do ln -sf $m ${seahubDir}/media/ done if [ ! -e "${seafRoot}/.seahubSecret" ]; then - ${penv}/bin/python ${pkgs.python3Packages.seahub}/tools/secret_key_generator.py > ${seafRoot}/.seahubSecret + ${pkgs.seahub.python}/bin/python ${pkgs.seahub}/tools/secret_key_generator.py > ${seafRoot}/.seahubSecret chmod 400 ${seafRoot}/.seahubSecret fi if [ ! -f "${seafRoot}/seahub-setup" ]; then # avatars directory should be writable - install -D -t ${seahubDir}/media/avatars/ ${pkgs.python3Packages.seahub}/media/avatars/default.png - install -D -t ${seahubDir}/media/avatars/groups ${pkgs.python3Packages.seahub}/media/avatars/groups/default.png + install -D -t ${seahubDir}/media/avatars/ ${pkgs.seahub}/media/avatars/default.png + install -D -t ${seahubDir}/media/avatars/groups ${pkgs.seahub}/media/avatars/groups/default.png # init database - ${pkgs.python3Packages.seahub}/manage.py migrate + ${pkgs.seahub}/manage.py migrate # create admin account - ${pkgs.expect}/bin/expect -c 'spawn ${pkgs.python3Packages.seahub}/manage.py createsuperuser --email=${cfg.adminEmail}; expect "Password: "; send "${cfg.initialAdminPassword}\r"; expect "Password (again): "; send "${cfg.initialAdminPassword}\r"; expect "Superuser created successfully."' - echo "${pkgs.python3Packages.seahub.version}-sqlite" > "${seafRoot}/seahub-setup" + ${pkgs.expect}/bin/expect -c 'spawn ${pkgs.seahub}/manage.py createsuperuser --email=${cfg.adminEmail}; expect "Password: "; send "${cfg.initialAdminPassword}\r"; expect "Password (again): "; send "${cfg.initialAdminPassword}\r"; expect "Superuser created successfully."' + echo "${pkgs.seahub.version}-sqlite" > "${seafRoot}/seahub-setup" fi - if [ $(cat "${seafRoot}/seahub-setup" | cut -d"-" -f1) != "${pkgs.python3Packages.seahub.version}" ]; then + if [ $(cat "${seafRoot}/seahub-setup" | cut -d"-" -f1) != "${pkgs.seahub.version}" ]; then # update database - ${pkgs.python3Packages.seahub}/manage.py migrate - echo "${pkgs.python3Packages.seahub.version}-sqlite" > "${seafRoot}/seahub-setup" + ${pkgs.seahub}/manage.py migrate + echo "${pkgs.seahub.version}-sqlite" > "${seafRoot}/seahub-setup" fi ''; }; diff --git a/pkgs/applications/networking/seahub/default.nix b/pkgs/applications/networking/seahub/default.nix new file mode 100644 index 000000000000..8c26b7290836 --- /dev/null +++ b/pkgs/applications/networking/seahub/default.nix @@ -0,0 +1,74 @@ +{ lib, fetchFromGitHub, python3, makeWrapper }: +let + # Seahub 8.x.x does not support django-webpack-loader >=1.x.x + python = python3.override { + packageOverrides = self: super: { + django-webpack-loader = super.django-webpack-loader.overridePythonAttrs (old: rec { + version = "0.7.0"; + src = old.src.override { + inherit version; + sha256 = "0izl6bibhz3v538ad5hl13lfr6kvprf62rcl77wq2i5538h8hg3s"; + }; + }); + }; + }; +in +python.pkgs.buildPythonApplication rec { + pname = "seahub"; + version = "8.0.8"; + + src = fetchFromGitHub { + owner = "haiwen"; + repo = "seahub"; + rev = "c51346155b2f31e038c3a2a12e69dcc6665502e2"; # using a fixed revision because upstream may re-tag releases :/ + sha256 = "0dagiifxllfk73xdzfw2g378jccpzplhdrmkwbaakbhgbvvkg92k"; + }; + + dontBuild = true; + doCheck = false; # disabled because it requires a ccnet environment + + nativeBuildInputs = [ makeWrapper ]; + + propagatedBuildInputs = with python.pkgs; [ + django + future + django-statici18n + django-webpack-loader + django-simple-captcha + django-picklefield + django-formtools + mysqlclient + pillow + python-dateutil + django_compressor + djangorestframework + openpyxl + requests + requests_oauthlib + pyjwt + pycryptodome + qrcode + pysearpc + seaserv + gunicorn + ]; + + installPhase = '' + cp -dr --no-preserve='ownership' . $out/ + wrapProgram $out/manage.py \ + --prefix PYTHONPATH : "$PYTHONPATH:$out/thirdpart:" + ''; + + passthru = { + inherit python; + pythonPath = python3.pkgs.makePythonPath propagatedBuildInputs; + }; + + meta = with lib; { + homepage = "https://github.com/haiwen/seahub"; + description = "The web end of seafile server"; + license = licenses.asl20; + platforms = platforms.linux; + maintainers = with maintainers; [ greizgh schmittlauch ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 04db63d0fd62..5fdbb2b494b0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -28079,6 +28079,8 @@ with pkgs; seafile-client = libsForQt5.callPackage ../applications/networking/seafile-client { }; + seahub = callPackage ../applications/networking/seahub { }; + seatd = callPackage ../applications/misc/seatd { }; secretscanner = callPackage ../tools/security/secretscanner { };