aboutsummaryrefslogtreecommitdiff
path: root/kolla
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2024-03-28 16:29:14 +0000
committerGerrit Code Review <review@openstack.org>2024-03-28 16:29:14 +0000
commit95a671b00df7625a357aa73f99f75965cb08aff2 (patch)
tree9fb3f5d6ba16da122e88f91730e79c7fc83a93f9 /kolla
parent2576fbde000484502e88b58d372b4c193341ed8b (diff)
parent3ee1a82d8761902a75e075ccbcd8e9e02a226051 (diff)
downloadkolla-95a671b00df7625a357aa73f99f75965cb08aff2.tar.gz
kolla-95a671b00df7625a357aa73f99f75965cb08aff2.zip
Merge "add: cross-compile support"
Diffstat (limited to 'kolla')
-rw-r--r--kolla/common/config.py8
-rw-r--r--kolla/image/tasks.py1
-rw-r--r--kolla/tests/test_build.py13
3 files changed, 17 insertions, 5 deletions
diff --git a/kolla/common/config.py b/kolla/common/config.py
index 2d12314a8..3a74c7dc6 100644
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -143,6 +143,10 @@ if hostarch == 'aarch64':
elif hostarch == 'x86_64':
debianarch = 'amd64'
+# NOTE: Apple Silicon reports as arm64 which is aarch64
+if hostarch == "arm64":
+ hostarch = "aarch64"
+
_CLI_OPTS = [
cfg.StrOpt('base', short='b', default='rocky',
choices=BASE_OS_DISTRO,
@@ -183,6 +187,10 @@ _CLI_OPTS = [
help='The network mode for Docker build. Example: host'),
cfg.BoolOpt('cache', default=True,
help='Use the container engine cache when building'),
+ cfg.StrOpt('platform', default=None,
+ help=('The platform to use for a cross-compile build. Should '
+ 'be set in conjunction with "--base-arch" argument. '
+ 'Example: "--platform linux/arm64 --base-arch aarch64"')),
cfg.MultiOpt('profile', types.String(), short='p',
help=('Build a pre-defined set of images, see [profiles]'
' section in config. The default profiles are:'
diff --git a/kolla/image/tasks.py b/kolla/image/tasks.py
index e9790b708..1242ecd8d 100644
--- a/kolla/image/tasks.py
+++ b/kolla/image/tasks.py
@@ -412,6 +412,7 @@ class BuildTask(EngineTask):
network_mode=self.conf.network_mode,
pull=pull,
forcerm=self.forcerm,
+ platform=self.conf.platform,
buildargs=buildargs,
**kwargs)[1]:
if self.conf.engine == engine.Engine.PODMAN.value:
diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py
index 7ffa6827a..afbfe009c 100644
--- a/kolla/tests/test_build.py
+++ b/kolla/tests/test_build.py
@@ -168,7 +168,7 @@ class TasksTest(base.TestCase):
mock_client().images.build.assert_called_once_with(
path=self.image.path, tag=self.image.canonical_name,
network_mode='host', nocache=False, rm=True, pull=True,
- forcerm=True, buildargs=None, **self.build_kwargs)
+ forcerm=True, platform=None, buildargs=None, **self.build_kwargs)
self.assertTrue(builder.success)
@@ -185,7 +185,7 @@ class TasksTest(base.TestCase):
mock_client().images.build.assert_called_once_with(
path=self.image.path, tag=self.image.canonical_name,
network_mode='bridge', nocache=False, rm=True, pull=True,
- forcerm=True, buildargs=None, **self.build_kwargs)
+ forcerm=True, platform=None, buildargs=None, **self.build_kwargs)
self.assertTrue(builder.success)
@@ -205,7 +205,8 @@ class TasksTest(base.TestCase):
mock_client().images.build.assert_called_once_with(
path=self.image.path, tag=self.image.canonical_name,
network_mode='host', nocache=False, rm=True, pull=True,
- forcerm=True, buildargs=build_args, **self.build_kwargs)
+ forcerm=True, platform=None, buildargs=build_args,
+ **self.build_kwargs)
self.assertTrue(builder.success)
@@ -224,7 +225,8 @@ class TasksTest(base.TestCase):
mock_client().images.build.assert_called_once_with(
path=self.image.path, tag=self.image.canonical_name,
network_mode='host', nocache=False, rm=True, pull=True,
- forcerm=True, buildargs=build_args, **self.build_kwargs)
+ forcerm=True, platform=None, buildargs=build_args,
+ **self.build_kwargs)
self.assertTrue(builder.success)
@@ -245,7 +247,8 @@ class TasksTest(base.TestCase):
mock_client().images.build.assert_called_once_with(
path=self.image.path, tag=self.image.canonical_name,
network_mode='host', nocache=False, rm=True, pull=True,
- forcerm=True, buildargs=build_args, **self.build_kwargs)
+ forcerm=True, platform=None, buildargs=build_args,
+ **self.build_kwargs)
self.assertTrue(builder.success)