Skip to content

Commit

Permalink
FreeBSD backend: catch up with new pkg repository layout
Browse files Browse the repository at this point in the history
  • Loading branch information
arrowd committed Apr 22, 2024
1 parent 6c2fbbd commit 817393e
Showing 1 changed file with 20 additions and 21 deletions.
41 changes: 20 additions & 21 deletions src/asgen/backends/freebsd/fbsdpkgindex.d
Original file line number Diff line number Diff line change
Expand Up @@ -60,45 +60,44 @@ public:
{
auto pkgRoot = buildPath (rootDir, suite);
auto metaFname = buildPath (pkgRoot, "meta.conf");
string manifestFname, manifestArchive;
string dataFname;

if (!std.file.exists (metaFname)) {
logError ("Metadata file '%s' does not exist.", metaFname);
return [];
}

foreach(line; std.file.slurp!(string)(metaFname, "%s")) {
if (line.startsWith("manifests_archive")) {
// manifests_archive = "packagesite";
if (line.startsWith("data")) {
// data = "data";
auto splitResult = line.split("\"");
if (splitResult.length == 3)
manifestArchive = splitResult[1];
}
else if (line.startsWith("manifests")) {
// manifests = "packagesite.yaml";
auto splitResult = line.split("\"");
if (splitResult.length == 3)
manifestFname = splitResult[1];
if (splitResult.length == 3) {
dataFname = splitResult[1];
break;
}
}
}

auto listsTarFname = buildPath (pkgRoot, manifestArchive ~ ".pkg");
if (!std.file.exists (listsTarFname)) {
logError ("Package lists file '%s' does not exist.", listsTarFname);
auto dataTarFname = buildPath (pkgRoot, dataFname ~ ".pkg");
if (!std.file.exists (dataTarFname)) {
logError ("Package lists file '%s' does not exist.", dataTarFname);
return [];
}

ArchiveDecompressor ad;
ad.open (listsTarFname);
logDebug ("Opened: %s", listsTarFname);
ad.open (dataTarFname);
logDebug ("Opened: %s", dataTarFname);

auto d = ad.readData(manifestFname);
auto dataJson = parseJSON(assumeUTF(ad.readData(dataFname)));
if (dataJson.type != JSONType.object) {
logError ("JSON from '%s' is not an object .", dataTarFname);
return [];
}
auto pkgs = appender!(Package[]);

foreach(entry; d.split('\n')) {
auto j = parseJSON(assumeUTF(entry));
if (j.type == JSONType.object)
pkgs ~= to!Package(new FreeBSDPackage(pkgRoot, j.object));
foreach(entry; dataJson.object["packages"].array) {
if (entry.type == JSONType.object)
pkgs ~= to!Package(new FreeBSDPackage(pkgRoot, entry.object));
}

return pkgs.data;
Expand Down

0 comments on commit 817393e

Please sign in to comment.