Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make the log file generated by application daemon configurable in RPM based SystemV #656

Merged
merged 1 commit into from
Sep 9, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ exec="${{chdir}}/bin/${{exec}}"
prog="${{app_name}}"
lockfile="/var/lock/subsys/${{app_name}}"

RUN_CMD="$exec >> /var/log/${{app_name}}/daemon.log 2>&1 &"
RUN_CMD="$exec >> /var/log/${{app_name}}/${{rpm_daemon_log_file}} 2>&1 &"

# $JAVA_OPTS used in $exec wrapper
export JAVA_OPTS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import linux.LinuxPlugin.autoImport._
import debian.DebianPlugin
import debian.DebianPlugin.autoImport.{ debianMakePreinstScript, debianMakePostinstScript, debianMakePrermScript, debianMakePostrmScript }
import rpm.RpmPlugin
import rpm.RpmPlugin.autoImport.{ rpmPre, rpmPost, rpmPostun, rpmPreun, rpmScriptsDirectory }
import rpm.RpmPlugin.autoImport.{ rpmPre, rpmPost, rpmPostun, rpmPreun, rpmScriptsDirectory, rpmDaemonLogFile }
import rpm.RpmPlugin.Names.RpmDaemonLogFileReplacement
import JavaAppPackaging.autoImport.{ bashScriptConfigLocation, bashScriptEnvConfigLocation }

/**
Expand Down Expand Up @@ -128,6 +129,7 @@ object JavaServerAppPackaging extends AutoPlugin {
makeStartScriptReplacements,
linuxScriptReplacements += JavaServerLoaderScript.loaderFunctionsReplacement(serverLoading.value, ARCHETYPE),
linuxScriptReplacements ++= bashScriptEnvConfigLocation.value.map(ENV_CONFIG_REPLACEMENT -> _).toSeq,
linuxScriptReplacements ++= Seq((RpmDaemonLogFileReplacement, rpmDaemonLogFile.value)),

// === /var/run/app pid folder ===
linuxPackageMappings <+= (packageName, daemonUser, daemonGroup) map { (name, user, group) =>
Expand Down
2 changes: 2 additions & 0 deletions src/main/scala/com/typesafe/sbt/packager/rpm/Keys.scala
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,6 @@ trait RpmKeys {
// Building
val rpmLint = TaskKey[Unit]("rpm-lint", "Runs rpmlint program against the genreated RPM, if available.")

val rpmDaemonLogFile = SettingKey[String]("rpm-daemon-log-file", "Name of the log file generated by application daemon")

}
6 changes: 5 additions & 1 deletion src/main/scala/com/typesafe/sbt/packager/rpm/RpmPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ object RpmPlugin extends AutoPlugin {
val Postun = "postun"
/** `preun` */
val Preun = "preun"

// replacements
val RpmDaemonLogFileReplacement = "rpm_daemon_log_file"
}

override lazy val projectSettings = Seq(
Expand Down Expand Up @@ -80,7 +83,8 @@ object RpmPlugin extends AutoPlugin {
target in Rpm <<= target(_ / "rpm"),
name in Rpm <<= name in Linux,
packageName in Rpm <<= packageName in Linux,
executableScriptName in Rpm <<= executableScriptName in Linux
executableScriptName in Rpm <<= executableScriptName in Linux,
rpmDaemonLogFile := s"${(packageName in Linux).value}.log"
) ++ inConfig(Rpm)(Seq(
packageArchitecture := "noarch",
rpmMetadata <<=
Expand Down
8 changes: 7 additions & 1 deletion src/sbt-test/rpm/sysvinit-rpm/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,22 @@ rpmUrl := Some("http://github.com/sbt/sbt-native-packager")

rpmLicense := Some("BSD")

rpmDaemonLogFile := "test.log"

mainClass in (Compile, run) := Some("com.example.MainApp")

TaskKey[Unit]("unzipAndCheck") <<= (packageBin in Rpm, streams) map { (rpmFile, streams) =>
TaskKey[Unit]("unzipAndCheck") <<= (baseDirectory, packageBin in Rpm, streams) map { (baseDir, rpmFile, streams) =>
val rpmPath = Seq(rpmFile.getAbsolutePath)
Process("rpm2cpio" , rpmPath) #| Process("cpio -i --make-directories") ! streams.log
val scriptlets = Process("rpm -qp --scripts " + rpmFile.getAbsolutePath) !! streams.log
assert(scriptlets contains "addGroup rpm-test", "addGroup not present in \n" + scriptlets)
assert(scriptlets contains "addUser rpm-test", "Incorrect useradd command in \n" + scriptlets)
assert(scriptlets contains "deleteGroup rpm-test", "deleteGroup not present in \n" + scriptlets)
assert(scriptlets contains "deleteUser rpm-test", "deleteUser rpm not present in \n" + scriptlets)

val startupScript = IO.read(baseDir / "etc" / "init.d" / "rpm-test")
assert(startupScript contains """RUN_CMD="$exec >> /var/log/rpm-test/test.log 2>&1 &"""", "Setting key rpmDaemonLogFile not present in \n" + startupScript)

// TODO check symlinks
()
}
Expand Down
1 change: 1 addition & 0 deletions src/sbt-test/rpm/test-executableScriptName/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ TaskKey[Unit]("unzip") <<= (packageBin in Rpm, streams) map { (rpmFile, streams)
TaskKey[Unit]("checkStartupScript") <<= (target, streams) map { (target, out) =>
val script = IO.read(file("etc/init.d/rpm-test"))
assert(script contains "rpm-exec", "SystemV script didn't contain correct executable filename 'rpm-exec' \n" + script)
assert(script contains """RUN_CMD="$exec >> /var/log/rpm-test/rpm-test.log 2>&1 &"""", "SystemV script didn't contain default daemon log filename 'rpm-test.log' \n" + script)
out.log.success("Successfully tested startup script start up script")
()
}
7 changes: 7 additions & 0 deletions src/sphinx/formats/rpm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,13 @@ Scriptlet Settings
appends ``__os_install_post`` scriptlet to ``rpmPre`` avoiding jar repackaging


SystemV Start Script Settings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``rpmDaemonLogFile``
File name of the log generated by application daemon.


Tasks
-----

Expand Down