Bug 175846 - [PATCH] archivers/libpar2: update nzbget patches
Summary: [PATCH] archivers/libpar2: update nzbget patches
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Steve Wills
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-02-04 21:10 UTC by Mark Felder
Modified: 2013-02-17 20:20 UTC (History)
1 user (show)

See Also:


Attachments
libpar2-0.2_4.patch (8.93 KB, patch)
2013-02-04 21:10 UTC, Mark Felder
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Felder freebsd_committer freebsd_triage 2013-02-04 21:10:00 UTC
Update patches required by nzbget (the only libpar2 consumer in the ports tree AFAICT)

Port maintainer (toxic@doobie.com) is cc'd.

Generated with FreeBSD Port Tools 0.99_6 (mode: change, diff: suffix)
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-02-04 21:10:09 UTC
Responsible Changed
From-To: freebsd-ports-bugs->swills

swills@ wants this submitter's PRs (via the GNATS Auto Assign Tool)
Comment 2 Edwin Groothuis freebsd_committer freebsd_triage 2013-02-04 21:10:11 UTC
Maintainer of archivers/libpar2,

Please note that PR ports/175846 has just been submitted.

If it contains a patch for an upgrade, an enhancement or a bug fix
you agree on, reply to this email stating that you approve the patch
and a committer will take care of it.

The full text of the PR can be found at:
    http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/175846

-- 
Edwin Groothuis via the GNATS Auto Assign Tool
edwin@FreeBSD.org
Comment 3 Edwin Groothuis freebsd_committer freebsd_triage 2013-02-04 21:10:12 UTC
State Changed
From-To: open->feedback

Awaiting maintainers feedback (via the GNATS Auto Assign Tool)
Comment 4 Toxic 2013-02-04 21:38:56 UTC
I approve this patch.

I'd also like to see http://www.freebsd.org/cgi/query-pr.cgi?pr=174306 
get some committer attention (again).  It stalled around the holidays 
(completely my fault), but I updated it with a new patch about 2 weeks 
ago. Nobody's picked it up since, though that's probably because it was 
picked up and stalled in the past.  This PR is for nzbget, which is 
linked to libpar2.

Thanks
-Jeff



On 02/04/2013 01:10 PM, Edwin Groothuis wrote:
> Maintainer of archivers/libpar2,
>
> Please note that PR ports/175846 has just been submitted.
>
> If it contains a patch for an upgrade, an enhancement or a bug fix
> you agree on, reply to this email stating that you approve the patch
> and a committer will take care of it.
>
> The full text of the PR can be found at:
>      http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/175846
>
Comment 5 dfilter service freebsd_committer freebsd_triage 2013-02-17 20:11:24 UTC
Author: swills
Date: Sun Feb 17 20:11:15 2013
New Revision: 312445
URL: http://svnweb.freebsd.org/changeset/ports/312445

Log:
  - Update patches required by nzbget
  
  PR:		ports/175846
  Submitted by:	Mark Felder <feld@feld.me>
  Approved by:	Jeff Burchell <toxic@doobie.com> (maintainer)

Modified:
  head/archivers/libpar2/Makefile   (contents, props changed)
  head/archivers/libpar2/files/patch-par2repairer.cpp   (contents, props changed)
  head/archivers/libpar2/files/xpatch-addcancel-par2repairer.cpp   (contents, props changed)

Modified: head/archivers/libpar2/Makefile
==============================================================================
--- head/archivers/libpar2/Makefile	Sun Feb 17 20:08:29 2013	(r312444)
+++ head/archivers/libpar2/Makefile	Sun Feb 17 20:11:15 2013	(r312445)
@@ -3,7 +3,7 @@
 
 PORTNAME=	libpar2
 PORTVERSION=	0.2
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	archivers
 MASTER_SITES=	SF/parchive/${PORTNAME}/${PORTVERSION}
 

Modified: head/archivers/libpar2/files/patch-par2repairer.cpp
==============================================================================
--- head/archivers/libpar2/files/patch-par2repairer.cpp	Sun Feb 17 20:08:29 2013	(r312444)
+++ head/archivers/libpar2/files/patch-par2repairer.cpp	Sun Feb 17 20:11:15 2013	(r312445)
@@ -1,14 +1,9 @@
-#####
-# This patch is maintained by Andrei Prygounkov, author of news/nzbget
-# It fixes a memory leak and a segfault triggered by a corrupted par2 file.
-#
-# For more details, see:
-#       http://sf.net/tracker/?func=detail&aid=2209433&group_id=30568&atid=399700
-#####
-diff -aud ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
 --- ../libpar2-0.2-original/par2repairer.cpp	2006-01-20 18:25:20.000000000 +0100
-+++ ../libpar2-0.2/par2repairer.cpp	2008-02-06 12:02:53.226050300 +0100
-@@ -78,6 +78,7 @@
++++ ../libpar2-0.2/par2repairer.cpp	2012-11-30 14:23:31.000000000 +0100
+@@ -76,10 +76,11 @@
+     ++sf;
+   }
  
    delete mainpacket;
    delete creatorpacket;
@@ -16,7 +11,11 @@ diff -aud ../libpar2-0.2-original/par2re
  }
  
  
-@@ -1261,7 +1262,7 @@
+ Result Par2Repairer::PreProcess(const CommandLine &commandline)
+ {
+@@ -1259,11 +1260,11 @@
+         string path;
+         string name;
          DiskFile::SplitFilename(filename, path, name);
  
          cout << "Target: \"" << name << "\" - missing." << endl;
@@ -25,12 +24,37 @@ diff -aud ../libpar2-0.2-original/par2re
        }
      }
  
-@@ -1804,7 +1805,7 @@
+     ++sf;
+   }
+@@ -1802,11 +1803,11 @@
+              << "\" - no data found." 
+              << endl;
        }
      }
    }
 -  sig_done.emit(name,count,sourcefile->GetVerificationPacket()->BlockCount()); 
-+  sig_done.emit(name,count, sourcefile->GetVerificationPacket() ? sourcefile->GetVerificationPacket()->BlockCount() : 0); 
++  sig_done.emit(name,count, count>0 && sourcefile->GetVerificationPacket() ? sourcefile->GetVerificationPacket()->BlockCount() : 0); 
    sig_progress.emit(1000.0);
    return true;
  }
+ 
+ // Find out how much data we have found
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.h ../libpar2-0.2/par2repairer.h
+--- ../libpar2-0.2-original/par2repairer.h	2006-01-20 00:38:27.000000000 +0100
++++ ../libpar2-0.2/par2repairer.h	2012-11-30 14:24:46.000000000 +0100
+@@ -34,10 +34,15 @@
+   sigc::signal<void, std::string> sig_filename;
+   sigc::signal<void, double> sig_progress;
+   sigc::signal<void, ParHeaders*> sig_headers;
+   sigc::signal<void, std::string, int, int> sig_done;
+ 
++  // This method allows to determine whether libpar2 includes the patches
++  // ("libpar2-0.2-bugfixes.patch") submitted to libpar2 project.
++  // Use the method in configure scripts for detection.
++  void BugfixesPatchVersion2() { }
++
+ protected:
+   // Steps in verifying and repairing files:
+ 
+   // Load packets from the specified file
+   bool LoadPacketsFromFile(string filename);

Modified: head/archivers/libpar2/files/xpatch-addcancel-par2repairer.cpp
==============================================================================
--- head/archivers/libpar2/files/xpatch-addcancel-par2repairer.cpp	Sun Feb 17 20:08:29 2013	(r312444)
+++ head/archivers/libpar2/files/xpatch-addcancel-par2repairer.cpp	Sun Feb 17 20:11:15 2013	(r312445)
@@ -1,14 +1,9 @@
-#####
-# This patch is maintained by Andrei Prygounkov, author of news/nzbget
-# It adds a graceful method to cancel file repair operations in progress.
-#
-# For more details, see: 
-#	http://sf.net/tracker/?func=detail&aid=2209488&group_id=30568&atid=399700 
-#####
-diff -aud ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
---- ../libpar2-0.2-original/par2repairer.cpp	2008-10-26 19:54:33.000000000 +0100
-+++ ../libpar2-0.2/par2repairer.cpp	2008-10-29 10:24:48.000000000 +0100
-@@ -52,6 +52,8 @@
+diff -aud -U 5 ../libpar2-0.2-original/par2repairer.cpp ../libpar2-0.2/par2repairer.cpp
+--- ../libpar2-0.2-original/par2repairer.cpp	2012-12-03 10:47:04.000000000 +0100
++++ ../libpar2-0.2/par2repairer.cpp	2012-12-03 10:48:13.000000000 +0100
+@@ -50,10 +50,12 @@
+   outputbuffer = 0;
+ 
    noiselevel = CommandLine::nlNormal;
    headers = new ParHeaders;
    alreadyloaded = false;
@@ -17,7 +12,11 @@ diff -aud ../libpar2-0.2-original/par2re
  }
  
  Par2Repairer::~Par2Repairer(void)
-@@ -406,6 +408,10 @@
+ {
+   delete [] (u8*)inputbuffer;
+@@ -404,10 +406,14 @@
+         {
+           cout << "Loading: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
            progress = offset;
  	sig_progress.emit(newfraction);
  
@@ -28,7 +27,11 @@ diff -aud ../libpar2-0.2-original/par2re
          }
        }
  
-@@ -584,6 +590,11 @@
+       // Attempt to read the next packet header
+       PACKET_HEADER header;
+@@ -582,10 +588,15 @@
+     if (noiselevel > CommandLine::nlQuiet)
+       cout << "No new packets found" << endl;
      delete diskfile;
    }
    
@@ -40,7 +43,11 @@ diff -aud ../libpar2-0.2-original/par2re
    return true;
  }
  
-@@ -833,9 +844,17 @@
+ // Finish loading a recovery packet
+ bool Par2Repairer::LoadRecoveryPacket(DiskFile *diskfile, u64 offset, PACKET_HEADER &header)
+@@ -831,26 +842,42 @@
+ 
+     // Load packets from each file that was found
      for (list<string>::const_iterator s=files->begin(); s!=files->end(); ++s)
      {
        LoadPacketsFromFile(*s);
@@ -58,7 +65,10 @@ diff -aud ../libpar2-0.2-original/par2re
    }
  
    {
-@@ -846,9 +865,17 @@
+     string wildcard = name.empty() ? "*.PAR2" : name + ".*.PAR2";
+     list<string> *files = DiskFile::FindFiles(path, wildcard);
+ 
+     // Load packets from each file that was found
      for (list<string>::const_iterator s=files->begin(); s!=files->end(); ++s)
      {
        LoadPacketsFromFile(*s);
@@ -76,7 +86,11 @@ diff -aud ../libpar2-0.2-original/par2re
    }
  
    return true;
-@@ -866,9 +893,18 @@
+ }
+ 
+@@ -864,13 +891,22 @@
+     // If the filename contains ".par2" anywhere
+     if (string::npos != filename.find(".par2") ||
          string::npos != filename.find(".PAR2"))
      {
        LoadPacketsFromFile(filename);
@@ -95,7 +109,11 @@ diff -aud ../libpar2-0.2-original/par2re
    return true;
  }
  
-@@ -1210,6 +1246,11 @@
+ // Check that the packets are consistent and discard any that are not
+ bool Par2Repairer::CheckPacketConsistency(void)
+@@ -1208,10 +1244,15 @@
+ 
+   // Start verifying the files
    sf = sortedfiles.begin();
    while (sf != sortedfiles.end())
    {
@@ -107,7 +125,11 @@ diff -aud ../libpar2-0.2-original/par2re
      // Do we have a source file
      Par2RepairerSourceFile *sourcefile = *sf;
  
-@@ -1562,6 +1603,10 @@
+     // What filename does the file use
+     string filename = sourcefile->TargetFileName();
+@@ -1560,10 +1601,14 @@
+       if (oldfraction != newfraction)
+       {
          cout << "Scanning: \"" << shortname << "\": " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
  	sig_progress.emit(newfraction);
  
@@ -118,7 +140,11 @@ diff -aud ../libpar2-0.2-original/par2re
        }
      }
  
-@@ -1651,6 +1696,11 @@
+     // If we fail to find a match, it might be because it was a duplicate of a block
+     // that we have already found.
+@@ -1649,10 +1694,15 @@
+           return false;
+       }
      }
    }
  
@@ -130,7 +156,11 @@ diff -aud ../libpar2-0.2-original/par2re
    // Get the Full and 16k hash values of the file
    filechecksummer.GetFileHashes(hashfull, hash16k);
  
-@@ -2291,10 +2341,19 @@
+   // Did we make any matches at all
+   if (count > 0)
+@@ -2289,14 +2339,23 @@
+           if (oldfraction != newfraction)
+           {
              cout << "Repairing: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
  	    sig_progress.emit(newfraction);
  
@@ -150,7 +180,11 @@ diff -aud ../libpar2-0.2-original/par2re
        ++inputblock;
        ++inputindex;
      }
-@@ -2348,9 +2407,18 @@
+   }
+   else
+@@ -2346,13 +2405,22 @@
+         if (oldfraction != newfraction)
+         {
            cout << "Processing: " << newfraction/10 << '.' << newfraction%10 << "%\r" << flush;
  	sig_progress.emit(newfraction);
  
@@ -169,7 +203,11 @@ diff -aud ../libpar2-0.2-original/par2re
        ++copyblock;
        ++inputblock;
      }
-@@ -2362,6 +2430,11 @@
+   }
+ 
+@@ -2360,10 +2428,15 @@
+   if (lastopenfile != NULL)
+   {
      lastopenfile->Close();
    }
  
@@ -181,10 +219,14 @@ diff -aud ../libpar2-0.2-original/par2re
    if (noiselevel > CommandLine::nlQuiet)
      cout << "Writing recovered data\r";
  
-diff -aud ../libpar2-0.2-original/par2repairer.h ../libpar2-0.2/par2repairer.h
---- ../libpar2-0.2-original/par2repairer.h	2006-01-20 00:38:27.000000000 +0100
-+++ ../libpar2-0.2/par2repairer.h	2008-10-26 19:01:08.000000000 +0100
-@@ -183,6 +183,7 @@
+   // For each output block that has been recomputed
+   vector<DataBlock*>::iterator outputblock = outputblocks.begin();
+diff -aud -U 5 ../libpar2-0.2-with-bugfixes-patch/par2repairer.h ../libpar2-0.2/par2repairer.h
+--- ../libpar2-0.2-original/par2repairer.h	2012-12-03 10:47:04.000000000 +0100
++++ ../libpar2-0.2/par2repairer.h	2012-12-03 10:48:13.000000000 +0100
+@@ -186,8 +186,9 @@
+ 
+   u64                       progress;                // How much data has been processed.
    u64                       totaldata;               // Total amount of data to be processed.
    u64                       totalsize;               // Total data size
  
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 6 Steve Wills freebsd_committer freebsd_triage 2013-02-17 20:11:55 UTC
State Changed
From-To: feedback->closed

Committed. Thanks!