$name, "pkgname" => $pkgname, "pkgver" => $pkgver, "pkgrel" => $pkgrel, "arch" => $arch ); }; $f = fopen("packages", "r"); while (!feof($f)) $soll[] = trim(fgets($f)); fclose($f); $f = popen("find ~archlinuxewe/os -type f -name '*.pkg.tar.zst.sig' -printf '%f\n'", "r"); while (!feof($f)) $ist[] = substr(trim(fgets($f)),0,-16); pclose($f); $ist = array_map('parse', $ist); $soll = array_map('parse', $soll); $pkgs = array(); $archs = array(); foreach($ist as $i) { if ($i["pkgname"] != "") $pkgs[$i["pkgname"]][$i["arch"]]["ist"] = $i; } foreach($soll as $i) { if ($i["pkgname"] != "") $pkgs[$i["pkgname"]][$i["arch"]]["soll"] = $i; } $archs = array("any", "armv6h", "armv7h", "aarch64", "i486", "i686", "pentium4", "x86_64"); function evaluate_package($pkg) { if (!array_key_exists("ist", $pkg)) { $result["up-to-date"] = false; $result["version"] = $pkg["soll"]["pkgver"] . "-" . $pkg["soll"]["pkgrel"]; $result["pkgname"] = $pkg["soll"]["pkgname"]; } else if (!array_key_exists("soll", $pkg)) { $result["up-to-date"] = false; $result["version"] = $pkg["ist"]["pkgver"] . "-" . $pkg["ist"]["pkgrel"]; $result["pkgname"] = $pkg["ist"]["pkgname"]; } else { $result["up-to-date"] = ($pkg["ist"]["filename"] == $pkg["soll"]["filename"]); $result["version"] = $pkg["ist"]["pkgver"] . "-" . $pkg["ist"]["pkgrel"]; $result["pkgname"] = $pkg["ist"]["pkgname"]; } return $result; } function evaluate_apackage($apkg) { return array_map('evaluate_package', $apkg); } $pkgs = array_map('evaluate_apackage', $pkgs); function any_outdated($pkgs) { foreach ($pkgs as $pkg) if (!$pkg["up-to-date"]) return true; return false; } function pkg_compare($p1, $p2) { $p1o = (any_outdated($p1) ? 1 : -1); $p2o = (any_outdated($p2) ? 1 : -1); if ($p1o != $p2o) return $p2o; $p1n = $p1[array_key_first($p1)]["pkgname"]; $p2n = $p2[array_key_first($p2)]["pkgname"]; return strcmp($p1n, $p2n); } uasort($pkgs, 'pkg_compare'); ?> " . $arch . ""; print "\n"; foreach ($pkgs as $pkgname => $pkg) { print ""; foreach ($archs as $arch) { if (!array_key_exists($arch, $pkg)) { print ""; } else { if ($pkg[$arch]["up-to-date"]) $farbe = "#008000"; else $farbe = "#c00000"; print ""; } } print "\n"; } ?>
pkgname
" . $pkgname . "-"; print $pkg[$arch]["version"]; print "