Merge pull request #172016 from KAction/nginx-doc

nginx: build offline documentation
main
7c6f434c 2 years ago committed by GitHub
commit 12697a1621
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 40
      pkgs/data/documentation/nginx-doc/default.nix
  2. 29
      pkgs/data/documentation/nginx-doc/exclude-google-analytics.patch
  3. 19
      pkgs/servers/http/nginx/generic.nix
  4. 2
      pkgs/top-level/all-packages.nix

@ -0,0 +1,40 @@
{ lib, stdenv, libxml2, libxslt, fetchhg }:
# Upstream maintains documentation (sources of https://nginx.org) in separate
# mercurial repository, which do not correspond to particular git commit, but at
# least has "introduced in version X.Y" comments.
#
# In other words, documentation does not necessary matches capabilities of
# $out/bin/nginx, but we have no better options.
stdenv.mkDerivation {
pname = "nginx-doc-unstable";
version = "2022-05-05";
src = fetchhg {
url = "https://hg.nginx.org/nginx.org";
rev = "a3aee2697d4e";
sha256 = "029n4mnmjw94h01qalmjgf1c2h3h7wm798xv5knk3padxiy4m28b";
};
patches = [ ./exclude-google-analytics.patch ];
nativeBuildInputs = [ libxslt libxml2 ];
# Generated documentation is not local-friendly, since it assumes that link to directory
# is the same as link to index.html in that directory, which is not how browsers behave
# with local filesystem.
#
# TODO: patch all relative links that do not end with .html.
# /en subdirectory must exist, relative links expect it.
installPhase = ''
mkdir -p $out/share/doc/nginx
mv libxslt/en $out/share/doc/nginx
'';
meta = with lib; {
description = "A reverse proxy and lightweight webserver (documentation)";
homepage = "https://nginx.org/";
license = licenses.bsd2;
platforms = platforms.all;
priority = 6;
maintainers = with maintainers; [ kaction ];
};
}

@ -0,0 +1,29 @@
Kill google analytics from local documentation.
diff -r bb0a2fbdc886 xslt/ga.xslt
--- a/xslt/ga.xslt Mon Apr 06 11:17:11 2020 +0100
+++ b/xslt/ga.xslt Thu Apr 09 10:29:02 2020 -0400
@@ -6,23 +6,6 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template name="ga">
-
- <script>
- (function(w, d, s, l, i) {
- w[l] = w[l] || [];
- w[l].push({
- 'gtm.start': new Date().getTime(),
- event: 'gtm.js'
- });
- var f = d.getElementsByTagName(s)[0],
- j = d.createElement(s),
- dl = l != 'dataLayer' ? '&amp;l=' + l : '';
- j.async = true;
- j.src = '//www.googletagmanager.com/gtm.js?id=' + i + dl;
- f.parentNode.insertBefore(j, f);
- })(window, document, 'script', 'dataLayer', 'GTM-TPSP33');
- </script>
-
</xsl:template>
</xsl:stylesheet>

@ -1,4 +1,5 @@
{ lib, stdenv, fetchurl, fetchpatch, openssl, zlib, pcre, libxml2, libxslt
outer@{ lib, stdenv, fetchurl, fetchpatch, openssl, zlib, pcre, libxml2, libxslt
, nginx-doc
, nixosTests
, substituteAll, gd, geoip, perl
@ -23,6 +24,7 @@
, preConfigure ? ""
, postInstall ? null
, meta ? null
, nginx-doc ? outer.nginx-doc
, passthru ? { tests = {}; }
}:
@ -44,6 +46,8 @@ stdenv.mkDerivation {
inherit version;
inherit nginxVersion;
outputs = ["out" "doc"];
src = if src != null then src else fetchurl {
url = "https://nginx.org/download/nginx-${version}.tar.gz";
inherit sha256;
@ -114,8 +118,12 @@ stdenv.mkDerivation {
configurePlatforms = [];
preConfigure = preConfigure
+ concatMapStringsSep "\n" (mod: mod.preConfigure or "") modules;
# Disable _multioutConfig hook which adds --bindir=$out/bin into configureFlags,
# which breaks build, since nginx does not actually use autoconf.
preConfigure = ''
setOutputFlags=
'' + preConfigure
+ concatMapStringsSep "\n" (mod: mod.preConfigure or "") modules;
patches = map fixPatch ([
(substituteAll {
@ -145,6 +153,11 @@ stdenv.mkDerivation {
enableParallelBuilding = true;
preInstall = ''
mkdir -p $doc
cp -r ${nginx-doc}/* $doc
'';
postInstall = if postInstall != null then postInstall else ''
mv $out/sbin $out/bin
'';

@ -21996,6 +21996,8 @@ with pkgs;
nginx = nginxStable;
nginx-doc = callPackage ../data/documentation/nginx-doc { };
nginxQuic = callPackage ../servers/http/nginx/quic.nix {
zlib = zlib-ng.override { withZlibCompat = true; };
withPerl = false;

Loading…
Cancel
Save