From 907fb510d2b31c8f6f362d186f6aab9e842a125c Mon Sep 17 00:00:00 2001 From: Michal Rozar Date: Thu, 5 Nov 2015 13:22:20 +0000 Subject: [PATCH 1/2] Allow to override systemd start script name --- .../packager/archetypes/JavaServerApplication.scala | 12 ++++++------ .../scala/com/typesafe/sbt/packager/linux/Keys.scala | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala b/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala index 40752344e..d3c83352e 100644 --- a/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala +++ b/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala @@ -102,7 +102,7 @@ object JavaServerAppPackaging extends AutoPlugin { linuxScriptReplacements in Debian, target in Universal, serverLoading in Debian) map makeStartScript, - linuxPackageMappings <++= (packageName, linuxMakeStartScript, serverLoading, defaultLinuxStartScriptLocation) map startScriptMapping + linuxPackageMappings <++= (packageName, linuxMakeStartScript, serverLoading, defaultLinuxStartScriptLocation, linuxStartScriptName) map startScriptMapping )) ++ Seq( // === Daemon User and Group === daemonUser in Debian <<= daemonUser in Linux, @@ -154,7 +154,7 @@ object JavaServerAppPackaging extends AutoPlugin { serverLoading in Rpm) map makeStartScript, defaultLinuxStartScriptLocation in Rpm <<= (serverLoading in Rpm) apply getStartScriptLocation, - linuxPackageMappings in Rpm <++= (packageName in Rpm, linuxMakeStartScript in Rpm, serverLoading in Rpm, defaultLinuxStartScriptLocation in Rpm) map startScriptMapping, + linuxPackageMappings in Rpm <++= (packageName in Rpm, linuxMakeStartScript in Rpm, serverLoading in Rpm, defaultLinuxStartScriptLocation in Rpm, linuxStartScriptName in Rpm) map startScriptMapping, // == Maintainer scripts === // TODO this is very basic - align debian and rpm plugin @@ -235,11 +235,11 @@ object JavaServerAppPackaging extends AutoPlugin { } } - protected def startScriptMapping(name: String, script: Option[File], loader: ServerLoader, scriptDir: String): Seq[LinuxPackageMapping] = { + protected def startScriptMapping(name: String, script: Option[File], loader: ServerLoader, scriptDir: String, scriptName: Option[String]): Seq[LinuxPackageMapping] = { val (path, permissions, isConf) = loader match { - case Upstart => ("/etc/init/" + name + ".conf", "0644", "true") - case SystemV => ("/etc/init.d/" + name, "0755", "false") - case Systemd => ("/usr/lib/systemd/system/" + name + ".service", "0644", "true") + case Upstart => ("/etc/init/" + scriptName.getOrElse(name + ".conf"), "0644", "true") + case SystemV => ("/etc/init.d/" + scriptName.getOrElse(name), "0755", "false") + case Systemd => ("/usr/lib/systemd/system/" + scriptName.getOrElse(name + ".service"), "0644", "true") } for { s <- script.toSeq diff --git a/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala b/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala index 8ba3800da..7e3dc876f 100644 --- a/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala +++ b/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala @@ -26,6 +26,7 @@ trait LinuxKeys { val linuxMakeStartScript = TaskKey[Option[File]]("makeStartScript", "Creates or discovers the start script used by this project") val linuxStartScriptTemplate = TaskKey[URL]("linuxStartScriptTemplate", "The location of the template start script file we use for debian (upstart or init.d") + val linuxStartScriptName = TaskKey[Option[String]]("linuxStartScriptName", "The name of the start script for debian (primary useful for systemd)") val linuxEtcDefaultTemplate = TaskKey[URL]("linuxEtcDefaultTemplate", "The location of the /etc/default/ template script.") val linuxScriptReplacements = SettingKey[Seq[(String, String)]]( "linuxScriptReplacements", From a3b777bb5c3b049a6335e97855f7147dcf5a8f7c Mon Sep 17 00:00:00 2001 From: Michal Rozar Date: Thu, 5 Nov 2015 14:02:53 +0000 Subject: [PATCH 2/2] Set default value of linuxStartScriptName to None --- .../sbt/packager/archetypes/JavaServerApplication.scala | 2 ++ src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala b/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala index d3c83352e..753e331bc 100644 --- a/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala +++ b/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala @@ -64,6 +64,7 @@ object JavaServerAppPackaging extends AutoPlugin { if (overrideScript.exists) overrideScript.toURI.toURL else etcDefaultTemplateSource }, + linuxStartScriptName := None, makeEtcDefault <<= (packageName in Linux, target in Universal, linuxEtcDefaultTemplate, linuxScriptReplacements) map makeEtcDefaultScript, linuxPackageMappings <++= (makeEtcDefault, bashScriptEnvConfigLocation) map { (conf, envLocation) => @@ -154,6 +155,7 @@ object JavaServerAppPackaging extends AutoPlugin { serverLoading in Rpm) map makeStartScript, defaultLinuxStartScriptLocation in Rpm <<= (serverLoading in Rpm) apply getStartScriptLocation, + linuxStartScriptName in Rpm <<= linuxStartScriptName in Linux, linuxPackageMappings in Rpm <++= (packageName in Rpm, linuxMakeStartScript in Rpm, serverLoading in Rpm, defaultLinuxStartScriptLocation in Rpm, linuxStartScriptName in Rpm) map startScriptMapping, // == Maintainer scripts === diff --git a/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala b/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala index 7e3dc876f..1cc87af40 100644 --- a/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala +++ b/src/main/scala/com/typesafe/sbt/packager/linux/Keys.scala @@ -26,7 +26,7 @@ trait LinuxKeys { val linuxMakeStartScript = TaskKey[Option[File]]("makeStartScript", "Creates or discovers the start script used by this project") val linuxStartScriptTemplate = TaskKey[URL]("linuxStartScriptTemplate", "The location of the template start script file we use for debian (upstart or init.d") - val linuxStartScriptName = TaskKey[Option[String]]("linuxStartScriptName", "The name of the start script for debian (primary useful for systemd)") + val linuxStartScriptName = SettingKey[Option[String]]("linuxStartScriptName", "The name of the start script for debian (primary useful for systemd)") val linuxEtcDefaultTemplate = TaskKey[URL]("linuxEtcDefaultTemplate", "The location of the /etc/default/ template script.") val linuxScriptReplacements = SettingKey[Seq[(String, String)]]( "linuxScriptReplacements",