+$pids = [];
+
+function fail($pkg, $ver, $skp, $fmt) {
+ $msg = call_user_func_array("sprintf", array_slice(func_get_args(), 3));
+ fprintf(STDERR, "FAILURE: %s-%s, %s; skipping next time\n", $pkg, $ver, $msg);
+ touch($skp);
+}
+
+function wait(&$pids) {
+ $status = null;
+ switch ($pid = pcntl_wait($status)) {
+ case -1:
+ // meh
+ break;
+ default:
+ extract($pids[$pid]);
+ unset($pids[$pid]);
+ if (pcntl_wifexited($status) && ($rc = pcntl_wexitstatus($status))) {
+ fail($pkg, $ver, $skp, "exit code: %d", $rc);
+ } elseif (pcntl_wifsignaled($status) && ($rc = pcntl_wtermsig($status))) {
+ fail($pkg, $ver, $skp, "signal: %d", $rc);
+ } else {
+ printf("SUCCESS: %s-%s\n", $pkg, $ver);
+ }
+ break;
+ }
+ return $pid > 0;
+};
+
+function work($url, $dir) {
+ is_dir($dir) || mkdir($dir, 0777, true);
+ require_once __DIR__."/../vendor/autoload.php";
+ $packager = new pharext\Packager;
+ $packager->run(5, [
+ $_SERVER["argv"][0],
+ "-qps",
+ $url,
+ "-Zzd",
+ $dir
+ ]);
+};