source: trunk/dports/java/tomcat6/Portfile @ 95045

Last change on this file since 95045 was 95045, checked in by blair@…, 7 years ago

tomcat6: switch from deprecated adduser to add_users.

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