diff mbox series

[RFC,20/30] classes: add vendor_npm_build class

Message ID 20250211150034.18696-20-stefan.herbrechtsmeier-oss@weidmueller.com
State New
Headers show
Series Add vendor support for go, npm and rust | expand

Commit Message

Stefan Herbrechtsmeier Feb. 11, 2025, 3 p.m. UTC
From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>

Add a vendor class for npm to build a npm package from source.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
---

 meta/classes-recipe/vendor_npm_build.bbclass | 50 ++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 meta/classes-recipe/vendor_npm_build.bbclass
diff mbox series

Patch

diff --git a/meta/classes-recipe/vendor_npm_build.bbclass b/meta/classes-recipe/vendor_npm_build.bbclass
new file mode 100644
index 0000000000..1cef316e01
--- /dev/null
+++ b/meta/classes-recipe/vendor_npm_build.bbclass
@@ -0,0 +1,50 @@ 
+# Copyright (C) 2025 Weidmueller Interface GmbH & Co. KG
+# Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+#
+# SPDX-License-Identifier: MIT
+#
+
+NPM_BUILD_TARGET ?= "build"
+EXTRA_OENPM_BUILD ?= ""
+NPM_REBUILD ?= "1"
+
+inherit vendor_npm
+
+NPM_INSTALL_DEV = "1"
+NPM_PRUNE_DEV = "1"
+
+NPM_NATIVE_ARCH ?= "${@map_nodejs_arch(d.getVar("BUILD_ARCH"), d)}"
+
+NPM_BUILD_NATIVE_FLAGS = "\
+    ${NPM_COMMON_FLAGS} \
+    --arch=${NPM_NATIVE_ARCH} \
+    --target_arch=${NPM_NATIVE_ARCH} \
+"
+
+NPM_BUILD_NATIVE_ENVS = "\
+    CC="${BUILD_CC}" \
+    CXX="${BUILD_CXX}" \
+    LINK="${BUILD_CC}" \
+    AR="${BUILD_AR}" \
+    CPPFLAGS="${BUILD_CPPFLAGS}" \
+    CFLAGS="${BUILD_CFLAGS}" \
+    CXXFLAGS="${BUILD_CXXFLAGS}" \
+    LDFLAGS="${BUILD_LDFLAGS}" \
+"
+
+oe_run_npm_native() {
+    bbnote "${NPM_BUILD_NATIVE_ENVS} ${NPM} $@"
+    ${NPM_BUILD_NATIVE_ENVS} ${NPM} "$@"
+}
+
+vendor_npm_build_do_compile() {
+    oe_run_npm_native rebuild ${NPM_BUILD_NATIVE_FLAGS}
+
+    oe_run_npm_native run ${NPM_BUILD_TARGET} ${NPM_BUILD_NATIVE_FLAGS} ${EXTRA_OENPM_BUILD}
+
+    if "${@['false', 'true'][oe.types.boolean(d.getVar('NPM_REBUILD'))]}"; then
+        vendor_npm_do_compile
+    fi
+}
+
+EXPORT_FUNCTIONS do_compile