From 493b3ebb4b674016f7f42d427c2bf616fa9f0a10 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 20:57:07 -0800 Subject: [PATCH 01/27] Create make commands for single arch --- Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile b/Makefile index 9102500..2c67bd0 100644 --- a/Makefile +++ b/Makefile @@ -58,6 +58,12 @@ build-multi-arch: pre-build docker run --privileged --rm tonistiigi/binfmt --install arm64 docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg IMAGE_ARCH=arm64 ./build-image-src +build-x86-64-arch: pre-build + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src + +build-arm64-arch: pre-build + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg IMAGE_ARCH=arm64 ./build-image-src + test: pre-build pytest tests -vv -m $(RUNTIME) From 71f463030ff1f3385182b0ead8457eaa236522e9 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:27:32 -0800 Subject: [PATCH 02/27] py311 tests group based on arch --- tests/test_build_images.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index baffa9d..db270e9 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -527,7 +527,7 @@ def test_packages(self): self.assertTrue(self.check_package_output("python --version", "Python 3.10.")) self.assertTrue(self.is_package_present("pip")) -@pytest.mark.python311 +@pytest.mark.python311Arm64 class TestBIPython311ForArm(BuildImageBase): __test__ = True @@ -543,7 +543,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("pip")) -@pytest.mark.python311 +@pytest.mark.python311X86_64 class TestBIPython311(BuildImageBase): __test__ = True From 006ab0ee7f008abec36ec2e35c151a4c50c4e66a Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:28:26 -0800 Subject: [PATCH 03/27] Update Makefile --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 2c67bd0..76e0236 100644 --- a/Makefile +++ b/Makefile @@ -60,9 +60,11 @@ build-multi-arch: pre-build build-x86-64-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src + pytest tests -vv -m python311X86_64 build-arm64-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg IMAGE_ARCH=arm64 ./build-image-src + pytest tests -vv -m python311Arm64 test: pre-build pytest tests -vv -m $(RUNTIME) From 5428d3a3d9da6019c7c4b8e39bcc1fcba9f7b379 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:48:02 -0800 Subject: [PATCH 04/27] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index af7e593..553a13d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ pylint~=2.6.0 urllib3<2 # Test requirements -pytest==6.1.1 +pytest==6.2.5 # formatter black==20.8b1 From abb787bdedb07dca657994605675bb851ba945a5 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:55:20 -0800 Subject: [PATCH 05/27] Update Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 76e0236..0367eda 100644 --- a/Makefile +++ b/Makefile @@ -60,11 +60,11 @@ build-multi-arch: pre-build build-x86-64-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src - pytest tests -vv -m python311X86_64 + pytest tests -vv -m $(RUNTIME)X86_64 build-arm64-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg IMAGE_ARCH=arm64 ./build-image-src - pytest tests -vv -m python311Arm64 + pytest tests -vv -m $(RUNTIME)Arm64 test: pre-build pytest tests -vv -m $(RUNTIME) From 423925ce55f6268630e80903632383d8874498f3 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:57:21 -0800 Subject: [PATCH 06/27] Update test_build_images.py --- tests/test_build_images.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index db270e9..2472721 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -446,7 +446,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.python38 +@pytest.mark.python38X86_64 class TestBIPython38(BuildImageBase): __test__ = True @@ -463,7 +463,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.python38 +@pytest.mark.python38Arm64 class TestBIPython38ForArm(BuildImageBase): __test__ = True @@ -480,7 +480,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.python39 +@pytest.mark.python39X86_64 class TestBIPython39(BuildImageBase): __test__ = True @@ -496,7 +496,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("pip")) -@pytest.mark.python310 +@pytest.mark.python310Arm64 class TestBIPython310ForArm(BuildImageBase): __test__ = True @@ -512,7 +512,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("pip")) -@pytest.mark.python310 +@pytest.mark.python310X86_64 class TestBIPython310(BuildImageBase): __test__ = True @@ -590,7 +590,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("pip")) -@pytest.mark.python39 +@pytest.mark.python39Arm64 class TestBIPython39ForArm(BuildImageBase): __test__ = True From d8bc9d14ccd900c44decd92274fe7395facb9533 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 22:12:06 -0800 Subject: [PATCH 07/27] Update test_build_images.py --- tests/test_build_images.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index 2472721..cbf59c8 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -260,7 +260,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("gradle")) self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.nodejs12x +@pytest.mark.nodejs12xX86_64 class TestBINode12(BuildImageBase): __test__ = True @@ -277,7 +277,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.nodejs12x +@pytest.mark.nodejs12xArm64 class TestBINode12ForArm(BuildImageBase): __test__ = True @@ -294,7 +294,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.nodejs14x +@pytest.mark.nodejs14xX86_64 class TestBINode14(BuildImageBase): __test__ = True @@ -311,7 +311,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.nodejs14x +@pytest.mark.nodejs14xArm64 class TestBINode14ForArm(BuildImageBase): __test__ = True @@ -328,7 +328,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.nodejs16x +@pytest.mark.nodejs16xX86_64 class TestBINode16(BuildImageBase): __test__ = True @@ -345,7 +345,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.nodejs16x +@pytest.mark.nodejs16xArm64 class TestBINode16ForArm(BuildImageBase): __test__ = True @@ -362,7 +362,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.nodejs18x +@pytest.mark.nodejs18xX86_64 class TestBINode18(BuildImageBase): __test__ = True @@ -379,7 +379,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.nodejs18x +@pytest.mark.nodejs18xArm64 class TestBINode18ForArm(BuildImageBase): __test__ = True @@ -395,7 +395,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("npm")) self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.nodejs20x +@pytest.mark.nodejs20xX86_64 class TestBINode20(AL2023BasedBuildImageBase): __test__ = True @@ -412,7 +412,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.nodejs20x +@pytest.mark.nodejs20xArm64 class TestBINode20ForArm(AL2023BasedBuildImageBase): __test__ = True From 39730f5024dd9939c37312f1521c4973b648cc2d Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 22:25:26 -0800 Subject: [PATCH 08/27] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 553a13d..edd7aa3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ pylint~=2.6.0 urllib3<2 # Test requirements -pytest==6.2.5 +pytest==7.3.1 # formatter black==20.8b1 From 274e915328041079ebaea9430663b2c72c38c3b4 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 22:32:45 -0800 Subject: [PATCH 09/27] Update test_build_images.py --- tests/test_build_images.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index cbf59c8..74de9de 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -558,7 +558,7 @@ def test_packages(self): self.assertTrue(self.check_package_output("python --version", "Python 3.11.")) self.assertTrue(self.is_package_present("pip")) -@pytest.mark.python312 +@pytest.mark.python312Arm64 class TestBIPython312ForArm(AL2023BasedBuildImageBase): __test__ = True @@ -574,7 +574,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("pip")) -@pytest.mark.python312 +@pytest.mark.python312X86_64 class TestBIPython312(AL2023BasedBuildImageBase): __test__ = True From e6d5e93f312ef59aa77acd3dcc249e3b2ca7a990 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 13 Dec 2023 22:53:18 -0800 Subject: [PATCH 10/27] Update test_build_images.py --- tests/test_build_images.py | 50 +++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index 74de9de..6fabcc8 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -2,7 +2,7 @@ from tests.build_image_base_test import BuildImageBase, AL2023BasedBuildImageBase -@pytest.mark.java8 +@pytest.mark.java8X86_64 class TestBIJava8(BuildImageBase): __test__ = True @@ -22,7 +22,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.java8_al2 +@pytest.mark.java8_al2X86_64 class TestBIJava8AL2(BuildImageBase): __test__ = True @@ -42,7 +42,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.java8_al2 +@pytest.mark.java8_al2Arm64 class TestBIJava8AL2ForArm(BuildImageBase): __test__ = True @@ -62,7 +62,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.java11 +@pytest.mark.java11X86_64 class TestBIJava11(BuildImageBase): __test__ = True @@ -82,7 +82,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.java11 +@pytest.mark.java11Arm64 class TestBIJava11ForArm(BuildImageBase): __test__ = True @@ -102,7 +102,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.java17 +@pytest.mark.java17X86_64 class TestBIJava17Maven(BuildImageBase): __test__ = True @@ -122,7 +122,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.java17 +@pytest.mark.java17Arm64 class TestBIJava17ForArmMaven(BuildImageBase): __test__ = True @@ -142,7 +142,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.java17 +@pytest.mark.java17X86_64 class TestBIJava17AL2Gradle(BuildImageBase): __test__ = True @@ -162,7 +162,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.java17 +@pytest.mark.java17Arm64 class TestBIJava17AL2ForArmGradle(BuildImageBase): __test__ = True @@ -181,7 +181,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("gradle")) self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.java21 +@pytest.mark.java21X86_64 class TestBIJava21Maven(AL2023BasedBuildImageBase): __test__ = True @@ -201,7 +201,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.java21 +@pytest.mark.java21Arm64 class TestBIJava21ForArmMaven(AL2023BasedBuildImageBase): __test__ = True @@ -221,7 +221,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.java21 +@pytest.mark.java21X86_64 class TestBIJava21Gradle(AL2023BasedBuildImageBase): __test__ = True @@ -241,7 +241,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.java21 +@pytest.mark.java21Arm64 class TestBIJava21ForArmGradle(AL2023BasedBuildImageBase): __test__ = True @@ -606,7 +606,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("pip")) -@pytest.mark.dotnet6 +@pytest.mark.dotnet6X86_64 class TestBIDotNet6(BuildImageBase): __test__ = True @@ -624,7 +624,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("dotnet")) -@pytest.mark.dotnet6 +@pytest.mark.dotnet6Arm64 class TestBIDotNet6Arm(BuildImageBase): __test__ = True @@ -642,7 +642,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("dotnet")) -@pytest.mark.dotnet7 +@pytest.mark.dotnet7X86_64 class TestBIDotNet7(BuildImageBase): __test__ = True @@ -660,7 +660,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("dotnet")) -@pytest.mark.dotnet7 +@pytest.mark.dotnet7Arm64 class TestBIDotNet7Arm(BuildImageBase): __test__ = True @@ -678,7 +678,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("dotnet")) -@pytest.mark.ruby27 +@pytest.mark.ruby27X86_64 class TestBIRuby27(BuildImageBase): __test__ = True @@ -696,7 +696,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.ruby27 +@pytest.mark.ruby27Arm64 class TestBIRuby27ForArm(BuildImageBase): __test__ = True @@ -713,7 +713,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("gem")) self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.ruby32 +@pytest.mark.ruby32X86_64 class TestBIRuby32(BuildImageBase): __test__ = True @@ -730,7 +730,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("gem")) self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.ruby32 +@pytest.mark.ruby32Arm64 class TestBIRuby32ForArm(BuildImageBase): __test__ = True @@ -772,7 +772,7 @@ def setUpClass(cls): super().setUpClass("provided", "Dockerfile-provided") -@pytest.mark.provided_al2 +@pytest.mark.provided_al2X86_64 class TestBIProvidedAL2(BuildImageBase): __test__ = True @@ -787,7 +787,7 @@ def test_architecture(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.provided_al2 +@pytest.mark.provided_al2Arm64 class TestBIProvidedAL2ForArm(BuildImageBase): __test__ = True @@ -802,7 +802,7 @@ def test_architecture(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.provided_al2023 +@pytest.mark.provided_al2023X86_64 class TestBIProvidedAL2023(AL2023BasedBuildImageBase): __test__ = True @@ -817,7 +817,7 @@ def test_architecture(self): self.assertTrue(self.is_architecture("x86_64")) -@pytest.mark.provided_al2023 +@pytest.mark.provided_al2023Arm64 class TestBIProvidedAL2023ForArm(BuildImageBase): __test__ = True package_managers = ["dnf"] From 2d539f5b23de8611bbdf2a0e49948557a852d20b Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 2 Feb 2024 09:20:50 -0800 Subject: [PATCH 11/27] Update Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 31b0561..d2d49b9 100644 --- a/Makefile +++ b/Makefile @@ -59,11 +59,11 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src pytest tests -vv -m $(RUNTIME)X86_64 build-arm64-arch: pre-build - docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg IMAGE_ARCH=arm64 ./build-image-src + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src pytest tests -vv -m $(RUNTIME)Arm64 test: pre-build From 618c8df521a2f0364a6b1a9a9a64af308fbcafd1 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:00:18 -0800 Subject: [PATCH 12/27] Update Makefile --- Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d2d49b9..d0cf373 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,12 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src + if $(RUNTIME) == "go1x" + then + build-single-arch + else + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src + fi pytest tests -vv -m $(RUNTIME)X86_64 build-arm64-arch: pre-build From 7f0af1b2b03185d959f96a3e163dcd7e38d71288 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:03:46 -0800 Subject: [PATCH 13/27] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d0cf373..4e14d77 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - if $(RUNTIME) == "go1x" + if $(RUNTIME) == go1x then build-single-arch else From 6bbfa560d47a3a39ebda47b37eabe037a4dfce41 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:06:53 -0800 Subject: [PATCH 14/27] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4e14d77..8c6e0e7 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - if $(RUNTIME) == go1x + if [ $(RUNTIME) == go1x ] then build-single-arch else From c0b9e036031e1752db5483abdc791a283a234bf8 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:12:35 -0800 Subject: [PATCH 15/27] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8c6e0e7..82dd43f 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - if [ $(RUNTIME) == go1x ] + if [ $(RUNTIME) = go1x ] then build-single-arch else From 162e146ed5e1336242906c7f0e92e778b777eea0 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:18:42 -0800 Subject: [PATCH 16/27] Update Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 82dd43f..e26837b 100644 --- a/Makefile +++ b/Makefile @@ -59,9 +59,9 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - if [ $(RUNTIME) = go1x ] + if [ $(RUNTIME) = go1x ]; then - build-single-arch + build-single-arch; else docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src fi From 3e0ec648adc34c7f97df25d947a27ffcef6bdf1e Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:21:01 -0800 Subject: [PATCH 17/27] Update Makefile --- Makefile | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Makefile b/Makefile index e26837b..d2d49b9 100644 --- a/Makefile +++ b/Makefile @@ -59,12 +59,7 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - if [ $(RUNTIME) = go1x ]; - then - build-single-arch; - else - docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src - fi + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src pytest tests -vv -m $(RUNTIME)X86_64 build-arm64-arch: pre-build From 89de0daf80c788313f11a5027dc0dd512c69c6e8 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 14 Feb 2024 11:42:23 -0800 Subject: [PATCH 18/27] Update test_build_images.py --- tests/test_build_images.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index f68da6f..83adf27 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -846,7 +846,7 @@ def test_packages(self): @pytest.mark.provided_al2023Arm64 -class TestBIProvidedAL2023ForArm(BuildImageBase): +class TestBIProvidedAL2023ForArm(AL2023BasedBuildImageBase): __test__ = True @classmethod @@ -864,4 +864,4 @@ def test_packages(self): Test packages specific to this build image """ self.assertTrue(self.check_package_output("go version", "go1.")) - self.assertTrue(self.is_package_present("go")) \ No newline at end of file + self.assertTrue(self.is_package_present("go")) From 56fb110d30d47ac6757ad86aba17a5381add81d3 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 14 Feb 2024 13:25:10 -0800 Subject: [PATCH 19/27] Update Makefile --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d2d49b9..01c917b 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,11 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src + ifeq ($(strip $(RUNTIME)), java8) + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) ./build-image-src + else + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src + endif pytest tests -vv -m $(RUNTIME)X86_64 build-arm64-arch: pre-build From c67ea3483a1f10ffef5a4b3365683178b93d9feb Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Wed, 14 Feb 2024 13:49:25 -0800 Subject: [PATCH 20/27] Update Makefile --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 01c917b..1dc96c6 100644 --- a/Makefile +++ b/Makefile @@ -59,11 +59,11 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build - ifeq ($(strip $(RUNTIME)), java8) - docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) ./build-image-src - else - docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src - endif +ifeq ($(strip $(RUNTIME)), java8) + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) ./build-image-src +else + docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src +endif pytest tests -vv -m $(RUNTIME)X86_64 build-arm64-arch: pre-build From 38dc0ab882672edeb9bf6833513d282944200abb Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Thu, 15 Feb 2024 08:51:40 -0800 Subject: [PATCH 21/27] Update Makefile --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 1dc96c6..34ee9e5 100644 --- a/Makefile +++ b/Makefile @@ -64,14 +64,16 @@ ifeq ($(strip $(RUNTIME)), java8) else docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src endif - pytest tests -vv -m $(RUNTIME)X86_64 build-arm64-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src - pytest tests -vv -m $(RUNTIME)Arm64 test: pre-build - pytest tests -vv -m $(RUNTIME) +ifeq ($(strip $(ARCH)), x86_64) + pytest tests -vv -m $(RUNTIME)X86_64 +else ifeq ($(strip $(ARCH)), arm64) + pytest tests -vv -m $(RUNTIME)Arm64 +endif lint: # Linter performs static analysis to catch latent bugs From a4174d9301db2ecbef39cba788800a34e0990754 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:19:41 -0800 Subject: [PATCH 22/27] Update GH actions to run integ tests --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4a3c21a..aabf8e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: name: Parent PR Status Check # If any dependent jobs fails, this WF skips which won't block merging PRs # calling always() is required for this WF to run all the time - if: github.repository_owner == 'aws' && always() + # if: github.repository_owner == 'aws' && always() runs-on: ubuntu-latest needs: - build-single-arch @@ -98,4 +98,5 @@ jobs: use-installer: true - run: make init - run: SAM_CLI_VERSION=${{needs.get-sam-cli-version.outputs.sam_cli_version}} RUNTIME=${{matrix.runtime}} make build-multi-arch - - run: SAM_CLI_VERSION=${{needs.get-sam-cli-version.outputs.sam_cli_version}} RUNTIME=${{matrix.runtime}} make test + - run: SAM_CLI_VERSION=${{needs.get-sam-cli-version.outputs.sam_cli_version}} RUNTIME=${{matrix.runtime}} ARCH=x86_64 make test + - run: SAM_CLI_VERSION=${{needs.get-sam-cli-version.outputs.sam_cli_version}} RUNTIME=${{matrix.runtime}} ARCH=arm64 make test From 9cd64857a0e0cfb6f52236393e25a0e52f5bbdd3 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:20:16 -0800 Subject: [PATCH 23/27] Update single arch integ tests --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aabf8e7..6f2a9f9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,7 +59,7 @@ jobs: use-installer: true - run: make init - run: SAM_CLI_VERSION=${{needs.get-sam-cli-version.outputs.sam_cli_version}} RUNTIME=${{matrix.runtime}} make build-single-arch - - run: SAM_CLI_VERSION=${{needs.get-sam-cli-version.outputs.sam_cli_version}} RUNTIME=${{matrix.runtime}} make test + - run: SAM_CLI_VERSION=${{needs.get-sam-cli-version.outputs.sam_cli_version}} RUNTIME=${{matrix.runtime}} ARCH=x86_64 make test build-multi-arch: strategy: From 067055ab775ae5b753d4f444b73cc7184b7ef399 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:44:55 -0800 Subject: [PATCH 24/27] update single arch integ tests marker --- tests/test_build_images.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index 83adf27..b895004 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -429,7 +429,7 @@ def test_packages(self): self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.python37 +@pytest.mark.python37X86_64 class TestBIPython37(BuildImageBase): __test__ = True @@ -747,7 +747,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("gem")) self.assertTrue(self.is_architecture("aarch64")) -@pytest.mark.go1x +@pytest.mark.go1xX86_64 class TestBIGo1(BuildImageBase): __test__ = True @@ -763,7 +763,7 @@ def test_packages(self): self.assertTrue(self.is_package_present("go")) -@pytest.mark.provided +@pytest.mark.providedX86_64 class TestBIProvided(BuildImageBase): __test__ = True From 8b256fe6d0f683979f664701fb5342b972751890 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Thu, 15 Feb 2024 10:11:03 -0800 Subject: [PATCH 25/27] Checks for single arch images --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 34ee9e5..0110a32 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ build-multi-arch: pre-build docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):arm64 --platform linux/arm64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=aarch64 --build-arg GO_ARCH=arm64 --build-arg IMAGE_ARCH=arm64 ./build-image-src build-x86-64-arch: pre-build -ifeq ($(strip $(RUNTIME)), java8) +ifeq ($(strip $(RUNTIME)), $(IS_java8)) || ($(strip $(RUNTIME)), $(IS_provided)) || ($(strip $(RUNTIME)), $(IS_go1x)) docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) ./build-image-src else docker build -f build-image-src/Dockerfile-$(RUNTIME) -t amazon/aws-sam-cli-build-image-$(IS_$(RUNTIME)):x86_64 --platform linux/amd64 --build-arg SAM_CLI_VERSION=$(SAM_CLI_VERSION) --build-arg AWS_CLI_ARCH=x86_64 --build-arg GO_ARCH=amd64 --build-arg IMAGE_ARCH=x86_64 ./build-image-src From 5489f650ad7c4e7c4f96ecf91f7662c83919b2a0 Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Thu, 15 Feb 2024 13:35:21 -0800 Subject: [PATCH 26/27] Add dummy test for dotne8 arm64 --- tests/test_build_images.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_build_images.py b/tests/test_build_images.py index 477baae..9aa5e5d 100644 --- a/tests/test_build_images.py +++ b/tests/test_build_images.py @@ -615,6 +615,10 @@ def test_packages(self): def test_dummy(): assert 1 == 1 +@pytest.mark.dotnet8Arm64 +def test_dummy_for_arm64(): + assert 1 == 1 + @pytest.mark.ruby32X86_64 class TestBIRuby32(BuildImageBase): __test__ = True From 045fba2181f6794405f20e89847870801fecf38e Mon Sep 17 00:00:00 2001 From: Haresh Nasit <84355507+hnnasit@users.noreply.github.com> Date: Thu, 15 Feb 2024 13:38:41 -0800 Subject: [PATCH 27/27] Re-enable condition for running build GH actions --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5b10634..cd698db 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: name: Parent PR Status Check # If any dependent jobs fails, this WF skips which won't block merging PRs # calling always() is required for this WF to run all the time - # if: github.repository_owner == 'aws' && always() + if: github.repository_owner == 'aws' && always() runs-on: ubuntu-latest needs: - build-single-arch