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

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

Add check for ant version 1.6.2. Add explicit port dependency onto our ant if its not present.

  • Property svn:eol-style set to native
File size: 6.6 KB
Line 
1# $Id: Portfile,v 1.11 2005/02/08 23:06:45 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 1.6.2 then add an
59# explicit dependency onto our ant port to get 1.6.2.
60if { [string length [auto_execok ant]] } {
61        set verOutput [exec ant -version]
62        regexp {version (\d*(\.\d*(\.\d*)?)?)} $verOutput -> antVersion
63        if { $antVersion != "1.6.2" } {
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.