Skip to content

Commit

Permalink
Fixed .changes creation : usage of a proper "control" file located in…
Browse files Browse the repository at this point in the history
… a separated "debian" directory
  • Loading branch information
Jean Aunis committed Jun 4, 2014
1 parent 243bcae commit f99879b
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 19 deletions.
39 changes: 20 additions & 19 deletions src/main/scala/com/typesafe/sbt/packager/debian/DebianPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -218,10 +218,6 @@ trait DebianPlugin extends Plugin with linux.LinuxPlugin {
appendAndFixPerms(postrm, purgeAdd, LinuxFileMetaData())
prependAndFixPerms(postrm, headerScript, LinuxFileMetaData())
}
changelog match {
case None =>
case Some(file) => copyAndFixPerms(file, t / Names.Debian / Names.Changelog, LinuxFileMetaData("0644"))
}
t
},
debianMD5sumsFile <<= (debianExplodedPackage, target) map {
Expand All @@ -248,8 +244,6 @@ trait DebianPlugin extends Plugin with linux.LinuxPlugin {
case 0 => ()
case x => sys.error("Failure packaging debian file. Exit code: " + x)
}
val files = pkgdir / Names.Debian / Names.Files
IO.writeLines(files, List(s"$archive $section $priority"))
tdir / ".." / archive
},
debianSign <<= (packageBin, debianSignRole, streams) map { (deb, role, s) =>
Expand All @@ -262,28 +256,35 @@ trait DebianPlugin extends Plugin with linux.LinuxPlugin {
lintian <<= packageBin map { file =>
Process(Seq("lintian", "-c", "-v", file.getName), Some(file.getParentFile)).!
},
genChanges <<= (packageBin, target, debianChangelog, name, version, packageArchitecture) map { (_, tdir, changelog, name, version, arch) =>
changelog match {
case None => sys.error("Cannot generate .changes file without a changelog")
case Some(_) => {
val changesFile: File = tdir / s"../${name}_${version}_${arch}.changes"
try {
val changes: String = Process(Seq("dpkg-genchanges", "-b", s"-l${Names.Debian}/${Names.Changelog}", s"-c${Names.Debian}/${Names.Control}", s"-f${Names.Debian}/${Names.Files}"), Some(tdir)) !!
val allChanges = List(changes)
IO.writeLines(changesFile, allChanges)
} catch {
case e: Exception => sys.error(s"Failure generating changes file. ${e.getStackTraceString}")
genChanges <<= (packageBin, target, debianChangelog, name, version, debianPackageMetadata) map {
(pkg, tdir, changelog, name, version, data) =>
changelog match {
case None => sys.error("Cannot generate .changes file without a changelog")
case Some(chlog) => {
val debSrc = tdir / "../tmp" / Names.DebianSource
debSrc.mkdirs()
copyAndFixPerms(chlog, debSrc / Names.Changelog, LinuxFileMetaData("0644"))
IO.writeLines(debSrc / Names.Files, List(s"${pkg.getName} ${data.section} ${data.priority}"))
IO.writeLines(debSrc / Names.Control, List(data.makeSourceControl()))
val changesFile: File = tdir / s"../${name}_${version}_${data.architecture}.changes"
try {
val changes: String = Process(Seq("dpkg-genchanges", "-b"), Some(tdir / "../tmp")) !!
val allChanges = List(changes)
IO.writeLines(changesFile, allChanges)
} catch {
case e: Exception => sys.error(s"Failure generating changes file. ${e.getStackTraceString}")
}
changesFile
}
changesFile
}
}

}))

}

object DebianPlugin {
object Names {
val DebianSource = "debian"
val Debian = "DEBIAN"

//maintainer script names
Expand Down
19 changes: 19 additions & 0 deletions src/main/scala/com/typesafe/sbt/packager/debian/metadata.scala
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,25 @@ case class PackageMetaData(
sb append ("Description: %s\n %s\n" format (info.summary, info.description))
sb toString
}

def makeSourceControl(): String = {
val sb = new StringBuilder
sb append ("Source: %s\n" format info.name)
sb append ("Maintainer: %s\n" format info.maintainer)
sb append ("Section: %s\n" format section)
sb append ("Priority: %s\n\n" format priority)

sb append ("Package: %s\n" format info.name)
sb append ("Architecture: %s\n" format architecture)
sb append ("Section: %s\n" format section)
sb append ("Priority: %s\n" format priority)
if (!depends.isEmpty)
sb append ("Depends: %s\n" format (depends mkString ", "))
if (!recommends.isEmpty)
sb append ("Recommends: %s\n" format (recommends mkString ", "))
sb append ("Description: %s\n %s\n" format (info.summary, info.description))
sb toString
}
}

/**
Expand Down

0 comments on commit f99879b

Please sign in to comment.