pkglistgen: Also support zstd for weakremovers.inc
This commit is contained in:
parent
e679863a88
commit
33da10611b
@ -2,6 +2,9 @@ import glob
|
||||
import os
|
||||
import os.path
|
||||
import shutil
|
||||
import solv
|
||||
import tempfile
|
||||
import subprocess
|
||||
|
||||
from lxml import etree as ET
|
||||
|
||||
@ -60,3 +63,19 @@ def unlink_list(path, names):
|
||||
|
||||
if os.path.isfile(name_path):
|
||||
os.unlink(name_path)
|
||||
|
||||
|
||||
def add_susetags(pool, file):
|
||||
oldsysrepo = pool.add_repo(file)
|
||||
defvendorid = oldsysrepo.meta.lookup_id(solv.SUSETAGS_DEFAULTVENDOR)
|
||||
f = tempfile.TemporaryFile()
|
||||
if file.endswith('.xz'):
|
||||
subprocess.call(['xz', '-cd', file], stdout=f.fileno())
|
||||
elif file.endswith('.zst'):
|
||||
subprocess.call(['zstd', '-cd', file], stdout=f.fileno())
|
||||
else:
|
||||
raise Exception("unsupported " + file)
|
||||
os.lseek(f.fileno(), 0, os.SEEK_SET)
|
||||
oldsysrepo.add_susetags(solv.xfopen_fd(None, f.fileno()), defvendorid, None,
|
||||
solv.Repo.REPO_NO_INTERNALIZE | solv.Repo.SUSETAGS_RECORD_SHARES)
|
||||
return oldsysrepo
|
||||
|
@ -7,7 +7,6 @@ import solv
|
||||
import shutil
|
||||
import subprocess
|
||||
import yaml
|
||||
import tempfile
|
||||
|
||||
from lxml import etree as ET
|
||||
|
||||
@ -405,22 +404,17 @@ class PkgListGen(ToolBase.ToolBase):
|
||||
# cast 15.1 to string :)
|
||||
key = str(key)
|
||||
|
||||
oldrepos = set(glob.glob(os.path.join(directory, '{}_*.packages.xz'.format(key))))
|
||||
oldrepos |= set(glob.glob(os.path.join(directory, '{}.packages.xz'.format(key))))
|
||||
oldrepos = set()
|
||||
for suffix in ['xz', 'zst']:
|
||||
oldrepos |= set(glob.glob(os.path.join(directory, f"{key}_*.packages.{suffix}")))
|
||||
oldrepos |= set(glob.glob(os.path.join(directory, f"{key}.packages.{suffix}")))
|
||||
for oldrepo in sorted(oldrepos):
|
||||
pool = solv.Pool()
|
||||
pool.setarch()
|
||||
|
||||
# we need some progress in the debug output - or gocd gets nervous
|
||||
self.logger.debug('checking {}'.format(oldrepo))
|
||||
oldsysrepo = pool.add_repo(oldrepo)
|
||||
defvendorid = oldsysrepo.meta.lookup_id(solv.SUSETAGS_DEFAULTVENDOR)
|
||||
f = tempfile.TemporaryFile()
|
||||
# FIXME: port to lzma module with python3
|
||||
subprocess.call(['xz', '-cd', oldrepo], stdout=f.fileno())
|
||||
os.lseek(f.fileno(), 0, os.SEEK_SET)
|
||||
oldsysrepo.add_susetags(solv.xfopen_fd(None, f.fileno()), defvendorid, None,
|
||||
solv.Repo.REPO_NO_INTERNALIZE | solv.Repo.SUSETAGS_RECORD_SHARES)
|
||||
oldsysrepo = file_utils.add_susetags(pool, oldrepo)
|
||||
|
||||
for arch in self.all_architectures:
|
||||
for project, repo in self.repos:
|
||||
|
@ -12,17 +12,14 @@ import subprocess
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
import requests
|
||||
import solv
|
||||
import yaml
|
||||
from lxml import etree as ET
|
||||
|
||||
import osc.core
|
||||
from osclib.cache_manager import CacheManager
|
||||
|
||||
import requests
|
||||
|
||||
import solv
|
||||
|
||||
import yaml
|
||||
from pkglistgen import file_utils
|
||||
|
||||
from urllib.parse import urljoin, urlparse
|
||||
|
||||
@ -181,27 +178,12 @@ def print_repo_delta(pool, repo2, packages_file):
|
||||
print('-Prv:', file=packages_file)
|
||||
|
||||
|
||||
def add_susetags(pool, file):
|
||||
oldsysrepo = pool.add_repo(file)
|
||||
defvendorid = oldsysrepo.meta.lookup_id(solv.SUSETAGS_DEFAULTVENDOR)
|
||||
f = tempfile.TemporaryFile()
|
||||
if file.endswith('.xz'):
|
||||
subprocess.call(['xz', '-cd', file], stdout=f.fileno())
|
||||
elif file.endswith('.zst'):
|
||||
subprocess.call(['zstd', '-cd', file], stdout=f.fileno())
|
||||
else:
|
||||
raise Exception("unsupported " + file)
|
||||
os.lseek(f.fileno(), 0, os.SEEK_SET)
|
||||
oldsysrepo.add_susetags(solv.xfopen_fd(None, f.fileno()), defvendorid, None,
|
||||
solv.Repo.REPO_NO_INTERNALIZE | solv.Repo.SUSETAGS_RECORD_SHARES)
|
||||
|
||||
|
||||
def merge_susetags(output, files):
|
||||
pool = solv.Pool()
|
||||
pool.setarch()
|
||||
|
||||
for file in files:
|
||||
add_susetags(pool, file)
|
||||
file_utils.add_susetags(pool, file)
|
||||
|
||||
packages = dict()
|
||||
for s in pool.solvables_iter():
|
||||
@ -236,7 +218,7 @@ def fixate_target(root, package, fixate):
|
||||
return False
|
||||
del opts['refresh']
|
||||
oldfiles = target_files(package.dir, key)
|
||||
newfile = os.path.join(package.dir, f'{fixate}_package')
|
||||
newfile = os.path.join(package.dir, f'{fixate}_packages')
|
||||
merge_susetags(newfile, oldfiles)
|
||||
for file in oldfiles:
|
||||
os.unlink(file)
|
||||
@ -320,7 +302,7 @@ def update_project(apiurl, project, fixate=None):
|
||||
|
||||
if opts.get('refresh', False):
|
||||
for file in target_files(repo_dir, key):
|
||||
add_susetags(pool, file)
|
||||
file_utils.add_susetags(pool, file)
|
||||
|
||||
repo1 = pool.add_repo(''.join(random.choice(string.ascii_letters) for _ in range(5)))
|
||||
repo1.add_solv(solv_file)
|
||||
|
Loading…
x
Reference in New Issue
Block a user