return $this->raiseError("File $fname does not exist");
} else {
$filelist[$i++] = $fname;
+ if (empty($pkginfo['filelist'][$fname]['md5sum'])) {
+ $md5sum = md5_file($fname);
+ $pkginfo['filelist'][$fname]['md5sum'] = $md5sum;
+ }
$this->log(2, "Adding file $fname");
}
}
- // XXX TODO: Rebuild the package file as the old method did?
+ $new_xml = $this->xmlFromInfo($pkginfo);
+ if (PEAR::isError($new_xml)) {
+ return $new_xml;
+ }
+ $tmpdir = $this->mkTempDir(getcwd());
+ $newpkgfile = $tmpdir . DIRECTORY_SEPARATOR . $pkgfile;
+ $np = @fopen($newpkgfile, "w");
+ if (!$np) {
+ return $this->raiseError("PEAR_Packager: unable to rewrite $pkgfile");
+ }
+ fwrite($np, $new_xml);
+ fclose($np);
// TAR the Package -------------------------------------------
$dest_package = $this->orig_pwd . DIRECTORY_SEPARATOR . "{$pkgver}.tgz";
$tar =& new Archive_Tar($dest_package, true);
- $tar->setErrorHandling(PEAR_ERROR_PRINT); // XXX Don't print errors
+ $tar->setErrorHandling(PEAR_ERROR_RETURN); // XXX Don't print errors
// ----- Creates with the package.xml file
- if (!$tar->create($pkgfile)) {
- return $this->raiseError('an error ocurred during package creation');
+ $ok = $tar->createModify($newpkgfile, '', $tmpdir);
+ if (PEAR::isError($ok)) {
+ return $ok;
+ } elseif (!$ok) {
+ return $this->raiseError('PEAR_Packager: tarball creation failed');
}
// ----- Add the content of the package
if (!$tar->addModify($filelist, $pkgver)) {
- return $this->raiseError('an error ocurred during package creation');
+ return $this->raiseError('PEAR_Packager: tarball creation failed');
}
-
$this->log(1, "Package $dest_package done");
$cvsversion = preg_replace('/[^a-z0-9]/i', '_', $pkgversion);
$cvstag = "RELEASE_$cvsversion";