classes/package: Use gzip for extended package data

The master version of extended package data uses zstd for efficient
compression, but it relies on the zstd tool to be present on the host
system. Since dunfell supports older distros, we don't want to add this
tool as an additional requirement so switch to using gzip instead.

(From OE-Core rev: 1c7d555379c4b0962bccd018870989050d87675f)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Watt
2023-03-27 15:05:30 -05:00
committed by Richard Purdie
parent 006f140687
commit a307ef21c1
2 changed files with 6 additions and 8 deletions

View File

@@ -1470,7 +1470,7 @@ PKGDATA_VARS = "PN PE PV PR PKGE PKGV PKGR LICENSE DESCRIPTION SUMMARY RDEPENDS
python emit_pkgdata() {
from glob import glob
import json
import bb.compress.zstd
import gzip
def process_postinst_on_target(pkg, mlprefix):
pkgval = d.getVar('PKG_%s' % pkg)
@@ -1610,9 +1610,8 @@ fi
sf.write('%s_%s: %d\n' % ('PKGSIZE', pkg, total_size))
subdata_extended_file = pkgdatadir + "/extended/%s.json.zstd" % pkg
num_threads = int(d.getVar("BB_NUMBER_THREADS"))
with bb.compress.zstd.open(subdata_extended_file, "wt", encoding="utf-8", num_threads=num_threads) as f:
subdata_extended_file = pkgdatadir + "/extended/%s.json.gz" % pkg
with gzip.open(subdata_extended_file, "wt", encoding="utf-8") as f:
json.dump(extended_data, f, sort_keys=True, separators=(",", ":"))
# Symlinks needed for rprovides lookup

View File

@@ -59,12 +59,11 @@ def read_subpkgdata_dict(pkg, d):
def read_subpkgdata_extended(pkg, d):
import json
import bb.compress.zstd
import gzip
fn = d.expand("${PKGDATA_DIR}/extended/%s.json.zstd" % pkg)
fn = d.expand("${PKGDATA_DIR}/extended/%s.json.gz" % pkg)
try:
num_threads = int(d.getVar("BB_NUMBER_THREADS"))
with bb.compress.zstd.open(fn, "rt", encoding="utf-8", num_threads=num_threads) as f:
with gzip.open(fn, "rt", encoding="utf-8") as f:
return json.load(f)
except FileNotFoundError:
return None