summary refs log tree commit diff
path: root/pkgs/servers/uwsgi/default.nix
diff options
context:
space:
mode:
authorДамјан Георгиевски <gdamjan@gmail.com>2020-09-09 12:51:40 +0200
committerДамјан Георгиевски <gdamjan@gmail.com>2020-12-21 16:50:54 +0100
commit22e8804308ff8e328f9f17210573a8a66c3b9a3f (patch)
treecba7f258b6c6dabdb57e3fbd145ac0f434197f21 /pkgs/servers/uwsgi/default.nix
parentfd018e990b57b7decf495ee783f8875befed6acc (diff)
downloadnixpkgs-22e8804308ff8e328f9f17210573a8a66c3b9a3f.tar
nixpkgs-22e8804308ff8e328f9f17210573a8a66c3b9a3f.tar.gz
nixpkgs-22e8804308ff8e328f9f17210573a8a66c3b9a3f.tar.bz2
nixpkgs-22e8804308ff8e328f9f17210573a8a66c3b9a3f.tar.lz
nixpkgs-22e8804308ff8e328f9f17210573a8a66c3b9a3f.tar.xz
nixpkgs-22e8804308ff8e328f9f17210573a8a66c3b9a3f.tar.zst
nixpkgs-22e8804308ff8e328f9f17210573a8a66c3b9a3f.zip
uwsgi: the php plugin needs to link with session.so
On NixOS the session.so php extension is a separate package (and not builtin
in libphp.so). But since the uwsgi php plugin uses the session
mechanisms, we need to link the plugin to that library too.

With this change uwsgipluginpy is hacked to take an additional UWSGICONFIG_PHP_LDFLAGS
environment variable and add it to its LDFLAGS, and then in the nix
expression the UWSGICONFIG_PHP_LDFLAGS is set to point to php.extensions.session
Diffstat (limited to 'pkgs/servers/uwsgi/default.nix')
-rw-r--r--pkgs/servers/uwsgi/default.nix15
1 files changed, 14 insertions, 1 deletions
diff --git a/pkgs/servers/uwsgi/default.nix b/pkgs/servers/uwsgi/default.nix
index bb2742ecba8..cf69d76bd1a 100644
--- a/pkgs/servers/uwsgi/default.nix
+++ b/pkgs/servers/uwsgi/default.nix
@@ -65,7 +65,10 @@ stdenv.mkDerivation rec {
     sha256 = "0256v72b7zr6ds4srpaawk1px3bp0djdwm239w3wrxpw7dzk1gjn";
   };
 
-  patches = [ ./0001-no-ext-session-php_session.h-on-NixOS.patch ];
+  patches = [
+        ./no-ext-session-php_session.h-on-NixOS.patch
+        ./additional-php-ldflags.patch
+  ];
 
   nativeBuildInputs = [ python3 pkgconfig ];
 
@@ -89,6 +92,16 @@ stdenv.mkDerivation rec {
     substituteAll ${./nixos.ini} buildconf/nixos.ini
   '';
 
+  # 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"
+        ];
+
   buildPhase = ''
     mkdir -p $pluginDir
     python3 uwsgiconfig.py --build nixos