public static function deflate(Engine_Package_Manifest $package, $outputPath)
 {
     // Sanity
     if (!file_exists($outputPath) || !is_dir($outputPath) || !is_writeable($outputPath)) {
         throw new Engine_Package_Exception('Output path does not exist, is not a directory, or is not writeable');
     }
     if (!is_dir($package->getBasePath())) {
         throw new Engine_Package_Exception('Missing package base path');
     }
     self::_loadArchiveClass();
     // Make filenames and paths
     $basePath = $package->getBasePath();
     $archiveFile = $package->getKey() . '.tar';
     $archiveFullPath = $outputPath . DIRECTORY_SEPARATOR . $archiveFile;
     if (file_exists($archiveFullPath) && !unlink($archiveFullPath)) {
         throw new Engine_Package_Exception('Target archive already exists and unable to remove');
     }
     // Start packing
     $archive = new Archive_Tar($archiveFullPath);
     $archive->setIgnoreList(array('CVS', '.svn'));
     // Add all directories, files, and subpackages
     $package->addToArchive($archive);
     return $archiveFullPath;
 }