summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Donszelmann <duns@macdunsprow.donszelmann.org>2010-05-16 08:49:22 +0200
committerMark Donszelmann <duns@macdunsprow.donszelmann.org>2010-05-16 08:49:22 +0200
commit96fbe90a6f1a1769f820da9d58ec5f49f3c065bf (patch)
tree327716e0760862d00462b4a66689ac327a339878
parentc02b4a6462997d1683aa1a38ced51934aaf587d4 (diff)
downloadmaven-nar-plugin-96fbe90a6f1a1769f820da9d58ec5f49f3c065bf.tar.gz
maven-nar-plugin-96fbe90a6f1a1769f820da9d58ec5f49f3c065bf.tar.bz2
maven-nar-plugin-96fbe90a6f1a1769f820da9d58ec5f49f3c065bf.tar.xz
maven-nar-plugin-96fbe90a6f1a1769f820da9d58ec5f49f3c065bf.zip
Fixe compat problem with jdk 1.4
-rw-r--r--src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java313
1 files changed, 159 insertions, 154 deletions
diff --git a/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java b/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java
index d847812..e1ecfe1 100644
--- a/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java
+++ b/src/main/java/org/apache/maven/plugin/nar/NarGnuConfigureMojo.java
@@ -28,164 +28,169 @@ import org.apache.maven.plugin.MojoFailureException;
import org.codehaus.plexus.util.FileUtils;
/**
- * Copies the GNU style source files to a target area, autogens and configures them.
+ * Copies the GNU style source files to a target area, autogens and configures
+ * them.
*
* @goal nar-gnu-configure
* @phase process-sources
* @requiresProject
* @author Mark Donszelmann
*/
-public class NarGnuConfigureMojo
- extends AbstractGnuMojo
-{
- /**
- * Skip running of autogen.sh (aka buildconf).
- *
- * @parameter expression="${nar.gnu.autogen.skip}" default-value="false"
- */
- private boolean gnuAutogenSkip;
-
- /**
- * Skip running of configure and therefore also autogen.sh
- *
- * @parameter expression="${nar.gnu.configure.skip}" default-value="false"
- */
- private boolean gnuConfigureSkip;
-
- /**
- * Arguments to pass to GNU configure.
- *
- * @parameter expression="${nar.gnu.configure.args}" default-value=""
- */
- private String gnuConfigureArgs;
-
- /**
- * Arguments to pass to GNU buildconf.
- *
- * @parameter expression="${nar.gnu.buildconf.args}" default-value=""
- */
- private String gnuBuildconfArgs;
-
- private static final String AUTOGEN = "autogen.sh";
-
- private static final String BUILDCONF = "buildconf";
-
- private static final String CONFIGURE = "configure";
-
- public final void narExecute()
- throws MojoExecutionException, MojoFailureException
- {
-
- if ( !useGnu() )
- {
- return;
- }
-
- File targetDir = getGnuAOLSourceDirectory();
- if ( getGnuSourceDirectory().exists() )
- {
- getLog().info( "Copying GNU sources" );
-
- try
- {
- FileUtils.mkdir( targetDir.getPath() );
- NarUtil.copyDirectoryStructure( getGnuSourceDirectory(), targetDir, null, null );
- }
- catch ( IOException e )
- {
- throw new MojoExecutionException( "Failed to copy GNU sources", e );
- }
-
- if ( !gnuConfigureSkip && !gnuAutogenSkip )
- {
- File autogen = new File( targetDir, AUTOGEN );
- File buildconf = new File( targetDir, BUILDCONF );
- if ( autogen.exists() )
- {
- getLog().info( "Running GNU " + AUTOGEN );
- runAutogen(autogen, targetDir, null);
- } else if ( buildconf.exists() ) {
- getLog().info( "Running GNU " + BUILDCONF );
- String gnuBuildconfArgsArray[] = null;
- if (gnuBuildconfArgs != null)
- {
- gnuBuildconfArgsArray = gnuBuildconfArgs.split("\\s");
- }
- runAutogen(buildconf, targetDir, gnuBuildconfArgsArray);
- }
- }
-
- File configure = new File( targetDir, CONFIGURE );
- if ( !gnuConfigureSkip && configure.exists() )
- {
- getLog().info( "Running GNU " + CONFIGURE );
-
- NarUtil.makeExecutable( configure, getLog() );
- String[] args = null;
-
- // create the array to hold constant and additional args
- if ( gnuConfigureArgs != null )
- {
- String[] a = gnuConfigureArgs.split( " " );
- args = new String[a.length + 2];
-
- for ( int i = 0; i < a.length; i++ )
- {
- args[i+2] = a[i];
- }
- }
- else
- {
- args = new String[2];
- }
-
- //first 2 args are constant
- args[0] = "./" + configure.getName();
- args[1] = "--prefix=" + getGnuAOLTargetDirectory().getAbsolutePath();
-
- getLog().info( "args: " + Arrays.toString(args) );
- int result = NarUtil.runCommand( "sh", args, targetDir, null, getLog() );
- if ( result != 0 )
- {
- throw new MojoExecutionException( "'" + CONFIGURE + "' errorcode: " + result );
- }
- }
- }
- }
-
- private void runAutogen(final File autogen, final File targetDir, final String args[])
- throws MojoExecutionException, MojoFailureException
- {
- // fix missing config directory
- final File configDir = new File(targetDir, "config");
- if (!configDir.exists()) {
- configDir.mkdirs();
- }
-
- NarUtil.makeExecutable( autogen, getLog() );
- getLog().debug("running sh ./" + autogen.getName());
-
- String arguments[] = null;
- if (args != null)
- {
- arguments = new String[1 + args.length];
- for (int i = 0; i < args.length; ++i)
- {
- arguments[i+1] = args[i];
- }
- }
- else
- {
- arguments = new String[1];
- }
- arguments[0] = "./" + autogen.getName();
-
- getLog().info( "args: " + Arrays.toString(arguments) );
-
- final int result = NarUtil.runCommand( "sh", arguments, targetDir, null, getLog() );
- if ( result != 0 )
- {
- throw new MojoExecutionException( "'" + autogen.getName() + "' errorcode: " + result );
- }
- }
+public class NarGnuConfigureMojo extends AbstractGnuMojo {
+ /**
+ * Skip running of autogen.sh (aka buildconf).
+ *
+ * @parameter expression="${nar.gnu.autogen.skip}" default-value="false"
+ */
+ private boolean gnuAutogenSkip;
+
+ /**
+ * Skip running of configure and therefore also autogen.sh
+ *
+ * @parameter expression="${nar.gnu.configure.skip}" default-value="false"
+ */
+ private boolean gnuConfigureSkip;
+
+ /**
+ * Arguments to pass to GNU configure.
+ *
+ * @parameter expression="${nar.gnu.configure.args}" default-value=""
+ */
+ private String gnuConfigureArgs;
+
+ /**
+ * Arguments to pass to GNU buildconf.
+ *
+ * @parameter expression="${nar.gnu.buildconf.args}" default-value=""
+ */
+ private String gnuBuildconfArgs;
+
+ private static final String AUTOGEN = "autogen.sh";
+
+ private static final String BUILDCONF = "buildconf";
+
+ private static final String CONFIGURE = "configure";
+
+ public final void narExecute() throws MojoExecutionException,
+ MojoFailureException {
+
+ if (!useGnu()) {
+ return;
+ }
+
+ File targetDir = getGnuAOLSourceDirectory();
+ if (getGnuSourceDirectory().exists()) {
+ getLog().info("Copying GNU sources");
+
+ try {
+ FileUtils.mkdir(targetDir.getPath());
+ NarUtil.copyDirectoryStructure(getGnuSourceDirectory(),
+ targetDir, null, null);
+ } catch (IOException e) {
+ throw new MojoExecutionException("Failed to copy GNU sources",
+ e);
+ }
+
+ if (!gnuConfigureSkip && !gnuAutogenSkip) {
+ File autogen = new File(targetDir, AUTOGEN);
+ File buildconf = new File(targetDir, BUILDCONF);
+ if (autogen.exists()) {
+ getLog().info("Running GNU " + AUTOGEN);
+ runAutogen(autogen, targetDir, null);
+ } else if (buildconf.exists()) {
+ getLog().info("Running GNU " + BUILDCONF);
+ String gnuBuildconfArgsArray[] = null;
+ if (gnuBuildconfArgs != null) {
+ gnuBuildconfArgsArray = gnuBuildconfArgs.split("\\s");
+ }
+ runAutogen(buildconf, targetDir, gnuBuildconfArgsArray);
+ }
+ }
+
+ File configure = new File(targetDir, CONFIGURE);
+ if (!gnuConfigureSkip && configure.exists()) {
+ getLog().info("Running GNU " + CONFIGURE);
+
+ NarUtil.makeExecutable(configure, getLog());
+ String[] args = null;
+
+ // create the array to hold constant and additional args
+ if (gnuConfigureArgs != null) {
+ String[] a = gnuConfigureArgs.split(" ");
+ args = new String[a.length + 2];
+
+ for (int i = 0; i < a.length; i++) {
+ args[i + 2] = a[i];
+ }
+ } else {
+ args = new String[2];
+ }
+
+ // first 2 args are constant
+ args[0] = "./" + configure.getName();
+ args[1] = "--prefix="
+ + getGnuAOLTargetDirectory().getAbsolutePath();
+
+ getLog().info("args: " + arraysToString(args));
+ int result = NarUtil.runCommand("sh", args, targetDir, null,
+ getLog());
+ if (result != 0) {
+ throw new MojoExecutionException("'" + CONFIGURE
+ + "' errorcode: " + result);
+ }
+ }
+ }
+ }
+
+ private void runAutogen(final File autogen, final File targetDir,
+ final String args[]) throws MojoExecutionException,
+ MojoFailureException {
+ // fix missing config directory
+ final File configDir = new File(targetDir, "config");
+ if (!configDir.exists()) {
+ configDir.mkdirs();
+ }
+
+ NarUtil.makeExecutable(autogen, getLog());
+ getLog().debug("running sh ./" + autogen.getName());
+
+ String arguments[] = null;
+ if (args != null) {
+ arguments = new String[1 + args.length];
+ for (int i = 0; i < args.length; ++i) {
+ arguments[i + 1] = args[i];
+ }
+ } else {
+ arguments = new String[1];
+ }
+ arguments[0] = "./" + autogen.getName();
+
+ getLog().info("args: " + arraysToString(arguments));
+
+ final int result = NarUtil.runCommand("sh", arguments, targetDir, null,
+ getLog());
+ if (result != 0) {
+ throw new MojoExecutionException("'" + autogen.getName()
+ + "' errorcode: " + result);
+ }
+ }
+
+ // JDK 1.4 compatibility
+ private static String arraysToString(Object[] a) {
+ if (a == null)
+ return "null";
+ int iMax = a.length - 1;
+ if (iMax == -1)
+ return "[]";
+
+ StringBuilder b = new StringBuilder();
+ b.append('[');
+ for (int i = 0;; i++) {
+ b.append(String.valueOf(a[i]));
+ if (i == iMax)
+ return b.append(']').toString();
+ b.append(", ");
+ }
+ }
+
}