Browse Source

Revert part of the commit that made tasks use Execute#isFailure.

On OpenVMS the Java VM will exit with a return code of 0 on success,
even though this is going to signal a failure for the OS.  All tasks
that spawn new VMs have now been reverted to explicitly check for
retCode != 0 instead of Execite.isFailure(retCode).

We could as well introduce Execute#isJavaFailure or something like
this in case future VM's on OpenVMS will start to do the right thing.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275005 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 22 years ago
parent
commit
e67a40fbb3
10 changed files with 32 additions and 14 deletions
  1. +15
    -6
      docs/manual/CoreTasks/exec.html
  2. +9
    -0
      src/main/org/apache/tools/ant/taskdefs/Execute.java
  3. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/Java.java
  4. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/Javadoc.java
  5. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java
  6. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java
  7. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java
  8. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java
  9. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java
  10. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java

+ 15
- 6
docs/manual/CoreTasks/exec.html View File

@@ -20,13 +20,22 @@ Windows executable and is not aware of Cygwin conventions.
</p> </p>
<h4>OpenVMS Users</h4> <h4>OpenVMS Users</h4>
<p>The command specified using <code>executable</code> and <code>&lt;arg&gt;</code>
elements is executed exactly as specified inside a temporary DCL script. This means
that paths have to be written in VMS style. It is also required that the logical
<code>JAVA$FORK_SUPPORT_CHDIR</code> is set to <code>TRUE</code> (see the <i>JDK Release
Notes</i>).
</p>

<p>The command specified using <code>executable</code> and
<code>&lt;arg&gt;</code> elements is executed exactly as specified
inside a temporary DCL script. This means that paths have to be
written in VMS style. It is also required that the logical
<code>JAVA$FORK_SUPPORT_CHDIR</code> is set to <code>TRUE</code> (see
the <i>JDK Release Notes</i>).</p>
<p>Please note that the Java VM provided by HP doesn't follow OpenVMS'
conventions of exit codes. If you run a Java VM with this task, the
task may falsely claim that an error occured (or silently ignore an
error). Don't use this task to run <code>JAVA.EXE</code>, use a
<code>&lt;java&gt;</code> task with the <code>fork</code> attribute
set ti <code>true</code> instead as this task will follow the VM's
interpretation of exit codes.</p>

<h3>Parameters</h3> <h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0"> <table border="1" cellpadding="2" cellspacing="0">
<tr> <tr>


+ 9
- 0
src/main/org/apache/tools/ant/taskdefs/Execute.java View File

@@ -577,6 +577,15 @@ public class Execute {
/** /**
* Checks whether <code>exitValue</code> signals a failure on the current * Checks whether <code>exitValue</code> signals a failure on the current
* system (OS specific). * system (OS specific).
*
* <p><b>Note</b> that this method relies on the conventions of
* the OS, it will return false results if the application you are
* running doesn't follow these conventions. One notable
* exception is the Java VM provided by HP for OpenVMS - it will
* return 0 if successful (like on any other platform), but this
* signals a failure on OpenVMS. So if you execute a new Java VM
* on OpenVMS, you cannot trust this method.</p>
*
* @param exitValue the exit value (return code) to be checked * @param exitValue the exit value (return code) to be checked
* @return <code>true</code> if <code>exitValue</code> signals a failure * @return <code>true</code> if <code>exitValue</code> signals a failure
*/ */


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/Java.java View File

@@ -109,7 +109,7 @@ public class Java extends Task {
int err = -1; int err = -1;
try { try {
err = executeJava(); err = executeJava();
if (fork && Execute.isFailure(err)) {
if (fork && err != 0) {
if (failOnError) { if (failOnError) {
throw new BuildException("Java returned: " + err, getLocation()); throw new BuildException("Java returned: " + err, getLocation());
} else { } else {


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/Javadoc.java View File

@@ -1984,7 +1984,7 @@ public class Javadoc extends Task {
try { try {
exe.setCommandline(toExecute.getCommandline()); exe.setCommandline(toExecute.getCommandline());
int ret = exe.execute(); int ret = exe.execute();
if (Execute.isFailure(ret) && failOnError) {
if (ret != 0 && failOnError) {
throw new BuildException("Javadoc returned " + ret, getLocation()); throw new BuildException("Javadoc returned " + ret, getLocation());
} }
} catch (IOException e) { } catch (IOException e) {


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java View File

@@ -318,7 +318,7 @@ public class ANTLR extends Task {


log(commandline.describeCommand(), Project.MSG_VERBOSE); log(commandline.describeCommand(), Project.MSG_VERBOSE);
int err = run(commandline.getCommandline()); int err = run(commandline.getCommandline());
if (Execute.isFailure(err)) {
if (err != 0) {
throw new BuildException("ANTLR returned: " + err, getLocation()); throw new BuildException("ANTLR returned: " + err, getLocation());
} else { } else {
String output = bos.toString(); String output = bos.toString();


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/ccm/CCMCheck.java View File

@@ -198,7 +198,7 @@ public class CCMCheck extends Continuus {
checkOptions(commandLine); checkOptions(commandLine);


int result = run(commandLine); int result = run(commandLine);
if (Execute.isFailure(0)) {
if (Execute.isFailure(result)) {
String msg = "Failed executing: " + commandLine.toString(); String msg = "Failed executing: " + commandLine.toString();
throw new BuildException(msg, getLocation()); throw new BuildException(msg, getLocation());
} }


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJDoc.java View File

@@ -194,7 +194,7 @@ public class JJDoc extends Task {
process.setCommandline(cmdl.getCommandline()); process.setCommandline(cmdl.getCommandline());


try { try {
if (Execute.isFailure(process.execute())) {
if (process.execute() != 0) {
throw new BuildException("JJDoc failed."); throw new BuildException("JJDoc failed.");
} }
} catch (IOException e) { } catch (IOException e) {


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/javacc/JJTree.java View File

@@ -290,7 +290,7 @@ public class JJTree extends Task {
process.setCommandline(cmdl.getCommandline()); process.setCommandline(cmdl.getCommandline());


try { try {
if (Execute.isFailure(process.execute())) {
if (process.execute() != 0) {
throw new BuildException("JJTree failed."); throw new BuildException("JJTree failed.");
} }
} catch (IOException e) { } catch (IOException e) {


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/metamata/AbstractMetamataTask.java View File

@@ -246,7 +246,7 @@ public abstract class AbstractMetamataTask extends Task {
log(cmdl.describeCommand(), Project.MSG_VERBOSE); log(cmdl.describeCommand(), Project.MSG_VERBOSE);
process.setCommandline(cmdl.getCommandline()); process.setCommandline(cmdl.getCommandline());
try { try {
if (Execute.isFailure(process.execute())) {
if (process.execute() != 0) {
throw new BuildException("Metamata task failed."); throw new BuildException("Metamata task failed.");
} }
} catch (IOException e) { } catch (IOException e) {


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/metamata/MParse.java View File

@@ -183,7 +183,7 @@ public class MParse extends AbstractMetamataTask {
log(cmdl.describeCommand(), Project.MSG_VERBOSE); log(cmdl.describeCommand(), Project.MSG_VERBOSE);
process.setCommandline(cmdl.getCommandline()); process.setCommandline(cmdl.getCommandline());
try { try {
if (Execute.isFailure(process.execute())) {
if (process.execute() != 0) {
throw new BuildException("Metamata task failed."); throw new BuildException("Metamata task failed.");
} }
} catch (IOException e) { } catch (IOException e) {


Loading…
Cancel
Save