Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F81963562
D26425.id77620.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D26425.id77620.diff
View Options
Index: www/node/Makefile
===================================================================
--- www/node/Makefile
+++ www/node/Makefile
@@ -3,6 +3,7 @@
PORTNAME= node
PORTVERSION= 14.12.0
DISTVERSIONPREFIX= v
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= http://nodejs.org/dist/v${PORTVERSION}/
@@ -16,8 +17,8 @@
BROKEN_SSL_REASON= Node.js 14.x requires OpenSSL 1.1.x or the BUNDLED_SSL option enabled
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le
-OPTIONS_DEFINE= BUNDLED_SSL DOCS NLS DTRACE
-OPTIONS_DEFAULT= DTRACE
+OPTIONS_DEFINE= BUNDLED_SSL DOCS NLS DTRACE SHARED
+OPTIONS_DEFAULT= DTRACE SHARED
OPTIONS_DEFAULT_FreeBSD_11= BUNDLED_SSL
OPTIONS_DEFAULT+= ${OPTIONS_DEFAULT_${OPSYS}_${OSREL:R}}
OPTIONS_SUB= yes
@@ -43,6 +44,14 @@
DTRACE_CONFIGURE_ON= --with-dtrace
+# Node.js uses their module version as the shared library version suffix. The
+# value here must be updated whenever upstream changes.
+NODE_MODULE_VERSION= 83
+SHARED_DESC= Build and install libnode.so
+SHARED_CONFIGURE_ON= --shared
+SHARED_USE_LDCONFIG= yes
+SHARED_PLIST_SUB+= NODE_MODULE_VERSION=${NODE_MODULE_VERSION}
+
USES= compiler:c++11-lib gmake python:build pkgconfig \
localbase shebangfix
@@ -97,6 +106,21 @@
CONFIGURE_ARGS+=--openssl-no-asm
.endif
+post-extract:
+ # Fail the build if NODE_MODULE_VERSION from the upstream packages does
+ # match the value defined above. The value above needs to be updated
+ # and an entry added to UPDATING to give users notice of the shared
+ # library version change and how to rebuild all dependent ports.
+ @( \
+ VALUE=$$(${AWK} '/^#define NODE_MODULE_VERSION/ { print $$3 }' \
+ ${WRKSRC}/src/node_version.h \
+ ); \
+ test ${NODE_MODULE_VERSION} -eq $$VALUE || { \
+ echo "NODE_MODULE_VERSION mismatch! Expected ${NODE_MODULE_VERSION}, got $$VALUE"; \
+ exit 1; \
+ } \
+ )
+
post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' \
${WRKSRC}/tools/v8_gypfiles/v8.gyp
@@ -113,5 +137,9 @@
post-install:
${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/node
+.if ${PORT_OPTIONS:MSHARED}
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libnode.so.${NODE_MODULE_VERSION}
+ ${LN} -fs libnode.so.${NODE_MODULE_VERSION} ${STAGEDIR}${PREFIX}/lib/libnode.so
+.endif
.include <bsd.port.mk>
Index: www/node/files/patch-tools_install.py
===================================================================
--- /dev/null
+++ www/node/files/patch-tools_install.py
@@ -0,0 +1,38 @@
+--- tools/install.py.orig 2020-09-10 04:57:37 UTC
++++ tools/install.py
+@@ -121,26 +121,23 @@ def subdir_files(path, dest, action):
+
+ def files(action):
+ is_windows = sys.platform == 'win32'
+- output_file = 'node'
+ output_prefix = 'out/Release/'
+
+- if 'false' == variables.get('node_shared'):
++ output_file = 'node'
++ if is_windows:
++ output_file += '.exe'
++ action([output_prefix + output_file], 'bin/' + output_file)
++
++ if 'true' == variables.get('node_shared'):
+ if is_windows:
+- output_file += '.exe'
+- else:
+- if is_windows:
+- output_file += '.dll'
++ output_lib = 'node.dll'
+ else:
+- output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix')
++ output_lib = 'lib' + output_file + '.' + variables.get('shlib_suffix')
+ # GYP will output to lib.target except on OS X, this is hardcoded
+ # in its source - see the _InstallableTargetInstallPath function.
+ if sys.platform != 'darwin':
+ output_prefix += 'lib.target/'
+-
+- if 'false' == variables.get('node_shared'):
+- action([output_prefix + output_file], 'bin/' + output_file)
+- else:
+- action([output_prefix + output_file], 'lib/' + output_file)
++ action([output_prefix + output_lib], 'lib/' + output_lib)
+
+ if 'true' == variables.get('node_use_dtrace'):
+ action(['out/Release/node.d'], 'lib/dtrace/node.d')
Index: www/node/pkg-plist
===================================================================
--- www/node/pkg-plist
+++ www/node/pkg-plist
@@ -496,6 +496,8 @@
include/node/v8.h
include/node/v8config.h
%%DTRACE%%lib/dtrace/node.d
+%%SHARED%%lib/libnode.so
+%%SHARED%%lib/libnode.so.%%NODE_MODULE_VERSION%%
@(,,444) man/man1/node.1.gz
%%PORTDOCS%%%%DOCSDIR%%/gdbinit
%%PORTDOCS%%%%DOCSDIR%%/lldb_commands.py
Index: www/node10/Makefile
===================================================================
--- www/node10/Makefile
+++ www/node10/Makefile
@@ -3,6 +3,7 @@
PORTNAME= node
PORTVERSION= 10.22.1
DISTVERSIONPREFIX= v
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= http://nodejs.org/dist/v${PORTVERSION}/
PKGNAMESUFFIX= 10
@@ -44,7 +45,7 @@
DTRACE_CONFIGURE_ON= --with-dtrace
-USES= compiler:c++11-lib gmake python:2.7,build pkgconfig \
+USES= compiler:c++11-lib gmake python:build pkgconfig \
localbase shebangfix
HAS_CONFIGURE= yes
Index: www/node12/Makefile
===================================================================
--- www/node12/Makefile
+++ www/node12/Makefile
@@ -3,6 +3,7 @@
PORTNAME= node
PORTVERSION= 12.18.4
DISTVERSIONPREFIX= v
+PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= http://nodejs.org/dist/v${PORTVERSION}/
PKGNAMESUFFIX= 12
@@ -44,7 +45,7 @@
DTRACE_CONFIGURE_ON= --with-dtrace
-USES= compiler:c++11-lib gmake python:2.7,build pkgconfig \
+USES= compiler:c++11-lib gmake python:build pkgconfig \
localbase shebangfix
HAS_CONFIGURE= yes
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Dec 13, 4:33 PM (1 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
9087976
Default Alt Text
D26425.id77620.diff (5 KB)
Attached To
Mode
D26425: www/node: add SHARED option to build and install libnode.so
Attached
Detach File
Event Timeline
Log In to Comment