Packaging scm-manager

Taahir Ahmed <[email protected]> Thu, 08 Aug 2013 18:48:24 -0500
Newsgroups gmane.linux.gentoo.java
Organization TAMU-CS-DAIRL
Message-ID <15148336.2obGtzaLKW@basis>
This is a multi-part message in MIME format.

--nextPart1669406.5MEtArG5D4
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="utf-8"

Hi all,

I'm interested in packaging scm-manager [http://www.scm-manager.org/].  It's a 
very nice java servlet that handles hosting git, mercurial, bazaar, and 
subversion repositories.

I'm starting by writing an init script for my existing install (attached).  
I've got it mostly working, I think, but I am wondering if there's a gentoo-
approved way of setting a proper value for JAVA_HOME in the init script.

There is a file (/etc/profile.d/java-config-2.sh) that sets a value for 
several java-related environment variables.  Is it good practice to source 
this file from an init script?  Right now I'm just using a sub-shell call to 
java-config to detect the active system vm.

Thanks,

Taahir Ahmed
--nextPart1669406.5MEtArG5D4
Content-Disposition: attachment; filename="scm-manager"
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="UTF-8"; name="scm-manager"

#!/sbin/runscript

# Taahir Ahmed

# OpenRC init script for scm-manager.  It's installed in scm-user's home
# directory, and we drop root priveleges before we invoke it.  It's a java
# webapp, so my trust in it isn't particularly high.

depend() {
    
    # Doesn't make sense to run without network access.  At the very least, we
    # need a loopback.
    need net
    
    # I'm pretty sure it can talk to syslog.
    use logger
}

JAVA_HOME=$(java-config --jre-home)

BASEDIR=/home/scm-user/scm-server
REPO="$BASEDIR"/lib

CLASSPATH=${CLASSPATH}:"$BASEDIR"/conf
CLASSPATH=${CLASSPATH}:"$REPO"/scm-server-1.32.jar
CLASSPATH=${CLASSPATH}:"$REPO"/commons-daemon-1.0.10.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-server-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/javax.servlet-2.5.0.v201103041518.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-continuation-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-http-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-io-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-webapp-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-xml-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-servlet-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-security-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-jmx-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-util-7.6.11.v20130520.jar
CLASSPATH=${CLASSPATH}:"$REPO"/jetty-ajp-7.6.11.v20130520.jar

start() {

    # if [ "${RC_CMD}" = "restart" ];
    # then
    # 	# I don't think a restart requires anything special
    # fi

    ebegin "Starting scm-manager"
    
    # Launch the daemon using jsvc (from the dev-java/commons-daemon package).
    /usr/bin/jsvc                                  \
	-java-home $JAVA_HOME                      \
	-cp "$CLASSPATH"                           \
	-Djava.awt.headless=true                   \
	-Dlogback.configurationFile=logging.xml    \
	-user scm-user                             \
	-outfile "$BASEDIR/var/log/scm-server.out" \
	-errfile "$BASEDIR/var/log/scm-server.err" \
	-pidfile "$BASEDIR/var/scm-server.pid"     \
	-Dapp.name="scm-server"                    \
	-Dapp.repo="$REPO"                         \
	-Dbasedir="$BASEDIR"                       \
	sonia.scm.server.ScmServerDaemon
    
    eend $?
}

stop() {
    ebegin "Stopping scm-manager"

    # Stop using jsvc and the pidfile created during "start".
    /usr/bin/jsvc      \
	-verbose       \
	-stop          \
	-java-home $JAVA_HOME \
	-cp "$CLASSPATH" \
	-user scm-user \
	-outfile "$BASEDIR/var/log/scm-server.out" \
	-errfile "$BASEDIR/var/log/scm-server.err" \
	-pidfile "$BASEDIR/var/scm-server.pid" \
	-Dapp.name="scm-server" \
	-Dapp.repo="$REPO"      \
	-Dbasedir="$BASEDIR"    \
	-Djava.awt.headless=true                   \
	-Dlogback.configurationFile=logging.xml    \
	sonia.scm.server.ScmServerDaemon

    eend $?
}



--nextPart1669406.5MEtArG5D4--