Browse Source

Build process improvements

Use new plugin build.xml to build plugins
Use new gitversion macro instead of shelling to bash
Remove bash scripts for plugin generation

Change-Id: I368dbe4d3efa31381bf22a12fa8510918c4feb99
Depends-On: I6d650d700aa0bf6324fc877fe16970674dd07c0c
Reviewed-on: http://gerrit.dmdirc.com/2020
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
tags/0.6.6b1
Chris Smith 13 years ago
parent
commit
56e29ac1dc
7 changed files with 42 additions and 206 deletions
  1. 33
    0
      build-gitversion.xml
  2. 0
    56
      build-jar.xml
  3. 3
    4
      build-plugins.xml
  4. 4
    8
      build-versioning.xml
  5. 2
    3
      build.xml
  6. 0
    26
      createAllPluginJar.sh
  7. 0
    109
      createPluginJar.sh

+ 33
- 0
build-gitversion.xml View File

@@ -0,0 +1,33 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project basedir=".">
3
+
4
+    <macrodef name="gitversion">
5
+        <attribute name="target"/>
6
+        <attribute name="outputproperty"/>
7
+        <attribute name="gitdir" default=".git"/>
8
+
9
+        <sequential>
10
+            <local name="lastcommit"/>
11
+
12
+            <exec executable="git" outputproperty="lastcommit">
13
+                <arg value="--git-dir"/>
14
+                <arg value="@{gitdir}"/>
15
+                <arg value="rev-list"/>
16
+                <arg value="--max-count=1"/>
17
+                <arg value="HEAD"/>
18
+                <arg value="--"/>
19
+                <arg value="@{target}"/>
20
+            </exec>
21
+
22
+            <exec executable="git" outputproperty="@{outputproperty}">
23
+                <arg value="--git-dir"/>
24
+                <arg value="@{gitdir}"/>
25
+                <arg value="describe"/>
26
+                <arg value="--tags"/>
27
+                <arg value="--always"/>
28
+                <arg value="${lastcommit}"/>
29
+            </exec>
30
+        </sequential>
31
+    </macrodef>
32
+
33
+</project>

+ 0
- 56
build-jar.xml View File

@@ -1,56 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<project name="DMDirc-jar" default="default" basedir=".">
3
-
4
-    <!-- Netbeans property files -->
5
-    <property file="nbproject/project.properties"/>
6
-    <property file="nbproject/private/private.properties"/>
7
-    <property file="${user.properties.file}"/>
8
-
9
-    <target name="-addjarlibs" />
10
-    <target name="-addpluginlibs">
11
-        <jar destfile="plugins/ui_swing.jar" compress="${jar.compress}" keepcompression="true" update="true">
12
-            <zipfileset src="modules/plugins/lib/miglayout-3.7.4-swing.jar" includes="net/miginfocom/layout/**,net/miginfocom/swing/**"/>
13
-            <zipfileset src="modules/plugins/lib/menuscroller.jar" includes="darrylbu/util/**"/>
14
-            <zipfileset src="modules/plugins/lib/jxlayer.jar" includes="org/jdesktop/jxlayer/**"/>
15
-        </jar>
16
-
17
-	<jar destfile="plugins/parser_twitter.jar" compress="${jar.compress}" keepcompression="true" update="true">
18
-            <zipfileset src="modules/plugins/lib/commons-codec-1.3.jar" includes="org/apache/**"/>
19
-            <zipfileset src="modules/plugins/lib/signpost-core-1.1-SNAPSHOT.jar" includes="com/google/** oauth/signpost/**"/>
20
-            <zipfileset src="modules/plugins/lib/commons-lang-2.4.jar" includes="org/apache/**"/>
21
-        </jar>
22
-
23
-        <jar destfile="plugins/ui_web.jar" compress="${jar.compress}" keepcompression="true" update="true">
24
-            <zipfileset src="modules/plugins/lib/commons-lang-2.4.jar" includes="org/apache/**"/>
25
-            <zipfileset src="modules/plugins/lib/jetty-6.1.22.jar" includes="org/mortbay/**"/>
26
-            <zipfileset src="modules/plugins/lib/jetty-util-6.1.22.jar" includes="org/mortbay/**"/>
27
-            <zipfileset src="modules/plugins/lib/servlet-api-2.5-20081211.jar" includes="javax/servlet/**"/>
28
-        </jar>
29
-
30
-        <jar destfile="plugins/parser_irc.jar" compress="${jar.compress}" keepcompression="true" update="true">
31
-            <fileset dir="${build.classes.dir}">
32
-                <include name="com/dmdirc/parser/irc/**/*.class"/>
33
-            </fileset>
34
-        </jar>
35
-
36
-        <jar destfile="plugins/parser_xmpp.jar" compress="${jar.compress}" keepcompression="true" update="true">
37
-            <zipfileset src="modules/plugins/lib/smack.jar" includes="org/**"/>
38
-            <zipfileset src="modules/plugins/lib/smackx.jar" includes="org/** com/**"/>
39
-        </jar>
40
-
41
-       <jar destfile="plugins/parser_msn.jar" compress="${jar.compress}" keepcompression="true" update="true">
42
-            <zipfileset src="modules/plugins/lib/jml-1.0b4-full.jar" includes="net/** org/**"/>
43
-            <zipfileset src="modules/plugins/lib/httpcore.jar" includes="org/**"/>
44
-        </jar>
45
-
46
-        <jar destfile="plugins/windowflashing.jar" compress="${jar.compress}" keepcompression="true" update="true">
47
-            <zipfileset src="modules/plugins/lib/jna.jar" includes="com/**"/>
48
-            <zipfileset src="modules/plugins/lib/platform.jar" includes="com/**"/>
49
-        </jar>
50
-
51
-        <jar destfile="plugins/freedesktop_notifications.jar" compress="${jar.compress}" keepcompression="true" update="true">
52
-            <zipfileset src="modules/plugins/lib/commons-lang-2.4.jar" includes="org/apache/**"/>
53
-        </jar>
54
-    </target>
55
-
56
-</project>

+ 3
- 4
build-plugins.xml View File

@@ -14,10 +14,9 @@
14 14
     <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="libclasspath"/>
15 15
 
16 16
     <target name="build-plugins" description="Build all plugins">
17
-        <exec executable="bash">
18
-            <arg value="createAllPluginJar.sh"/>
19
-            <arg value="${src.dir}/com/dmdirc/addons/"/>
20
-        </exec>
17
+        <subant buildpath="modules/plugins" target="jar">
18
+            <property name="plugins.dmdirc.build.dir" value="../../${build.classes.dir}"/>
19
+        </subant>
21 20
     </target>
22 21
 
23 22
     <target name="-update-bundled-plugins">

+ 4
- 8
build-versioning.xml View File

@@ -2,6 +2,8 @@
2 2
 <project name="DMDirc-versioning" default="default" basedir=".">
3 3
     <description>Adds automatic versioning information to DMDirc</description>
4 4
 
5
+    <include file="build-gitversion.xml"/>
6
+
5 7
     <property name="version.config" value="build/classes/com/dmdirc/version.config"/>
6 8
     <property name="defaults.path" value="modules/defaults/.git/"/>
7 9
     <property name="defaults.output" value="build/classes/com/dmdirc/config/defaults/"/>
@@ -84,14 +86,8 @@ identity:
84 86
     <target name="-read-identities" depends="-read-identities-git"/>
85 87
 
86 88
     <target name="-read-identities-git" if="is.git">
87
-        <exec dir="." executable="bash" outputproperty="defaults.version">
88
-            <arg value="-c"/>
89
-            <arg value="git --git-dir ${defaults.path} rev-list --all -n 1 -- default | xargs git --git-dir ${defaults.path} describe --tags"/>
90
-        </exec>
91
-        <exec dir="." executable="bash" outputproperty="modealiases.version">
92
-            <arg value="-c"/>
93
-            <arg value="git --git-dir ${defaults.path} rev-list --all -n 1 -- modealiases | xargs git --git-dir ${defaults.path} describe --tags"/>
94
-        </exec>
89
+        <gitversion target="default" gitdir="${defaults.path}" outputproperty="defaults.version"/>
90
+        <gitversion target="modealiases" gitdir="${defaults.path}" outputproperty="modealiases.version"/>
95 91
     </target>
96 92
 
97 93
 </project>

+ 2
- 3
build.xml View File

@@ -4,7 +4,6 @@
4 4
 
5 5
     <import file="nbproject/build-impl.xml"/>
6 6
     <import file="build-installer.xml"/>
7
-    <import file="build-jar.xml"/>
8 7
     <import file="build-plugins.xml"/>
9 8
     <import file="build-reports.xml"/>
10 9
     <import file="build-tests.xml"/>
@@ -21,8 +20,8 @@
21 20
         </get>
22 21
     </target>
23 22
 
24
-    <target name="-post-compile" depends="-write-version, build-plugins, -addpluginlibs"/>
23
+    <target name="-post-compile" depends="-write-version, build-plugins"/>
25 24
     <target name="-post-test-run" depends="-do-test-reports"/>
26
-    <target name="-post-jar" depends="-addjarlibs,-update-bundled-plugins"/>
25
+    <target name="-post-jar" depends="-update-bundled-plugins"/>
27 26
 
28 27
 </project>

+ 0
- 26
createAllPluginJar.sh View File

@@ -1,26 +0,0 @@
1
-#!/bin/bash
2
-# This attempts to create a clean build of dmdirc, then if the build was a success
3
-# it will create plugin jars for all the plugins in the addons directory.
4
-
5
-if [ ${?} = "0" ]; then
6
-	for dir in `ls -1 modules/plugins/src/com/dmdirc/addons`; do
7
-		if [ -e "modules/plugins/src/com/dmdirc/addons/${dir}/.ignore" ]; then
8
-			echo "------"
9
-			echo "Not building: ${dir}"
10
-			echo "------"
11
-		else
12
-			./createPluginJar.sh com.dmdirc.addons.${dir} ${dir}
13
-		fi
14
-	done
15
-fi
16
-
17
-# Plugins to bundle into development jars.
18
-plugins="ui_swing.jar tabcompletion_bash.jar tabcompletion_mirc.jar parser_irc.jar"
19
-mkdir -p ${PWD}/build/classes/plugins
20
-for PLUGIN in ${plugins}; do
21
-	ln -sf ${PWD}/plugins/${PLUGIN} ${PWD}/build/classes/plugins/${PLUGIN};
22
-done;
23
-
24
-#if [ -d ${PWD}/build/classes -a ! -e ${PWD}/build/classes/plugins ]; then
25
-#	ln -s ${PWD}/plugins ${PWD}/build/classes/plugins;
26
-#fi

+ 0
- 109
createPluginJar.sh View File

@@ -1,109 +0,0 @@
1
-#!/bin/bash
2
-# This script will create a plugin jar file for a given plugin.
3
-
4
-. build-functions.sh
5
-
6
-VALID_EXTS="class,png,exe,dll,html,css,js,gif,py"
7
-
8
-if [ "${1}" = "" -o "${2}" = "" ]; then
9
-	echo "Usage Example: ${0} com.dmdirc.addons.windowstatus WindowStatusPlugin"
10
-	echo "The above would create WindowStatusPlugin.jar in the plugins/ folder of the current dir"
11
-	exit;
12
-fi
13
-
14
-destdir=${PWD}
15
-srcdir=${PWD}/modules/plugins/
16
-pluginname=${1}
17
-foldername=${pluginname//.//}
18
-
19
-if [ "${REBUILDPLUGINS}" != "true" ]; then
20
-	newer=`find ${srcdir}/src/${foldername} -type f -newer ${destdir}/plugins/${2}.jar 2>&1 | wc -l`
21
-	
22
-	if [ $newer -eq 0 ]; then
23
-		echo "${2}.jar appears to be up-to-date";
24
-		exit 0;
25
-	fi
26
-fi;
27
-
28
-echo "Creating ${2}.jar for ${pluginname} (${foldername})"
29
-
30
-if [ ! -e modules/plugins/src/${foldername}/plugin.config ]; then
31
-	echo "no plugin.config found";
32
-	exit 0;
33
-fi
34
-
35
-#echo "looking for classes"
36
-TMPDIR=`safe_mktemp $foldername`
37
-#echo "Using temp dir: ${TMPDIR}"
38
-cd $TMPDIR
39
-
40
-mkdir META-INF
41
-if [ -e "${srcdir}/src/${foldername}/plugin.config" ]; then
42
-	cp "${srcdir}/src/${foldername}/plugin.config" META-INF/
43
-fi;
44
-
45
-if [ -d "${srcdir}/src/${foldername}/licences/" ]; then
46
-	cp -r "${srcdir}/src/${foldername}/licences/" META-INF/licences/
47
-fi;
48
-
49
-if [ -d "${srcdir}/src/${foldername}/identities/" ]; then
50
-        cp -r "${srcdir}/src/${foldername}/identities/" META-INF/identities/
51
-fi;
52
-
53
-
54
-# Do the same for plugin.config
55
-# This is rudimentary, it a version: section already exists (eg to specify
56
-# friendlyversion) then it won't add the number= key.
57
-if [ -e META-INF/plugin.config ]; then
58
-	VERSIONLINE=`grep -n "version:$" META-INF/plugin.config | cut -f 1 -d ':'`
59
-
60
-	if [ -z "$VERSIONLINE" ]; then
61
-		sed 's/keysections:/keysections:\n  version/g' META-INF/plugin.config > META-INF/plugin.config.temp
62
-		rm -Rf META-INF/plugin.config
63
-		mv META-INF/plugin.config.temp META-INF/plugin.config		
64
-	fi;
65
-
66
-	GIT=`which git`
67
-	REV=$(${GIT} --git-dir "${srcdir}/.git" describe --tags `${GIT} --git-dir "${srcdir}/.git" rev-list --max-count=1 HEAD -- "src/${foldername}"`);
68
-
69
-	echo "" >> META-INF/plugin.config
70
-	echo "" >> META-INF/plugin.config
71
-	echo "version:" >> META-INF/plugin.config;
72
-	echo "  number=$REV" >> META-INF/plugin.config;
73
-fi;
74
-
75
-foo=`echo $foldername | sed -e 's/\/[^\/]*$//g'`
76
-mkdir -p "$foo"
77
-cd "${foo}"
78
-ln -s "${destdir}/build/classes/${foldername}" .
79
-cd "$TMPDIR"
80
-mkdir -p "${destdir}/plugins/"
81
-
82
-rm -Rf "${destdir}/plugins/${2}.jar"
83
-jar -cvf "${srcdir}/src/${foldername}/${2}.jar" META-INF >/dev/null
84
-bit=""
85
-while [ 1 -eq 1 ]; do
86
-	bit=${bit}/*
87
-	ls ${foo}${bit}/* >/dev/null 2>&1
88
-	if [ ${?} -ne 0 ]; then
89
-		break;
90
-	else
91
-		DIR="${PWD}"
92
-		for prepackage in `ls "${srcdir}/src/${foldername}${bit}/prePackage.sh" 2>/dev/null`; do
93
-			cd `dirname "${prepackage}"`
94
-			/bin/sh "${prepackage}"
95
-			cd ${DIR}
96
-		done;
97
-
98
-		FILES="ls -1 "${foo}${bit}/"*.{${VALID_EXTS}}"
99
-                FILES=`eval ${FILES} 2>/dev/null`
100
-
101
-		jar -uvf "${srcdir}/src/${foldername}/${2}.jar" ${FILES} >/dev/null
102
-	fi
103
-done
104
-
105
-mv "${srcdir}/src/${foldername}/${2}.jar" "${destdir}/plugins/"
106
-
107
-cd "${srcdir}"
108
-rm -Rf ${TMPDIR}
109
-#echo "done";

Loading…
Cancel
Save