You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2014/05/08 03:41:38 UTC
svn commit: r1593167 [1/2] - in /tomee/tomee/trunk/tomee/tomee-deb: ./
src/main/groovy/org/apache/tomee/deb/
src/main/groovy/org/apache/tomee/deb/jira/ src/main/resources/
src/main/resources/control/ src/main/resources/data/ src/main/resources/init/
Author: tveronezi
Date: Thu May 8 01:41:37 2014
New Revision: 1593167
URL: http://svn.apache.org/r1593167
Log:
-making the creating of the debian files a bit faster
-splitting the libraries into new packages (shared libs)
-adding precompiled changelogs
Added:
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/CompressTool.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/ControlBuilder.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/DataBuilder.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageInfo.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/data/
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/data/copyright.template
- copied, changed from r1592772, tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/copyright.template
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/precompiled-changelog
Removed:
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/ControlData.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/copyright.template
Modified:
tomee/tomee/trunk/tomee/tomee-deb/pom.xml
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/ChangeLogBuilder.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/VersionIssues.groovy
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/control.template
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/lib_control.template
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postinst.sh
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postrm.sh
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/prerm.sh
tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/init/setenv.sh
Modified: tomee/tomee/trunk/tomee/tomee-deb/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/pom.xml?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/pom.xml Thu May 8 01:41:37 2014
@@ -158,14 +158,6 @@
<configuration>
<artifactItems>
<artifactItem>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat</artifactId>
- <version>${tomcat.version}</version>
- <type>zip</type>
- <outputDirectory>${distribution.workdir}</outputDirectory>
- <destFileName>tomcat.zip</destFileName>
- </artifactItem>
- <artifactItem>
<groupId>org.apache.openejb</groupId>
<artifactId>apache-tomee</artifactId>
<version>${project.version}</version>
@@ -250,34 +242,51 @@
<configuration>
<artifacts>
<artifact>
- <file>${project.build.directory}/deb/apache-tomee-plus-${project.version}.deb</file>
+ <file>${project.build.directory}/work-dir/apache-tomee-plus.deb</file>
<type>deb</type>
<classifier>plus</classifier>
</artifact>
<artifact>
- <file>${project.build.directory}/deb/apache-tomee-jaxrs-${project.version}.deb
+ <file>${project.build.directory}/work-dir/apache-tomee-jaxrs.deb
</file>
<type>deb</type>
<classifier>jaxrs</classifier>
</artifact>
<artifact>
- <file>${project.build.directory}/deb/apache-tomee-webprofile-${project.version}.deb
+ <file>${project.build.directory}/work-dir/apache-tomee-webprofile.deb
</file>
<type>deb</type>
<classifier>webprofile</classifier>
</artifact>
<artifact>
- <file>${project.build.directory}/deb/apache-tomee-plume-${project.version}.deb
+ <file>${project.build.directory}/work-dir/apache-tomee-plume.deb
</file>
<type>deb</type>
<classifier>plume</classifier>
</artifact>
<artifact>
- <file>
- ${project.build.directory}/deb/apache-tomee-lib-tomcat-${project.version}.deb
+ <file>${project.build.directory}/work-dir/apache-libtomee-jaxrs-java.deb
+ </file>
+ <type>deb</type>
+ <classifier>lib-jaxrs</classifier>
+ </artifact>
+ <artifact>
+ <file>${project.build.directory}/work-dir/apache-libtomee-plume-java.deb
+ </file>
+ <type>deb</type>
+ <classifier>lib-plume</classifier>
+ </artifact>
+ <artifact>
+ <file>${project.build.directory}/work-dir/apache-libtomee-plus-java.deb
+ </file>
+ <type>deb</type>
+ <classifier>lib-plus</classifier>
+ </artifact>
+ <artifact>
+ <file>${project.build.directory}/work-dir/apache-libtomee-webprofile-java.deb
</file>
<type>deb</type>
- <classifier>lib-tomcat</classifier>
+ <classifier>lib-webprofile</classifier>
</artifact>
</artifacts>
</configuration>
Added: tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/CompressTool.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/CompressTool.groovy?rev=1593167&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/CompressTool.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/CompressTool.groovy Thu May 8 01:41:37 2014
@@ -0,0 +1,94 @@
+package org.apache.tomee.deb
+
+import groovy.io.FileType
+import org.apache.commons.compress.archivers.ar.ArArchiveEntry
+import org.apache.commons.compress.archivers.ar.ArArchiveOutputStream
+import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream
+import org.apache.commons.compress.compressors.gzip.GzipParameters
+import org.apache.maven.project.MavenProject
+
+import java.util.zip.Deflater
+
+class CompressTool {
+ private def ant = new AntBuilder()
+ private File workDir
+
+ CompressTool(MavenProject project) {
+ this.workDir = new File(project.properties['distribution.workdir'] as String)
+ }
+
+ void gz(String filePath, String gzipFilePath) {
+ new File(filePath).withInputStream { fis ->
+ new File(gzipFilePath).withOutputStream { fos ->
+ def gzParams = new GzipParameters(
+ compressionLevel: Deflater.BEST_COMPRESSION
+ )
+ def gzo = new GzipCompressorOutputStream(fos, gzParams)
+ gzo << fis
+ gzo.close()
+ }
+ }
+ }
+
+ private void arDebianBinary(ArArchiveOutputStream output) {
+ byte[] text = "2.0\n".getBytes()
+ def entry = new ArArchiveEntry('debian-binary', text.length)
+ output.putArchiveEntry(entry)
+ output.write(text)
+ output.closeArchiveEntry()
+ }
+
+ private File createTarGz(String classifier, File dataDir) {
+ def tarFile = new File(dataDir.parent, "${dataDir.name}.tar")
+ def gzFile = new File(dataDir.parent, "${tarFile.name}.gz")
+ ant.with {
+ tar(destfile: tarFile) {
+ tarfileset(dir: dataDir, username: 'root', group: 'root', prefix: './') {
+ include(name: "**/*")
+ exclude(name: "**/*.sh")
+ exclude(name: "**/postinst")
+ exclude(name: "**/prerm")
+ exclude(name: "**/postrm")
+ exclude(name: "**/init.d/${classifier}")
+ }
+ tarfileset(dir: dataDir, username: 'root', group: 'root', filemode: '755', prefix: './') {
+ include(name: "**/*.sh")
+ include(name: "**/postinst")
+ include(name: "**/prerm")
+ include(name: "**/postrm")
+ include(name: "**/init.d/${classifier}")
+ }
+ }
+ gzip(src: tarFile, destfile: gzFile)
+ }
+ tarFile.delete()
+ gzFile
+ }
+
+ private void arItem(ArArchiveOutputStream output, File file) {
+ def entry = new ArArchiveEntry(file.name, file.length())
+ output.putArchiveEntry(entry)
+ output << new FileInputStream(file)
+ output.closeArchiveEntry()
+ }
+
+ private void compressFiles(String classifier) {
+ def exploded = new File(workDir, "exploded-${classifier}")
+ def dataDir = new File(exploded, 'data')
+ def controlDir = new File(exploded, 'control')
+ def ar = new File(exploded, 'distribution.deb')
+ def output = new ArArchiveOutputStream(new FileOutputStream(ar))
+ arDebianBinary(output)
+ arItem(output, createTarGz(classifier, controlDir))
+ arItem(output, createTarGz(classifier, dataDir))
+ output.close()
+ ar.renameTo(new File(workDir, "apache-${classifier}.deb"))
+ }
+
+ void createDebs() {
+ workDir.eachFile(FileType.DIRECTORIES, { File dir ->
+ String classifier = dir.name.substring("exploded-".size())
+ compressFiles(classifier)
+ })
+ }
+}
Added: tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/ControlBuilder.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/ControlBuilder.groovy?rev=1593167&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/ControlBuilder.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/ControlBuilder.groovy Thu May 8 01:41:37 2014
@@ -0,0 +1,106 @@
+package org.apache.tomee.deb
+
+import groovy.text.GStringTemplateEngine
+import org.apache.commons.codec.digest.DigestUtils
+import org.apache.maven.project.MavenProject
+
+import java.text.SimpleDateFormat
+
+class ControlBuilder {
+
+ private String classifier
+ private File workDir
+ private File controlDir
+
+ String version
+ Double installedSize
+ int priority
+
+ def tplEngine = new GStringTemplateEngine()
+
+ private static Date now = new Date()
+
+ ControlBuilder(MavenProject project, String classifier) {
+ this.classifier = classifier
+ this.workDir = new File(project.properties['distribution.workdir'] as String)
+
+ def dft = new SimpleDateFormat('yyyy-MM-dd-HH-mm-ss')
+ dft.timeZone = TimeZone.getTimeZone('GMT-0')
+ def executionDate = dft.format(now)
+ this.version = project.version
+ if (this.version.toLowerCase().endsWith('-snapshot')) {
+ this.version += "-${executionDate}"
+ }
+ }
+
+ private static String getCheckSum(File file) {
+ return getCheckSum(new FileInputStream(file))
+ }
+
+ private static String getCheckSum(InputStream input) {
+ String md5 = DigestUtils.md5Hex(input)
+ input.close()
+ return md5
+ }
+
+ private static String getCheckSumLine(File root, File file) {
+ String md5 = getCheckSum(file)
+ return "${md5} ${file.absolutePath.substring(root.absolutePath.length() + 1)}"
+ }
+
+ ControlBuilder buildControlDir() {
+ def exploded = new File(workDir, "exploded-${classifier}")
+ controlDir = new File(exploded, 'control')
+ controlDir.mkdirs()
+ File dataDir = new File(exploded, 'data')
+ new File(controlDir, 'md5sums').withWriter { BufferedWriter out ->
+ dataDir.eachFileRecurse {
+ if (it.directory) {
+ return
+ }
+ out.writeLine(getCheckSumLine(dataDir, it))
+ }
+ }
+ this.installedSize = dataDir.directorySize() / 1024
+ switch (classifier) {
+ case 'plus':
+ this.priority = 4
+ break
+ case 'plume':
+ this.priority = 3
+ break
+ case 'jaxrs':
+ this.priority = 2
+ break
+ default:
+ this.priority = 1
+ }
+ this
+ }
+
+ ControlBuilder withWriter(String targetFilePath, def closure) {
+ def toFile = new File(controlDir, targetFilePath)
+ toFile.parentFile.mkdirs()
+ toFile.withWriter closure as Closure
+ this
+ }
+
+ ControlBuilder withBaseDir(def closure) {
+ closure new File(workDir, "exploded-${classifier}")
+ this
+ }
+
+ ControlBuilder writeTemplate(String toPath, String templatePath, Map<String, String> params) {
+ def templateResource = this.class.getResource(templatePath).text
+ withWriter(toPath, { BufferedWriter out ->
+ def template = tplEngine.createTemplate(templateResource).make(params)
+ out.write(template.toString())
+ })
+ this
+ }
+
+ ControlBuilder withMe(def closure) {
+ closure(this)
+ this
+ }
+}
Added: tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/DataBuilder.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/DataBuilder.groovy?rev=1593167&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/DataBuilder.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/DataBuilder.groovy Thu May 8 01:41:37 2014
@@ -0,0 +1,183 @@
+package org.apache.tomee.deb
+
+import groovy.io.FileType
+import groovy.text.GStringTemplateEngine
+import org.apache.maven.project.MavenProject
+import org.apache.tomee.deb.jira.ChangeLogBuilder
+
+import java.util.jar.JarEntry
+import java.util.jar.JarFile
+
+class DataBuilder {
+
+ def ant = new AntBuilder()
+ def tplEngine = new GStringTemplateEngine()
+ private String classifier
+ private File workDir
+ private File outputDir
+ private File dataDir
+ private String zipFile
+ Map<String, String> symbolicLinks = [:]
+ private CompressTool compressTool
+ private File baseDir
+
+ DataBuilder(MavenProject project, String classifier, String zipFile, CompressTool compressTool) {
+ this.baseDir = project.basedir
+ this.classifier = classifier
+ this.workDir = new File(project.properties['distribution.workdir'] as String)
+ this.zipFile = zipFile
+ this.compressTool = compressTool
+ }
+
+ DataBuilder buildDataDir() {
+ outputDir = unzipOriginalPackage()
+ this
+ }
+
+ DataBuilder writeTemplate(String toPath, String templatePath, Map<String, String> params) {
+ def templateResource = this.class.getResource(templatePath).text
+ def toFile = new File(dataDir, toPath)
+ toFile.parentFile.mkdirs()
+ toFile.withWriter { BufferedWriter out ->
+ def template = tplEngine.createTemplate(templateResource).make(params)
+ out.write(template.toString())
+ }
+ this
+ }
+
+ DataBuilder copyContent(String toPath, String sourcePath) {
+ def dest = new File(dataDir, toPath)
+ dest.parentFile.mkdirs()
+ dest.withWriter { BufferedWriter out ->
+ def data = this.class.getResource(sourcePath).withInputStream { InputStream dataInput ->
+ out << dataInput
+ }
+ }
+ this
+ }
+
+ DataBuilder eachFileRecurse(String path, def closure) {
+ File root = new File(dataDir, path)
+ int pathStartIndex = dataDir.absolutePath.size()
+ root.eachFileRecurse {
+ closure(this, it.absolutePath.substring(pathStartIndex).replace('\\', '/'), it)
+ }
+ this
+ }
+
+ DataBuilder move(String fromPath, String toPath) {
+ File from = new File(outputDir, fromPath)
+ File to = new File(dataDir, toPath)
+ to.parentFile.mkdirs()
+ from.renameTo(to)
+ this
+ }
+
+ private File unzipOriginalPackage() {
+ def exploded = new File(workDir, "exploded-${classifier}")
+ def zipFile = new File(workDir, this.zipFile)
+ outputDir = new File(exploded, 'output')
+ dataDir = new File(exploded, 'data')
+ ant.unzip(
+ src: zipFile,
+ dest: exploded
+ )
+ exploded.listFiles()[0].renameTo(outputDir)
+ outputDir.eachFileRecurse(FileType.FILES) { File file ->
+ def fileName = file.name.toLowerCase()
+ if (fileName.endsWith('.txt')
+ || fileName.endsWith('.exe')
+ || fileName.endsWith('.bat')
+ || fileName.endsWith('.original')
+ || fileName.endsWith('.tmp')
+ || fileName == 'license') {
+ file.delete()
+ }
+ }
+ outputDir
+ }
+
+ DataBuilder addSymbolicLink(String path, String reference) {
+ symbolicLinks.put(path, reference)
+ }
+
+ private boolean hasClasses(File jarFile) {
+ def entriesEnumerator = new JarFile(jarFile).entries()
+ while (entriesEnumerator.hasMoreElements()) {
+ def jarEntry = entriesEnumerator.nextElement() as JarEntry
+ if (jarEntry.name.endsWith('.class')) {
+ return true
+ }
+ }
+ false
+ }
+
+ private void maskCodelessJars() {
+ def unjarDir = new File(workDir, 'unjar')
+ unjarDir.mkdirs()
+ dataDir.eachFileRecurse(FileType.FILES) { File jarFile ->
+ if (jarFile.name.endsWith('.jar')) {
+ if (!hasClasses(jarFile)) {
+ def explodedJar = new File(unjarDir, "${classifier}/${jarFile.name}")
+ ant.unjar(src: jarFile, dest: explodedJar)
+ jarFile.delete()
+ ant.zip(destfile: jarFile.absolutePath) {
+ fileset(dir: explodedJar.absolutePath) {
+ exclude(name: '**/META-INF/MANIFEST.MF')
+ }
+ }
+ }
+ }
+ }
+ unjarDir.deleteDir()
+ }
+
+ static def buildChangelogContent = { File baseDir ->
+ def preCompiledChangelog = new File(baseDir, 'src/main/resources/precompiled-changelog')
+ if(preCompiledChangelog.exists()) {
+ return preCompiledChangelog.text
+ }
+ def builder = new ChangeLogBuilder()
+ def content = builder.buildChangelogContent('TOMEE,OPENEJB')
+ preCompiledChangelog.withWriter {BufferedWriter out ->
+ out.write(content)
+ }
+ content
+ }.memoize() // execute it just once
+
+ DataBuilder buildChangelog() {
+ String content = buildChangelogContent(baseDir)
+ if (!content) {
+ return this
+ }
+ def docDir = new File(dataDir, "usr/share/doc/${classifier}/")
+ docDir.mkdirs()
+ def changelogFile = new File(docDir, 'changelog.Debian')
+ changelogFile.withWriter { BufferedWriter writer ->
+ writer.writeLine(content)
+ }
+ def changelogFileGz = new File(changelogFile.parent, 'changelog.Debian.gz')
+ compressTool.gz(changelogFile.absolutePath, changelogFileGz.absolutePath)
+ changelogFile.delete()
+ this
+ }
+
+ private void deleteEmptyDirs(File rootDir) {
+ List<File> deleteMe = []
+ rootDir.eachFileRecurse(FileType.DIRECTORIES) { File dir ->
+ if (!dir.list()) {
+ deleteMe << dir
+ }
+ }
+ deleteMe.each {
+ it.delete()
+ }
+ }
+
+ DataBuilder clean() {
+ outputDir.deleteDir()
+ deleteEmptyDirs(dataDir)
+ maskCodelessJars()
+ this
+ }
+}
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageBuilder.groovy Thu May 8 01:41:37 2014
@@ -18,442 +18,181 @@
package org.apache.tomee.deb
-import groovy.io.FileType
-import groovy.text.GStringTemplateEngine
-import org.apache.commons.codec.digest.DigestUtils
-import org.apache.commons.compress.archivers.ar.ArArchiveEntry
-import org.apache.commons.compress.archivers.ar.ArArchiveOutputStream
-import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream
-import org.apache.commons.compress.compressors.gzip.GzipParameters
import org.apache.maven.project.MavenProject
-import org.apache.tomee.deb.jira.ChangeLogBuilder
-
-import java.text.SimpleDateFormat
-import java.util.jar.JarEntry
-import java.util.jar.JarFile
-import java.util.zip.Deflater
class PackageBuilder {
- static final TOMCAT_EXPLODED_DIR = 'tomcat-exploded'
- static final TOMCAT_PACKAGE_NAME = 'lib-tomcat'
-
- def ant = new AntBuilder()
- MavenProject project
-
- private String executionDate = ''
+ private MavenProject project
+ private CompressTool compressTool
+ private File workDir
+ private Map<String, PackageInfo> packageInfoMap = [:]
PackageBuilder(MavenProject myProject) {
- def dft = new SimpleDateFormat('yyyy-MM-dd-HH-mm-ss')
- dft.timeZone = TimeZone.getTimeZone('GMT-0')
- executionDate = dft.format(new Date())
project = myProject
+ compressTool = new CompressTool(myProject)
+ workDir = new File(myProject.properties['distribution.workdir'] as String)
}
- def buildChangelogContent = {
- def builder = new ChangeLogBuilder()
- builder.buildChangelogContent('TOMEE')
- }.memoize() // execute it just once per instance
-
- private void gz(String file, String gzipFile) {
- new File(file).withInputStream { fis ->
- new File(gzipFile).withOutputStream { fos ->
- def gzParams = new GzipParameters(
- compressionLevel: Deflater.BEST_COMPRESSION
- )
- def gzo = new GzipCompressorOutputStream(fos, gzParams)
- gzo << fis
- gzo.close()
- }
- }
- }
-
- void buildChangelog(File docDir) {
- String content = buildChangelogContent()
- if (!content) {
- return
- }
- def changelogFile = new File(docDir, 'changelog.Debian')
- changelogFile.withWriter { BufferedWriter writer ->
- writer.writeLine(content)
- }
- def changelogFileGz = new File(changelogFile.parent, 'changelog.Debian.gz')
- gz(changelogFile.absolutePath, changelogFileGz.absolutePath)
- changelogFile.delete()
- }
-
- String unzip(String classifier, String tarPath) {
- def outputDir = new File(new File(tarPath).parent, "exploded-${classifier}")
- ant.delete(includeemptydirs: true, dir: outputDir.absolutePath) // remove old files
- outputDir.mkdirs()
- ant.unzip(
- src: tarPath,
- dest: outputDir.absolutePath
- )
- def files = outputDir.listFiles()
- if (files.size() == 1) {
- outputDir = files[0]
- }
- ant.delete(includeemptydirs: true) {
- fileset(dir: outputDir.absolutePath, includes: '**/*.txt')
- fileset(dir: outputDir.absolutePath, includes: '**/*.exe')
- fileset(dir: outputDir.absolutePath, includes: '**/*.bat')
- fileset(dir: outputDir.absolutePath, includes: '**/*.original')
- fileset(dir: outputDir.absolutePath, includes: '**/*.tmp')
- fileset(dir: outputDir.absolutePath, includes: '**/LICENSE') // lintian does not like it.
- }
- // Moving the default tomee webapp to /usr/share/tomee-${classifier}
- new File(outputDir, 'webapps/tomee').renameTo(new File(outputDir, 'tomee-webapp'))
- // Removing all extra webapps, including the webapps directory
- ant.delete(includeemptydirs: true, dir: new File(outputDir, 'webapps').absolutePath)
- outputDir.absolutePath
- }
-
- private static String getCheckSum(File file) {
- return getCheckSum(new FileInputStream(file))
- }
-
- private static String getCheckSum(InputStream input) {
- String md5 = DigestUtils.md5Hex(input)
- input.close()
- return md5
- }
-
- private static String getCheckSumLine(File root, File file) {
- String md5 = getCheckSum(file)
- return "${md5} ${file.absolutePath.substring(root.absolutePath.length() + 1)}"
- }
-
- private void writeTemplate(File file, String templatePath, Map variables) {
- try {
- file.withWriter { BufferedWriter out ->
- def template = new GStringTemplateEngine().createTemplate(
- this.class.getResource(templatePath)
- ).make(variables)
- out.write(template.toString())
- }
- } catch (e) {
- throw new RuntimeException("Error building $templatePath", e)
- }
- }
-
- private ControlData prepareControlData(String dataDirPath) {
- def dataDir = new File(dataDirPath)
- def controlDir = new File(dataDir.parent, 'control')
- controlDir.mkdirs()
- new File(controlDir, 'md5sums').withWriter { BufferedWriter out ->
- dataDir.eachFileRecurse {
- if (it.directory) {
- return
+ private void createLibStructure(List<String> dependencyOrder) {
+ Set<String> previousJars = []
+ Set<File> duplicatedJars = []
+ dependencyOrder.each { classifier ->
+ def recurse = { DataBuilder builder, String path, File file ->
+ if (previousJars.contains(file.name)) {
+ duplicatedJars << file
+ } else {
+ previousJars << file.name
+ file.renameTo(new File(file.parentFile, "libtomee-${classifier}-${file.name}"))
}
- out.writeLine(getCheckSumLine(dataDir, it))
- }
- }
- Double installedSize = dataDir.directorySize() / 1024
- String version = project.version
- if (version.toLowerCase().endsWith('-snapshot')) {
- version += "-${executionDate}"
- }
- new ControlData(
- installedSize: installedSize,
- version: version,
- dataDir: dataDir,
- controlDir: controlDir
- )
- }
-
- private String createControlDir(String classifier, String dataDirPath) {
- def controlData = prepareControlData(dataDirPath)
- writeTemplate(new File(controlData.controlDir, 'control'), '/control/control.template', [
- classifier : classifier,
- tomeeVersion: controlData.version,
- inMB : controlData.installedSize.longValue()
- ])
- def priority
- switch (classifier) {
- case 'plus':
- priority = 4
- break
- case 'plume':
- priority = 3
- break
- case 'jaxrs':
- priority = 2
- break
- default:
- priority = 1
- }
- writeTemplate(new File(controlData.controlDir, 'postinst'), '/control/postinst.sh', [
- tomeeVersion: project.version,
- classifier : classifier,
- priority : priority
- ])
- writeTemplate(new File(controlData.controlDir, 'prerm'), '/control/prerm.sh', [
- tomeeVersion: project.version, classifier: classifier
- ])
- writeTemplate(new File(controlData.controlDir, 'postrm'), '/control/postrm.sh', [
- tomeeVersion: project.version, classifier: classifier
- ])
- new File(controlData.controlDir, 'conffiles').withWriter { BufferedWriter out ->
- new File(controlData.dataDir, "etc/tomee-${classifier}").eachFile {
- if (it.isFile()) {
- out.writeLine("/etc/tomee-${classifier}/${it.name}")
- }
- }
- new File(controlData.dataDir, "etc/tomee-${classifier}/conf.d").eachFile {
- out.writeLine("/etc/tomee-${classifier}/conf.d/${it.name}")
- }
- out.writeLine("/etc/init.d/tomee-${classifier}")
- }
- controlData.controlDir.absolutePath
- }
-
- String createDataDir(String classifier, String explodedPath) {
- def exploded = new File(explodedPath)
- def outputDir = new File(exploded.parent, "output-${classifier}")
- def dataDir = new File(outputDir, 'data')
- dataDir.mkdirs()
- def distributionTomeeDir = new File(dataDir, "usr/share/tomee-${classifier}")
- ant.move(todir: distributionTomeeDir.absolutePath) {
- fileset(dir: explodedPath) {
- include(name: "**/*")
- }
- }
- new File(distributionTomeeDir, 'LICENSE').delete() // Unnecessary (lintian complains about this guy.)
- def homeConf = new File(dataDir, "etc/tomee-${classifier}")
- ant.move(todir: homeConf.absolutePath) {
- fileset(dir: new File(distributionTomeeDir, 'conf')) {
- include(name: "**/*")
- }
- }
- new File(homeConf, 'openejb.conf').withWriter { BufferedWriter out ->
- def data = this.class.getResource('/default.openejb.conf').text
- out.write(data)
- }
- new File(homeConf, 'tomee.xml').withWriter { BufferedWriter out ->
- def data = this.class.getResource('/tomee_xml.template').text
- out.write(data)
- }
- def homeConfD = new File(homeConf, 'conf.d')
- homeConfD.mkdirs()
- // Saving default configuration files
- new File(homeConfD, 'cxf.properties').withWriter { BufferedWriter out ->
- def data = this.class.getResource('/META-INF/org.apache.openejb.server.ServerService/cxf').text
- out.write(data)
- }
- new File(homeConfD, 'cxf-rs.properties').withWriter { BufferedWriter out ->
- def data = this.class.getResource('/META-INF/org.apache.openejb.server.ServerService/cxf-rs').text
- out.write(data)
- }
- new File(homeConfD, 'hsql.properties').withWriter { BufferedWriter out ->
- def data = this.class.getResource('/META-INF/org.apache.openejb.server.ServerService/hsql').text
- out.write(data)
- }
- def initd = new File(dataDir, 'etc/init.d/')
- initd.mkdirs()
- writeTemplate(new File(initd, "tomee-${classifier}"), '/init/tomee.sh', [
- classifier : classifier,
- tomeeVersion: project.version
- ])
- def docDir = new File(dataDir, "usr/share/doc/tomee-${classifier}/")
- ant.move(todir: docDir.absolutePath) {
- fileset(file: new File(distributionTomeeDir, 'NOTICE').absolutePath)
- fileset(file: new File(distributionTomeeDir, 'RELEASE-NOTES').absolutePath)
- fileset(file: new File(distributionTomeeDir, 'RUNNING.txt').absolutePath)
- }
- buildChangelog(docDir)
- new File(dataDir, "var/log/tomee-${classifier}").mkdirs()
- new File(dataDir, "var/lib/tomee-${classifier}/conf").mkdirs()
- new File(dataDir, "var/lib/tomee-${classifier}/work").mkdirs()
- new File(dataDir, "var/lib/tomee-${classifier}/apps").mkdirs()
- new File(distributionTomeeDir, 'conf').delete() // add link from "/usr/lib/tomee/conf" to "/etc/tomee"
- new File(distributionTomeeDir, 'logs').delete() // add link from "/usr/lib/tomee/logs" to "/var/log/tomee"
- new File(distributionTomeeDir, 'temp').delete() // add link from "/usr/lib/tomee/temp" to "/var/lib/tomee/temp"
- new File(distributionTomeeDir, 'work').delete() // add link from "/usr/lib/tomee/work" to "/var/lib/tomee/work"
- writeTemplate(
- new File(dataDir, "usr/share/doc/tomee-${classifier}/copyright"),
- '/copyright.template',
- [formattedDate: new Date().toString()]
- )
- def baseBinDir = new File(dataDir, "var/lib/tomee-${classifier}/bin")
- baseBinDir.mkdirs()
- writeTemplate(new File(baseBinDir, 'setenv.sh'), '/init/setenv.sh', [
- classifier : classifier,
- tomeeVersion: project.version
- ])
- writeTemplate(new File(distributionTomeeDir, 'bin/tomee-instance.sh'), '/init/tomee-instance.sh', [
- classifier : classifier,
- tomeeVersion: project.version
- ])
- exploded.delete()
- // Removing tomcat jars. It will come from an extra tomcat debian package.
- def tomcatLibs = new File(project.properties['distribution.workdir'] as String,
- "$TOMCAT_EXPLODED_DIR/apache-tomcat-${project.properties['tomcat.version']}/lib")
- ant.echo(message: "Removing Tomcat lib files from our TomEE distribution. Tomcat path: ${tomcatLibs.absolutePath}")
- tomcatLibs.eachFile { jar ->
- def existing = new File(dataDir, "usr/share/tomee-${classifier}/lib/${jar.name}")
- if (existing.exists()) {
- existing.delete()
}
- }
- dataDir.absolutePath
- }
-
- private boolean hasClasses(File jarFile) {
- def entriesEnumerator = new JarFile(jarFile).entries()
- while (entriesEnumerator.hasMoreElements()) {
- def jarEntry = entriesEnumerator.nextElement() as JarEntry
- if (jarEntry.name.endsWith('.class')) {
- return true
- }
- }
- false
- }
-
- void maskCodelessJars(String classifier, String dataDir) {
- def unjarDir = new File(project.properties['distribution.workdir'] as String, 'unjar')
- unjarDir.mkdirs()
- new File(dataDir).eachFileRecurse(FileType.FILES) { File jarFile ->
- if (jarFile.name.endsWith('.jar')) {
- if (!hasClasses(jarFile)) {
- ant.echo(message: "Masking codeless jar: ${jarFile.absolutePath}")
- def explodedJar = new File(
- project.properties['distribution.workdir'] as String,
- "unjar/${classifier}/${jarFile.name}"
- )
- ant.unjar(src: jarFile, dest: explodedJar)
- jarFile.delete()
- ant.zip(destfile: jarFile.absolutePath) {
- fileset(dir: explodedJar.absolutePath) {
- exclude(name: '**/META-INF/MANIFEST.MF')
+ def builder = new DataBuilder(project, "libtomee-${classifier}-java", "tomee-${classifier}.zip", compressTool)
+ .buildDataDir()
+ .move('lib', 'usr/share/java')
+ .eachFileRecurse('usr/share/java', recurse)
+ .writeTemplate("usr/share/doc/libtomee-${classifier}-java/copyright", '/data/copyright.template', [:])
+ .move('NOTICE', "usr/share/doc/libtomee-${classifier}-java/NOTICE")
+ .move('RELEASE-NOTES', "usr/share/doc/libtomee-${classifier}-java/RELEASE-NOTES")
+ .buildChangelog()
+ .clean()
+ packageInfoMap.put("libtomee-${classifier}-java", new PackageInfo(
+ classifier: "libtomee-${classifier}-java",
+ dataBuilder: builder
+ ))
+ }
+ duplicatedJars.each { it.delete() }
+ def writeTpl = { ControlBuilder me, String toPath, String tplPath, String classifier ->
+ def params = [
+ classifier : classifier,
+ tomeeVersion: me.version,
+ inMB : me.installedSize.longValue().toString()
+ ] as Map<String, String>
+ me.writeTemplate(toPath, tplPath, params)
+ }
+ def myDepency = null
+ dependencyOrder.each { String classifier ->
+ String libClassifier = "libtomee-${classifier}-java"
+ def builder = new ControlBuilder(project, "libtomee-${classifier}-java").buildControlDir()
+ .withMe({
+ writeTpl(it as ControlBuilder, 'control', '/control/lib_control.template', libClassifier)
+ })
+ if (myDepency) {
+ builder.withBaseDir({ File baseDir ->
+ def control = new File(baseDir, 'control/control')
+ control.append("Depends: libtomee-${myDepency}-java (= ${builder.version})\n")
+ })
+ }
+ myDepency = classifier
+ packageInfoMap.get("libtomee-${classifier}-java").controlBuilder = builder
+ }
+ }
+
+ private Set<String> getLibJarNames(String classifier) {
+ def workDir = new File(project.properties['distribution.workdir'] as String)
+ def libDir = new File(workDir, "exploded-libtomee-${classifier}-java/data/usr/share/java")
+ int startIndex = "libtomee-${classifier}-".size()
+ libDir.list().collect { it.substring(startIndex) }
+ }
+
+ private void createDataStructure(String classifier) {
+ def jarsWebprofile = getLibJarNames('webprofile')
+ def jarsJaxrs = getLibJarNames('jaxrs')
+ def jarsPlus = getLibJarNames('plus')
+ def jarsPlume = getLibJarNames('plume')
+ def recurse = { DataBuilder builder, String path, File file ->
+ def addSymLink = { jarClassifier ->
+ builder.addSymbolicLink(path, "/usr/share/java/libtomee-${jarClassifier}-${file.name}")
+ file.delete()
+ }
+ if (jarsWebprofile.contains(file.name)) {
+ addSymLink('webprofile')
+ } else if (jarsJaxrs.contains(file.name)) {
+ addSymLink('jaxrs')
+ } else if (jarsPlus.contains(file.name)) {
+ addSymLink('plus')
+ } else if (jarsPlume.contains(file.name)) {
+ addSymLink('plume')
+ }
+ }
+ def tplParams = [classifier: classifier, tomeeVersion: project.version]
+ def builder = new DataBuilder(project, "tomee-${classifier}", "tomee-${classifier}.zip", compressTool)
+ .buildDataDir()
+ .move('lib', "usr/share/tomee-${classifier}/lib")
+ .eachFileRecurse("usr/share/tomee-${classifier}/lib", recurse)
+ .move('webapps/tomee', "usr/share/tomee-${classifier}/extras/tomee")
+ .move('endorsed', "usr/share/tomee-${classifier}/endorsed")
+ .move('bin', "usr/share/tomee-${classifier}/bin")
+ .move('conf', "etc/tomee-${classifier}")
+ .writeTemplate("usr/share/doc/tomee-${classifier}/copyright", '/data/copyright.template', [:])
+ .move('NOTICE', "usr/share/doc/tomee-${classifier}/NOTICE")
+ .move('RELEASE-NOTES', "usr/share/doc/tomee-${classifier}/RELEASE-NOTES")
+ .copyContent("etc/tomee-${classifier}/conf.d/cxf.properties", '/META-INF/org.apache.openejb.server.ServerService/cxf')
+ .copyContent("etc/tomee-${classifier}/conf.d/cxf-rs.properties", '/META-INF/org.apache.openejb.server.ServerService/cxf-rs')
+ .copyContent("etc/tomee-${classifier}/conf.d/hsql.properties", '/META-INF/org.apache.openejb.server.ServerService/hsql')
+ .copyContent("var/lib/tomee-${classifier}/bin/setenv.sh", '/init/setenv.sh')
+ .copyContent("etc/tomee-${classifier}/openejb.conf", '/default.openejb.conf')
+ .copyContent("etc/tomee-${classifier}/tomee.xml", '/tomee_xml.template')
+ .writeTemplate("usr/share/tomee-${classifier}/bin/tomee-instance.sh", '/init/tomee-instance.sh', tplParams)
+ .writeTemplate("etc/init.d/tomee-${classifier}", '/init/tomee.sh', tplParams)
+ .buildChangelog()
+ .clean()
+ packageInfoMap.put(classifier, new PackageInfo(
+ classifier: classifier,
+ dataBuilder: builder
+ ))
+ }
+
+ private String getLibLinks(String classifier) {
+ def sw = new StringWriter()
+ def bw = new BufferedWriter(sw)
+ packageInfoMap.get(classifier).dataBuilder.symbolicLinks.each { String path, String reference ->
+ bw.writeLine("ln -sf ${reference} ${path}")
+ }
+ bw.close()
+ sw.close()
+ sw.toString().trim()
+ }
+
+ private createControlStructure(String classifier) {
+ def writeTpl = { ControlBuilder me, String toPath, String tplPath ->
+ def params = [
+ classifier : classifier,
+ tomeeVersion: me.version,
+ inMB : me.installedSize.longValue().toString(),
+ priority : me.priority,
+ libLinks : getLibLinks(classifier)
+ ] as Map<String, String>
+ me.writeTemplate(toPath, tplPath, params)
+ }
+ def writeConffiles = { ControlBuilder me ->
+ me.withWriter('conffiles', { BufferedWriter out ->
+ me.withBaseDir { File baseDir ->
+ def dataDir = new File(baseDir, 'data')
+ new File(dataDir, "etc/tomee-${classifier}").eachFile {
+ if (it.isFile()) {
+ out.writeLine("/etc/tomee-${classifier}/${it.name}")
}
}
- }
- }
- }
- ant.delete(dir: unjarDir)
- }
-
- private File createTarGz(String classifier, String path) {
- def dataDir = new File(path)
- def tarFile = new File(dataDir.parent, "${dataDir.name}.tar")
- def gzFile = new File(tarFile.parent, "${tarFile.name}.gz")
- ant.with {
- tar(destfile: tarFile) {
- tarfileset(dir: dataDir.absolutePath, username: 'root', group: 'root', prefix: './') {
- include(name: "**/*")
- exclude(name: "**/*.sh")
- exclude(name: "**/postinst")
- exclude(name: "**/prerm")
- exclude(name: "**/postrm")
- if (classifier) {
- exclude(name: "**/init.d/tomee-${classifier}")
- }
- }
- tarfileset(dir: dataDir.absolutePath, username: 'root', group: 'root', filemode: '755', prefix: './') {
- include(name: "**/*.sh")
- include(name: "**/postinst")
- include(name: "**/prerm")
- include(name: "**/postrm")
- if (classifier) {
- include(name: "**/init.d/tomee-${classifier}")
+ new File(dataDir, "etc/tomee-${classifier}/conf.d").eachFile {
+ out.writeLine("/etc/tomee-${classifier}/conf.d/${it.name}")
}
+ out.writeLine("/etc/init.d/tomee-${classifier}")
}
- }
- gzip(src: tarFile, destfile: gzFile)
- delete(file: tarFile)
+ })
}
- gzFile
- }
-
- private static void arItem(ArArchiveOutputStream output, File file) {
- def entry = new ArArchiveEntry(file.name, file.length())
- output.putArchiveEntry(entry)
- output << new FileInputStream(file)
- output.closeArchiveEntry()
- }
-
- private static void arDebianBinary(ArArchiveOutputStream output) {
- byte[] text = "2.0\n".getBytes()
- def entry = new ArArchiveEntry('debian-binary', text.length)
- output.putArchiveEntry(entry)
- output.write(text)
- output.closeArchiveEntry()
- }
-
- File compressFiles(String classifier, String... paths) {
- def ar = new File(new File(paths[0]).parent, 'distribution.deb')
- def output = new ArArchiveOutputStream(new FileOutputStream(ar))
- arDebianBinary(output)
- paths.collect({
- createTarGz(classifier, it)
- }).each {
- arItem(output, it)
- }
- output.close()
- ar
- }
-
- private File createPackageUnit(String classifier, String fileName) {
- def filePath = new File(project.properties['distribution.workdir'] as String, fileName).absolutePath
- def explodedPath = unzip(classifier, filePath)
- def dataDir = createDataDir(classifier, explodedPath)
- maskCodelessJars(classifier, dataDir)
- def controlDir = createControlDir(classifier, dataDir)
- def deb = compressFiles(classifier, controlDir, dataDir)
- def debDir = new File(project.build.directory as String, 'deb')
- debDir.mkdirs()
- def result = new File(debDir, "apache-tomee-${classifier}-${project.version}.deb")
- deb.renameTo(result)
- result
- }
-
- private File createLibPackage(String packageName, File[] jars) {
- def dataDir = new File(project.properties['distribution.workdir'] as String, "libDist/${packageName}/data")
- def libDistDir = new File(dataDir, "usr/share/tomee-${packageName}/lib")
- libDistDir.mkdirs()
- jars.each { jar ->
- ant.copy(file: jar, todir: libDistDir)
- }
- maskCodelessJars(packageName, dataDir.absolutePath)
- def docDir = new File(dataDir, "usr/share/doc/tomee-${packageName}")
- docDir.mkdirs()
- buildChangelog(docDir)
- writeTemplate(
- new File(docDir, 'copyright'),
- '/copyright.template',
- [formattedDate: new Date().toString()]
- )
- def controlData = prepareControlData(dataDir.absolutePath)
- writeTemplate(new File(controlData.controlDir, 'control'), '/control/lib_control.template', [
- packageName : packageName,
- tomeeVersion: controlData.version,
- inMB : controlData.installedSize.longValue()
- ])
- def deb = compressFiles(null as String, controlData.controlDir.absolutePath, controlData.dataDir.absolutePath)
- def debDir = new File(project.build.directory as String, 'deb')
- debDir.mkdirs()
- def result = new File(debDir, "apache-tomee-${packageName}-${project.version}.deb")
- deb.renameTo(result)
- result
- }
-
- private File createTomcatLibPackage() {
- def exploded = new File(project.properties['distribution.workdir'] as String, TOMCAT_EXPLODED_DIR)
- ant.unzip(
- src: new File(project.properties['distribution.workdir'] as String, 'tomcat.zip'),
- dest: exploded
- )
- def tomcatLibs = new File(exploded, "apache-tomcat-${project.properties['tomcat.version']}/lib")
- createLibPackage(TOMCAT_PACKAGE_NAME, tomcatLibs.listFiles())
+ new ControlBuilder(project, "tomee-${classifier}").buildControlDir()
+ .withMe({ writeTpl(it as ControlBuilder, 'control', '/control/control.template') })
+ .withMe({ writeTpl(it as ControlBuilder, 'postinst', '/control/postinst.sh') })
+ .withMe({ writeTpl(it as ControlBuilder, 'prerm', '/control/prerm.sh') })
+ .withMe({ writeTpl(it as ControlBuilder, 'postrm', '/control/postrm.sh') })
+ .withMe(writeConffiles)
}
void createPackage() {
- createTomcatLibPackage()
- createPackageUnit('jaxrs', 'tomee-jaxrs.zip')
- createPackageUnit('webprofile', 'tomee-webprofile.zip')
- createPackageUnit('plume', 'tomee-plume.zip')
- createPackageUnit('plus', 'tomee-plus.zip')
+ def classifiers = ['webprofile', 'jaxrs', 'plus', 'plume']
+ createLibStructure(classifiers)
+ classifiers.each { createDataStructure(it) }
+ classifiers.each { createControlStructure(it) }
+ compressTool.createDebs()
}
}
Added: tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageInfo.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageInfo.groovy?rev=1593167&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageInfo.groovy (added)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/PackageInfo.groovy Thu May 8 01:41:37 2014
@@ -0,0 +1,25 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tomee.deb
+
+class PackageInfo {
+ String classifier
+ DataBuilder dataBuilder
+ ControlBuilder controlBuilder
+}
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/ChangeLogBuilder.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/ChangeLogBuilder.groovy?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/ChangeLogBuilder.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/ChangeLogBuilder.groovy Thu May 8 01:41:37 2014
@@ -32,7 +32,7 @@ class ChangeLogBuilder {
'fixVersion+is+not+EMPTY+' +
'ORDER+BY+fixVersion+ASC&' +
'startAt=${startAt}&maxResults=${maxResults}&' +
- 'fields=issuetype,priority,fixVersions,summary,resolutiondate'
+ 'fields=issuetype,priority,fixVersions,summary,resolutiondate,project'
static final JIRA_DT_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
static final JIRA_RELEASE_DT_FORMAT = new SimpleDateFormat('yyyy-MM-dd')
@@ -66,12 +66,13 @@ class ChangeLogBuilder {
)
issue.fields.fixVersions.each { fixVersion ->
String versionName = fixVersion.name as String
- if (versionName.toLowerCase().contains('trunk') || !fixVersion.releaseDate) {
+ if (!versionName.matches('[[0-9]+\\.]+[0-9]') || !fixVersion.releaseDate) {
return // not released yet
}
Date releaseDate = JIRA_RELEASE_DT_FORMAT.parse(fixVersion.releaseDate as String)
if (!versionsMap.containsKey(versionName)) {
versionsMap.put(versionName, new VersionIssues(
+ project: issue.fields.project.name,
version: versionName,
releaseDate: releaseDate
))
@@ -127,7 +128,7 @@ class ChangeLogBuilder {
entryWriter.close()
resultBufWriter.writeLine(logTemplate.make([
- projectName: projectName,
+ projectName: versionIssues.project,
version : versionIssues.version,
urgency : versionUrgency,
fixDate : LOG_RELEASE_DT_FORMAT.format(versionIssues.releaseDate),
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/VersionIssues.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/VersionIssues.groovy?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/VersionIssues.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/groovy/org/apache/tomee/deb/jira/VersionIssues.groovy Thu May 8 01:41:37 2014
@@ -19,6 +19,7 @@
package org.apache.tomee.deb.jira
class VersionIssues implements Comparable<VersionIssues> {
+ String project
String version
Date releaseDate
List<IssueLog> issues = []
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/control.template
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/control.template?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/control.template (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/control.template Thu May 8 01:41:37 2014
@@ -5,7 +5,7 @@ Section: java
Priority: optional
Homepage: http://tomee.apache.org/
Architecture: all
-Depends: tomee-lib-tomcat (= ${tomeeVersion})
+Depends: libtomee-${classifier}-java (= ${tomeeVersion})
Installed-Size: ${inMB}
Maintainer: devlist <de...@tomee.apache.org>
Description: Apache TomEE (${classifier})
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/lib_control.template
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/lib_control.template?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/lib_control.template (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/lib_control.template Thu May 8 01:41:37 2014
@@ -1,4 +1,4 @@
-Package: tomee-${packageName}
+Package: ${classifier}
Version: ${tomeeVersion}
Section: java
Priority: optional
@@ -6,5 +6,5 @@ Homepage: http://tomee.apache.org/
Architecture: all
Installed-Size: ${inMB}
Maintainer: devlist <de...@tomee.apache.org>
-Description: Apache TomEE Library (${packageName})
+Description: Apache TomEE Library (${classifier})
This package provides libraries required by Apache TomEE
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postinst.sh
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postinst.sh?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postinst.sh (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postinst.sh Thu May 8 01:41:37 2014
@@ -19,29 +19,30 @@ ln -sf /etc/tomee-${classifier} /usr/sha
ln -sf /var/log/tomee-${classifier} /var/lib/tomee-${classifier}/logs
# Creating links from catalina_base to the configuration files in catalina_home
+mkdir -p /var/lib/tomee-${classifier}/conf
ln -sf /etc/tomee-${classifier}/server.xml /var/lib/tomee-${classifier}/conf/server.xml
ln -sf /etc/tomee-${classifier}/tomcat-users.xml /var/lib/tomee-${classifier}/conf/tomcat-users.xml
ln -sf /etc/tomee-${classifier}/openejb.conf /var/lib/tomee-${classifier}/conf/openejb.conf
ln -sf /etc/tomee-${classifier}/tomee.xml /var/lib/tomee-${classifier}/conf/tomee.xml
ln -sf /etc/tomee-${classifier}/conf.d /var/lib/tomee-${classifier}/conf/conf.d
-# Linking tomcat jars
-for tomcatJar in /usr/share/tomee-lib-tomcat/lib/*
-do
- ln -sf \$tomcatJar /usr/share/tomee-${classifier}/lib/\$(basename "\$tomcatJar")
-done
-
# Creating user apps directory. We dont want to erase it during an upgrade.
if [ ! -d /var/lib/tomee-${classifier}-user-data ] ; then
mkdir -p /var/lib/tomee-${classifier}-user-data/temp
mkdir -p /var/lib/tomee-${classifier}-user-data/webapps
- ln -sf /usr/share/tomee-${classifier}/tomee-webapp /var/lib/tomee-${classifier}-user-data/webapps/tomee
+ ln -sf /usr/share/tomee-${classifier}/extras/tomee /var/lib/tomee-${classifier}-user-data/webapps/tomee
fi
ln -sf /var/lib/tomee-${classifier}-user-data/temp /var/lib/tomee-${classifier}/temp
ln -sf /var/lib/tomee-${classifier}-user-data/webapps /var/lib/tomee-${classifier}/webapps
-groupadd apachetomee || true
-useradd --system apachetomee -g apachetomee || true
+groupadd apachetomee >/dev/null 2>&1 || true
+useradd --system apachetomee -g apachetomee >/dev/null 2>&1 || true
+
+# common jars links
+mkdir -p /usr/share/tomee-${classifier}/lib
+${libLinks}
+
+mkdir -p /var/log/tomee-${classifier}
chown -R root:apachetomee /var/log/tomee-${classifier}
chown -R root:apachetomee /var/lib/tomee-${classifier}
@@ -56,9 +57,9 @@ chmod -R g+w /var/log/tomee-${classifier
chmod -R g+w /var/lib/tomee-${classifier}
chmod -R g+w /var/lib/tomee-${classifier}-user-data
-update-rc.d tomee-${classifier} defaults
+update-rc.d tomee-${classifier} defaults >/dev/null 2>&1
-update-alternatives --install /etc/init.d/tomee tomee /etc/init.d/tomee-${classifier} ${priority}
+update-alternatives --install /etc/init.d/tomee tomee /etc/init.d/tomee-${classifier} ${priority} >/dev/null 2>&1
echo "Apache TomEE classifier ${tomeeVersion} installed."
echo "Reboot your machine or run 'service tomee-${classifier} start' to start TomEE."
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postrm.sh
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postrm.sh?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postrm.sh (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/postrm.sh Thu May 8 01:41:37 2014
@@ -15,7 +15,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-update-rc.d -f tomee-${classifier} remove
+update-rc.d -f tomee-${classifier} remove >/dev/null 2>&1
if [ purge = "\$1" ]; then
rm -Rf /var/lib/tomee-${classifier}-user-data
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/prerm.sh
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/prerm.sh?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/prerm.sh (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/control/prerm.sh Thu May 8 01:41:37 2014
@@ -18,30 +18,9 @@
service tomee-${classifier} stop || true
# removing alternative
-update-alternatives --remove tomee /etc/init.d/tomee-${classifier}
+update-alternatives --remove tomee /etc/init.d/tomee-${classifier} >/dev/null 2>&1
-# removing link to /var/logs
-rm -f /var/lib/tomee-${classifier}/logs
-
-# removing non-configuration files
-rm -Rf /var/lib/tomee-${classifier}/apps
-rm -Rf /var/lib/tomee-${classifier}/conf
-rm -Rf /var/lib/tomee-${classifier}/bin
-rm /var/lib/tomee-${classifier}/temp
-rm /var/lib/tomee-${classifier}/webapps
-rm -Rf /var/lib/tomee-${classifier}/work
-
-# Unlinking tomcat jars
-for tomcatJar in /usr/share/tomee-lib-tomcat/lib/*
-do
- rm /usr/share/tomee-${classifier}/lib/\$(basename "\$tomcatJar")
-done
-
-# removing files created by tomcat
-rm -Rf /var/lib/tomee-${classifier}/conf/Catalina
-
-# removing link to /etc
-rm -f /usr/share/tomee-${classifier}/conf
-
-# removing logs
+rm -Rf /var/lib/tomee-${classifier}/*
+rm -Rf /var/lib/tomee-${classifier}/*
rm -Rf /var/log/tomee-${classifier}/*
+rm -Rf /usr/share/tomee-${classifier}/*
Copied: tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/data/copyright.template (from r1592772, tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/copyright.template)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/data/copyright.template?p2=tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/data/copyright.template&p1=tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/copyright.template&r1=1592772&r2=1593167&rev=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/copyright.template (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/data/copyright.template Thu May 8 01:41:37 2014
@@ -1,5 +1,5 @@
This package was debianized by the Apache TomEE dev Team <de...@tomee.apache.org> on
-${formattedDate}
+${new Date().toString()}
Upstream Authors:
Modified: tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/init/setenv.sh
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/init/setenv.sh?rev=1593167&r1=1593166&r2=1593167&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/init/setenv.sh (original)
+++ tomee/tomee/trunk/tomee/tomee-deb/src/main/resources/init/setenv.sh Thu May 8 01:41:37 2014
@@ -1,4 +1,4 @@
-#!/bin/sh -e
+#!/bin/bash -e
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
@@ -15,4 +15,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-export CATALINA_PID=\$CATALINA_BASE/temp/tomee.pid
\ No newline at end of file
+export CATALINA_PID=$CATALINA_BASE/temp/tomee.pid
\ No newline at end of file