summary refs log tree commit diff
diff options
context:
space:
mode:
authorPol Dellaiera <pol.dellaiera@protonmail.com>2023-08-01 12:12:24 +0200
committerGitHub <noreply@github.com>2023-08-01 12:12:24 +0200
commit025b5d48756828c1beec7a55b0007d62dd390c2c (patch)
treec9b1010584219b084aca34d238dab2c670102059
parent871bf7c87545eeaf67d594d14f33f8bfc18674ac (diff)
parent77829e4496d188c93909e2dcfa68e092afaddb97 (diff)
downloadnixpkgs-025b5d48756828c1beec7a55b0007d62dd390c2c.tar
nixpkgs-025b5d48756828c1beec7a55b0007d62dd390c2c.tar.gz
nixpkgs-025b5d48756828c1beec7a55b0007d62dd390c2c.tar.bz2
nixpkgs-025b5d48756828c1beec7a55b0007d62dd390c2c.tar.lz
nixpkgs-025b5d48756828c1beec7a55b0007d62dd390c2c.tar.xz
nixpkgs-025b5d48756828c1beec7a55b0007d62dd390c2c.tar.zst
nixpkgs-025b5d48756828c1beec7a55b0007d62dd390c2c.zip
Merge pull request #246329 from gdamjan/bump-uwsgi
uwsgi: 2.0.21 -> 2.0.22
-rw-r--r--pkgs/servers/uwsgi/default.nix186
1 files changed, 105 insertions, 81 deletions
diff --git a/pkgs/servers/uwsgi/default.nix b/pkgs/servers/uwsgi/default.nix
index 0a9ff0bcc1a..acf4b075162 100644
--- a/pkgs/servers/uwsgi/default.nix
+++ b/pkgs/servers/uwsgi/default.nix
@@ -1,5 +1,12 @@
-{ stdenv, nixosTests, lib, pkg-config, jansson, pcre, libxcrypt
-, expat, zlib
+{ stdenv
+, nixosTests
+, lib
+, pkg-config
+, jansson
+, pcre
+, libxcrypt
+, expat
+, zlib
 # plugins: list of strings, eg. [ "python2" "python3" ]
 , plugins ? []
 , pam, withPAM ? stdenv.isLinux
@@ -10,90 +17,97 @@
 , makeWrapper, fetchFromGitHub
 }:
 
-let php-embed = php.override {
-      embedSupport = true;
-      apxs2Support = false;
-    };
-
-    pythonPlugin = pkg : lib.nameValuePair "python${if pkg.isPy2 then "2" else "3"}" {
-                           interpreter = pkg.pythonForBuild.interpreter;
-                           path = "plugins/python";
-                           inputs = [ pkg ncurses ];
-                           install = ''
-                             install -Dm644 uwsgidecorators.py $out/${pkg.sitePackages}/uwsgidecorators.py
-                             ${pkg.pythonForBuild.executable} -m compileall $out/${pkg.sitePackages}/
-                             ${pkg.pythonForBuild.executable} -O -m compileall $out/${pkg.sitePackages}/
-                           '';
-                         };
-
-    available = lib.listToAttrs [
-                  (pythonPlugin python2)
-                  (pythonPlugin python3)
-                  (lib.nameValuePair "rack" {
-                    path = "plugins/rack";
-                    inputs = [ ruby ];
-                  })
-                  (lib.nameValuePair "cgi" {
-                    # usage: https://uwsgi-docs.readthedocs.io/en/latest/CGI.html?highlight=cgi
-                    path = "plugins/cgi";
-                    inputs = [ ];
-                  })
-                  (lib.nameValuePair "php" {
-                    # usage: https://uwsgi-docs.readthedocs.io/en/latest/PHP.html#running-php-apps-with-nginx
-                    path = "plugins/php";
-                    inputs = [
-                        php-embed
-                        php-embed.extensions.session
-                        php-embed.extensions.session.dev
-                        php-embed.unwrapped.dev
-                    ] ++ php-embed.unwrapped.buildInputs;
-                  })
-                ];
-
-    getPlugin = name:
-      let all = lib.concatStringsSep ", " (lib.attrNames available);
-      in if lib.hasAttr name available
-         then lib.getAttr name available // { inherit name; }
-         else throw "Unknown UWSGI plugin ${name}, available : ${all}";
-
-    needed = builtins.map getPlugin plugins;
+let
+  php-embed = php.override {
+    embedSupport = true;
+    apxs2Support = false;
+  };
+
+  pythonPlugin = pkg : lib.nameValuePair "python${if pkg.isPy2 then "2" else "3"}" {
+    interpreter = pkg.pythonForBuild.interpreter;
+    path = "plugins/python";
+    inputs = [ pkg ncurses ];
+    install = ''
+      install -Dm644 uwsgidecorators.py $out/${pkg.sitePackages}/uwsgidecorators.py
+      ${pkg.pythonForBuild.executable} -m compileall $out/${pkg.sitePackages}/
+      ${pkg.pythonForBuild.executable} -O -m compileall $out/${pkg.sitePackages}/
+    '';
+  };
+
+  available = lib.listToAttrs [
+    (pythonPlugin python2)
+    (pythonPlugin python3)
+    (lib.nameValuePair "rack" {
+      path = "plugins/rack";
+      inputs = [ ruby ];
+    })
+    (lib.nameValuePair "cgi" {
+      # usage: https://uwsgi-docs.readthedocs.io/en/latest/CGI.html?highlight=cgi
+      path = "plugins/cgi";
+      inputs = [ ];
+    })
+    (lib.nameValuePair "php" {
+      # usage: https://uwsgi-docs.readthedocs.io/en/latest/PHP.html#running-php-apps-with-nginx
+      path = "plugins/php";
+      inputs = [
+          php-embed
+          php-embed.extensions.session
+          php-embed.extensions.session.dev
+          php-embed.unwrapped.dev
+      ] ++ php-embed.unwrapped.buildInputs;
+    })
+  ];
+
+  getPlugin = name:
+    let
+      all = lib.concatStringsSep ", " (lib.attrNames available);
+    in
+      if lib.hasAttr name available
+      then lib.getAttr name available // { inherit name; }
+      else throw "Unknown UWSGI plugin ${name}, available : ${all}";
+
+  needed = builtins.map getPlugin plugins;
 in
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "uwsgi";
-  version = "2.0.21";
+  version = "2.0.22";
 
   src = fetchFromGitHub {
     owner = "unbit";
     repo = "uwsgi";
-    rev = version;
-    sha256 = "sha256-TUASYDyG+p1tlhmqi+ivaC7aW6UZBrPTFQUTYys5ICE=";
+    rev = finalAttrs.version;
+    hash = "sha256-pfy3EDXq3KVY2mC3BMAp/87IUiP4NhdTWZo+zVBJ+Pc=";
   };
 
   patches = [
-        ./no-ext-session-php_session.h-on-NixOS.patch
-        ./additional-php-ldflags.patch
+    ./no-ext-session-php_session.h-on-NixOS.patch
+    ./additional-php-ldflags.patch
   ];
 
-  nativeBuildInputs = [ python3 pkg-config makeWrapper ];
+  nativeBuildInputs = [
+    makeWrapper
+    pkg-config
+    python3
+  ];
 
   buildInputs =  [ jansson pcre libxcrypt ]
-              ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ expat zlib ]
-              ++ lib.optional withPAM pam
-              ++ lib.optional withSystemd systemd
-              ++ lib.optional withCap libcap
-              ++ lib.concatMap (x: x.inputs) needed
-              ;
+    ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ expat zlib ]
+    ++ lib.optional withPAM pam
+    ++ lib.optional withSystemd systemd
+    ++ lib.optional withCap libcap
+    ++ lib.concatMap (x: x.inputs) needed;
 
   basePlugins =  lib.concatStringsSep ","
-                 (  lib.optional withPAM "pam"
-                 ++ lib.optional withSystemd "systemd_logger"
-                 );
+    (  lib.optional withPAM "pam"
+    ++ lib.optional withSystemd "systemd_logger"
+    );
 
   UWSGI_INCLUDES = lib.optionalString withCap "${libcap.dev}/include";
 
   passthru = {
     inherit python2 python3;
+    tests.uwsgi = nixosTests.uwsgi;
   };
 
   postPatch = ''
@@ -105,29 +119,42 @@ stdenv.mkDerivation rec {
   '';
 
   configurePhase = ''
+    runHook preConfigure
+
     export pluginDir=$out/lib/uwsgi
     substituteAll ${./nixos.ini} buildconf/nixos.ini
+
+    runHook postConfigure
   '';
 
   # this is a hack to make the php plugin link with session.so (which on nixos is a separate package)
   # the hack works in coordination with ./additional-php-ldflags.patch
-  UWSGICONFIG_PHP_LDFLAGS = lib.optionalString (builtins.any (x: x.name == "php") needed)
-        (lib.concatStringsSep "," [
-            "-Wl"
-            "-rpath=${php-embed.extensions.session}/lib/php/extensions/"
-            "--library-path=${php-embed.extensions.session}/lib/php/extensions/"
-            "-l:session.so"
-        ]);
+  UWSGICONFIG_PHP_LDFLAGS = lib.optionalString
+    (builtins.any (x: x.name == "php") needed)
+    (lib.concatStringsSep "," [
+      "-Wl"
+      "-rpath=${php-embed.extensions.session}/lib/php/extensions/"
+      "--library-path=${php-embed.extensions.session}/lib/php/extensions/"
+      "-l:session.so"
+    ]);
 
   buildPhase = ''
+    runHook preBuild
+
     mkdir -p $pluginDir
     python3 uwsgiconfig.py --build nixos
     ${lib.concatMapStringsSep ";" (x: "${x.preBuild or ""}\n ${x.interpreter or "python3"} uwsgiconfig.py --plugin ${x.path} nixos ${x.name}") needed}
+
+    runHook postBuild
   '';
 
   installPhase = ''
+    runHook preInstall
+
     install -Dm755 uwsgi $out/bin/uwsgi
     ${lib.concatMapStringsSep "\n" (x: x.install or "") needed}
+
+    runHook postInstall
   '';
 
   postFixup = lib.optionalString (builtins.any (x: x.name == "php") needed)
@@ -135,14 +162,11 @@ stdenv.mkDerivation rec {
     wrapProgram $out/bin/uwsgi --set PHP_INI_SCAN_DIR ${php-embed}/lib
   '';
 
-  meta = with lib; {
-    homepage = "https://uwsgi-docs.readthedocs.org/en/latest/";
+  meta = {
     description = "A fast, self-healing and developer/sysadmin-friendly application container server coded in pure C";
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ abbradar schneefux globin ];
-    platforms = platforms.unix;
+    homepage = "https://uwsgi-docs.readthedocs.org/en/latest/";
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ abbradar schneefux globin ];
+    platforms = lib.platforms.unix;
   };
-
-  passthru.tests.uwsgi = nixosTests.uwsgi;
-
-}
+})