From 1f24685d93e96581b65d8c30a0c8eac903d82052 Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 18 Apr 2019 10:07:55 +0200 Subject: [PATCH] nginx/etag-patch: Use Nix store dir from build env So far, the Nix store directory was hardcoded and if someone uses a different Nix store directory the patch won't work. Of course, this is pretty uncommon, but by not only substituting the store directory but also the length of it we also save a few calls to ngx_strlen(), which should save us a few cycles. Signed-off-by: aszlig --- pkgs/servers/http/nginx/generic.nix | 11 +++++++---- pkgs/servers/http/nginx/nix-etag-1.15.4.patch | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/pkgs/servers/http/nginx/generic.nix b/pkgs/servers/http/nginx/generic.nix index fa7864886dc..12b873df6a4 100644 --- a/pkgs/servers/http/nginx/generic.nix +++ b/pkgs/servers/http/nginx/generic.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, fetchpatch, openssl, zlib, pcre, libxml2, libxslt -, gd, geoip +, substituteAll, gd, geoip , withDebug ? false , withStream ? true , withMail ? false @@ -75,9 +75,12 @@ stdenv.mkDerivation { preConfigure = (concatMapStringsSep "\n" (mod: mod.preConfigure or "") modules); - patches = [ - ./nix-etag-1.15.4.patch - ] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + patches = stdenv.lib.singleton (substituteAll { + src = ./nix-etag-1.15.4.patch; + preInstall = '' + export nixStoreDir="$NIX_STORE" nixStoreDirLen="''${#NIX_STORE}" + ''; + }) ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ (fetchpatch { url = "https://raw.githubusercontent.com/openwrt/packages/master/net/nginx/patches/102-sizeof_test_fix.patch"; sha256 = "0i2k30ac8d7inj9l6bl0684kjglam2f68z8lf3xggcc2i5wzhh8a"; diff --git a/pkgs/servers/http/nginx/nix-etag-1.15.4.patch b/pkgs/servers/http/nginx/nix-etag-1.15.4.patch index 1a8dcb4303a..9dec715bf6c 100644 --- a/pkgs/servers/http/nginx/nix-etag-1.15.4.patch +++ b/pkgs/servers/http/nginx/nix-etag-1.15.4.patch @@ -36,8 +36,8 @@ index c57ec00c..b7992de2 100644 - r->headers_out.last_modified_time, - r->headers_out.content_length_n) - - etag->value.data; -+ #define NIX_STORE_DIR "/nix/store" -+ #define NIX_STORE_LEN ngx_strlen(NIX_STORE_DIR) ++ #define NIX_STORE_DIR "@nixStoreDir@" ++ #define NIX_STORE_LEN @nixStoreDirLen@ + + if (r->headers_out.last_modified_time == 1 + && !ngx_strncmp(real, NIX_STORE_DIR, NIX_STORE_LEN)