source: trunk/dports/java/tomcat5/Portfile @ 14118

Last change on this file since 14118 was 14118, checked in by jberry, 15 years ago

Validate ant version at pre-build time, rather than globally. This
prevents slowness and any issues when the portfile is evaluated.

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