aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2024-04-01 21:39:03 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2024-04-02 22:13:15 +0200
commitdea79504ad0befeb18a7fd8260bcef405214956c (patch)
tree0206b02d461de8cc01de0f88bc0f3d058d9890fc
parent48c5680f11807081fa64cd637516a4042b8d05c6 (diff)
downloadbackports-dea79504ad0befeb18a7fd8260bcef405214956c.tar.gz
backports-update-manager: Use zstandard from pip
Use the zstandard package from python pip instead of pyzstd. zstandard is more common and also integrated in later Ubuntu versions. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r--.devcontainer/Dockerfile2
-rwxr-xr-xdevel/backports-update-manager15
2 files changed, 9 insertions, 8 deletions
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 3894196e..f758c9cb 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -4,7 +4,7 @@ RUN apt update && \
apt install -y git coccinelle build-essential python3 python3-pip python-is-python3 flex bison libelf1 libelf-dev && \
rm -rf /var/lib/apt/lists/*
-RUN pip install pyzstd
+RUN pip install pyzstd zstandard
RUN git clone https://github.com/hauke/backports.git
diff --git a/devel/backports-update-manager b/devel/backports-update-manager
index c2900b64..79f0ae23 100755
--- a/devel/backports-update-manager
+++ b/devel/backports-update-manager
@@ -1,11 +1,11 @@
#!/usr/bin/env python3
import argparse, os, sys, errno, getopt, re
import shutil
+import zstandard
from urllib.request import urlopen
from urllib.parse import urljoin
import tarfile, tempfile
import fileinput, subprocess
-from pyzstd import ZstdFile
source_dir = os.path.abspath(os.path.dirname(__file__))
sys.path.append(source_dir + '/../')
from lib import bpar as ar
@@ -543,13 +543,14 @@ class backport_kernel_updater:
data, dpath = tempfile.mkstemp(prefix=tmp_prefix)
ar.print_data(target, data)
try:
- tar = tarfile.open(name=dpath, mode='r')
- tar.extractall(path=tmpdir_path, members=bk_tar_members(tar))
+ with tarfile.open(name=dpath, mode='r') as tar:
+ tar.extractall(path=tmpdir_path, members=bk_tar_members(tar))
except (tarfile.ReadError):
- zstd_file = ZstdFile(dpath)
- tar = tarfile.open(fileobj=zstd_file, mode='r')
- tar.extractall(path=tmpdir_path, members=bk_tar_members(tar))
- zstd_file.close()
+ with open(dpath, 'rb') as file:
+ unzstd = zstandard.ZstdDecompressor()
+ with unzstd.stream_reader(file) as stream:
+ with tarfile.open(fileobj=stream, mode='r|') as tar:
+ tar.extractall(path=tmpdir_path, members=bk_tar_members(tar))
os.unlink(dpath)
self.sanitize_and_install_kernel_dirs(tmpdir_path)