diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java | 364 |
1 files changed, 0 insertions, 364 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java deleted file mode 100644 index b395a16c..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java +++ /dev/null @@ -1,364 +0,0 @@ -/* - * 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.tools.ant.taskdefs.optional; - -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintStream; -import java.util.Map; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.taskdefs.Execute; -import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; -import org.apache.tools.ant.taskdefs.LogOutputStream; -import org.apache.tools.ant.taskdefs.LogStreamHandler; -import org.apache.tools.ant.taskdefs.PumpStreamHandler; -import org.apache.tools.ant.taskdefs.condition.Os; -import org.apache.tools.ant.types.Commandline; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.util.FileUtils; - -/** - * Invokes the rpm tool to build a Linux installation file. - * - */ -public class Rpm extends Task { - - private static final String PATH1 = "PATH"; - private static final String PATH2 = "Path"; - private static final String PATH3 = "path"; - - /** - * the spec file - */ - private String specFile; - - /** - * the rpm top dir - */ - private File topDir; - - /** - * the rpm command to use - */ - private String command = "-bb"; - - /** - * The executable to use for building the packages. - * @since Ant 1.6 - */ - private String rpmBuildCommand = null; - - /** - * clean BUILD directory - */ - private boolean cleanBuildDir = false; - - /** - * remove spec file - */ - private boolean removeSpec = false; - - /** - * remove sources - */ - private boolean removeSource = false; - - /** - * the file to direct standard output from the command - */ - private File output; - - /** - * the file to direct standard error from the command - */ - private File error; - - /** - * Halt on error return value from rpm build. - */ - private boolean failOnError = false; - - /** - * Don't show output of RPM build command on console. This does not affect - * the printing of output and error messages to files. - */ - private boolean quiet = false; - - /** - * Execute the task - * - * @throws BuildException is there is a problem in the task execution. - */ - public void execute() throws BuildException { - - Commandline toExecute = new Commandline(); - - toExecute.setExecutable(rpmBuildCommand == null - ? guessRpmBuildCommand() - : rpmBuildCommand); - if (topDir != null) { - toExecute.createArgument().setValue("--define"); - toExecute.createArgument().setValue("_topdir " + topDir); - } - - toExecute.createArgument().setLine(command); - - if (cleanBuildDir) { - toExecute.createArgument().setValue("--clean"); - } - if (removeSpec) { - toExecute.createArgument().setValue("--rmspec"); - } - if (removeSource) { - toExecute.createArgument().setValue("--rmsource"); - } - - toExecute.createArgument().setValue("SPECS/" + specFile); - - ExecuteStreamHandler streamhandler = null; - OutputStream outputstream = null; - OutputStream errorstream = null; - if (error == null && output == null) { - if (!quiet) { - streamhandler = new LogStreamHandler(this, Project.MSG_INFO, - Project.MSG_WARN); - } else { - streamhandler = new LogStreamHandler(this, Project.MSG_DEBUG, - Project.MSG_DEBUG); - } - } else { - if (output != null) { - try { - BufferedOutputStream bos - = new BufferedOutputStream(new FileOutputStream(output)); - outputstream = new PrintStream(bos); - } catch (IOException e) { - throw new BuildException(e, getLocation()); - } - } else if (!quiet) { - outputstream = new LogOutputStream(this, Project.MSG_INFO); - } else { - outputstream = new LogOutputStream(this, Project.MSG_DEBUG); - } - if (error != null) { - try { - BufferedOutputStream bos - = new BufferedOutputStream(new FileOutputStream(error)); - errorstream = new PrintStream(bos); - } catch (IOException e) { - throw new BuildException(e, getLocation()); - } - } else if (!quiet) { - errorstream = new LogOutputStream(this, Project.MSG_WARN); - } else { - errorstream = new LogOutputStream(this, Project.MSG_DEBUG); - } - streamhandler = new PumpStreamHandler(outputstream, errorstream); - } - - Execute exe = getExecute(toExecute, streamhandler); - try { - log("Building the RPM based on the " + specFile + " file"); - int returncode = exe.execute(); - if (Execute.isFailure(returncode)) { - String msg = "'" + toExecute.getExecutable() - + "' failed with exit code " + returncode; - if (failOnError) { - throw new BuildException(msg); - } - log(msg, Project.MSG_ERR); - } - } catch (IOException e) { - throw new BuildException(e, getLocation()); - } finally { - FileUtils.close(outputstream); - FileUtils.close(errorstream); - } - } - - /** - * The directory which will have the expected - * subdirectories, SPECS, SOURCES, BUILD, SRPMS ; optional. - * If this isn't specified, - * the <tt>baseDir</tt> value is used - * - * @param td the directory containing the normal RPM directories. - */ - public void setTopDir(File td) { - this.topDir = td; - } - - /** - * What command to issue to the rpm build tool; optional. - * The default is "-bb" - * @param c the command to use. - */ - public void setCommand(String c) { - this.command = c; - } - - /** - * The name of the spec File to use; required. - * @param sf the spec file name to use. - */ - public void setSpecFile(String sf) { - if ((sf == null) || (sf.trim().length() == 0)) { - throw new BuildException("You must specify a spec file", getLocation()); - } - this.specFile = sf; - } - - /** - * Flag (optional, default=false) to remove - * the generated files in the BUILD directory - * @param cbd a <code>boolean</code> value. - */ - public void setCleanBuildDir(boolean cbd) { - cleanBuildDir = cbd; - } - - /** - * Flag (optional, default=false) to remove the spec file from SPECS - * @param rs a <code>boolean</code> value. - */ - public void setRemoveSpec(boolean rs) { - removeSpec = rs; - } - - /** - * Flag (optional, default=false) - * to remove the sources after the build. - * See the <tt>--rmsource</tt> option of rpmbuild. - * @param rs a <code>boolean</code> value. - */ - public void setRemoveSource(boolean rs) { - removeSource = rs; - } - - /** - * Optional file to save stdout to. - * @param output the file to save stdout to. - */ - public void setOutput(File output) { - this.output = output; - } - - /** - * Optional file to save stderr to - * @param error the file to save error output to. - */ - public void setError(File error) { - this.error = error; - } - - /** - * The executable to run when building; optional. - * The default is <code>rpmbuild</code>. - * - * @since Ant 1.6 - * @param c the rpm build executable - */ - public void setRpmBuildCommand(String c) { - this.rpmBuildCommand = c; - } - - /** - * If <code>true</code>, stop the build process when the rpmbuild command - * exits with an error status. - * @param value <code>true</code> if it should halt, otherwise - * <code>false</code>. The default is <code>false</code>. - * - * @since Ant 1.6.3 - */ - public void setFailOnError(boolean value) { - failOnError = value; - } - - /** - * If true, output from the RPM build command will only be logged to DEBUG. - * @param value <code>false</code> if output should be logged, otherwise - * <code>true</code>. The default is <code>false</code>. - * - * @since Ant 1.6.3 - */ - public void setQuiet(boolean value) { - quiet = value; - } - - /** - * Checks whether <code>rpmbuild</code> is on the PATH and returns - * the absolute path to it - falls back to <code>rpm</code> - * otherwise. - * - * @return the command used to build RPM's - * - * @since 1.6 - */ - protected String guessRpmBuildCommand() { - Map/*<String, String>*/ env = Execute.getEnvironmentVariables(); - String path = (String) env.get(PATH1); - if (path == null) { - path = (String) env.get(PATH2); - if (path == null) { - path = (String) env.get(PATH3); - } - } - - if (path != null) { - Path p = new Path(getProject(), path); - String[] pElements = p.list(); - for (int i = 0; i < pElements.length; i++) { - File f = new File(pElements[i], - "rpmbuild" - + (Os.isFamily("dos") ? ".exe" : "")); - if (f.canRead()) { - return f.getAbsolutePath(); - } - } - } - - return "rpm"; - } - - /** - * Get the execute object. - * @param toExecute the command line to use. - * @param streamhandler the stream handler to use. - * @return the execute object. - * @since Ant 1.6.3 - */ - protected Execute getExecute(Commandline toExecute, - ExecuteStreamHandler streamhandler) { - Execute exe = new Execute(streamhandler, null); - - exe.setAntRun(getProject()); - if (topDir == null) { - topDir = getProject().getBaseDir(); - } - exe.setWorkingDirectory(topDir); - - exe.setCommandline(toExecute.getCommandline()); - return exe; - } -} |