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 97894 2012-09-19 02:07:44Z rmstonecipher@macports.org $ |
---|
3 | |
---|
4 | PortSystem 1.0 |
---|
5 | |
---|
6 | name tomcat7 |
---|
7 | version 7.0.35 |
---|
8 | revision 1 |
---|
9 | |
---|
10 | categories java www |
---|
11 | maintainers openmaintainer |
---|
12 | license Apache-2 |
---|
13 | platforms darwin |
---|
14 | |
---|
15 | homepage http://tomcat.apache.org/ |
---|
16 | description Tomcat 6 HTTP Server and Java Servlet Container. |
---|
17 | long_description \ |
---|
18 | Tomcat is the servlet container that is used in the official \ |
---|
19 | Reference Implementation for the Java Servlet and JavaServer \ |
---|
20 | Pages technologies. |
---|
21 | |
---|
22 | distname apache-tomcat-${version}-src |
---|
23 | master_sites apache:tomcat/tomcat-7/v${version}/src/ |
---|
24 | |
---|
25 | checksums md5 ccc93c9eff76c16f9133148e171c94e3 \ |
---|
26 | sha1 f1bd2351863e12e461dc6e9395eecf45a1a9610f \ |
---|
27 | rmd160 245b29930a03ab866e74b2d3b7a88ccc2ad01c99 |
---|
28 | |
---|
29 | patchfiles patch-bin-catalina.sh \ |
---|
30 | patch-build.xml.diff |
---|
31 | |
---|
32 | depends_build bin:ant:apache-ant |
---|
33 | depends_lib bin:java:kaffe \ |
---|
34 | bin:jsvc:commons-daemon \ |
---|
35 | port:jakarta-taglibs-standard-11 \ |
---|
36 | port:commons-beanutils \ |
---|
37 | port:commons-collections \ |
---|
38 | port:commons-launcher \ |
---|
39 | port:commons-daemon \ |
---|
40 | port:commons-digester \ |
---|
41 | port:commons-el \ |
---|
42 | port:commons-logging \ |
---|
43 | port:commons-modeler \ |
---|
44 | port:commons-httpclient \ |
---|
45 | port:commons-pool \ |
---|
46 | port:commons-dbcp \ |
---|
47 | port:commons-fileupload \ |
---|
48 | port:commons-io \ |
---|
49 | port:jakarta-regexp \ |
---|
50 | port:xercesj \ |
---|
51 | port:jakarta-log4j \ |
---|
52 | port:mx4j \ |
---|
53 | port:junit \ |
---|
54 | port:saxpath |
---|
55 | |
---|
56 | # Tomcat can only be built using java version 1.6. |
---|
57 | set java_home JAVA_HOME=[exec /usr/libexec/java_home -v 1.6] |
---|
58 | |
---|
59 | set javaLibs ${prefix}/share/java |
---|
60 | set home share/java/tomcat7 |
---|
61 | set tomcatuser www |
---|
62 | set tomcatgroup www |
---|
63 | |
---|
64 | use_configure no |
---|
65 | |
---|
66 | build.cmd ${java_home} ant |
---|
67 | build.target download-dist |
---|
68 | set antArgs [join " |
---|
69 | -Dversion=${version} |
---|
70 | -Dversion.build=[lindex [split ${version} .] 2] |
---|
71 | -Dnsis.exe=${worksrcpath}/.bogus |
---|
72 | -Dbase.path=${worksrcpath}/Repository |
---|
73 | -Dcommons-beanutils.jar=${javaLibs}/commons-beanutils.jar |
---|
74 | -Dcommons-collections.jar=${javaLibs}/commons-collections.jar |
---|
75 | -Dcommons-launcher.jar=${javaLibs}/commons-launcher.jar |
---|
76 | -Dcommons-daemon.jar=${javaLibs}/commons-daemon.jar |
---|
77 | -Dcommons-digester.jar=${javaLibs}/commons-digester.jar |
---|
78 | -Dcommons-el.jar=${javaLibs}/commons-el.jar |
---|
79 | -Dcommons-logging.jar=${javaLibs}/commons-logging.jar |
---|
80 | -Dcommons-logging-api.jar=${javaLibs}/commons-logging-api.jar |
---|
81 | -Dcommons-modeler.jar=${javaLibs}/commons-modeler.jar |
---|
82 | -Dcommons-httpclient.jar=${javaLibs}/commons-httpclient.jar |
---|
83 | -Dcommons-pool.jar=${javaLibs}/commons-pool.jar |
---|
84 | -Dcommons-dbcp.jar=${javaLibs}/commons-dbcp.jar |
---|
85 | -Dcommons-fileupload.jar=${javaLibs}/commons-fileupload.jar |
---|
86 | -Dregexp.jar=${javaLibs}/jakarta-regexp.jar |
---|
87 | -DxercesImpl.jar=${javaLibs}/xercesImpl.jar |
---|
88 | -Dxml-apis.jar=${javaLibs}/xml-apis.jar |
---|
89 | -Dlog4j.jar=${javaLibs}/jakarta-log4j.jar |
---|
90 | -Djmx.lib=${javaLibs} |
---|
91 | -Djunit.jar=${javaLibs}/junit.jar |
---|
92 | -Dsaxpath.jar=${javaLibs}/saxpath.jar |
---|
93 | -Djasper.home=${worksrcpath}/../jasper |
---|
94 | "] |
---|
95 | |
---|
96 | build.args $antArgs |
---|
97 | |
---|
98 | pre-build { |
---|
99 | # |
---|
100 | # Tomcat in this version requires ant 1.6.5. |
---|
101 | # If the current version of ant is not at least 1.6.5 then |
---|
102 | # tell the user and fail. |
---|
103 | # |
---|
104 | if { [string length [auto_execok ant]] } { |
---|
105 | set verOutput [exec ant -version] |
---|
106 | regexp {version (\d+(\.\d+)*)} $verOutput -> antVersion |
---|
107 | if { [vercmp $antVersion "1.6.5"] < 0 } { |
---|
108 | return -code error "This version of tomcat requires ant version 1.6.5 or better. Please install a newer ant before proceeding." |
---|
109 | } |
---|
110 | } |
---|
111 | |
---|
112 | system "mkdir -p ${worksrcpath}/Repository" |
---|
113 | |
---|
114 | # Make a bogus file to prevent nsis.exe from downloading |
---|
115 | system "touch ${worksrcpath}/.bogus" |
---|
116 | } |
---|
117 | |
---|
118 | destroot { |
---|
119 | set target ${destroot}${prefix}/${home} |
---|
120 | xinstall -m 755 -d ${target} |
---|
121 | |
---|
122 | # Ensure we've got needed directories |
---|
123 | ui_msg "# setting up needed dirs" |
---|
124 | xinstall -m 755 -d \ |
---|
125 | ${destroot}${prefix}/share/java \ |
---|
126 | ${destroot}${prefix}/share/doc \ |
---|
127 | ${destroot}${prefix}/etc/rc.d |
---|
128 | |
---|
129 | # Create the tomcat user |
---|
130 | addgroup ${tomcatgroup} |
---|
131 | set gid [existsgroup ${tomcatgroup}] |
---|
132 | add_users ${tomcatuser} gid=${gid} realname={Web Server} |
---|
133 | |
---|
134 | # Install Tomcat |
---|
135 | ui_msg "# installing tomcat..." |
---|
136 | system "cd ${worksrcpath} && ${java_home} ant $antArgs deploy" |
---|
137 | ## build space: |
---|
138 | file copy ${worksrcpath}/output/build/bin ${target} |
---|
139 | file copy ${worksrcpath}/output/build/conf ${target} |
---|
140 | file copy ${worksrcpath}/output/build/lib ${target} |
---|
141 | file copy ${worksrcpath}/output/build/temp ${target} |
---|
142 | file copy ${worksrcpath}/output/build/webapps ${target} |
---|
143 | ## and classes: |
---|
144 | file copy ${worksrcpath}/output/classes ${target}/shared/ |
---|
145 | |
---|
146 | # Add the jstl libs to tomcat6/shared/lib so that they're |
---|
147 | # available to all |
---|
148 | ui_msg "# adding the jstl libs " |
---|
149 | xinstall -m 755 -d ${target}/shared/lib |
---|
150 | xinstall -m 644 \ |
---|
151 | ${prefix}/share/java/jstl.jar \ |
---|
152 | ${prefix}/share/java/standard.jar \ |
---|
153 | ${target}/shared/lib |
---|
154 | |
---|
155 | # Remove unwanted files |
---|
156 | foreach f [glob -directory ${target}/bin *.bat] { file delete $f } |
---|
157 | |
---|
158 | # Maintain empty directories |
---|
159 | ui_msg "# maint. empty dirs... " |
---|
160 | xinstall -m 755 -d ${target}/work |
---|
161 | xinstall -m 755 -d ${target}/logs |
---|
162 | destroot.keepdirs-append \ |
---|
163 | ${target}/logs \ |
---|
164 | ${target}/temp \ |
---|
165 | ${target}/work \ |
---|
166 | ${target}/shared/classes \ |
---|
167 | ${target}/common/classes |
---|
168 | |
---|
169 | # Install our scripts |
---|
170 | ui_msg "# adding our scripts " |
---|
171 | xinstall -m 755 \ |
---|
172 | ${filespath}/tomcatctl \ |
---|
173 | ${filespath}/conf_setup.sh \ |
---|
174 | ${filespath}/setenv.sh \ |
---|
175 | ${target}/bin |
---|
176 | xinstall -m 755 \ |
---|
177 | ${filespath}/setenv.local \ |
---|
178 | ${target}/conf |
---|
179 | |
---|
180 | # Add a symlink from bin directory to tomcatctl |
---|
181 | system "cd ${destroot}${prefix}/bin && ln -s ../${home}/bin/tomcatctl" |
---|
182 | |
---|
183 | # Configure the scripts |
---|
184 | reinplace s|PREFIX=$|PREFIX=${prefix}| ${target}/bin/tomcatctl |
---|
185 | reinplace s|TOMCAT_USER=$|TOMCAT_USER=${tomcatuser}| ${target}/bin/tomcatctl |
---|
186 | |
---|
187 | # Rename certain files as .sample to avoid replacing them on update |
---|
188 | # These will be "repaired" by conf_setup.sh on first run |
---|
189 | foreach f " |
---|
190 | catalina.policy |
---|
191 | catalina.properties |
---|
192 | server.xml |
---|
193 | tomcat-users.xml |
---|
194 | web.xml |
---|
195 | setenv.local |
---|
196 | " { |
---|
197 | file rename ${target}/conf/${f} ${target}/conf/${f}.sample |
---|
198 | } |
---|
199 | |
---|
200 | # Fix ownership of some directories tomcat really needs to write to |
---|
201 | system "chown -R ${tomcatuser}:${tomcatgroup} \ |
---|
202 | ${target}/conf \ |
---|
203 | ${target}/logs \ |
---|
204 | ${target}/temp \ |
---|
205 | ${target}/webapps \ |
---|
206 | ${target}/work" |
---|
207 | |
---|
208 | # Install the docs |
---|
209 | file copy ${worksrcpath}/webapps/docs \ |
---|
210 | ${destroot}${prefix}/share/doc/${name} |
---|
211 | } |
---|
212 | |
---|
213 | |
---|
214 | post-install { |
---|
215 | ui_msg "#" |
---|
216 | ui_msg "# Configuration files in ${prefix}/${home}/conf have been" |
---|
217 | ui_msg "# installed with a .sample extension so that they won't be replaced by a" |
---|
218 | ui_msg "# port update. Each will be copied to its proper location during the" |
---|
219 | ui_msg "# first startup of tomcat by catalina.sh or tomcatctl if you don't" |
---|
220 | ui_msg "# do this yourself first. If this _is_ an update, you might do a diff to" |
---|
221 | ui_msg "# verify that you're not missing anything in the newer .sample versions" |
---|
222 | ui_msg "# of these files." |
---|
223 | ui_msg "#" |
---|
224 | ui_msg "# The script ${prefix}/${home}/bin/tomcatctl has been installed to" |
---|
225 | ui_msg "# facilitate start and stop of tomcat using the jsvc utility, which allows you to" |
---|
226 | ui_msg "# start tomcat as a true daemon process. Once tomcat has acquired its TCP socket," |
---|
227 | ui_msg "# jsvc will drop its root privileges and run as user ${tomcatuser}." |
---|
228 | ui_msg "#" |
---|
229 | ui_msg "# Under Apple Java, control over the Java version used to launch ${name} is" |
---|
230 | ui_msg "# through the shell variable JAVA_JVM_VERSION. This variable should be set" |
---|
231 | ui_msg "# to a java version such as 1.5, 1.6, or CurrentJDK (for the default version)." |
---|
232 | ui_msg "# You may set JAVA_JVM_VERSION in ${prefix}/${home}/bin/setenv.sh." |
---|
233 | ui_msg "#" |
---|
234 | } |
---|
235 | |
---|
236 | startupitem.create yes |
---|
237 | startupitem.executable "${prefix}/bin/tomcatctl" start |
---|
238 | startupitem.pidfile clean "${prefix}/share/java/tomcat7/logs/${name}.pid" |
---|
239 | |
---|
240 | livecheck.type regex |
---|
241 | livecheck.url ${homepage}/download-60.cgi |
---|
242 | livecheck.regex "apache-tomcat-(\\d+\\.\\d+(\\.\\d+)?)-src.tar.gz" |
---|