From 60583908b79e6d4aa7b8d2b72805656b53176c60 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rivasseau
Date: Mon, 21 Jan 2008 12:31:06 +0000
Subject: Eclipse 3.3.1.1 version bump, minor syntax changes for 3.2.1-r2
ebuild. (Portage version: 2.1.3.19)
---
.../files/3.3/fedora/eclipse-fileinitializer.patch | 497 +++++++++++++++++++++
.../files/3.3/fedora/eclipse-libupdatebuild2.patch | 11 +
.../eclipse-pde.build-add-package-build.patch | 273 +++++++++++
3 files changed, 781 insertions(+)
create mode 100644 dev-util/eclipse-sdk/files/3.3/fedora/eclipse-fileinitializer.patch
create mode 100644 dev-util/eclipse-sdk/files/3.3/fedora/eclipse-libupdatebuild2.patch
create mode 100644 dev-util/eclipse-sdk/files/3.3/fedora/eclipse-pde.build-add-package-build.patch
(limited to 'dev-util')
diff --git a/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-fileinitializer.patch b/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-fileinitializer.patch
new file mode 100644
index 000000000000..59aa29dfb417
--- /dev/null
+++ b/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-fileinitializer.patch
@@ -0,0 +1,497 @@
+Index: plugin.xml
+===================================================================
+RCS file: /cvsroot/eclipse/org.eclipse.core.runtime/plugin.xml,v
+retrieving revision 1.68
+diff -u -r1.68 plugin.xml
+--- plugin.xml 4 Mar 2005 22:18:54 -0000 1.68
++++ plugin.xml 7 Nov 2005 20:22:09 -0000
+@@ -6,4 +6,22 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+Index: src/org/eclipse/core/internal/runtime/Messages.java
+===================================================================
+RCS file: /cvsroot/eclipse/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/Messages.java,v
+retrieving revision 1.18
+diff -u -r1.18 Messages.java
+--- src/org/eclipse/core/internal/runtime/Messages.java 20 Oct 2005 18:31:04 -0000 1.18
++++ src/org/eclipse/core/internal/runtime/Messages.java 7 Nov 2005 20:22:09 -0000
+@@ -106,6 +106,14 @@
+ public static String plugin_instantiateClassError;
+ public static String plugin_loadClassError;
+
++ // initializer
++ public static String initializer_error;
++
++ // file initializer
++ public static String fileInitializer_fileNotFound;
++ public static String fileInitializer_IOError;
++ public static String fileInitializer_missingFileName;
++
+ static {
+ // load message values from bundle file
+ reloadMessages();
+@@ -114,4 +122,4 @@
+ public static void reloadMessages() {
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+-}
+\ No newline at end of file
++}
+Index: src/org/eclipse/core/internal/runtime/messages.properties
+===================================================================
+RCS file: /cvsroot/eclipse/org.eclipse.core.runtime/src/org/eclipse/core/internal/runtime/messages.properties,v
+retrieving revision 1.106
+diff -u -r1.106 messages.properties
+--- src/org/eclipse/core/internal/runtime/messages.properties 20 Oct 2005 18:31:04 -0000 1.106
++++ src/org/eclipse/core/internal/runtime/messages.properties 7 Nov 2005 20:22:09 -0000
+@@ -54,6 +54,13 @@
+ provider_invalid = Problem creating the provider registered by {0}.
+ product_notFound = Product {0} could not be found.
+
++### Initializer
++initializer_error=There was a problem running the application {0}.
++
++### File Initiializer
++fileInitializer_fileNotFound={0}: The file {1} was not found.
++fileInitializer_IOError={0}: There was an error reading {1}.
++
+ ### Compatibility - parsing/resolving
+ parse_badPrereqOnFrag = Fragment \"{0}\" requires non-existent plug-in \"{1}\". Fragment ignored.
+ parse_duplicateFragment = Duplicate fragment found with id \"{0}\" and version \"{1}\".
+Index: src/org/eclipse/core/runtime/Platform.java
+===================================================================
+RCS file: /cvsroot/eclipse/org.eclipse.core.runtime/src/org/eclipse/core/runtime/Platform.java,v
+retrieving revision 1.90
+diff -u -r1.90 Platform.java
+--- src/org/eclipse/core/runtime/Platform.java 26 Aug 2005 19:39:21 -0000 1.90
++++ src/org/eclipse/core/runtime/Platform.java 7 Nov 2005 20:22:09 -0000
+@@ -95,6 +95,15 @@
+ public static final String OPTION_STARTTIME = PI_RUNTIME + "/starttime"; //$NON-NLS-1$
+
+ /**
++ * The simple identifier constant (value "initializers
") of
++ * the extension point of the Core Runtime plug-in where plug-ins declare
++ * their the existence of initialization code.
++ *
++ * @since 3.1
++ */
++
++ public static final String PT_INITIALIZERS = "initializers"; //$NON-NLS-1$
++ /**
+ * Name of a preference for configuring the performance level for this system.
+ *
+ *
+Index: schema/initializers.exsd
+===================================================================
+RCS file: schema/initializers.exsd
+diff -N schema/initializers.exsd
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ schema/initializers.exsd 1 Jan 1970 00:00:00 -0000
+@@ -0,0 +1,138 @@
++
++
++
++
++
++
++
++
++ Platform runtime supports plug-ins which would like to
++be initialized. That is, plug-ins that needs to be initialized when
++the initialization application is being run should provide an extension
++to this extension-point.
++The initializers are run when the org.eclipse.core.runtime.initializer application
++is being run. The initializers are run in any order.
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++ 3.1
++
++
++
++
++
++
++
++
++ Following is an example of initializer declaration:
++<p>
++<pre>
++ <extension id="myInitializer" point="org.eclipse.core.runtime.initializers">
++ <initializer>
++ <initialize class="myInitializer.Doit"/>
++ </initializer>
++ </extension>
++</pre>
++</p>
++
++
++
++
++
++
++
++
++ The value of the class attribute must represent an
++implementor of
++<samp>org.eclipse.core.runtime.IPlatformRunnable</samp>.
++
++
++
++
++
++
++
++
++ [Enter information about supplied implementation of this extension point.]
++
++
++
++
++
++
++
++
++ Copyright (c) 2005 IBM Corporation and others.<br>
++All rights reserved. This program and the accompanying materials are made
++available under the terms of the Eclipse Public License v1.0 which
++accompanies
++this distribution, and is available at
++<a
++href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
++
++
++
++
+Index: src/org/eclipse/core/internal/runtime/FileInitializer.java
+===================================================================
+RCS file: src/org/eclipse/core/internal/runtime/FileInitializer.java
+diff -N src/org/eclipse/core/internal/runtime/FileInitializer.java
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ src/org/eclipse/core/internal/runtime/FileInitializer.java 1 Jan 1970 00:00:00 -0000
+@@ -0,0 +1,186 @@
++package org.eclipse.core.internal.runtime;
++
++import java.io.FileInputStream;
++import java.io.FileNotFoundException;
++import java.io.IOException;
++import java.net.URL;
++import java.util.Collections;
++import java.util.Enumeration;
++import java.util.Iterator;
++import java.util.LinkedList;
++import java.util.Properties;
++import java.util.Set;
++import java.util.regex.Pattern;
++
++import org.eclipse.core.runtime.IPlatformRunnable;
++import org.eclipse.core.runtime.IStatus;
++import org.eclipse.core.runtime.Path;
++import org.eclipse.core.runtime.Platform;
++import org.eclipse.core.runtime.Status;
++import org.eclipse.osgi.util.NLS;
++import org.osgi.framework.Bundle;
++
++/**
++ *
++ * This application extracts files to their "localURL". The file patterns that you
++ * want to extract should be specified in a file in a properties format like this:
++ *
++ *
++ * .* = *.so,about.html
++ * org.eclipse.team.core.cvs = *.html
++ *
++ *
++ * This application should be run through the generic initializer mechanism and
++ * not run directly.
++ *
++ *
++ *
++ * To run this application, do something like:
++ *
++ *
++ *
++ *
++ * java -cp startup.jar org.eclipse.core.launcher.Main -application org.eclipse.core.runtime.initializer [-justThisArchOSWS] -fileInitializer <fileWithFilePatternsToExtract>
++ *
++ *
++ *
++ *
++ *
++ * -
++ * Note: Only the files that are extracted will be printed to the console. If you
++ * want to debug things, use the -consolelog option in
++ * org.eclipse.core.launcher.Main
++ *
++ *
++ *
++ *
++ * @see Initializer
++ * @see Platform#asLocalURL(URL)
++ * @since 3.1
++ */
++public class FileInitializer implements IPlatformRunnable {
++
++ private LinkedList extractedFiles;
++ private boolean justThisArchOSWS;
++
++ public Object run(Object args) throws Exception {
++ Properties bundleAndFilePatterns = getBundleAndFileNamePatterns((String[]) args);
++ Set bundlePatterns = bundleAndFilePatterns.keySet();
++
++ // don't do anything if bundleAndFilePatterns is empty
++ if (bundleAndFilePatterns == null || bundleAndFilePatterns.size() == 0) {
++ return IPlatformRunnable.EXIT_OK;
++ }
++
++ justThisArchOSWS = getJustThisArchOSWS((String[]) args);
++
++ Bundle[] installedBundles = InternalPlatform.getDefault().getBundleContext().getBundles();
++ extractedFiles = new LinkedList();
++
++ // foreach(bundle pattern)
++ for (Iterator bundlePatternIter = bundlePatterns.iterator(); bundlePatternIter.hasNext();) {
++ Object bundlePattern = bundlePatternIter.next();
++ Object fileNamePattern = bundleAndFilePatterns.get(bundlePattern);
++ // foreach(filename pattern)
++ String[] fileNamePatterns = ((String) fileNamePattern).split(","); //$NON-NLS-1$
++ for (int i = 0; i < fileNamePatterns.length; i++) {
++ fileNamePatterns[i] = fileNamePatterns[i].trim();
++ }
++ // foreach(bundle)
++ for (int i = 0; i < installedBundles.length; i++) {
++ String bundleName = installedBundles[i].getSymbolicName();
++ // if(bundle matches pattern) check fileNamePattern(s)
++ if(Pattern.matches((String) bundlePattern, bundleName)) {
++ for (int j = 0; j < fileNamePatterns.length; j++) {
++ extractMatchingFilesFromBundle(fileNamePatterns[j], installedBundles[i]);
++ }
++ }
++ }
++ } // end for
++ return IPlatformRunnable.EXIT_OK;
++ }
++
++ private void extractMatchingFilesFromBundle(String fileNamePattern, Bundle bundle) throws IOException {
++ Enumeration e = bundle.findEntries("/", fileNamePattern, true); //$NON-NLS-1$
++
++ while(e != null && e.hasMoreElements()) {
++ URL fileURL = (URL) e.nextElement();
++ if (justThisArchOSWS) {
++ Path filePath = new Path(fileURL.getPath());
++
++ String[] path = filePath.segments();
++ // check to see if the file should be extracted to the current os/arch
++ if (path.length == 4 && path[0].equals("os") && !(path[1].equals(Platform.getOS()) && path[2].equals(Platform.getOSArch()))) { //$NON-NLS-1$
++ continue;
++ }
++ // check to see if the file is should be extracted to the current ws
++ if (path.length == 3 && path[0].equals("ws") && !path[1].equals(Platform.getWS())) { //$NON-NLS-1$
++ continue;
++ }
++ }
++
++ // the call to Platform.asLocalURL(URL) does the actual extraction
++ URL localURL = Platform.asLocalURL(fileURL);
++ if (localURL != null) {
++ String localURLPath = localURL.getPath();
++
++ // only print the path if it hasn't been printed yet
++ int index = Collections.binarySearch(extractedFiles, localURLPath);
++ if (index < 0) {
++ extractedFiles.add(-(index + 1), localURLPath);
++ System.out.println("FileInitializer: " + localURLPath); //$NON-NLS-1$
++ }
++ }
++ }
++ }
++
++ private final String ARG_FILE = "-fileInitializer"; //$NON-NLS-1$
++
++ private Properties getBundleAndFileNamePatterns(String[] argsArray) {
++
++ for (int i = 0; i < argsArray.length; i++) {
++ if (argsArray[i].equalsIgnoreCase(ARG_FILE)) {
++
++ // the "file patterns" file was not specified
++ if (argsArray.length < i + 2) {
++ String msg = NLS.bind(Messages.fileInitializer_missingFileName, this.getClass().getName());
++ IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.PLUGIN_ERROR, msg, null);
++ InternalPlatform.getDefault().log(status);
++ return null;
++ }
++
++ try {
++ FileInputStream fin = new FileInputStream(argsArray[i + 1]);
++ Properties bundleAndFileNameProperties = new Properties();
++ bundleAndFileNameProperties.load(fin);
++ fin.close();
++ return bundleAndFileNameProperties;
++ } catch (FileNotFoundException e1) {
++ String msg = NLS.bind(Messages.fileInitializer_fileNotFound, this.getClass().getName(), argsArray[i + 1]);
++ IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.PLUGIN_ERROR, msg, null);
++ InternalPlatform.getDefault().log(status);
++ return null;
++ } catch (IOException e) {
++ String msg = NLS.bind(Messages.fileInitializer_IOError, this.getClass().getName(), argsArray[i + 1]);
++ IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.PLUGIN_ERROR, msg, e);
++ InternalPlatform.getDefault().log(status);
++ return null;
++ }
++ }
++ }
++
++ // ARG_FILE wasn't found
++ return null;
++ }
++
++ private final String ARG_JUSTTHISARCHOSWS = "-justThisArchOSWS"; //$NON-NLS-1$
++
++ private boolean getJustThisArchOSWS(String[] argsArray) {
++ for (int i = 0; i < argsArray.length; i++) {
++ if (argsArray[i].equalsIgnoreCase(ARG_JUSTTHISARCHOSWS)) {
++ return true;
++ }
++ }
++ return false;
++ }
++}
+Index: src/org/eclipse/core/internal/runtime/Initializer.java
+===================================================================
+RCS file: src/org/eclipse/core/internal/runtime/Initializer.java
+diff -N src/org/eclipse/core/internal/runtime/Initializer.java
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ src/org/eclipse/core/internal/runtime/Initializer.java 1 Jan 1970 00:00:00 -0000
+@@ -0,0 +1,49 @@
++/*******************************************************************************
++* Copyright (c) 2005 Red Hat, Inc. and others.
++* All rights reserved. This program and the accompanying materials
++* are made available under the terms of the Eclipse Public License v1.0
++* which accompanies this distribution, and is available at
++* http://www.eclipse.org/legal/epl-v10.html
++*
++* Contributors:
++* IBM - Initial implementation
++*******************************************************************************/
++package org.eclipse.core.internal.runtime;
++
++import org.eclipse.core.runtime.CoreException;
++import org.eclipse.core.runtime.IConfigurationElement;
++import org.eclipse.core.runtime.IExtension;
++import org.eclipse.core.runtime.IExtensionPoint;
++import org.eclipse.core.runtime.IPlatformRunnable;
++import org.eclipse.core.runtime.IStatus;
++import org.eclipse.core.runtime.Platform;
++import org.eclipse.core.runtime.Status;
++import org.eclipse.osgi.util.NLS;
++
++public class Initializer implements IPlatformRunnable {
++
++ public Object run(Object args) throws Exception {
++ IExtensionPoint xpt = Platform.getExtensionRegistry().getExtensionPoint(Platform.PI_RUNTIME, Platform.PT_INITIALIZERS);
++ if (xpt == null)
++ return IPlatformRunnable.EXIT_OK;
++
++ IExtension[] exts = xpt.getExtensions();
++ for (int i = 0; i < exts.length; i++) {
++ IConfigurationElement[] configs = exts[i].getConfigurationElements();
++ IPlatformRunnable initializer = null;
++ if (configs.length != 0) {
++ try {
++ initializer = (IPlatformRunnable) configs[0].createExecutableExtension("initialize"); //$NON-NLS-1$
++ initializer.run(args);
++ } catch(CoreException e) {
++ String msg = NLS.bind(Messages.initializer_error, exts[i].getExtensionPointUniqueIdentifier());
++ IStatus status = new Status(IStatus.ERROR, Platform.PI_RUNTIME, Platform.PLUGIN_ERROR, msg, e);
++ InternalPlatform.getDefault().log(status);
++ return null;
++ }
++ }
++ }
++ return IPlatformRunnable.EXIT_OK;
++ }
++
++}
diff --git a/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-libupdatebuild2.patch b/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-libupdatebuild2.patch
new file mode 100644
index 000000000000..b570a024a1c1
--- /dev/null
+++ b/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-libupdatebuild2.patch
@@ -0,0 +1,11 @@
+--- plugins/org.eclipse.update.core.linux/src/build.xml.orig 2006-01-27 15:35:35.000000000 -0500
++++ plugins/org.eclipse.update.core.linux/src/build.xml 2006-01-27 15:36:07.000000000 -0500
+@@ -5,7 +5,7 @@
+
+
+
+-
++
+
+
+
diff --git a/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-pde.build-add-package-build.patch b/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-pde.build-add-package-build.patch
new file mode 100644
index 000000000000..77f347d6a73a
--- /dev/null
+++ b/dev-util/eclipse-sdk/files/3.3/fedora/eclipse-pde.build-add-package-build.patch
@@ -0,0 +1,273 @@
+Index: templates/package-build/build.properties
+===================================================================
+RCS file: templates/package-build/build.properties
+diff -N templates/package-build/build.properties
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ templates/package-build/build.properties 1 Jan 1970 00:00:00 -0000
+@@ -0,0 +1,12 @@
++buildDirectory=${sourceDirectory}/build
++buildLabel=rpmBuild
++archivePrefix=eclipse
++skipFetch=true
++javacFailOnError=true
++collectingFolder=eclipse
++archivesFormat=*,*,*-zip
++zipargs=-y
++javacDebugInfo=true
++archiveName=${id}.zip
++runPackager=false
++baseLocation=/usr/share/eclipse
+Index: templates/package-build/customTargets-assemble-target.xml
+===================================================================
+RCS file: templates/package-build/customTargets-assemble-target.xml
+diff -N templates/package-build/customTargets-assemble-target.xml
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ templates/package-build/customTargets-assemble-target.xml 1 Jan 1970 00:00:00 -0000
+@@ -0,0 +1,12 @@
++
++
++
++
++
++
++
++
++
++
++
++
+Index: templates/package-build/customTargets.xml
+===================================================================
+RCS file: templates/package-build/customTargets.xml
+diff -N templates/package-build/customTargets.xml
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ templates/package-build/customTargets.xml 1 Jan 1970 00:00:00 -0000
+@@ -0,0 +1,144 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+Index: templates/package-build/prepare-build-dir.sh
+===================================================================
+RCS file: templates/package-build/prepare-build-dir.sh
+diff -N templates/package-build/prepare-build-dir.sh
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ templates/package-build/prepare-build-dir.sh 1 Jan 1970 00:00:00 -0000
+@@ -0,0 +1,77 @@
++#!/bin/sh
++
++if [ $# -ne 2 ]; then
++ echo "usage: $0 "
++ exit 1
++fi
++
++if [ ! -d $1 ]; then
++ echo "usage: $0 "
++ exit 1
++fi
++
++SOURCEDIR=$1
++BUILDDIR=$2
++
++echo "preparing files in $1 for buildfile generation ..."
++mkdir -p $BUILDDIR
++
++# make some ant build files to extract the id from the feature.xml, plugin.xml or the fragment.xml
++mkdir -p $BUILDDIR/tmp
++BUILDFILE=$BUILDDIR/tmp/build.xml
++
++echo "
++
++
++
++
++
++" > $BUILDFILE
++
++for type in feature plugin fragment; do
++ CURBUILDFILE=$BUILDDIR/tmp/$type-build.xml
++ cat $BUILDFILE | sed "s|@type@|$type|" > $CURBUILDFILE
++done
++
++# make the directories eclipse is expecting
++echo " making the 'features' and 'plugins' directories"
++mkdir -p $BUILDDIR/features $BUILDDIR/plugins
++
++# make symlinks for the features
++FEATURES=$(find $SOURCEDIR -name feature.xml)
++for f in $FEATURES; do
++ PROJECTDIR=$(dirname $f)
++ PROJECTNAME=$(ant -Dbasedir=$PROJECTDIR -f $BUILDDIR/tmp/feature-build.xml 2>&1 | grep echo | cut --delimiter=' ' -f 7)
++ if [ -z $PROJECTNAME ]; then
++ echo "ERROR: could not determine the feature id for $PROJECTDIR"
++ exit 1
++ fi
++
++ echo " making symlink: $BUILDDIR/features/$PROJECTNAME -> $PROJECTDIR"
++ ln -sf $PROJECTDIR $BUILDDIR/features/$PROJECTNAME
++done
++
++# make symlinks for plugins and fragments
++PLUGINDIRS=$(find $SOURCEDIR -name plugin.xml -o -name fragment.xml -o -name MANIFEST.MF | sed "s/plugin.xml//g" | sed "s/fragment.xml//g" | sed "s/META-INF\/MANIFEST.MF//" | sort | uniq)
++for dir in $PLUGINDIRS; do
++ PROJECTNAME=""
++ if [ -e $dir/META-INF/MANIFEST.MF ]; then
++ PROJECTNAME=$(grep Bundle-SymbolicName $dir/META-INF/MANIFEST.MF | cut --delimiter=';' -f 1 | cut --delimiter=' ' -f 2)
++ elif [ -e $dir/plugin.xml ]; then
++ PROJECTNAME=$(ant -Dbasedir=$dir -f $BUILDDIR/tmp/plugin-build.xml 2>&1 | grep echo | cut --delimiter=' ' -f 7)
++ elif [ -e $dir/fragment.xml ]; then
++ PROJECTNAME=$(ant -Dbasedir=$dir -f $BUILDDIR/tmp/fragment-build.xml 2>&1 | grep echo | cut --delimiter=' ' -f 7)
++ fi
++
++ if [ -z $PROJECTNAME ]; then
++ echo "ERROR: could not determine the plugin or fragment id for $dir"
++ exit 1
++ fi
++
++ echo " making symlink: $BUILDDIR/plugins/$PROJECTNAME -> $dir"
++ ln -sf $dir $BUILDDIR/plugins/$PROJECTNAME
++
++done
++
++rm -rf $BUILDDIR/tmp
++echo done
--
cgit v1.2.3-65-gdbad