summaryrefslogtreecommitdiff
path: root/scripts-dev/build_debian_packages
diff options
context:
space:
mode:
Diffstat (limited to 'scripts-dev/build_debian_packages')
-rwxr-xr-xscripts-dev/build_debian_packages38
1 files changed, 29 insertions, 9 deletions
diff --git a/scripts-dev/build_debian_packages b/scripts-dev/build_debian_packages
index e25c5bb2..0ed1c679 100755
--- a/scripts-dev/build_debian_packages
+++ b/scripts-dev/build_debian_packages
@@ -17,6 +17,7 @@ import subprocess
import sys
import threading
from concurrent.futures import ThreadPoolExecutor
+from typing import Optional, Sequence
DISTS = (
"debian:buster",
@@ -39,8 +40,11 @@ projdir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
class Builder(object):
- def __init__(self, redirect_stdout=False):
+ def __init__(
+ self, redirect_stdout=False, docker_build_args: Optional[Sequence[str]] = None
+ ):
self.redirect_stdout = redirect_stdout
+ self._docker_build_args = tuple(docker_build_args or ())
self.active_containers = set()
self._lock = threading.Lock()
self._failed = False
@@ -79,8 +83,8 @@ class Builder(object):
stdout = None
# first build a docker image for the build environment
- subprocess.check_call(
- [
+ build_args = (
+ (
"docker",
"build",
"--tag",
@@ -89,8 +93,13 @@ class Builder(object):
"distro=" + dist,
"-f",
"docker/Dockerfile-dhvirtualenv",
- "docker",
- ],
+ )
+ + self._docker_build_args
+ + ("docker",)
+ )
+
+ subprocess.check_call(
+ build_args,
stdout=stdout,
stderr=subprocess.STDOUT,
cwd=projdir,
@@ -147,9 +156,7 @@ class Builder(object):
self.active_containers.remove(c)
-def run_builds(dists, jobs=1, skip_tests=False):
- builder = Builder(redirect_stdout=(jobs > 1))
-
+def run_builds(builder, dists, jobs=1, skip_tests=False):
def sig(signum, _frame):
print("Caught SIGINT")
builder.kill_containers()
@@ -181,6 +188,11 @@ if __name__ == "__main__":
help="skip running tests after building",
)
parser.add_argument(
+ "--docker-build-arg",
+ action="append",
+ help="specify an argument to pass to docker build",
+ )
+ parser.add_argument(
"--show-dists-json",
action="store_true",
help="instead of building the packages, just list the dists to build for, as a json array",
@@ -195,4 +207,12 @@ if __name__ == "__main__":
if args.show_dists_json:
print(json.dumps(DISTS))
else:
- run_builds(dists=args.dist, jobs=args.jobs, skip_tests=args.no_check)
+ builder = Builder(
+ redirect_stdout=(args.jobs > 1), docker_build_args=args.docker_build_arg
+ )
+ run_builds(
+ builder,
+ dists=args.dist,
+ jobs=args.jobs,
+ skip_tests=args.no_check,
+ )