fix for bug #64343
[pharext/pharext] / src / pharext / Packager.php
index 8b7ad226ed48de9b15a6458c3a8c7053ea3169b1..53fbca23bc498d67661a797f95cc3232d1ac84b3 100644 (file)
@@ -165,8 +165,15 @@ class Packager implements Command
         * @return string extracted directory
         */
        private function extract($source) {
-               $task = new Task\Extract($source);
-               $dest = $task->run($this->verbosity());
+               try {
+                       $task = new Task\Extract($source);
+                       $dest = $task->run($this->verbosity());
+               } catch (\Exception $e) {
+                       if (false === strpos($e->getMessage(), "checksum mismatch")) {
+                               throw $e;
+                       }
+                       $dest = (new Task\PaxFixup($source))->run($this->verbosity());
+               }
                
                $this->cleanup[] = new Task\Cleanup($dest);
                return $dest;