From f788a0e63b3bdfe2e3d6682829e19f0116421c5a Mon Sep 17 00:00:00 2001 From: dappnodedev Date: Tue, 23 Jul 2024 16:10:52 +0200 Subject: [PATCH 1/2] Fix AMD build on Mac --- src/tasks/buildAndUpload/getBuildTasks.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tasks/buildAndUpload/getBuildTasks.ts b/src/tasks/buildAndUpload/getBuildTasks.ts index 5032ca0c..fc642388 100644 --- a/src/tasks/buildAndUpload/getBuildTasks.ts +++ b/src/tasks/buildAndUpload/getBuildTasks.ts @@ -5,6 +5,7 @@ import { buildWithBuildx } from "./buildWithBuildx.js"; import { buildWithCompose } from "./buildWithCompose.js"; import { Architecture, defaultArch } from "@dappnode/types"; import { getImageFileName } from "../../utils/getImageFileName.js"; +import { getArchitecture } from "../../utils/getArchitecture.js"; /** * The naming scheme for multiarch exported images must be @@ -57,7 +58,7 @@ function createBuildTask({ const { manifest, releaseDir, images, compose } = variantSpecs; const { name, version } = manifest; const buildFn = - architecture === defaultArch ? buildWithCompose : buildWithBuildx; + architecture === getArchitecture() ? buildWithCompose : buildWithBuildx; const destPath = getImagePath({ releaseDir, From 5742aeb63381fa4fa145d660038e82af0ffea895 Mon Sep 17 00:00:00 2001 From: dappnodedev Date: Tue, 23 Jul 2024 16:30:39 +0200 Subject: [PATCH 2/2] Handle unsupported arch --- src/tasks/buildAndUpload/getBuildTasks.ts | 4 ++-- src/utils/getArchitecture.ts | 6 ++++-- src/utils/parseArchitectures.ts | 3 +-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/tasks/buildAndUpload/getBuildTasks.ts b/src/tasks/buildAndUpload/getBuildTasks.ts index fc642388..8b3bf44c 100644 --- a/src/tasks/buildAndUpload/getBuildTasks.ts +++ b/src/tasks/buildAndUpload/getBuildTasks.ts @@ -5,7 +5,7 @@ import { buildWithBuildx } from "./buildWithBuildx.js"; import { buildWithCompose } from "./buildWithCompose.js"; import { Architecture, defaultArch } from "@dappnode/types"; import { getImageFileName } from "../../utils/getImageFileName.js"; -import { getArchitecture } from "../../utils/getArchitecture.js"; +import { getOsArchitecture } from "../../utils/getArchitecture.js"; /** * The naming scheme for multiarch exported images must be @@ -58,7 +58,7 @@ function createBuildTask({ const { manifest, releaseDir, images, compose } = variantSpecs; const { name, version } = manifest; const buildFn = - architecture === getArchitecture() ? buildWithCompose : buildWithBuildx; + architecture === getOsArchitecture() ? buildWithCompose : buildWithBuildx; const destPath = getImagePath({ releaseDir, diff --git a/src/utils/getArchitecture.ts b/src/utils/getArchitecture.ts index 8fec5908..2bb0f09b 100644 --- a/src/utils/getArchitecture.ts +++ b/src/utils/getArchitecture.ts @@ -4,14 +4,16 @@ import { Architecture } from "@dappnode/types"; /** * Returns the architecture of the host machine doing the build */ -export function getArchitecture(): Architecture { +export function getOsArchitecture(): Architecture | "unsupported" { // Returns the operating system CPU architecture for which the Node.js binary was compiled. const arch = os.arch(); // TODO: DAppNode Packages are run in Linux-based systems. This solves the edge case when building in ARM if (arch === "arm64") { return "linux/arm64"; - } else { + } else if (arch === "x64") { return "linux/amd64"; + } else { + return "unsupported"; } } diff --git a/src/utils/parseArchitectures.ts b/src/utils/parseArchitectures.ts index d9a884c2..00e64f24 100644 --- a/src/utils/parseArchitectures.ts +++ b/src/utils/parseArchitectures.ts @@ -1,5 +1,4 @@ import { Architecture, architectures } from "@dappnode/types"; -import { getArchitecture } from "./getArchitecture.js"; /** * @@ -7,7 +6,7 @@ import { getArchitecture } from "./getArchitecture.js"; * @returns */ export function parseArchitectures({ - rawArchs = [getArchitecture()] + rawArchs = ["linux/amd64"] }: { rawArchs?: Architecture[]; }): Architecture[] {