Example #1
0
 function doSign($command, $options, $params)
 {
     // should move most of this code into PEAR_Packager
     // so it'll be easy to implement "pear package --sign"
     if (sizeof($params) != 1) {
         return $this->raiseError("bad parameter(s), try \"help {$command}\"");
     }
     if (!file_exists($params[0])) {
         return $this->raiseError("file does not exist: {$params['0']}");
     }
     $obj = new PEAR_Common();
     $info = $obj->infoFromTgzFile($params[0]);
     if (PEAR::isError($info)) {
         return $this->raiseError($info);
     }
     include_once "Archive/Tar.php";
     include_once "System.php";
     $tar = new Archive_Tar($params[0]);
     $tmpdir = System::mktemp('-d pearsign');
     if (!$tar->extractList('package.xml package.sig', $tmpdir)) {
         return $this->raiseError("failed to extract tar file");
     }
     if (file_exists("{$tmpdir}/package.sig")) {
         return $this->raiseError("package already signed");
     }
     @unlink("{$tmpdir}/package.sig");
     $input = $this->ui->userDialog($command, array('GnuPG Passphrase'), array('password'));
     $gpg = popen("gpg --batch --passphrase-fd 0 --armor --detach-sign --output {$tmpdir}/package.sig {$tmpdir}/package.xml 2>/dev/null", "w");
     if (!$gpg) {
         return $this->raiseError("gpg command failed");
     }
     fwrite($gpg, "{$input['0']}\r");
     if (pclose($gpg) || !file_exists("{$tmpdir}/package.sig")) {
         return $this->raiseError("gpg sign failed");
     }
     $tar->addModify("{$tmpdir}/package.sig", '', $tmpdir);
     return true;
 }
Example #2
0
$rel_id2name = $dbh->getAssoc("SELECT r.id,concat_ws('-', p.name, r.version) FROM packages p, releases r WHERE r.package = p.id");
print "<h2>Deleting Existing Dependencies...</h2>\n";
$dbh->setOption("optimize", "portability");
$dbh->query("DELETE FROM deps");
$ar = $dbh->affectedRows();
$dbh->setOption("optimize", "performance");
print "{$ar} rows deleted<br />\n";
print "<h2>Inserting New Dependencies...</h2>\n";
$sth = $dbh->query("SELECT package, release, fullpath FROM files");
while ($sth->fetchInto($row)) {
    list($package, $release, $fullpath) = $row;
    printf("<h3>%s (package %d, release %d):</h3>\n", basename($fullpath), $package, $release);
    if (!@file_exists($fullpath)) {
        continue;
    }
    $pkginfo = $pc->infoFromTgzFile($fullpath);
    if (empty($pkginfo['release_deps'])) {
        printf("%s : no dependencies<br />\n", $rel_id2name[$release]);
        continue;
    }
    foreach ($pkginfo['release_deps'] as $dep) {
        if ($dep['rel']) {
            $dep['relation'] = $dep['rel'];
            unset($dep['rel']);
        }
        $i = 0;
        $fields = implode(',', array_keys($dep));
        $values = array_values($dep);
        $phs = substr(str_repeat('?,', sizeof($values) + 2), 0, -1);
        $query = "INSERT INTO deps (package,release,{$fields}) VALUES({$phs})";
        $pq = $dbh->prepare($query);