From eacbb7c38e63e5f9bd77ca876e9013253c35c99f Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Fri, 6 Mar 2009 12:26:34 +0000 Subject: [PATCH] Convert "tomcat" svn path=/nixos/branches/fix-style/; revision=14380 --- system/options.nix | 48 +------- upstart-jobs/default.nix | 6 - upstart-jobs/tomcat.nix | 256 ++++++++++++++++++++++++--------------- 3 files changed, 162 insertions(+), 148 deletions(-) diff --git a/system/options.nix b/system/options.nix index 4c988d0b1bf..693e8ae777e 100644 --- a/system/options.nix +++ b/system/options.nix @@ -480,53 +480,6 @@ in }; - tomcat = { - enable = mkOption { - default = false; - description = "Whether to enable Apache Tomcat"; - }; - - baseDir = mkOption { - default = "/var/tomcat"; - description = "Location where Tomcat stores configuration files, webapplications and logfiles"; - }; - - user = mkOption { - default = "tomcat"; - description = "User account under which Apache Tomcat runs."; - }; - - deployFrom = mkOption { - default = ""; - description = "Location where webapplications are stored. Leave empty to use the baseDir."; - }; - - javaOpts = mkOption { - default = ""; - description = "Parameters to pass to the Java Virtual Machine which spawns Apache Tomcat"; - }; - - catalinaOpts = mkOption { - default = ""; - description = "Parameters to pass to the Java Virtual Machine which spawns the Catalina servlet container"; - }; - - sharedLibFrom = mkOption { - default = ""; - description = "Location where shared libraries are stored. Leave empty to use the baseDir."; - }; - - commonLibFrom = mkOption { - default = ""; - description = "Location where common libraries are stored. Leave empty to use the baseDir."; - }; - - contextXML = mkOption { - default = ""; - description = "Location of the context.xml to use. Leave empty to use the default."; - }; - }; - httpd = { enable = mkOption { @@ -1302,6 +1255,7 @@ in (import ../upstart-jobs/gnunet.nix) (import ../upstart-jobs/ejabberd.nix) # untested, dosen't compile on x86_64-linux (import ../upstart-jobs/jboss.nix) + (import ../upstart-jobs/tomcat.nix) # untested, too lazy to get that jdk # nix (import ../upstart-jobs/nix.nix) # nix options and daemon diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 684eb7dd36d..8493fc0b226 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -174,12 +174,6 @@ let inherit config pkgs; }) - # Apache Tomcat service - ++ optional config.services.tomcat.enable - (import ../upstart-jobs/tomcat.nix { - inherit config pkgs; - }) - # Samba service. ++ optional config.services.samba.enable (import ../upstart-jobs/samba.nix { diff --git a/upstart-jobs/tomcat.nix b/upstart-jobs/tomcat.nix index 233da6abe38..f714e2387f3 100644 --- a/upstart-jobs/tomcat.nix +++ b/upstart-jobs/tomcat.nix @@ -1,109 +1,175 @@ -args: with args; +{pkgs, config, ...}: + +###### interface +let + inherit (pkgs.lib) mkOption mkIf; + + options = { + services = { + tomcat = { + enable = mkOption { + default = false; + description = "Whether to enable Apache Tomcat"; + }; + + baseDir = mkOption { + default = "/var/tomcat"; + description = "Location where Tomcat stores configuration files, webapplications and logfiles"; + }; + + user = mkOption { + default = "tomcat"; + description = "User account under which Apache Tomcat runs."; + }; + + deployFrom = mkOption { + default = ""; + description = "Location where webapplications are stored. Leave empty to use the baseDir."; + }; + + javaOpts = mkOption { + default = ""; + description = "Parameters to pass to the Java Virtual Machine which spawns Apache Tomcat"; + }; + + catalinaOpts = mkOption { + default = ""; + description = "Parameters to pass to the Java Virtual Machine which spawns the Catalina servlet container"; + }; + + sharedLibFrom = mkOption { + default = ""; + description = "Location where shared libraries are stored. Leave empty to use the baseDir."; + }; + + commonLibFrom = mkOption { + default = ""; + description = "Location where common libraries are stored. Leave empty to use the baseDir."; + }; + + contextXML = mkOption { + default = ""; + description = "Location of the context.xml to use. Leave empty to use the default."; + }; + }; + }; + }; +in + +###### implementation let cfg = config.services.tomcat; in -{ - name = "tomcat"; - - groups = [ - { name = "tomcat"; - gid = (import ../system/ids.nix).gids.tomcat; - } +mkIf config.services.tomcat.enable { + require = [ + options ]; - - users = [ - { name = "tomcat"; - uid = (import ../system/ids.nix).uids.tomcat; - description = "Tomcat user"; - home = "/homeless-shelter"; - } - ]; - - job = '' - description "Apache Tomcat server" - start on network-interface/started - stop on network-interfaces/stop - - start script - # Create initial state data + services = { + extraJobs = [{ + name = "tomcat"; + + groups = [ + { name = "tomcat"; + gid = (import ../system/ids.nix).gids.tomcat; + } + ]; + + users = [ + { name = "tomcat"; + uid = (import ../system/ids.nix).uids.tomcat; + description = "Tomcat user"; + home = "/homeless-shelter"; + } + ]; + + job = '' + description "Apache Tomcat server" + + start on network-interface/started + stop on network-interfaces/stop - if ! test -d ${cfg.baseDir} - then - mkdir -p ${cfg.baseDir}/webapps - mkdir -p ${cfg.baseDir}/shared - mkdir -p ${cfg.baseDir}/lib - cp -av ${pkgs.tomcat6}/{conf,temp,logs} ${cfg.baseDir} - fi - - # Deploy context.xml - - if test "${cfg.contextXML}" = "" - then - cp ${pkgs.tomcat6}/conf/context.xml.default ${cfg.baseDir}/conf/context.xml - else - cp ${cfg.contextXML} ${cfg.baseDir}/conf/context.xml - fi - - # Deploy all webapplications - - if ! test "${cfg.deployFrom}" = "" - then - rm -rf ${cfg.baseDir}/webapps - mkdir -p ${cfg.baseDir}/webapps - for i in ${cfg.deployFrom}/* + start script + # Create initial state data + + if ! test -d ${cfg.baseDir} + then + mkdir -p ${cfg.baseDir}/webapps + mkdir -p ${cfg.baseDir}/shared + mkdir -p ${cfg.baseDir}/lib + cp -av ${pkgs.tomcat6}/{conf,temp,logs} ${cfg.baseDir} + fi + + # Deploy context.xml + + if test "${cfg.contextXML}" = "" + then + cp ${pkgs.tomcat6}/conf/context.xml.default ${cfg.baseDir}/conf/context.xml + else + cp ${cfg.contextXML} ${cfg.baseDir}/conf/context.xml + fi + + # Deploy all webapplications + + if ! test "${cfg.deployFrom}" = "" + then + rm -rf ${cfg.baseDir}/webapps + mkdir -p ${cfg.baseDir}/webapps + for i in ${cfg.deployFrom}/* + do + cp -rL $i ${cfg.baseDir}/webapps + done + fi + + # Fix permissions + + chown -R ${cfg.user} ${cfg.baseDir} + + for i in `find ${cfg.baseDir} -type d` do - cp -rL $i ${cfg.baseDir}/webapps + chmod -v 755 $i + done + + for i in `find ${cfg.baseDir} -type f` + do + chmod -v 644 $i done - fi - - # Fix permissions - - chown -R ${cfg.user} ${cfg.baseDir} - - for i in `find ${cfg.baseDir} -type d` - do - chmod -v 755 $i - done - - for i in `find ${cfg.baseDir} -type f` - do - chmod -v 644 $i - done - # Deploy all common libraries - - rm -rf ${cfg.baseDir}/lib/* - - if test "${cfg.commonLibFrom}" = "" - then - commonLibFrom="${pkgs.tomcat6}/lib"; - else - commonLibFrom="${cfg.commonLibFrom}"; - fi - - for i in $commonLibFrom/*.jar - do - ln -s $i ${cfg.baseDir}/lib - done + # Deploy all common libraries + + rm -rf ${cfg.baseDir}/lib/* + + if test "${cfg.commonLibFrom}" = "" + then + commonLibFrom="${pkgs.tomcat6}/lib"; + else + commonLibFrom="${cfg.commonLibFrom}"; + fi + + for i in $commonLibFrom/*.jar + do + ln -s $i ${cfg.baseDir}/lib + done - # Deploy all shared libraries + # Deploy all shared libraries + + if ! test "${cfg.sharedLibFrom}" = "" + then + rm -f ${cfg.baseDir}/shared/lib + ln -s ${cfg.sharedLibFrom} ${cfg.baseDir}/shared/lib + fi + + end script - if ! test "${cfg.sharedLibFrom}" = "" - then - rm -f ${cfg.baseDir}/shared/lib - ln -s ${cfg.sharedLibFrom} ${cfg.baseDir}/shared/lib - fi - - end script - - respawn ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${pkgs.tomcat6}/bin/startup.sh; sleep 1000d' - - stop script - echo "Stopping tomcat..." - CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c ${pkgs.tomcat6}/bin/shutdown.sh - end script - ''; + respawn ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c 'CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} JAVA_OPTS="${cfg.javaOpts}" CATALINA_OPTS="${cfg.catalinaOpts}" ${pkgs.tomcat6}/bin/startup.sh; sleep 1000d' + + stop script + echo "Stopping tomcat..." + CATALINA_BASE=${cfg.baseDir} JAVA_HOME=${pkgs.jdk} ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c ${pkgs.tomcat6}/bin/shutdown.sh + end script + ''; + }]; + }; }