Package workstation tools, reuse emulator sessions, and derive build versions
This commit is contained in:
Executable
+33
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Export one FDS XBPS package, retaining superseded builds outside the active index."""
|
||||
import argparse
|
||||
import os
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
project = Path(__file__).resolve().parents[1]
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('package', type=Path)
|
||||
args = parser.parse_args()
|
||||
source = args.package.resolve(strict=True)
|
||||
name, release = source.name.rsplit('-', 1)
|
||||
if not name.startswith('fds-') or not release.endswith('.aarch64.xbps'):
|
||||
parser.error('Expected an FDS AArch64 package')
|
||||
out = project / 'out/packages'
|
||||
out.mkdir(exist_ok=True)
|
||||
old = [p for p in out.glob(f'{name}-*.aarch64.xbps') if p.name.rsplit('-', 1)[0] == name]
|
||||
if old:
|
||||
history = project / 'out/package-history'
|
||||
history.mkdir(exist_ok=True)
|
||||
saved = Path(tempfile.mkdtemp(prefix=f'{name}.', dir=history))
|
||||
for path in old:
|
||||
path.rename(saved / path.name)
|
||||
# Prune entries for archived versions before indexing the selected package.
|
||||
env = dict(os.environ, XBPS_ARCH='aarch64')
|
||||
index = project / '.host/xbps/usr/bin/xbps-rindex'
|
||||
subprocess.run([str(index), '-c', str(out)], env=env, check=True)
|
||||
shutil.copy2(source, out / source.name)
|
||||
subprocess.run([str(index), '-fa', str(out / source.name)], env=env, check=True)
|
||||
print(f'Exported {source.name}; previous builds retained under out/package-history')
|
||||
Reference in New Issue
Block a user