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
This commit is contained in:
parent
6dd858dc30
commit
87bed6c86a
13
pkgs/servers/uwsgi/additional-php-ldflags.patch
Normal file
13
pkgs/servers/uwsgi/additional-php-ldflags.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py
|
||||
index d930c44e..2fcbc22a 100644
|
||||
--- a/plugins/php/uwsgiplugin.py
|
||||
+++ b/plugins/php/uwsgiplugin.py
|
||||
@@ -17,6 +17,8 @@ php_version = os.popen(PHPPATH + ' --version').read().rstrip().split('.')[0]
|
||||
CFLAGS = [os.popen(PHPPATH + ' --includes').read().rstrip(), '-Wno-sign-compare']
|
||||
LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split()
|
||||
|
||||
+LDFLAGS.append(os.environ.get('UWSGICONFIG_PHP_LDFLAGS', []))
|
||||
+
|
||||
if ld_run_path:
|
||||
LDFLAGS.append('-L%s' % ld_run_path)
|
||||
os.environ['LD_RUN_PATH'] = ld_run_path
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user