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

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

Switch to use of rmp-vercomp for ant version checking. This allows better compatibility with future versions of ant.

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