-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Portfile
222 lines (200 loc) · 10.4 KB
/
Portfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# -*- 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
PortSystem 1.0
name zeroc-ice34
version 3.4.2
revision 7
set branch [join [lrange [split ${version} .] 0 1] .]
categories devel
maintainers nomaintainer
conflicts zeroc-ice33 zeroc-ice35
license GPL-2
description Fast, object-oriented RPC for C++, Java, Python, Ruby, PHP
long_description \
The Internet Communications Engine (Ice) is a modern alternative to \
object middleware such as CORBA or COM/DCOM/COM+, with support for \
C++, C#, Java, PHP, Python, Ruby and Visual Basic. \
Ice consists of the following packages. \
Slice: The Specification Language for Ice. Slice establishes a \
contract between clients and servers, and is also used to describe \
persistent data. \
Slice Compilers: Slice specifications are compiled into various \
programming languages. Ice supports C++, Java, C#, Visual Basic, PHP, \
Python and Ruby. Ice clients and servers work together, regardless \
of the programming language. \
Ice: The Ice core library manages all the communication tasks using a \
highly efficient protocol (including protocol compression and support \
for both TCP and UDP), provides a flexible thread pool for \
multi-threaded servers. \
This Port provides the C++ runtime libraries, the core Slice files \
and slice2cpp. It also includes the slice compilers for all the \
other languages: slice2cs, slice2java, slice2py, slice2rb and slice2vb.
homepage http://www.zeroc.com/
master_sites ${homepage}download/Ice/${branch}/
distname Ice-${version}
checksums md5 e97672eb4a63c6b8dd202d0773e19dc7 \
sha1 8c84d6e3b227f583d05e08251e07047e6c3a6b42 \
rmd160 7ce680a4eb5fa9d0bb6f8b8910e267dfc2373d75
patchfiles patch-ice.cpp.config.Make.rules.diff \
patch-ice.cpp.config.Make.rules.Darwin.diff \
patch-ice.cpp.allTests.py.diff \
patch-ice.cpp.demo.IceGrid.secure.README.diff \
patch-ice.cpp.demo.IceGrid.secure.application.xml.diff \
patch-ice.cpp.demo.IceGrid.secure.config.admin.diff \
patch-ice.cpp.demo.IceGrid.secure.config.client.diff \
patch-ice.cpp.demo.IceGrid.secure.config.master.diff \
patch-ice.cpp.demo.IceGrid.secure.config.node.diff \
patch-ice.cpp.demo.IceGrid.secure.config.registry.diff \
patch-ice.cpp.demo.IceGrid.secure.config.slave.diff \
patch-ice.cpp.demo.IceGrid.secure.makecerts.py.diff \
patch-ice.cpp.include.Freeze.Map.h.diff \
patch-ice.cpp.include.Ice.Buffer.h.diff \
patch-ice.cpp.include.Ice.ConnectionIF.h.diff \
patch-ice.cpp.include.Ice.IconvStringConverter.h.diff \
patch-ice.cpp.include.Ice.IncomingAsyncF.h.diff \
patch-ice.cpp.include.Ice.LocalObjectF.h.diff \
patch-ice.cpp.include.Ice.ObjectF.h.diff \
patch-ice.cpp.include.Ice.OutgoingAsyncF.h.diff \
patch-ice.cpp.include.Ice.Proxy.h.diff \
patch-ice.cpp.include.Ice.ProxyF.h.diff \
patch-ice.cpp.include.Ice.Stream.h.diff \
patch-ice.cpp.include.Ice.StreamF.h.diff \
patch-ice.cpp.include.IceUtil.Mutex.h.diff \
patch-ice.cpp.src.Freeze.MapDb.cpp.diff \
patch-ice.cpp.src.Freeze.MapI.cpp.diff \
patch-ice.cpp.src.Freeze.SharedDbEnv.cpp.diff \
patch-ice.cpp.src.Glacier2.Blobject.cpp.diff \
patch-ice.cpp.src.Glacier2.Blobject.h.diff \
patch-ice.cpp.src.Glacier2.RequestQueue.cpp.diff \
patch-ice.cpp.src.Glacier2.RequestQueue.h.diff \
patch-ice.cpp.src.Glacier2.RouterI.cpp.diff \
patch-ice.cpp.src.Ice.ConnectionI.cpp.diff \
patch-ice.cpp.src.Ice.DynamicLibrary.cpp.diff \
patch-ice.cpp.src.Ice.IncomingAsync.cpp.diff \
patch-ice.cpp.src.Ice.LocalObject.cpp.diff \
patch-ice.cpp.src.Ice.Network.cpp.diff \
patch-ice.cpp.src.Ice.Object.cpp.diff \
patch-ice.cpp.src.Ice.OutgoingAsync.cpp.diff \
patch-ice.cpp.src.Ice.PropertyNames.cpp.diff \
patch-ice.cpp.src.Ice.ProxyFactory.cpp.diff \
patch-ice.cpp.src.Ice.Service.cpp.diff \
patch-ice.cpp.src.Ice.Stream.cpp.diff \
patch-ice.cpp.src.IceGrid.AdminCallbackRouter.cpp.diff \
patch-ice.cpp.src.IceGrid.DescriptorHelper.cpp.diff \
patch-ice.cpp.src.IceGrid.Internal.ice.diff \
patch-ice.cpp.src.IceGrid.InternalRegistryI.cpp.diff \
patch-ice.cpp.src.IceGrid.InternalRegistryI.h.diff \
patch-ice.cpp.src.IceGrid.NodeSessionManager.cpp.diff \
patch-ice.cpp.src.IceGrid.ReplicaCache.cpp.diff \
patch-ice.cpp.src.IceGrid.ReplicaSessionManager.cpp.diff \
patch-ice.cpp.src.IceGrid.SessionI.h.diff \
patch-ice.cpp.src.IceSSL.Instance.cpp.diff \
patch-ice.cpp.src.IceSSL.InstanceF.h.diff \
patch-ice.cpp.src.IceSSL.TrustManager.cpp.diff \
patch-ice.cpp.src.IceSSL.TrustManagerF.h.diff \
patch-ice.cpp.src.IceSSL.Util.cpp.diff \
patch-ice.cpp.src.IceSSL.UtilF.h.diff \
patch-ice.cpp.src.IceStorm.NodeI.cpp.diff \
patch-ice.cpp.src.IceUtil.Cond.cpp.diff \
patch-ice.cpp.src.IceUtil.CountDownLatch.cpp.diff \
patch-ice.cpp.src.IceUtil.CtrlCHandler.cpp.diff \
patch-ice.cpp.src.IceUtil.FileUtil.cpp.diff \
patch-ice.cpp.src.IceUtil.RecMutex.cpp.diff \
patch-ice.cpp.src.Slice.CPlusPlusUtil.cpp.diff \
patch-ice.cpp.src.Slice.FileTracker.cpp.diff \
patch-ice.cpp.src.slice2cpp.Gen.cpp.diff \
patch-ice.cpp.src.slice2cs.Gen.cpp.diff \
patch-ice.cpp.src.slice2java.Gen.cpp.diff \
patch-ice.cpp.test.Glacier2.ssl.Server.cpp.diff \
patch-ice.cpp.test.Ice.background.EndpointI.h.diff \
patch-ice.cpp.test.Ice.custom.AllTests.cpp.diff \
patch-ice.cpp.test.Ice.info.AllTests.cpp.diff \
patch-ice.cpp.test.Ice.properties.run.py.diff \
patch-ice.cpp.test.IceGrid.admin.run.py.diff \
patch-ice.cpp.test.IceUtil.unicode.Client.cpp.diff \
patch-ice.cpp.test.Slice.keyword.Client.cpp.diff \
patch-ice.cpp.test.include.TestCommon.h.diff \
patch-ice.scripts.TestUtil.py.diff \
patch-add-thrift-support-for-java.diff \
patch-add-thrift-support-for-python.diff
patch.pre_args-replace -p0 -p1
depends_lib port:db46 \
port:expat \
port:libiconv \
port:mcpp \
path:lib/libssl.dylib:openssl \
port:readline
build.dir ${worksrcpath}/cpp
post-patch {
reinplace "s/-O2/-g -O2/" ${build.dir}/config/Make.rules.Darwin
# It appears that the 10.4 and 10.5 installed versions of
# ${prefix}/include/iconv.h have different definitions of
# the inbuf parameter to iconv(), one is 'const char* * inbuf'
# and the other is 'char* * inbuf'. The Ice compile will
# fail if the wrong #define is choosen by Ice.
set fl [open ${prefix}/include/iconv.h]
set data [read $fl]
close $fl
foreach line [split $data \n] {
if {[string match "extern size_t iconv*const*" $line]} {
reinplace "s/_LIBICONV_VERSION < 0x010B/1/" \
${build.dir}/include/Ice/IconvStringConverter.h
break
}
}
# Prevent name conflicts between libICE.* from xorg-libice and
# libIce.* from this port by renaming libIce.* to libZerocIce.*.
# For consistency, rename Ice's other shared libraries.
foreach f [exec find ${build.dir} -name Makefile] {
# To prevent replacements on slice2freeze's --dict argument,
# match exactly on a , or a ) that follows ,Ice\w*, e.g.:
# $(SLICE2FREEZE) --ice -I$(slicedir) --dict StringIsbnSeqDict,string,Ice::StringSeq
reinplace -E {s/,Ice([[:alnum:]]*[,)])/,ZerocIce\1/} ${f}
reinplace -E {s/-lIce([ A-Z]|$)/-lZerocIce\1/g} ${f}
}
reinplace -E {s/-lIce([ A-Z]|$)/-lZerocIce\1/g} \
${build.dir}/config/Make.rules \
${build.dir}/config/Make.rules.Darwin
}
use_configure no
build {
set jobsargs ""
if {${build.jobs} > 1} {
set jobsargs " -j${build.jobs}"
}
set cmd "cd ${build.dir} && make${jobsargs} prefix='${prefix}' embedded_runpath_prefix='${prefix}' CC='${configure.cc}' CXX='${configure.cxx}' OPTIMIZE='yes' BZIP2_HOME='${prefix}' DB_HOME='${prefix}' EXPAT_HOME='${prefix}' OPENSSL_HOME='${prefix}' READLINE_HOME='${prefix}' USE_READLINE=yes MCPP_HOME='${prefix}' LDPLATFORMFLAGS= all && cd doc && make${jobsargs}"
ui_debug ${cmd}
system ${cmd}
}
test.run yes
test.target test
destroot.target prefix="${destroot}${prefix}" \
embedded_runpath_prefix="${prefix}" \
OPTIMIZE="yes" \
BZIP2_HOME="${prefix}" \
DB_HOME="${prefix}" \
EXPAT_HOME="${prefix}" \
OPENSSL_HOME="${prefix}" \
READLINE_HOME="${prefix}" \
USE_READLINE=yes \
MCPP_HOME="${prefix}" \
install
post-destroot {
set sharedir ${destroot}${prefix}/share
set docdir ${sharedir}/doc/${name}
xinstall -m 755 -d ${sharedir}/ice
file rename ${destroot}${prefix}/config ${sharedir}/ice
file rename ${destroot}${prefix}/slice ${sharedir}/slice
xinstall -m 755 -d ${docdir}
file rename ${destroot}${prefix}/ICE_LICENSE ${docdir}
file rename ${destroot}${prefix}/LICENSE ${docdir}
file copy ${build.dir}/doc/reference ${docdir}
foreach f {CHANGES RELEASE_NOTES} {
file copy ${worksrcpath}/${f} ${docdir}
}
if {[variant_isset demo_source_code]} {
system "cd ${build.dir}/demo && make clean"
file copy ${build.dir}/demo $docdir
}
}
variant demo_source_code description {Install demonstration C++ code} {
}