git: 38b400901089 - main - www/tailwindcss4: fix build on powerpc64*
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 31 Oct 2026 21:34:02 UTC
The branch main has been updated by pkubaj:
URL: https://cgit.FreeBSD.org/ports/commit/?id=38b400901089f386517feb07662a31aa820c3cd8
commit 38b400901089f386517feb07662a31aa820c3cd8
Author: Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2026-10-30 09:02:35 +0000
Commit: Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2026-10-31 21:33:12 +0000
www/tailwindcss4: fix build on powerpc64*
Build oxide and lightningcss from source like on aarch64. The oxide
loader only knows x64 and arm64 on FreeBSD, so make it load the module
for whatever arch node reports.
---
www/tailwindcss4/Makefile | 62 ++++++++++++++---------
www/tailwindcss4/{pkg-plist.aarch64 => pkg-plist} | 18 +++----
2 files changed, 46 insertions(+), 34 deletions(-)
diff --git a/www/tailwindcss4/Makefile b/www/tailwindcss4/Makefile
index 2c0d3dec7483..79882d21f0ab 100644
--- a/www/tailwindcss4/Makefile
+++ b/www/tailwindcss4/Makefile
@@ -17,7 +17,7 @@ WWW= https://tailwindcss.com/
LICENSE= MIT
-ONLY_FOR_ARCHS= aarch64 amd64 # internal .node libraries not supported elsewhere
+ONLY_FOR_ARCHS= aarch64 amd64 powerpc64 powerpc64le # internal .node libraries not supported elsewhere
BUILD_DEPENDS= corepack:www/corepack \
npm:www/npm-node${_NODE_VERSION}
USES= nodejs:${_NODE_VERSION},build,run python:build tar:txz
@@ -25,6 +25,7 @@ USES= nodejs:${_NODE_VERSION},build,run python:build tar:txz
CONFLICTS_INSTALL= tailwindcss*
_LCSS_VER= 1.32.0
+_NODE_ARCH= ${ARCH:S/aarch64/arm64/:C/powerpc64.*/ppc64/}
_NODE_VERSION= 26
_TAILWIND_VER= ${DISTVERSION}
_WATCHER_VER= 2.5.1
@@ -42,9 +43,12 @@ _CARGO_VENDOR= ${WRKDIR}/cargo-vendor
.include <bsd.port.pre.mk>
-PLIST= ${.CURDIR}/pkg-plist.${ARCH}
+.if ${ARCH} == amd64
+PLIST= ${.CURDIR}/pkg-plist.amd64
+.endif
+PLIST_SUB= NODE_ARCH=${_NODE_ARCH}
-# oxide & lightningcss need to be built from source crates on aarch64
+# oxide & lightningcss need to be built from source crates on all but amd64
DISTFILES+= tailwindcss-v${DISTVERSION}.tar.gz:twsrc \
lightningcss-v${_LCSS_VER}.tar.gz:lcsssrc \
${_CARGO_ARCHIVE}:cargo
@@ -53,7 +57,7 @@ BUILD_DEPENDS+= rust>0:lang/rust
do-extract:
@${MKDIR} ${_NPM_CACHE}
${TAR} -xf ${_DISTDIR}/${_NPM_ARCHIVE} -C ${_NPM_CACHE}
-.if ${ARCH} == aarch64
+.if ${ARCH} != amd64
${TAR} -xf ${_DISTDIR}/tailwindcss-v${DISTVERSION}.tar.gz -C ${WRKDIR}
${TAR} -xf ${_DISTDIR}/lightningcss-v${_LCSS_VER}.tar.gz -C ${WRKDIR}
${MKDIR} ${_CARGO_VENDOR}
@@ -67,17 +71,17 @@ do-build:
# npm's self-update check ignores offline=true; keep the build off the network
${ECHO_CMD} update-notifier=false >> ${WRKDIR}/.npmrc
${ECHO_CMD} python=${PYTHON_CMD} >> ${WRKDIR}/.npmrc
-.if ${ARCH} == aarch64
+.if ${ARCH} != amd64
# configure cargo for offline vendored build
${MKDIR} ${WRKDIR}/.cargo
${PRINTF} '[source.crates-io]\nreplace-with = "vendor"\n[source.vendor]\ndirectory = "%s"\n' \
${_CARGO_VENDOR} > ${WRKDIR}/.cargo/config.toml
-# build tailwind-oxide Rust NAPI module for freebsd-arm64
+# build tailwind-oxide Rust NAPI module for freebsd-${_NODE_ARCH}
(cd ${_TAILWIND_SRC} && \
${SETENV} CARGO_HOME=${WRKDIR}/.cargo CARGO_NET_OFFLINE=true \
cargo build --release -p tailwind-oxide && \
- ${CP} target/release/libtailwind_oxide.so crates/node/tailwindcss-oxide.freebsd-arm64.node)
-# build lightningcss Rust NAPI module for freebsd-arm64
+ ${CP} target/release/libtailwind_oxide.so crates/node/tailwindcss-oxide.freebsd-${_NODE_ARCH}.node)
+# build lightningcss Rust NAPI module for freebsd-${_NODE_ARCH}
(cd ${_LCSS_SRC} && \
${SETENV} CARGO_HOME=${WRKDIR}/.cargo CARGO_NET_OFFLINE=true \
cargo build --release -p lightningcss_node)
@@ -114,34 +118,42 @@ do-install:
config.gypi watcher.target.mk
${RM} -rf ${STAGEDIR}${PREFIX}/lib/node_modules/@parcel/watcher/build/${file}
.endfor
-.if ${ARCH} == aarch64
+.if ${ARCH} != amd64
# drop x86 binaries in favour of our source-built ones
${RM} -rf ${_TW_MODULES}/@tailwindcss/oxide-freebsd-x64 \
${_TW_MODULES}/lightningcss-freebsd-x64 \
${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-x64
- ${MKDIR} ${_TW_MODULES}/@tailwindcss/oxide-freebsd-arm64
- ${INSTALL_DATA} ${_TAILWIND_SRC}/crates/node/tailwindcss-oxide.freebsd-arm64.node \
- ${_TW_MODULES}/@tailwindcss/oxide-freebsd-arm64/
- ${PRINTF} '{"name":"@tailwindcss/oxide-freebsd-arm64","version":"%s","main":"tailwindcss-oxide.freebsd-arm64.node"}\n' \
- ${_TAILWIND_VER} > ${_TW_MODULES}/@tailwindcss/oxide-freebsd-arm64/package.json
- ${MKDIR} ${_TW_MODULES}/lightningcss-freebsd-arm64
+ ${MKDIR} ${_TW_MODULES}/@tailwindcss/oxide-freebsd-${_NODE_ARCH}
+ ${INSTALL_DATA} ${_TAILWIND_SRC}/crates/node/tailwindcss-oxide.freebsd-${_NODE_ARCH}.node \
+ ${_TW_MODULES}/@tailwindcss/oxide-freebsd-${_NODE_ARCH}/
+ ${PRINTF} '{"name":"@tailwindcss/oxide-freebsd-${_NODE_ARCH}","version":"%s","main":"tailwindcss-oxide.freebsd-${_NODE_ARCH}.node"}\n' \
+ ${_TAILWIND_VER} > ${_TW_MODULES}/@tailwindcss/oxide-freebsd-${_NODE_ARCH}/package.json
+ ${MKDIR} ${_TW_MODULES}/lightningcss-freebsd-${_NODE_ARCH}
${INSTALL_DATA} ${_LCSS_SRC}/target/release/liblightningcss_node.so \
- ${_TW_MODULES}/lightningcss-freebsd-arm64/lightningcss.freebsd-arm64.node
- ${PRINTF} '{"name":"lightningcss-freebsd-arm64","version":"%s","main":"lightningcss.freebsd-arm64.node"}\n' \
- ${_LCSS_VER} > ${_TW_MODULES}/lightningcss-freebsd-arm64/package.json
- ${MKDIR} ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-arm64
+ ${_TW_MODULES}/lightningcss-freebsd-${_NODE_ARCH}/lightningcss.freebsd-${_NODE_ARCH}.node
+ ${PRINTF} '{"name":"lightningcss-freebsd-${_NODE_ARCH}","version":"%s","main":"lightningcss.freebsd-${_NODE_ARCH}.node"}\n' \
+ ${_LCSS_VER} > ${_TW_MODULES}/lightningcss-freebsd-${_NODE_ARCH}/package.json
+ ${MKDIR} ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-${_NODE_ARCH}
${INSTALL_DATA} ${_WATCHER_PKG}/build/Release/watcher.node \
- ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-arm64/
- ${PRINTF} '{"name":"@parcel/watcher-freebsd-arm64","version":"%s","main":"watcher.node"}\n' \
- ${_WATCHER_VER} > ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-arm64/package.json
+ ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-${_NODE_ARCH}/
+ ${PRINTF} '{"name":"@parcel/watcher-freebsd-${_NODE_ARCH}","version":"%s","main":"watcher.node"}\n' \
+ ${_WATCHER_VER} > ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-${_NODE_ARCH}/package.json
# the x86 shims we replaced shipped a LICENSE, keep one alongside ours. oxide &
# lightningcss come from the source trees we built, watcher from its own package
${INSTALL_DATA} ${_TAILWIND_SRC}/LICENSE \
- ${_TW_MODULES}/@tailwindcss/oxide-freebsd-arm64/
+ ${_TW_MODULES}/@tailwindcss/oxide-freebsd-${_NODE_ARCH}/
${INSTALL_DATA} ${_LCSS_SRC}/LICENSE \
- ${_TW_MODULES}/lightningcss-freebsd-arm64/
+ ${_TW_MODULES}/lightningcss-freebsd-${_NODE_ARCH}/
${INSTALL_DATA} ${_WATCHER_PKG}/LICENSE \
- ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-arm64/
+ ${_WATCHER_PKG}/node_modules/@parcel/watcher-freebsd-${_NODE_ARCH}/
+# the napi-rs loader of oxide only probes x64 & arm64 on FreeBSD
+ @${REINPLACE_CMD} -e '/Unsupported architecture on FreeBSD/s|loadErrors\.push(.*)|try { return require(`@tailwindcss/oxide-freebsd-$${process.arch}`) } catch (e) { loadErrors.push(e) }|' \
+ ${_TW_MODULES}/@tailwindcss/oxide/index.js
+ @${RM} ${_TW_MODULES}/@tailwindcss/oxide/index.js.bak
+ @if ! ${GREP} -q 'oxide-freebsd-$${process.arch}' ${_TW_MODULES}/@tailwindcss/oxide/index.js; then \
+ ${ECHO_CMD} "===> oxide loader not patched; upstream layout changed"; \
+ exit 1; \
+ fi
.endif
# upstream JS plugin resolvers probe only .js/.json/.node/.ts
# Phoenix & DaisyUI reference plugins by appending .mjs/.cjs to the resolver
diff --git a/www/tailwindcss4/pkg-plist.aarch64 b/www/tailwindcss4/pkg-plist
similarity index 99%
rename from www/tailwindcss4/pkg-plist.aarch64
rename to www/tailwindcss4/pkg-plist
index 9db24bcd2b81..5dfc6faf38f1 100644
--- a/www/tailwindcss4/pkg-plist.aarch64
+++ b/www/tailwindcss4/pkg-plist
@@ -8,9 +8,9 @@ lib/node_modules/@parcel/watcher/index.d.ts
lib/node_modules/@parcel/watcher/index.js
lib/node_modules/@parcel/watcher/index.js.flow
lib/node_modules/@parcel/watcher/node_modules/.bin/detect-libc
-lib/node_modules/@parcel/watcher/node_modules/@parcel/watcher-freebsd-arm64/LICENSE
-lib/node_modules/@parcel/watcher/node_modules/@parcel/watcher-freebsd-arm64/package.json
-lib/node_modules/@parcel/watcher/node_modules/@parcel/watcher-freebsd-arm64/watcher.node
+lib/node_modules/@parcel/watcher/node_modules/@parcel/watcher-freebsd-%%NODE_ARCH%%/LICENSE
+lib/node_modules/@parcel/watcher/node_modules/@parcel/watcher-freebsd-%%NODE_ARCH%%/package.json
+lib/node_modules/@parcel/watcher/node_modules/@parcel/watcher-freebsd-%%NODE_ARCH%%/watcher.node
lib/node_modules/@parcel/watcher/node_modules/braces/LICENSE
lib/node_modules/@parcel/watcher/node_modules/braces/README.md
lib/node_modules/@parcel/watcher/node_modules/braces/index.js
@@ -288,9 +288,9 @@ lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/node/dist/index.mjs
lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/node/dist/require-cache.d.ts
lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/node/dist/require-cache.js
lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/node/package.json
-lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide-freebsd-arm64/LICENSE
-lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide-freebsd-arm64/package.json
-lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide-freebsd-arm64/tailwindcss-oxide.freebsd-arm64.node
+lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide-freebsd-%%NODE_ARCH%%/LICENSE
+lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide-freebsd-%%NODE_ARCH%%/package.json
+lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide-freebsd-%%NODE_ARCH%%/tailwindcss-oxide.freebsd-%%NODE_ARCH%%.node
lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide/LICENSE
lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide/index.d.ts
lib/node_modules/@tailwindcss/cli/node_modules/@tailwindcss/oxide/index.js
@@ -384,9 +384,9 @@ lib/node_modules/@tailwindcss/cli/node_modules/jiti/lib/jiti.d.mts
lib/node_modules/@tailwindcss/cli/node_modules/jiti/lib/jiti.mjs
lib/node_modules/@tailwindcss/cli/node_modules/jiti/lib/types.d.ts
lib/node_modules/@tailwindcss/cli/node_modules/jiti/package.json
-lib/node_modules/@tailwindcss/cli/node_modules/lightningcss-freebsd-arm64/LICENSE
-lib/node_modules/@tailwindcss/cli/node_modules/lightningcss-freebsd-arm64/lightningcss.freebsd-arm64.node
-lib/node_modules/@tailwindcss/cli/node_modules/lightningcss-freebsd-arm64/package.json
+lib/node_modules/@tailwindcss/cli/node_modules/lightningcss-freebsd-%%NODE_ARCH%%/LICENSE
+lib/node_modules/@tailwindcss/cli/node_modules/lightningcss-freebsd-%%NODE_ARCH%%/lightningcss.freebsd-%%NODE_ARCH%%.node
+lib/node_modules/@tailwindcss/cli/node_modules/lightningcss-freebsd-%%NODE_ARCH%%/package.json
lib/node_modules/@tailwindcss/cli/node_modules/lightningcss/LICENSE
lib/node_modules/@tailwindcss/cli/node_modules/lightningcss/README.md
lib/node_modules/@tailwindcss/cli/node_modules/lightningcss/node/ast.d.ts