salt/pkg/rpm/build.py
2025-02-10 15:26:36 -07:00

54 lines
1.3 KiB
Python
Executable file

#! /bin/env python
import argparse
import os
import sys
import tarfile
from os.path import abspath, dirname, join
from shutil import copy
from subprocess import check_call
parser = argparse.ArgumentParser(description="Build salt rpms")
parser.add_argument(
"buildid",
help="The build id to use i.e. the bit after the salt version in the package name",
)
args = parser.parse_args()
src = abspath(join(dirname(__file__), "../.."))
sys.path.append(src)
import salt.version # isort:skip
salt_version = salt.version.__saltstack_version__.string
rpmbuild = join(os.environ["HOME"], "rpmbuild")
copy(join(src, "pkg/rpm/salt.spec"), join(rpmbuild, "SPECS"))
for f in os.listdir(join(src, "pkg/rpm")):
if f in ["salt.spec", "build.py"]:
continue
copy(join(src, "pkg/rpm", f), join(rpmbuild, "SOURCES"))
def srcfilter(ti):
if "/.git" in ti.name:
return None
return ti
with tarfile.open(
join(rpmbuild, "SOURCES/salt-%s.tar.gz" % salt_version), "w|gz"
) as tf:
tf.add(src, arcname="salt-%s" % salt_version, filter=srcfilter)
cmd = [
"rpmbuild",
"-bb",
"--define=salt_version %s" % salt_version,
"--define=buildid %s" % args.buildid,
"salt.spec",
]
print("Executing: %s" % " ".join('"%s"' % c for c in cmd))
check_call(cmd, cwd=join(rpmbuild, "SPECS"))