about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/apr
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/apr')
-rw-r--r--nixpkgs/pkgs/development/libraries/apr/default.nix71
-rw-r--r--nixpkgs/pkgs/development/libraries/apr/is-this-a-compiler-bug.patch17
2 files changed, 88 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/apr/default.nix b/nixpkgs/pkgs/development/libraries/apr/default.nix
new file mode 100644
index 000000000000..e2db4db80e29
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/apr/default.nix
@@ -0,0 +1,71 @@
+{ lib, stdenv, fetchurl, fetchpatch, buildPackages, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "apr";
+  version = "1.7.0";
+
+  src = fetchurl {
+    url = "mirror://apache/apr/${pname}-${version}.tar.bz2";
+    sha256 = "1spp6r2a3xcl5yajm9safhzyilsdzgagc2dadif8x6z9nbq4iqg2";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "CVE-2021-35940.patch";
+      url = "https://dist.apache.org/repos/dist/release/apr/patches/apr-1.7.0-CVE-2021-35940.patch";
+      sha256 = "1qd511dyqa1b7bj89iihrlbaavbzl6yyblqginghmcnhw8adymbs";
+      # convince fetchpatch to restore missing `a/`, `b/` to paths
+      extraPrefix = "";
+    })
+
+    # Fix cross.
+    (fetchpatch {
+      url = "https://github.com/apache/apr/commit/374210c50ee9f4dbf265f0172dcf2d45b97d0550.patch";
+      sha256 = "04k62c5dh043jhkgs5qma6yqkq4q7nh0zswr81il4l7q1zil581y";
+    })
+    (fetchpatch {
+      url = "https://github.com/apache/apr/commit/866e1df66be6704a584feaf5c3d241e3d631d03a.patch";
+      sha256 = "0hhm5v5wx985c28dq6d9ngnyqihpsphq4mw7rwylk39k2p90ppcm";
+    })
+  ] ++ lib.optionals stdenv.isDarwin [ ./is-this-a-compiler-bug.patch ];
+
+  # This test needs the net
+  postPatch = ''
+    rm test/testsock.*
+  '';
+
+  outputs = [ "out" "dev" ];
+  outputBin = "dev";
+
+  preConfigure =
+    ''
+      configureFlagsArray+=("--with-installbuilddir=$dev/share/build")
+    '';
+
+  configureFlags = lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) [
+    "ac_cv_file__dev_zero=yes"
+    "ac_cv_func_setpgrp_void=0"
+    "apr_cv_tcp_nodelay_with_cork=1"
+    "CC_FOR_BUILD=${buildPackages.stdenv.cc}/bin/cc"
+  ] ++ lib.optionals (stdenv.hostPlatform.system == "i686-cygwin") [
+    # Including the Windows headers breaks unistd.h.
+    # Based on ftp://sourceware.org/pub/cygwin/release/libapr1/libapr1-1.3.8-2-src.tar.bz2
+    "ac_cv_header_windows_h=no"
+  ];
+
+  # - Update libtool for macOS 11 support
+  # - Regenerate for cross fix patch
+  nativeBuildInputs = [ autoreconfHook ];
+
+  doCheck = true;
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    homepage = "https://apr.apache.org/";
+    description = "The Apache Portable Runtime library";
+    platforms = platforms.all;
+    license = licenses.asl20;
+    maintainers = [ maintainers.eelco ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/apr/is-this-a-compiler-bug.patch b/nixpkgs/pkgs/development/libraries/apr/is-this-a-compiler-bug.patch
new file mode 100644
index 000000000000..bbc10fabb268
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/apr/is-this-a-compiler-bug.patch
@@ -0,0 +1,17 @@
+--- apr-1.5.1/file_io/unix/filestat.c	2014-11-01 06:42:50.000000000 -0400
++++ apr-1.5.1/file_io/unix/filestat.c.new	2014-11-01 07:07:32.000000000 -0400
+@@ -297,9 +297,11 @@
+         finfo->pool = pool;
+         finfo->fname = fname;
+         fill_out_finfo(finfo, &info, wanted);
+-        if (wanted & APR_FINFO_LINK)
+-            wanted &= ~APR_FINFO_LINK;
+-        return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
++        if (wanted & APR_FINFO_LINK) {
++            return ((wanted & ~APR_FINFO_LINK) & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
++        } else {
++            return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS;
++        }
+     }
+     else {
+ #if !defined(ENOENT) || !defined(ENOTDIR)