about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/libpar2
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libpar2')
-rw-r--r--nixpkgs/pkgs/development/libraries/libpar2/default.nix27
-rw-r--r--nixpkgs/pkgs/development/libraries/libpar2/libpar2-0.4-external-verification.patch16
2 files changed, 43 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libpar2/default.nix b/nixpkgs/pkgs/development/libraries/libpar2/default.nix
new file mode 100644
index 000000000000..625e780d1921
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libpar2/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchurl, pkg-config, libsigcxx }:
+
+let version = "0.4"; in
+
+stdenv.mkDerivation rec {
+  pname = "libpar2";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://launchpad.net/libpar2/trunk/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "1m4ncws1h03zq7zyqbaymvjzzbh1d3lc4wb1aksrdf0ync76yv9i";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libsigcxx ];
+
+  patches = [ ./libpar2-0.4-external-verification.patch ];
+
+  CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11";
+
+  meta = {
+    homepage = "http://parchive.sourceforge.net/";
+    license = lib.licenses.gpl2Plus;
+    description = "A library for using Parchives (parity archive volume sets)";
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/libpar2/libpar2-0.4-external-verification.patch b/nixpkgs/pkgs/development/libraries/libpar2/libpar2-0.4-external-verification.patch
new file mode 100644
index 000000000000..74879c4fe9b8
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libpar2/libpar2-0.4-external-verification.patch
@@ -0,0 +1,16 @@
+diff -aud -U 5 libpar2-0.4-original/par2repairer.h libpar2-0.4-patched/par2repairer.h
+--- libpar2-0.4-original/par2repairer.h	2013-07-18 15:03:10.000000000 +0200
++++ libpar2-0.4-patched/par2repairer.h	2014-08-06 15:52:59.000000000 +0200
+@@ -94,11 +94,11 @@
+   // Perform a sliding window scan of the DiskFile looking for blocks of data that 
+   // might belong to any of the source files (for which a verification packet was
+   // available). If a block of data might be from more than one source file, prefer
+   // the one specified by the "sourcefile" parameter. If the first data block
+   // found is for a different source file then "sourcefile" is changed accordingly.
+-  bool ScanDataFile(DiskFile                *diskfile,   // [in]     The file being scanned
++  virtual bool ScanDataFile(DiskFile                *diskfile,   // [in]     The file being scanned
+                     Par2RepairerSourceFile* &sourcefile, // [in/out] The source file matched
+                     MatchType               &matchtype,  // [out]    The type of match
+                     MD5Hash                 &hashfull,   // [out]    The full hash of the file
+                     MD5Hash                 &hash16k,    // [out]    The hash of the first 16k
+                     u32                     &count);     // [out]    The number of blocks found