From 3fda991370bd5547d2890d2f8f057572321c638d Mon Sep 17 00:00:00 2001 From: Louis-Philippe Querel Date: Fri, 2 Oct 2015 11:58:50 -0400 Subject: [PATCH] Modifying the start-rpm-template and LinuxPlugin such that where the defaultLinuxLogsLocation is overridden the deamon log will be assigned to this overridden location. This was causing an issue given that the rpm would create the log location at the new location, but the daemon was still logging in the default location which was not created by the rpm. Tested on CENTOS 6.7 Added test coverage for defaultLinuxInstallLocation and defaultLinuxLogsLocation for init.d files generated upon creation of rpm --- .../systemloader/systemv/start-rpm-template | 2 +- .../sbt/packager/linux/LinuxPlugin.scala | 3 ++ src/sbt-test/rpm/path-override-rpm/build.sbt | 40 +++++++++++++++++++ .../rpm/path-override-rpm/project/plugins.sbt | 1 + .../src/main/scala/test/Main.scala | 10 +++++ src/sbt-test/rpm/path-override-rpm/test | 10 +++++ 6 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/sbt-test/rpm/path-override-rpm/build.sbt create mode 100644 src/sbt-test/rpm/path-override-rpm/project/plugins.sbt create mode 100644 src/sbt-test/rpm/path-override-rpm/src/main/scala/test/Main.scala create mode 100644 src/sbt-test/rpm/path-override-rpm/test diff --git a/src/main/resources/com/typesafe/sbt/packager/archetypes/java_server/systemloader/systemv/start-rpm-template b/src/main/resources/com/typesafe/sbt/packager/archetypes/java_server/systemloader/systemv/start-rpm-template index ffd1f56a5..a65b6d8a5 100644 --- a/src/main/resources/com/typesafe/sbt/packager/archetypes/java_server/systemloader/systemv/start-rpm-template +++ b/src/main/resources/com/typesafe/sbt/packager/archetypes/java_server/systemloader/systemv/start-rpm-template @@ -44,7 +44,7 @@ exec="$INSTALL_DIR/bin/${{exec}}" prog="${{app_name}}" lockfile="/var/lock/subsys/${{app_name}}" -RUN_CMD="$exec >> /var/log/${{app_name}}/${{rpm_daemon_log_file}} 2>&1 &" +RUN_CMD="$exec >> ${{logdir}}/${{app_name}}/${{rpm_daemon_log_file}} 2>&1 &" # $JAVA_OPTS used in $exec wrapper export JAVA_OPTS diff --git a/src/main/scala/com/typesafe/sbt/packager/linux/LinuxPlugin.scala b/src/main/scala/com/typesafe/sbt/packager/linux/LinuxPlugin.scala index b90968742..434aff158 100644 --- a/src/main/scala/com/typesafe/sbt/packager/linux/LinuxPlugin.scala +++ b/src/main/scala/com/typesafe/sbt/packager/linux/LinuxPlugin.scala @@ -80,6 +80,7 @@ object LinuxPlugin extends AutoPlugin { description = (packageSummary in Linux).value, execScript = (executableScriptName in Linux).value, chdir = s"${defaultLinuxInstallLocation.value}/${(packageName in Linux).value}", + logdir = defaultLinuxLogsLocation.value, appName = (packageName in Linux).value, version = sbt.Keys.version.value, daemonUser = (daemonUser in Linux).value, @@ -155,6 +156,7 @@ object LinuxPlugin extends AutoPlugin { description: String, execScript: String, chdir: String, + logdir: String, appName: String, version: String, daemonUser: String, @@ -172,6 +174,7 @@ object LinuxPlugin extends AutoPlugin { "descr" -> description, "exec" -> execScript, "chdir" -> chdir, + "logdir" -> logdir, "retries" -> retries.toString, "retryTimeout" -> retryTimeout.toString, "app_name" -> appName, diff --git a/src/sbt-test/rpm/path-override-rpm/build.sbt b/src/sbt-test/rpm/path-override-rpm/build.sbt new file mode 100644 index 000000000..c6fda4b81 --- /dev/null +++ b/src/sbt-test/rpm/path-override-rpm/build.sbt @@ -0,0 +1,40 @@ +enablePlugins(JavaServerAppPackaging) + +name := "rpm-test" + +version := "0.1.0" + +maintainer := "Josh Suereth " + +packageSummary := "Test rpm package" + +executableScriptName := "rpm-exec" + +packageDescription := """A fun package description of our software, + with multiple lines.""" + +rpmRelease := "1" + +rpmVendor := "typesafe" + +rpmUrl := Some("http://github.com/sbt/sbt-native-packager") + +rpmLicense := Some("BSD") + +defaultLinuxInstallLocation := "/opt/test" + +defaultLinuxLogsLocation := "/opt/test/log" + +TaskKey[Unit]("unzip") <<= (baseDirectory, packageBin in Rpm, streams) map { (baseDir, rpmFile, streams) => + val rpmPath = Seq(rpmFile.getAbsolutePath) + Process("rpm2cpio" , rpmPath) #| Process("cpio -i --make-directories") ! streams.log + () +} + +TaskKey[Unit]("check-init-file") <<= (baseDirectory, streams) map { (target, out) => + val initd = IO.read(target / "etc" / "init.d" / "rpm-test") + assert(initd contains "/opt/test/rpm-test", "defaultLinuxInstallLocation not overriden in init.d\n" + initd) + assert(initd contains "/opt/test/log/rpm-test/rpm-test.log", "defaultLinuxLogsLocation not overriden in init.d\n" + initd) + out.log.success("Successfully tested rpm-test file") + () +} diff --git a/src/sbt-test/rpm/path-override-rpm/project/plugins.sbt b/src/sbt-test/rpm/path-override-rpm/project/plugins.sbt new file mode 100644 index 000000000..b53de154c --- /dev/null +++ b/src/sbt-test/rpm/path-override-rpm/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("project.version")) diff --git a/src/sbt-test/rpm/path-override-rpm/src/main/scala/test/Main.scala b/src/sbt-test/rpm/path-override-rpm/src/main/scala/test/Main.scala new file mode 100644 index 000000000..638bef378 --- /dev/null +++ b/src/sbt-test/rpm/path-override-rpm/src/main/scala/test/Main.scala @@ -0,0 +1,10 @@ +package test + +object Main { + def main (args: Array[String]) { + //server app imitation + while (true){ + Thread.sleep(1000L) + } + } +} \ No newline at end of file diff --git a/src/sbt-test/rpm/path-override-rpm/test b/src/sbt-test/rpm/path-override-rpm/test new file mode 100644 index 000000000..5662e0959 --- /dev/null +++ b/src/sbt-test/rpm/path-override-rpm/test @@ -0,0 +1,10 @@ +# Run the rpm packaging. +> rpm:package-bin +$ exists target/rpm/RPMS/noarch/rpm-test-0.1.0-1.noarch.rpm + +> unzip +$ exists opt/test/rpm-test + +$ exists etc/init.d/rpm-test +> check-init-file +