create-spdx: Use gzip for compression

The master version of the SPDX classes 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: 55b08fd641767a3d2e080727828ca37d9e610109)

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:29 -05:00
committed by Richard Purdie
parent 77e8b40bae
commit 006f140687

View File

@@ -466,13 +466,11 @@ python do_create_spdx() {
@contextmanager
def optional_tarfile(name, guard, mode="w"):
import tarfile
import bb.compress.zstd
num_threads = int(d.getVar("BB_NUMBER_THREADS"))
import gzip
if guard:
name.parent.mkdir(parents=True, exist_ok=True)
with bb.compress.zstd.open(name, mode=mode + "b", num_threads=num_threads) as f:
with gzip.open(name, mode=mode + "b") as f:
with tarfile.open(fileobj=f, mode=mode + "|") as tf:
yield tf
else:
@@ -550,7 +548,7 @@ python do_create_spdx() {
add_download_packages(d, doc, recipe)
if process_sources(d) and include_sources:
recipe_archive = deploy_dir_spdx / "recipes" / (doc.name + ".tar.zst")
recipe_archive = deploy_dir_spdx / "recipes" / (doc.name + ".tar.gz")
with optional_tarfile(recipe_archive, archive_sources) as archive:
spdx_get_src(d)
@@ -618,7 +616,7 @@ python do_create_spdx() {
package_doc.add_relationship(spdx_package, "GENERATED_FROM", "%s:%s" % (recipe_ref.externalDocumentId, recipe.SPDXID))
package_doc.add_relationship(package_doc, "DESCRIBES", spdx_package)
package_archive = deploy_dir_spdx / "packages" / (package_doc.name + ".tar.zst")
package_archive = deploy_dir_spdx / "packages" / (package_doc.name + ".tar.gz")
with optional_tarfile(package_archive, archive_packaged) as archive:
package_files = add_package_files(
d,
@@ -899,8 +897,8 @@ python image_combine_spdx() {
if link != target_path:
link.symlink_to(os.path.relpath(target_path, link.parent))
spdx_tar_path = imgdeploydir / (image_name + ".spdx.tar.zst")
make_image_link(spdx_tar_path, ".spdx.tar.zst")
spdx_tar_path = imgdeploydir / (image_name + ".spdx.tar.gz")
make_image_link(spdx_tar_path, ".spdx.tar.gz")
}
python sdk_host_combine_spdx() {
@@ -931,7 +929,7 @@ def combine_spdx(d, rootfs_name, rootfs_deploydir, rootfs_spdxid, packages, spdx
from datetime import timezone, datetime
from pathlib import Path
import tarfile
import bb.compress.zstd
import gzip
creation_time = datetime.now(tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
@@ -1002,8 +1000,8 @@ def combine_spdx(d, rootfs_name, rootfs_deploydir, rootfs_spdxid, packages, spdx
index = {"documents": []}
spdx_tar_path = rootfs_deploydir / (rootfs_name + ".spdx.tar.zst")
with bb.compress.zstd.open(spdx_tar_path, "w", num_threads=num_threads) as f:
spdx_tar_path = rootfs_deploydir / (rootfs_name + ".spdx.tar.gz")
with gzip.open(spdx_tar_path, "w") as f:
with tarfile.open(fileobj=f, mode="w|") as tar:
def collect_spdx_document(path):
nonlocal tar