Commit c486c6f5 authored by Qiming Chu's avatar Qiming Chu
Browse files

jbigkit: fix darwin compile and link



Apply patches to linux platforms only, which are not required for darwin
platforms.

Signed-off-by: default avatarQiming Chu <cchuqiming@gmail.com>
parent f88a2238
Loading
Loading
Loading
Loading
+52 −44
Original line number Diff line number Diff line
@@ -14,7 +14,20 @@ stdenv.mkDerivation (finalAttrs: {
    hash = "sha256-3nEGtr+vSV1oZcfdesbKE4G9EuDYFAXqgefyFnJj2TI=";
  };

  patches = [
  patches =
    [
      # Archlinux patch: this helps users to reduce denial-of-service risks, as in CVE-2017-9937
      (fetchpatch {
        url = "https://gitlab.archlinux.org/archlinux/packaging/packages/jbigkit/-/raw/main/0013-new-jbig.c-limit-s-maxmem-maximum-decoded-image-size.patch";
        hash = "sha256-Yq5qCTF7KZTrm4oeWbpctb+QLt3shJUGEReZvd0ey9k=";
      })
      # Archlinux patch: fix heap overflow
      (fetchpatch {
        url = "https://gitlab.archlinux.org/archlinux/packaging/packages/jbigkit/-/raw/main/0015-jbg_newlen-check-for-end-of-file-within-MARKER_NEWLE.patch";
        hash = "sha256-F3qA/btR9D9NfzrNY76X4Z6vG6NrisI36SjCDjS+F5s=";
      })
    ]
    ++ lib.optionals stdenv.hostPlatform.isLinux [
      # Archlinux patch: build shared object
      (fetchpatch {
        url = "https://gitlab.archlinux.org/archlinux/packaging/packages/jbigkit/-/raw/main/jbigkit-2.1-shared_lib.patch";
@@ -34,16 +47,6 @@ stdenv.mkDerivation (finalAttrs: {
        url = "https://gitlab.archlinux.org/archlinux/packaging/packages/jbigkit/-/raw/main/jbigkit-2.1-build_warnings.patch";
        hash = "sha256-lDEJ1bvZ+zR7K4CiTq+aXJ8PGjILE3W13kznLLlGOOg=";
      })
    # Archlinux patch: this helps users to reduce denial-of-service risks, as in CVE-2017-9937
    (fetchpatch {
      url = "https://gitlab.archlinux.org/archlinux/packaging/packages/jbigkit/-/raw/main/0013-new-jbig.c-limit-s-maxmem-maximum-decoded-image-size.patch";
      hash = "sha256-Yq5qCTF7KZTrm4oeWbpctb+QLt3shJUGEReZvd0ey9k=";
    })
    # Archlinux patch: fix heap overflow
    (fetchpatch {
      url = "https://gitlab.archlinux.org/archlinux/packaging/packages/jbigkit/-/raw/main/0015-jbg_newlen-check-for-end-of-file-within-MARKER_NEWLE.patch";
      hash = "sha256-F3qA/btR9D9NfzrNY76X4Z6vG6NrisI36SjCDjS+F5s=";
    })
    ];

  makeFlags = [
@@ -61,14 +64,20 @@ stdenv.mkDerivation (finalAttrs: {
    done
  '';

  installPhase = ''
  installPhase =
    ''
      runHook preInstall

      install -vDm 644 libjbig/*.h -t "$out/include/"
      install -vDm 755 pbmtools/{jbgtopbm{,85},pbmtojbg{,85}} -t "$out/bin/"
      install -vDm 644 pbmtools/*.1* -t "$out/share/man/man1/"

    ''
    + lib.optionalString stdenv.hostPlatform.isDarwin ''
      install -vDm 644 libjbig/libjbig*.a -t "$out/lib/"
    ''
    + lib.optionalString stdenv.hostPlatform.isLinux ''
      install -vDm 755 libjbig/*.so.* -t "$out/lib/"

      for lib in libjbig.so libjbig85.so; do
        ln -sv "$lib.${finalAttrs.version}" "$out/lib/$lib"
        ln -sv "$out/lib/$lib.${finalAttrs.version}" "$out/lib/$lib.0"
@@ -80,7 +89,6 @@ stdenv.mkDerivation (finalAttrs: {
  doCheck = true;

  meta = {
    broken = stdenv.hostPlatform.isDarwin;
    description = "Software implementation of the JBIG1 data compression standard";
    homepage = "http://www.cl.cam.ac.uk/~mgk25/jbigkit/";
    license = lib.licenses.gpl2Plus;