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

Last change on this file since 9016 was 9016, checked in by jberry, 16 years ago

Alteration of tomcat5 port.

Changes:

(1) jk2 support has been split out into separate port mod_jk2, which

needs to be installed separately. This simplifies the tomcat5 port.
Thanks, Landon, for the suggestion.

(2) Configuration files, apt to be modified by the user, are now installed

as .sample files. On each run of tomcat using supplied scripts
these files are copied to their proper names if they don't exist.
Thus updates to the port should not destroy these files and any
user configuration within them.

(3) tomcat.pid file moved to tomcat/logs directory to best support multiple

tomcat instances using CATALINA_BASE.

  • Property svn:eol-style set to native
File size: 6.2 KB
Line 
1# $Id: Portfile,v 1.4 2004/10/28 22:23:46 jberry Exp $
2
3PortSystem 1.0
4
5name                            tomcat5
6version                         5.0.29
7revision                        3
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 7499866b9d37fd4a3bfd17ac0163ddc7
22
23patchfiles                      patch-setclasspath.sh.diff \
24                                        patch-catalina.sh.diff \
25                                        patch-jk2.properties.diff
26
27depends_build           bin:ant:apache-ant
28depends_lib                     bin:java:kaffe \
29                                        bin:jsvc:commons-daemon \
30                                        lib:pcre:pcre \
31                                        lib:XXX:jakarta-taglibs-standard-11 \
32                                        lib:XXX:commons-beanutils \
33                                        lib:XXX:commons-collections \
34                                        lib:XXX:commons-launcher \
35                                        lib:XXX:commons-daemon \
36                                        lib:XXX:commons-digester \
37                                        lib:XXX:commons-el \
38                                        lib:XXX:commons-logging \
39                                        lib:XXX:commons-modeler \
40                                        lib:XXX:jakarta-regexp \
41                                        lib:XXX:xercesj \
42                                        lib:XXX:jakarta-log4j \
43                                        lib:XXX:commons-httpclient \
44                                        lib:XXX:commons-pool \
45                                        lib:XXX:commons-dbcp \
46                                        lib:XXX:commons-fileupload \
47                                        lib:XXX:MX4J \
48                                        lib:XXX:junit \
49                                        lib:XXX:jaxen \
50                                        lib:XXX:saxpath
51                                       
52                                        # Support to build w/struts 1.2 versions, like we may have
53                                        # installed, should be available in tomcat 5.0.30.
54                                        #lib:XXX:struts
55                               
56worksrcdir                      ${distname}/jakarta-tomcat-5
57
58set javaLibs            ${prefix}/share/java
59set home                        share/java/tomcat5
60set tomcatuser          www
61set tomcatgroup         www
62
63use_configure           no
64
65build.cmd                       ant
66build.target            download dist
67build.args                      [join "
68                                        -Dbase.path=${worksrcpath}/Repository
69                                        -Dnsis.exe=${worksrcpath}/.turd
70                                        -Dcommons-beanutils.jar=${javaLibs}/commons-beanutils.jar
71                                        -Dcommons-collections.jar=${javaLibs}/commons-collections.jar
72                                        -Dcommons-launcher.jar=${javaLibs}/commons-launcher.jar
73                                        -Dcommons-daemon.jar=${javaLibs}/commons-daemon.jar
74                                        -Dcommons-digester.jar=${javaLibs}/commons-digester.jar
75                                        -Dcommons-el.jar=${javaLibs}/commons-el.jar
76                                        -Dcommons-logging.jar=${javaLibs}/commons-logging.jar
77                                        -Dcommons-logging-api.jar=${javaLibs}/commons-logging-api.jar
78                                        -Dcommons-modeler.jar=${javaLibs}/commons-modeler.jar
79                                        -Dregexp.jar=${javaLibs}/jakarta-regexp.jar
80                                        -DxercesImpl.jar=${javaLibs}/xercesImpl.jar
81                                        -Dxml-apis.jar=${javaLibs}/xml-apis.jar
82                                        -Dlog4j.jar=${javaLibs}/jakarta-log4j.jar
83                                        -Dcommons-httpclient.jar=${javaLibs}/commons-httpclient.jar
84                                        -Dcommons-pool.jar=${javaLibs}/commons-pool.jar
85                                        -Dcommons-dbcp.jar=${javaLibs}/commons-dbcp.jar
86                                        -Dcommons-fileupload.jar=${javaLibs}/commons-fileupload.jar
87                                        -Djmx.jar=${javaLibs}/mx4j.jar
88                                        -Djunit.jar=${javaLibs}/junit.jar
89                                        -Djaxen.jar=${javaLibs}/jaxen-core.jar
90                                        -Dsaxpath.jar=${javaLibs}/saxpath.jar
91                                        "]
92
93                                        #-Dstruts.lib=${javaLibs}/struts/lib
94
95pre-build {
96        # Make a bogus file to prevent nsis.exe from downloading
97        system "touch ${worksrcpath}/.turd"
98}
99
100destroot {
101        set target ${destroot}${prefix}/${home}
102
103        # Ensure we've got needed directories
104        xinstall -m 755 -d \
105                ${destroot}${prefix}/share/java \
106                ${destroot}${prefix}/share/doc \
107                ${destroot}${prefix}/etc/rc.d
108               
109        # Create the tomcat user
110        addgroup ${tomcatgroup}
111        set gid [existsgroup ${tomcatgroup}]
112        adduser ${tomcatgroup} gid=${gid} realname=Web Server
113       
114        # Install Tomcat
115        file copy ${worksrcpath}/dist ${target}
116       
117        # Add the jstl libs to tomcat5/shared/lib so that they're available to all
118        xinstall -m 644 \
119                ${prefix}/share/java/jstl.jar \
120                ${prefix}/share/java/standard.jar \
121                ${target}/shared/lib
122       
123        # Remove unwanted files
124        foreach f [glob -directory ${target}/bin *.bat] { file delete $f }
125       
126        # Add turds to maintain empty directories
127        foreach d       "
128                                ${target}/logs
129                                ${target}/temp
130                                ${target}/work
131                                ${target}/shared/classes
132                                ${target}/common/classes
133                                " {
134                system "touch ${d}/.turd"
135        }
136               
137        # Install our scripts
138        xinstall -m 755 \
139                ${filespath}/tomcatctl \
140                ${filespath}/conf_setup.sh \
141                ${filespath}/setenv.sh \
142                ${target}/bin
143        xinstall -m 755 ${filespath}/tomcat5.sh \
144                ${destroot}${prefix}/etc/rc.d
145               
146        # Add a symlink from bin directory to tomcatctl
147        system "cd ${destroot}${prefix}/bin && ln -s ../${home}/bin/tomcatctl"
148       
149        # Configure the scripts
150        reinplace s|PREFIX=$|PREFIX=${prefix}| ${target}/bin/tomcatctl
151        reinplace s|TOMCAT_USER=$|TOMCAT_USER=${tomcatuser}| ${target}/bin/tomcatctl
152        reinplace s|TOMCATPREFIX=$|TOMCATPREFIX=${prefix}/${home}| ${destroot}${prefix}/etc/rc.d/tomcat5.sh
153       
154        # Rename certain files as .sample to avoid replacing them on update
155        # These will be "repaired" by conf_setup.sh on first run
156        foreach f       "
157                                catalina.policy
158                                catalina.properties
159                                jk2.properties
160                                server.xml
161                                tomcat-users.xml
162                                web.xml
163                                " {
164                file rename ${target}/conf/${f} ${target}/conf/${f}.sample
165        }
166        reinplace s|@@PREFIX@@|${prefix}|g ${target}/conf/jk2.properties.sample
167
168        # Fix ownership of some directories tomcat really needs to write to
169        system "chown -R ${tomcatuser}:${tomcatgroup} \
170                ${target}/conf \
171                ${target}/logs \
172                ${target}/temp \
173                ${target}/webapps \
174                ${target}/work"
175       
176        # Install the docs
177        file copy ${worksrcpath}/build/docs \
178                ${destroot}${prefix}/share/doc/${name}
179}
180
181
182post-install {
183        ui_msg "#"
184        ui_msg "# Configuration files in ${prefix}/${home}/conf have been"
185        ui_msg "# installed with a .sample extension so that they won't be replaced by a"
186        ui_msg "# port update. Each will be copied to its proper location during the"
187        ui_msg "# first startup of tomcat by catalina.sh or tomcatctl if you don't"
188        ui_msg "# do this yourself first. If this _is_ an update, you might do a diff to"
189        ui_msg "# verify that you're not missing anything in the newer .sample versions"
190        ui_msg "# of these files."
191        ui_msg "#"
192        ui_msg "# The script ${prefix}/${home}/bin/tomcatctl has been installed to"
193        ui_msg "# facilitate start and stop of tomcat using the jsvc utility, which allows you to"
194        ui_msg "# start tomcat as a true daemon process. Once it has acquired its TCP socket,"
195        ui_msg "# jsvc will drop its root privileges and run as user ${tomcatuser}."
196        ui_msg "#"
197}
Note: See TracBrowser for help on using the repository browser.