mirror of
https://github.com/netbirdio/FreeBSD-ports.git
synced 2026-05-22 18:42:42 -07:00
Changelog: https://github.com/bitwarden/clients/releases/tag/cli-v2025.12.0 Reported by: GitHub (watch releases)
185 lines
5.9 KiB
Makefile
185 lines
5.9 KiB
Makefile
PORTNAME= bitwarden-cli
|
|
DISTVERSIONPREFIX= cli-v
|
|
DISTVERSION= 2025.12.0
|
|
CATEGORIES= security
|
|
MASTER_SITES= https://nodejs.org/dist/v${PKG_NODE_VER}/:node
|
|
DISTFILES= node-v${PKG_NODE_VER}${EXTRACT_SUFX}:node \
|
|
${PREFETCH_FILE}:prefetch
|
|
|
|
MAINTAINER= tagattie@FreeBSD.org
|
|
COMMENT= Bitwarden client command-line interface
|
|
WWW= https://bitwarden.com
|
|
|
|
LICENSE= BITWARDEN GPLv3
|
|
LICENSE_COMB= multi
|
|
LICENSE_NAME_BITWARDEN= BITWARDEN LICENSE AGREEMENT
|
|
LICENSE_FILE_BITWARDEN= ${WRKSRC}/LICENSE_BITWARDEN.txt
|
|
LICENSE_FILE_GPLv3= ${WRKSRC}/LICENSE_GPL.txt
|
|
LICENSE_PERMS_BITWARDEN=none
|
|
|
|
ONLY_FOR_ARCHS= aarch64 amd64
|
|
|
|
FETCH_DEPENDS= npm:www/npm${NODEJS_SUFFIX}
|
|
BUILD_DEPENDS= npm:www/npm${NODEJS_SUFFIX}
|
|
LIB_DEPENDS= libbrotlidec.so:archivers/brotli \
|
|
libzstd.so:archivers/zstd \
|
|
libicui18n.so:devel/icu \
|
|
libuv.so:devel/libuv \
|
|
libsimdjson.so:devel/simdjson \
|
|
libcares.so:dns/c-ares \
|
|
libngtcp2.so:net/libngtcp2 \
|
|
libnghttp2.so:www/libnghttp2 \
|
|
libnghttp3.so:www/libnghttp3
|
|
RUN_DEPENDS= xdg-open:devel/xdg-utils \
|
|
ca_root_nss>0:security/ca_root_nss
|
|
TEST_DEPENDS= npm:www/npm${NODEJS_SUFFIX}
|
|
|
|
USES= gmake localbase:ldflags nodejs:22,build pkgconfig \
|
|
python:build sqlite ssl
|
|
|
|
USE_GITHUB= yes
|
|
GH_ACCOUNT= bitwarden
|
|
GH_PROJECT= clients
|
|
|
|
MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1
|
|
|
|
# don't strip executable upon install since it causes error
|
|
STRIP= # empty
|
|
BINARY_ALIAS= python=${PYTHON_CMD}
|
|
|
|
BUILD_WRKSRC= ${WRKSRC}/apps/cli
|
|
|
|
PLIST_FILES= bin/bw \
|
|
share/zsh/site-functions/_bw
|
|
|
|
PORTDOCS= CONTRIBUTING.md README.md SECURITY.md
|
|
|
|
OPTIONS_DEFINE= DOCS
|
|
|
|
PREFETCH_FILE= ${PORTNAME}-${DISTVERSION}-node-modules${EXTRACT_SUFX}
|
|
PREFETCH_TIMESTAMP= 61171200
|
|
PKG_NODE_VER= 22.15.1
|
|
PKG_FETCH_VER= 3.5
|
|
PKG_NODE_CONFIGURE_ARGS=--openssl-use-def-ca-store \
|
|
--shared-brotli \
|
|
--shared-cares \
|
|
--shared-libuv \
|
|
--shared-nghttp2 \
|
|
--shared-nghttp3 \
|
|
--shared-openssl \
|
|
--shared-ngtcp2 \
|
|
--shared-simdjson \
|
|
--shared-sqlite \
|
|
--shared-zlib \
|
|
--shared-zstd \
|
|
--with-intl=system-icu
|
|
NODE_ARCH= ${ARCH:S/aarch64/arm64/:S/amd64/x64/:S/i386/ia32/}
|
|
|
|
pre-fetch:
|
|
if [ ! -f ${DISTDIR}/${PREFETCH_FILE} ]; then \
|
|
${MKDIR} ${WRKDIR}/node-modules-cache; \
|
|
${CP} -R ${FILESDIR}/packagejsons/* ${WRKDIR}/node-modules-cache; \
|
|
cd ${WRKDIR}/node-modules-cache && \
|
|
${SETENV} HOME=${WRKDIR} \
|
|
npm ci --ignore-scripts --no-progress --no-audit --no-fund --no-update-notifier; \
|
|
${FIND} ${WRKDIR}/node-modules-cache -type d -exec ${CHMOD} 755 {} ';'; \
|
|
for dir in `${FIND} -s ${WRKDIR}/node-modules-cache -type d -name node_modules -print | \
|
|
${GREP} -ve 'node_modules/.*/node_modules'`; do \
|
|
${MTREE_CMD} -cbnSp $${dir} | ${MTREE_CMD} -C | \
|
|
${AWK} ' \
|
|
function oct2dec(octstr, i, c, val) { \
|
|
val = 0; \
|
|
for (i = 1; i <= length(octstr); i++) { \
|
|
c = substr(octstr, i, 1); \
|
|
if (c < "0" || c > "7") { \
|
|
break; \
|
|
} \
|
|
val = val * 8 + (c - "0"); \
|
|
} \
|
|
return val; \
|
|
} \
|
|
{ \
|
|
if (match($$0, /mode=[0-7]+/)) { \
|
|
mode_str = substr($$0, RSTART+5, RLENGTH-5); \
|
|
mode = oct2dec(mode_str); \
|
|
exec_bits = 73; \
|
|
special_bits = 3584; \
|
|
special = and(mode, special_bits); \
|
|
if (and(mode, exec_bits) != 0) { \
|
|
newmode = or(special, 493); \
|
|
} else { \
|
|
newmode = or(special, 420); \
|
|
} \
|
|
sub(/mode=[0-7]+/, "mode=" sprintf("%04o", newmode)); \
|
|
} \
|
|
print; \
|
|
}' | \
|
|
${SED} \
|
|
-e 's:time=[0-9.]*:time=${PREFETCH_TIMESTAMP}.000000000:' \
|
|
-e 's:\([gu]id\)=[0-9]*:\1=0:g' \
|
|
-e 's:flags=.*:flags=none:' \
|
|
-e "s|\.|$${dir}|" \
|
|
-e 's|^${WRKDIR}|.|' >> ${WRKDIR}/node-modules-cache.mtree; \
|
|
done; \
|
|
${TAR} -cz --options 'gzip:!timestamp' -f ${DISTDIR}/${PREFETCH_FILE} \
|
|
-C ${WRKDIR} @node-modules-cache.mtree; \
|
|
${RM} -r ${WRKDIR}; \
|
|
fi
|
|
|
|
post-extract:
|
|
@for dir in `${FIND} -s ${WRKDIR}/node-modules-cache -type d -name node_modules -print | \
|
|
${GREP} -ve 'node_modules/.*/node_modules'`; do \
|
|
${MV} $${dir} `${ECHO_CMD} $${dir} | sed -e 's|${WRKDIR}/node-modules-cache|${WRKSRC}|'`; \
|
|
done
|
|
|
|
post-patch:
|
|
# apply FreeBSD patches for node
|
|
@${BSDMAKE} PATCHDIR=${PATCHDIR}/node \
|
|
WRKSRC=${WRKDIR}/node-v${PKG_NODE_VER} do-patch
|
|
# apply node patch from pkg-fetch
|
|
@${PATCH} -s -p1 -d ${WRKDIR}/node-v${PKG_NODE_VER} < \
|
|
${WRKSRC}/node_modules/@yao-pkg/pkg-fetch/patches/node.v${PKG_NODE_VER}.cpp.patch
|
|
|
|
pre-build:
|
|
# build patched node for pkg
|
|
cd ${WRKDIR}/node-v${PKG_NODE_VER} && \
|
|
${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} ./configure ${PKG_NODE_CONFIGURE_ARGS} && \
|
|
${SETENV} ${MAKE_ENV} ${MAKE_CMD} -j ${MAKE_JOBS_NUMBER}
|
|
${MKDIR} ${WRKDIR}/.pkg-cache/v${PKG_FETCH_VER}
|
|
${MV} ${WRKDIR}/node-v${PKG_NODE_VER}/out/Release/node \
|
|
${WRKDIR}/.pkg-cache/v${PKG_FETCH_VER}/built-v${PKG_NODE_VER}-freebsd-${NODE_ARCH}
|
|
${STRIP_CMD} ${WRKDIR}/.pkg-cache/v${PKG_FETCH_VER}/built-v${PKG_NODE_VER}-freebsd-${NODE_ARCH}
|
|
# rebuild node modules against patched node
|
|
@for subdir in `${FIND} ${WRKSRC} -type f -name binding.gyp -exec ${DIRNAME} {} ';' 2>/dev/null`; do \
|
|
${ECHO_MSG} "===> Rebuilding native modules in $${subdir}"; \
|
|
cd $${subdir} && \
|
|
${SETENV} ${MAKE_ENV} \
|
|
npm_config_runtime=node \
|
|
npm_config_target=${PKG_NODE_VER} \
|
|
npm_config_nodedir=${WRKDIR}/node-v${PKG_NODE_VER} \
|
|
node-gyp rebuild; \
|
|
done
|
|
|
|
do-build:
|
|
cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
|
|
npm run build:bit:prod
|
|
cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
|
|
npx pkg . --targets node${NODEJS_VERSION}-freebsd-${NODE_ARCH} --output ./dist/bw
|
|
cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} \
|
|
./dist/bw completion --shell zsh > _bw
|
|
|
|
do-install:
|
|
${INSTALL_PROGRAM} ${BUILD_WRKSRC}/dist/bw ${STAGEDIR}${PREFIX}/bin
|
|
@${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions
|
|
${INSTALL_DATA} ${BUILD_WRKSRC}/_bw \
|
|
${STAGEDIR}${PREFIX}/share/zsh/site-functions/_bw
|
|
|
|
do-install-DOCS-on:
|
|
@${MKDIR} ${STAGEDIR}${DOCSDIR}
|
|
${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
|
|
|
|
do-test:
|
|
cd ${BUILD_WRKSRC} && ${SETENV} ${TEST_ENV} npm run test
|
|
|
|
.include <bsd.port.mk>
|