source: trunk/dports/devel/nodejs/Portfile @ 145610

Last change on this file since 145610 was 145610, checked in by ciserlohn@…, 3 years ago

nodejs: update to version 4.3.0; patch gyp so that the build no longer conflicts with c-ares and v8

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 7.3 KB
Line 
1# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
2# $Id: Portfile 145610 2016-02-10 22:00:57Z ciserlohn@macports.org $
3
4PortSystem              1.0
5PortGroup               compiler_blacklist_versions 1.0
6
7name                    nodejs
8version                 4.3.0
9
10categories              devel net
11platforms               darwin
12license                 {MIT BSD}
13maintainers             ciserlohn
14
15description             Evented I/O for V8 JavaScript
16
17long_description        Node's goal is to provide an easy way to build scalable network programs in JavaScript. \
18                        Node is similar in design to and influenced by systems like Ruby's Event \
19                        Machine or Python's Twisted. Node takes the event model a bit further-it \
20                        presents the event loop as a language construct instead of as a library.
21
22conflicts               nodejs-devel iojs
23
24homepage                http://nodejs.org/
25master_sites            ${homepage}dist/v${version}
26
27checksums               rmd160  873f1237a68376106b75a69c7ec08a51de2c67ca \
28                        sha256  18504ac6d903cd061f60a29dafcda416a078112f3404d23a7901c41a8e9706b9
29
30distname                node-v${version}
31
32depends_build           port:pkgconfig
33
34depends_lib             port:icu
35
36proc rec_glob {basedir pattern} {
37    set files [glob -directory $basedir -nocomplain -type f $pattern]
38    foreach dir [glob -directory $basedir -nocomplain -type d *] {
39        eval lappend files [rec_glob $dir $pattern]
40    }
41    return $files
42}
43
44configure.python ${prefix}/bin/python2.7
45
46patchfiles              patch-common.gypi.diff patch-tools-gyp-pylib-gyp-generator-make.py.diff
47
48post-patch {
49    foreach f [concat ${worksrcpath}/configure \
50                   ${worksrcpath}/tools/gyp/gyp \
51                   ${worksrcpath}/deps/cares/gyp_cares \
52                   ${worksrcpath}/deps/v8/build/gyp_v8 \
53                   ${worksrcpath}/deps/v8/tools/mingw-generate-makefiles.sh \
54                   [rec_glob ${worksrcpath} *.py]] {
55        reinplace "s|/usr/bin/env python|${configure.python}|" ${f}
56    }
57    foreach gypfile [rec_glob ${worksrcpath} *.gyp*] {
58        reinplace "s|'python'|'${configure.python}'|" ${gypfile}
59    }
60    reinplace "s|python|${configure.python}|" ${worksrcpath}/deps/v8/build/toolchain.gypi
61    reinplace "s|/usr/bin/env node|${prefix}/bin/node|" ${worksrcpath}/tools/doc/node_modules/marked/bin/marked
62}
63
64configure.args          --without-ssl
65configure.args-append   --without-npm
66configure.args-append   --with-intl=system-icu
67
68# TODO: Remove after 2015-12-27.
69variant python25 requires python27 description {Legacy variant} {}
70
71variant python26 conflicts python27 description {Use python 2.6} {
72    depends_lib-append  port:python26
73    configure.python    ${prefix}/bin/python2.6
74}
75
76variant python27 conflicts python26 description {Use python 2.7} {
77    depends_lib-append  port:python27
78    configure.python    ${prefix}/bin/python2.7
79}
80
81if {![variant_isset python25] && ![variant_isset python26]} {
82    default_variants +python27
83}
84
85variant ssl description {Add secure socket layer support} {
86    depends_build-append    port:pkgconfig
87    depends_lib-append      path:lib/libssl.dylib:openssl
88    configure.args-delete   --without-ssl
89    configure.args-append   --shared-openssl
90    configure.args-append   --shared-openssl-includes=${prefix}/include/openssl
91    configure.args-append   --shared-openssl-libpath=${prefix}/lib
92}
93
94# TODO: Remove after 2016-07-08
95variant dtrace description {Legacy variant} {}
96
97default_variants        +ssl
98
99# V8 only supports ARM and IA-32 processors
100supported_archs         i386 x86_64
101
102universal_variant       no
103
104# "V8 doesn't like cache."
105configure.ccache        no
106
107test.run                yes
108
109use_parallel_build      no
110
111switch $build_arch {
112    i386 {
113        configure.args-append   --dest-cpu=ia32
114    }
115    x86_64 {
116        configure.args-append   --dest-cpu=x64
117    }
118}
119
120build.args-append   CC=${configure.cc} \
121                    CXX=${configure.cxx} \
122                    CXX.host=${configure.cxx} \
123                    CPP=${configure.cpp} \
124                    CFLAGS="${configure.cflags}" \
125                    CXXFLAGS="${configure.cxxflags}" \
126                    LDFLAGS="${configure.ldflags}" \
127                    PYTHON=${configure.python} \
128                    V=1
129
130destroot {
131    set bindir ${destroot}${prefix}/bin
132    set libdir ${destroot}${prefix}/lib
133    set libndir ${libdir}/node
134    set libddir ${libdir}/dtrace
135    set incdir ${destroot}${prefix}/include/node
136    set docdir ${destroot}${prefix}/share/doc/${name}
137
138    xinstall -d ${bindir}
139    xinstall -d ${libdir}
140    xinstall -d ${libndir}
141    xinstall -d ${libddir}
142    xinstall -d ${incdir}
143    xinstall -d ${docdir}
144
145# install binaries
146    xinstall -m 755 -W ${worksrcpath} \
147        out/Release/node \
148        ${bindir}
149
150# install headers
151    xinstall -m 644 -W ${worksrcpath} \
152        src/async-wrap-inl.h \
153        src/async-wrap.h \
154        src/base-object-inl.h \
155        src/base-object.h \
156        src/env-inl.h \
157        src/env.h \
158        src/handle_wrap.h \
159        src/node.h \
160        src/node_buffer.h \
161        src/node_constants.h \
162        src/node_counters.h \
163        src/node_crypto.h \
164        src/node_crypto_bio.h \
165        src/node_crypto_clienthello-inl.h \
166        src/node_crypto_clienthello.h \
167        src/node_crypto_groups.h \
168        src/node_dtrace.h \
169        src/node_file.h \
170        src/node_http_parser.h \
171        src/node_i18n.h \
172        src/node_internals.h \
173        src/node_javascript.h \
174        src/node_object_wrap.h \
175        src/node_root_certs.h \
176        src/node_stat_watcher.h \
177        src/node_version.h \
178        src/node_watchdog.h \
179        src/node_wrap.h \
180        src/pipe_wrap.h \
181        src/spawn_sync.h \
182        src/stream_wrap.h \
183        src/string_bytes.h \
184        src/tcp_wrap.h \
185        src/tls_wrap.h \
186        src/tree.h \
187        src/tty_wrap.h \
188        src/udp_wrap.h \
189        src/util-inl.h \
190        src/util.h \
191        src/v8abbr.h \
192        deps/v8/include/v8-debug.h \
193        deps/v8/include/v8-profiler.h \
194        deps/v8/include/v8-testing.h \
195        deps/v8/include/v8.h \
196        deps/v8/include/v8-platform.h \
197        deps/v8/include/v8-util.h \
198        deps/v8/include/v8config.h \
199        deps/uv/include/uv.h \
200        deps/uv/include/uv-unix.h \
201        deps/uv/include/uv-darwin.h \
202        deps/uv/include/tree.h \
203        deps/uv/include/uv-threadpool.h \
204        deps/uv/include/pthread-fixes.h \
205        deps/cares/include/ares.h \
206        deps/cares/include/ares_version.h \
207        deps/cares/include/nameser.h \
208        ${incdir}
209
210# install dtrace script
211    xinstall -m 644 -W ${worksrcpath} \
212        src/node.d \
213        ${libddir}
214
215# install manpage
216    xinstall -m 644 -W ${worksrcpath} \
217        doc/node.1 \
218        ${destroot}${prefix}/share/man/man1
219
220# install docs
221    xinstall -m 644 -W ${worksrcpath} \
222        AUTHORS \
223        CHANGELOG.md \
224        COLLABORATOR_GUIDE.md \
225        CONTRIBUTING.md \
226        GOVERNANCE.md \
227        LICENSE \
228        README.md \
229        ${docdir}
230}
231
232compiler.blacklist *gcc* {clang < 300}
233
234if {${os.major} < 10} {
235    pre-fetch {
236        ui_error "${name} ${version} requires Mac OS X 10.6 or greater."
237        return -code error "incompatible Mac OS X version"
238    }
239}
240
241livecheck.url       ${homepage}dist/
242livecheck.type      regex
243livecheck.regex     {v(4\.\d+\.\d+)}
Note: See TracBrowser for help on using the repository browser.