You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by HARDION Vincent <vi...@synchrotron-soleil.fr> on 2009/08/19 13:21:24 UTC
RE : RE : AW: Re: RE : AW: RE: AW: Re: AW: Re: Maven for Non-Java Projects
Hi,
Here is the patch :
# This patch file was generated by NetBeans IDE
# This patch can be applied using context Tools: Apply Diff Patch action
on respective folder.
# It uses platform neutral UTF-8 encoding.
# Above lines and this line are ignored by the patching process.
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractCompileMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractCompileMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractCompileMojo.java 1.4
@@ -3,13 +3,17 @@
import java.io.File;
import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
+import java.util.Set;
+import org.apache.maven.plugin.MojoFailureException;
import org.apache.tools.ant.Project;
/**
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: AbstractCompileMojo.java,v 1.1 2009/04/03 07:11:37
hardion Exp $
+ * @version $Id: AbstractCompileMojo.java,v 1.4 2009/07/08 14:04:08
hardion Exp $
*/
public abstract class AbstractCompileMojo extends
AbstractDependencyMojo {
@@ -109,6 +113,13 @@
*/
private Java java;
+ /**
+ * Specific configuration for AOL, type of library
+ *
+ * @parameter expression=""
+ */
+ private Set/*<? extends AbstractCompileMojo>*/
specificConfigurations = new HashSet();
+
private NarInfo narInfo;
private List/*<String>*/ dependencyLibOrder;
@@ -173,6 +184,11 @@
return libraries;
}
+ protected Set getSpecificConfigurations() {
+ if (specificConfigurations == null) specificConfigurations =
Collections.EMPTY_SET;
+ return specificConfigurations;
+ }
+
protected List getTests() {
if (tests == null) tests = Collections.EMPTY_LIST;
return tests;
@@ -205,4 +221,32 @@
}
return narInfo;
}
+
+ public void parseSpecificConfigurations() throws
MojoFailureException{
+ for (Iterator it = specificConfigurations.iterator();
it.hasNext();) {
+ SpecificConfiguration configuration =
(SpecificConfiguration)it.next();
+
+ // Check activation condition
+ // All conditions must be true to activate
specificConfiguration (AND)
+ Activation activation = configuration.getActivation();
+ if(activation.isActive(this)){
+// this.getLog().info("Active Specific Configuration :
"+configuration);
+ this.enhancement(configuration);
+ }else{
+// this.getLog().debug("Specific Configuration unactive
:"+configuration);
}
+ }
+ }
+
+ public void enhancement(final AbstractCompileMojo other) {
+
+ if (!this.equals(other) && other != null) {
+
+ super.enhancement(other);
+ this.getCpp().enhancement(other.cpp);
+ this.getC().enhancement(other.c);
+ this.getFortran().enhancement(other.fortran);
+ }
+ }
+
+}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractDependencyMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractDependencyMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractDependencyMojo.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractNarMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractNarMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AbstractNarMojo.java 1.3
@@ -10,7 +10,7 @@
/**
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: AbstractNarMojo.java,v 1.1 2009/04/03 07:11:37 hardion
Exp $
+ * @version $Id: AbstractNarMojo.java,v 1.3 2009/05/06 16:42:11 hardion
Exp $
*/
public abstract class AbstractNarMojo extends AbstractMojo implements
NarConstants {
@@ -126,4 +126,10 @@
protected MavenProject getMavenProject() {
return mavenProject;
}
+
+ public void enhancement(final AbstractNarMojo other) {
+ if (!this.equals(other) && other != null) {
+ this.getLinker().enhancement(other.linker);
}
+ }
+}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AOL.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AOL.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AOL.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AttachedNarArtifact.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AttachedNarArtifact.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/AttachedNarArtifact.java 1.2
@@ -11,25 +11,28 @@
* NarArtifact with its own type, classifier and artifactHandler.
*
* @author Mark Donszelmann
- * @version $Id: AttachedNarArtifact.java,v 1.1 2009/04/03 07:11:37
hardion Exp $
+ * @version $Id: AttachedNarArtifact.java,v 1.1 2009/04/03 07:11:37
hardion Exp
+ * $
*/
public class AttachedNarArtifact extends DefaultArtifact {
- public AttachedNarArtifact(String groupId, String artifactId,
String version, String scope,
- String type, String classifier, boolean
optional) throws InvalidVersionSpecificationException {
- super(groupId, artifactId,
VersionRange.createFromVersionSpec(version), scope,
- type, classifier, null, optional);
- setArtifactHandler(new Handler(classifier));
+ public AttachedNarArtifact(String groupId, String artifactId,
+ String version, String scope, String type,
String classifier,
+ boolean optional) throws
InvalidVersionSpecificationException {
+ super(groupId, artifactId,
VersionRange.createFromVersionSpec(version),
+ scope, type, classifier, null,
optional);
+ this.setArtifactHandler(new Handler(classifier));
}
public AttachedNarArtifact(Artifact parent, String type, String
classifier) {
- super(parent.getGroupId(), parent.getArtifactId(),
parent.getVersionRange(), parent.getScope(),
- type, classifier, null, parent.isOptional());
- setArtifactHandler(new Handler(classifier));
+ super(parent.getGroupId(), parent.getArtifactId(),
parent
+ .getVersionRange(), parent.getScope(),
type, classifier, null,
+ parent.isOptional());
+ this.setArtifactHandler(new Handler(classifier));
}
private class Handler implements ArtifactHandler {
- private String classifier;
+ private final String classifier;
Handler(String classifier) {
this.classifier = classifier;
@@ -60,7 +63,7 @@
}
public boolean isAddedToClasspath() {
- return false;
+ return true;
}
}
}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/C.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/C.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/C.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Compiler.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Compiler.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Compiler.java 1.3
@@ -4,6 +4,7 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -26,7 +27,7 @@
* Abstract Compiler class
*
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: Compiler.java,v 1.1 2009/04/03 07:11:37 hardion Exp $
+ * @version $Id: Compiler.java,v 1.3 2009/05/06 16:42:11 hardion Exp $
*/
public abstract class Compiler {
@@ -71,6 +72,10 @@
*/
private boolean debug = false;
+ public boolean isDebug() {
+ return debug;
+ }
+
/**
* Enables generation of exception handling code.
*
@@ -493,4 +498,91 @@
}
}
}
+
+ public boolean equals(Object obj) {
+ if (obj == null) {
+ return false;
}
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Compiler other = (Compiler) obj;
+ if (this.sourceDirectory != other.sourceDirectory &&
(this.sourceDirectory == null ||
!this.sourceDirectory.equals(other.sourceDirectory))) {
+ return false;
+ }
+ if (this.includes != other.includes && (this.includes == null
|| !this.includes.equals(other.includes))) {
+ return false;
+ }
+ if (this.excludes != other.excludes && (this.excludes == null
|| !this.excludes.equals(other.excludes))) {
+ return false;
+ }
+ if ((this.optimize == null) ? (other.optimize != null) :
!this.optimize.equals(other.optimize)) {
+ return false;
+ }
+ if (this.defines != other.defines && (this.defines == null ||
!this.defines.equals(other.defines))) {
+ return false;
+ }
+ if ((this.defineSet == null) ? (other.defineSet != null) :
!this.defineSet.equals(other.defineSet)) {
+ return false;
+ }
+ if (this.undefines != other.undefines && (this.undefines ==
null || !this.undefines.equals(other.undefines))) {
+ return false;
+ }
+ if ((this.undefineSet == null) ? (other.undefineSet != null) :
!this.undefineSet.equals(other.undefineSet)) {
+ return false;
+ }
+ if (this.includePaths != other.includePaths &&
(this.includePaths == null ||
!this.includePaths.equals(other.includePaths))) {
+ return false;
+ }
+ if (this.systemIncludePaths != other.systemIncludePaths &&
(this.systemIncludePaths == null ||
!this.systemIncludePaths.equals(other.systemIncludePaths))) {
+ return false;
+ }
+ if (this.options != other.options && (this.options == null ||
!this.options.equals(other.options))) {
+ return false;
+ }
+ if ((this.optionSet == null) ? (other.optionSet != null) :
!this.optionSet.equals(other.optionSet)) {
+ return false;
+ }
+ return true;
+ }
+
+ public int hashCode() {
+ int hash = 7;
+ return hash;
+ }
+
+ public void enhancement(final Compiler other) {
+
+ if (!this.equals(other) && (other != null)) {
+
+ this.includes =
NarUtil.enhanceCollection(getName()+".includes",this.includes,
other.includes);
+
+ this.excludes =
NarUtil.enhanceCollection(getName()+".excludes",this.excludes,
other.excludes);
+ this.optimize =
NarUtil.enhanceDefaultObject(getName()+".optimize",this.optimize,
other.optimize, "none");
+ this.defines =
NarUtil.enhanceCollection(getName()+".defines",this.defines,
other.defines);
+ this.defineSet =
NarUtil.enhanceDefaultObject(getName()+".defineSet",this.defineSet,
other.defineSet, "");
+ this.undefines =
NarUtil.enhanceCollection(getName()+".undefines",this.undefines,
other.undefines);
+ this.undefineSet =
NarUtil.enhanceDefaultObject(getName()+".undefineSet",this.undefineSet,
other.undefineSet, "");
+ this.includePaths =
NarUtil.enhanceCollection(getName()+".includePaths",this.includePaths,
other.includePaths);
+ this.systemIncludePaths =
NarUtil.enhanceCollection(getName()+".systemIncludePaths",this.systemInc
ludePaths, other.systemIncludePaths);
+ this.options =
NarUtil.enhanceCollection(getName()+".options",this.options,
other.options);
+ this.optionSet =
NarUtil.enhanceDefaultObject(getName()+".optionSet",this.optionSet,
other.optionSet, "");
+
+ this.debug =
NarUtil.enhanceDefaultObject(getName()+".debug", this.debug,
other.debug,Boolean.FALSE);
+
+ this.exceptions =
NarUtil.enhanceDefaultObject(getName()+".exceptions", exceptions,
other.exceptions,Boolean.TRUE);
+
+ this.rtti= NarUtil.enhanceDefaultObject(getName()+".rtti",
this.rtti, (Boolean)other.rtti,Boolean.TRUE);
+
+ this.multiThreaded =
NarUtil.enhanceDefaultObject(getName()+".multiThreaded",
this.multiThreaded, (Boolean)other.multiThreaded,Boolean.FALSE);
+
+ this.clearDefaultDefines =
NarUtil.enhanceDefaultObject(getName()+".clearDefaultDefines",
this.clearDefaultDefines,
(Boolean)other.clearDefaultDefines,Boolean.FALSE);
+
+ this.clearDefaultUndefines =
NarUtil.enhanceDefaultObject(getName()+".clearDefaultUndefines",
this.clearDefaultUndefines,
(Boolean)other.clearDefaultUndefines,Boolean.FALSE);
+
+ this.clearDefaultOptions =
NarUtil.enhanceDefaultObject(getName()+".clearDefaultOptions",
this.clearDefaultOptions,
(Boolean)other.clearDefaultOptions,Boolean.FALSE);
+
+ }
+ }
+
+}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Cpp.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Cpp.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Cpp.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Executable.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Executable.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Executable.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Fortran.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Fortran.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Fortran.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Java.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Java.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Java.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Javah.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Javah.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Javah.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Lib.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Lib.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Lib.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Library.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Library.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Library.java 1.2
@@ -9,7 +9,7 @@
* Sets up a library to create
*
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: Library.java,v 1.1 2009/04/03 07:11:37 hardion Exp $
+ * @version $Id: Library.java,v 1.2 2009/05/05 07:27:07 hardion Exp $
*/
public class Library implements Executable {
@@ -114,4 +114,9 @@
public File getNarSystemDirectory() {
return narSystemDirectory;
}
+
+
+
+
+
}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Linker.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Linker.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Linker.java 1.3
@@ -27,7 +27,7 @@
* Linker tag
*
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: Linker.java,v 1.1 2009/04/03 07:11:37 hardion Exp $
+ * @version $Id: Linker.java,v 1.3 2009/05/06 16:42:11 hardion Exp $
*/
public class Linker {
@@ -345,4 +345,26 @@
}
}
}
+
+ public void enhancement(final Linker other) {
+
+ if (!this.equals(other) && (other != null)) {
+
+ this.options =
NarUtil.enhanceCollection("linker.options",this.options, other.options);
+ this.optionSet =
NarUtil.enhanceDefaultObject("linker.optionSet",this.optionSet,
other.optionSet,"");
+ this.libs =
NarUtil.enhanceCollection("linker.libs",this.libs, other.libs);
+ this.libSet =
NarUtil.enhanceDefaultObject("linker.libSet",this.libSet,
other.libSet,"");
+ this.sysLibs =
NarUtil.enhanceCollection("linker.sysLibs",this.sysLibs, other.sysLibs);
+ this.sysLibSet =
NarUtil.enhanceDefaultObject("linker.sysLibSet",this.sysLibSet,
other.sysLibSet,"");
+ this.narDependencyLibOrder =
NarUtil.enhanceDefaultObject("linker.narDependencyLibOrder",this.narDepe
ndencyLibOrder, other.narDependencyLibOrder,"");
+
+ this.incremental =
NarUtil.enhanceDefaultObject("linker.incremental",incremental,
other.incremental,Boolean.FALSE);
+
+ this.map = NarUtil.enhanceDefaultObject("linker.map",map,
other.map,Boolean.FALSE);
+
+ this.clearDefaultOptions =
NarUtil.enhanceDefaultObject("linker.clearDefaultOptions",clearDefaultOp
tions, other.clearDefaultOptions,Boolean.FALSE);
+
}
+ }
+
+}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArchiver.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArchiver.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArchiver.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArtifact.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArtifact.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArtifact.java 1.2
@@ -3,18 +3,20 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.versioning.VersionRange;
/**
*
* @author duns
- * @version $Id: NarArtifact.java,v 1.1 2009/04/03 07:11:37 hardion Exp
$
+ * @version $Id: NarArtifact.java,v 1.2 2009/05/14 15:06:40 hardion Exp
$
*/
public class NarArtifact extends DefaultArtifact {
private NarInfo narInfo;
public NarArtifact(Artifact dependency, NarInfo narInfo) {
- super(dependency.getGroupId(), dependency.getArtifactId(),
dependency.getVersionRange(),
+ //PATCH It's not this plugin which should resolve version
+ super(dependency.getGroupId(), dependency.getArtifactId(),
VersionRange.createFromVersion(dependency.getVersion()),
dependency.getScope(), dependency.getType(),
dependency.getClassifier(),
dependency.getArtifactHandler(),
dependency.isOptional());
this.narInfo = narInfo;
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArtifactHandler.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArtifactHandler.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarArtifactHandler.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarAssemblyMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarAssemblyMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarAssemblyMojo.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarCompileMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarCompileMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarCompileMojo.java 1.4
@@ -31,7 +31,7 @@
* @phase compile
* @requiresDependencyResolution compile
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: NarCompileMojo.java,v 1.1 2009/04/03 07:11:37 hardion
Exp $
+ * @version $Id: NarCompileMojo.java,v 1.4 2009/07/16 12:38:10 hardion
Exp $
*/
public class NarCompileMojo extends AbstractCompileMojo {
@@ -42,6 +42,9 @@
// make sure destination is there
getTargetDirectory().mkdirs();
+ // Parse Specific Configuration
+ this.parseSpecificConfigurations();
+
// check for source files
int noOfSources = 0;
noOfSources += getSourcesFor(getCpp()).size();
@@ -57,6 +60,9 @@
// FIXME, should the include paths be defined at
a higher level ?
getCpp().copyIncludeFiles(getMavenProject(),
new File(getTargetDirectory(),
"include"));
+ // VH: For C too
+ getC().copyIncludeFiles(getMavenProject(),
+ new File(getTargetDirectory(),
"include"));
} catch (IOException e) {
throw new MojoExecutionException(
"NAR: could not copy include
files", e);
@@ -107,7 +113,7 @@
File outFile;
if (type.equals(Library.EXECUTABLE)) {
// executable has no version number
- outFile = new File(outDir,
getMavenProject().getArtifactId());
+ outFile = new File(outDir, getOutput(null));
} else {
outFile = new File(outDir, getOutput(getAOL()));
}
@@ -169,8 +175,14 @@
if (include.exists()) {
task.createIncludePath().setPath(include.getPath());
}
+ //Looking for platform dependant include file
+ include = new File(include,getAOL().toString());
+ getLog().debug("Looking for for specific
aol directory: " + include);
+ if (include.exists()) {
+
task.createIncludePath().setPath(include.getPath());
}
}
+ }
// add linker
LinkerDef linkerDefinition = getLinker().getLinker(this,
antProject,
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarConstants.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarConstants.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarConstants.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarDownloadMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarDownloadMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarDownloadMojo.java 1.6
@@ -3,20 +3,25 @@
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
/**
- * Downloads any dependent NAR files. This includes the noarch and aol
type NAR files.
+ * Downloads any dependent NAR files. This includes the noarch and aol
type NAR
+ * files.
*
* @goal nar-download
* @phase generate-sources
* @requiresProject
* @requiresDependencyResolution
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: NarDownloadMojo.java,v 1.1 2009/04/03 07:11:37 hardion
Exp $
+ * @version $Id: NarDownloadMojo.java,v 1.6 2009/05/19 09:45:36 hardion
Exp $
*/
public class NarDownloadMojo extends AbstractDependencyMojo {
@@ -48,24 +53,34 @@
private List classifiers;
public void execute() throws MojoExecutionException,
MojoFailureException {
- getLog().info("Using AOL: "+getAOL());
+ this.getLog().info("Using AOL: " + this.getAOL());
- if (shouldSkip()) {
-
getLog().info("*********************************************************
**************");
- getLog().info("NAR Plugin SKIPPED, no NAR Libraries will
be produced.");
-
getLog().info("*********************************************************
**************");
+ if (this.shouldSkip()) {
+ this
+ .getLog()
+ .info(
+
"***********************************************************************
");
+ this.getLog().info(
+ "NAR Plugin SKIPPED, no NAR
Libraries will be produced.");
+ this
+ .getLog()
+ .info(
+
"***********************************************************************
");
return;
}
- List narArtifacts =
getNarManager().getNarDependencies("compile");
+ List narArtifacts =
this.getNarManager().getNarDependencies("compile");
+
if (classifiers == null) {
-
getNarManager().downloadAttachedNars(narArtifacts,
remoteArtifactRepositories,
- artifactResolver, null);
+ // TODO Take account classifier from artifact
like else part
+
this.getNarManager().downloadAttachedNars(narArtifacts,
+ remoteArtifactRepositories,
artifactResolver, null);
} else {
for (Iterator j = classifiers.iterator();
j.hasNext();) {
-
getNarManager().downloadAttachedNars(narArtifacts,
remoteArtifactRepositories,
- artifactResolver,
(String) j.next());
+
this.getNarManager().downloadAttachedNars(narArtifacts,
+
remoteArtifactRepositories, artifactResolver,
+ (String) j.next());
}
}
}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarInfo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarInfo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarInfo.java 1.4
@@ -15,7 +15,7 @@
/**
*
* @author Mark Donszelmann
- * @version $Id: NarInfo.java,v 1.1 2009/04/03 07:11:37 hardion Exp $
+ * @version $Id: NarInfo.java,v 1.4 2009/07/22 08:45:18 hardion Exp $
*/
public class NarInfo {
@@ -34,15 +34,16 @@
// Fill with general properties.nar file
File propertiesDir = new
File("src/main/resources/META-INF/nar/"
+ groupId + "/" + artifactId);
- if (!propertiesDir.exists()) {
- propertiesDir.mkdirs();
- }
+ if (propertiesDir.exists()) {
+
File propertiesFile = new File(propertiesDir,
NarInfo.NAR_PROPERTIES);
+
try {
info.load(new FileInputStream(propertiesFile));
} catch (IOException ioe) {
// ignored
}
+ }
}
@@ -88,10 +89,19 @@
* @return
*/
public String getBinding(AOL aol, String defaultBinding) {
- return getProperty(aol, "libs.binding", defaultBinding);
+ String result = getProperty(aol, "libs.binding",
defaultBinding);
+
+ // FIXME SOLEIL Mantis:13184
+ if(result!=null && result.equals("executable")){
+ result="bin";
}
+ return result;
+ }
public void setBinding(AOL aol, String value) {
+ if(value.equals("executable")){
+ value="bin";
+ }
setProperty(aol, "libs.binding", value);
}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarIntegrationTestMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarIntegrationTestMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarIntegrationTestMojo.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarJavahMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarJavahMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarJavahMojo.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarLogger.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarLogger.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarLogger.java 1.2
@@ -10,7 +10,7 @@
* Logger to connect the Ant logging to the Maven logging.
*
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: NarLogger.java,v 1.1 2009/04/03 07:11:37 hardion Exp $
+ * @version $Id: NarLogger.java,v 1.2 2009/07/22 14:15:57 hardion Exp $
*/
public class NarLogger implements BuildListener {
@@ -54,7 +54,10 @@
log.warn(msg);
break;
case Project.MSG_INFO:
- if ((msg.indexOf("files were compiled") >= 0) ||
(msg.indexOf("Linking...") >= 0)) {
+ if ((msg.indexOf("files were compiled") >= 0)
+ || (msg.indexOf("Linking...") >= 0)
+ || (msg.indexOf("Starting link") >= 0)
+ ||
(msg.indexOf("Execute:Java13CommandLauncher") >= 0)) {
log.info(msg);
} else if (msg.indexOf("error") >= 0) {
log.error(msg);
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarManager.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarManager.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarManager.java 1.6
@@ -6,17 +6,23 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.LinkedList;
+import java.util.Set;
import java.util.jar.JarFile;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.DefaultArtifactResolver;
+import
org.apache.maven.artifact.transform.ReleaseArtifactTransformation;
import
org.apache.maven.artifact.versioning.InvalidVersionSpecificationExceptio
n;
+import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
@@ -29,16 +35,17 @@
public class NarManager {
- private Log log;
+ private final Log log;
- private MavenProject project;
+ private final MavenProject project;
- private ArtifactRepository repository;
+ private final ArtifactRepository repository;
- private AOL defaultAOL;
- private String linkerName;
+ private final AOL defaultAOL;
+ private final String linkerName;
- private String[] narTypes = { "noarch", Library.STATIC,
Library.SHARED, Library.JNI, Library.PLUGIN };
+ private final String[] narTypes = { "noarch", Library.STATIC,
+ Library.SHARED, Library.JNI, Library.PLUGIN };
public NarManager(Log log, ArtifactRepository repository,
MavenProject project, String architecture,
String os, Linker linker)
@@ -46,8 +53,8 @@
this.log = log;
this.repository = repository;
this.project = project;
- this.defaultAOL = NarUtil.getAOL(architecture, os,
linker, null);
- this.linkerName = NarUtil.getLinkerName(architecture,
os, linker);
+ defaultAOL = NarUtil.getAOL(architecture, os, linker,
null);
+ linkerName = NarUtil.getLinkerName(architecture, os,
linker);
}
/**
@@ -56,16 +63,75 @@
*/
public List/* <NarArtifact> */getNarDependencies(String scope)
throws MojoExecutionException {
+
+ //SOLEIL LOG
+ log.debug("List of dependencies : ");
+ List dependencies = project.getDependencies();
+ for (Iterator iterator = dependencies.iterator();
iterator.hasNext();) {
+ Dependency object = (Dependency) iterator.next();
+ log.debug("Found dependency : " + object.toString());
+ }
+ log.debug("List of artifacts : ");
+// List artifacts = project.getCompileClasspathElements();
//Artifacts();
+ Set artifacts = project.getArtifacts();
+ //project.getCompileClasspathElements();
+ for (Iterator iterator = artifacts.iterator();
iterator.hasNext();) {
+ Artifact object = (Artifact) iterator.next();
+ log.debug("Found artifact : " + object.toString() + " "
+ object.getBaseVersion() + " "+ object.getVersion() + " " +
object.isResolved());
+
+ log.debug("Found artifact : " + object.toString() + " "
+ object.getBaseVersion() + " "+ object.getVersion() + " " +
object.isResolved());
+ }
+
+ Set darts = project.getDependencyArtifacts();
+ for (Iterator iterator = darts.iterator();
iterator.hasNext();) {
+ log.debug("Found dart : " + iterator.next());
+ }
+ //SOLEIL LOG
+
+
+
List narDependencies = new LinkedList();
- for (Iterator i = getDependencies(scope).iterator();
i.hasNext();) {
+ for (Iterator i =
this.getDependencies(scope).iterator(); i.hasNext();) {
Artifact dependency = (Artifact) i.next();
- log.debug("Examining artifact for NarInfo:
"+dependency);
+ log.debug("Examining artifact for NarInfo: " +
dependency);
- NarInfo narInfo = getNarInfo(dependency);
+ NarInfo narInfo = this.getNarInfo(dependency);
+ // TODO Take a account when it's a direct
NarAttached dependency
+ // with classifier data
+ // IDEA : create a fake NarInfo
+ if (narInfo == null) {
+ narInfo = new
NarInfo(dependency.getGroupId(), dependency
+ .getArtifactId(),
dependency.getVersion(), log);
+ // Setting binding from classifier
+ String classifier =
dependency.getClassifier();
+ if (classifier != null) {
+ int dash =
classifier.lastIndexOf('-');
+ if (dash >= 0) {
+ AOL aol = new
AOL(classifier.substring(0, dash));
+ String type =
classifier.substring(dash + 1);
+ narInfo.setBinding(aol,
type);
+
+ // Add NAR from
+ narInfo.setNar(null,
type, dependency.getGroupId()
+ + ":" +
dependency.getArtifactId() + ":"
+ +
NarConstants.NAR_TYPE + ":"
+ + (aol
!= null ? "${aol}-" : "") + type);
+
+ // Add noarch
+ narInfo.setNar(null,
NarConstants.NAR_NO_ARCH,
+
dependency.getGroupId() + ":"
+
+ dependency.getArtifactId() + ":"
+
+ NarConstants.NAR_TYPE + ":"
+
+ NarConstants.NAR_NO_ARCH);
+ }
+ }
+ }
+ // END OF PATCH
if (narInfo != null) {
log.debug(" - added as
NarDependency");
narDependencies.add(new
NarArtifact(dependency, narInfo));
}
+ //
}
return narDependencies;
}
@@ -79,22 +145,24 @@
public Map/* <String, List<AttachedNarArtifact>>
*/getAttachedNarDependencyMap(
String scope) throws MojoExecutionException,
MojoFailureException {
Map attachedNarDependencies = new HashMap();
- for (Iterator i = getNarDependencies(scope).iterator();
i.hasNext();) {
+ for (Iterator i =
this.getNarDependencies(scope).iterator(); i
+ .hasNext();) {
Artifact dependency = (Artifact) i.next();
for (int j = 0; j < narTypes.length; j++) {
- List artifactList =
getAttachedNarDependencies(dependency,
+ List artifactList =
this.getAttachedNarDependencies(dependency,
defaultAOL,
narTypes[j]);
- if (artifactList != null)
+ if (artifactList != null) {
attachedNarDependencies.put(narTypes[j], artifactList);
}
}
+ }
return attachedNarDependencies;
}
public List/* <AttachedNarArtifact>
*/getAttachedNarDependencies(
List/* <NarArtifacts> */narArtifacts)
throws MojoExecutionException,
MojoFailureException {
- return getAttachedNarDependencies(narArtifacts, null);
+ return this.getAttachedNarDependencies(narArtifacts,
null);
}
public List/* <AttachedNarArtifact>
*/getAttachedNarDependencies(
@@ -112,7 +180,7 @@
type = classifier.substring(dash + 1);
}
}
- return getAttachedNarDependencies(narArtifacts, aol,
type);
+ return this.getAttachedNarDependencies(narArtifacts,
aol, type);
}
/**
@@ -143,9 +211,9 @@
List artifactList = new ArrayList();
for (Iterator i = narArtifacts.iterator(); i.hasNext();)
{
Artifact dependency = (Artifact) i.next();
- NarInfo narInfo = getNarInfo(dependency);
+ NarInfo narInfo = this.getNarInfo(dependency);
if (noarch) {
-
artifactList.addAll(getAttachedNarDependencies(dependency,
+
artifactList.addAll(this.getAttachedNarDependencies(dependency,
null, "noarch"));
}
@@ -156,11 +224,11 @@
// FIXME kludge, but does not work anymore since
AOL is now a class
if (aol.equals("noarch")) {
// FIXME no handling of local
-
artifactList.addAll(getAttachedNarDependencies(dependency,
+
artifactList.addAll(this.getAttachedNarDependencies(dependency,
null, "noarch"));
} else {
-
artifactList.addAll(getAttachedNarDependencies(dependency, aol,
- binding));
+
artifactList.addAll(this.getAttachedNarDependencies(dependency,
+ aol, binding));
}
}
return artifactList;
@@ -169,16 +237,18 @@
private List/* <AttachedNarArtifact>
*/getAttachedNarDependencies(
Artifact dependency, AOL aol, String type)
throws MojoExecutionException,
MojoFailureException {
- log.debug("GetNarDependencies for " + dependency + ",
aol: " + aol + ", type: " + type);
+ log.debug("GetNarDependencies for " + dependency + ",
aol: " + aol
+ + ", type: " + type);
List artifactList = new ArrayList();
- NarInfo narInfo = getNarInfo(dependency);
+ NarInfo narInfo = this.getNarInfo(dependency);
String[] nars = narInfo.getAttachedNars(aol, type);
// FIXME Move this to NarInfo....
if (nars != null) {
for (int j = 0; j < nars.length; j++) {
log.debug(" Checking: " + nars[j]);
- if (nars[j].equals(""))
+ if (nars[j].equals("")) {
continue;
+ }
String[] nar = nars[j].split(":", 5);
if (nar.length >= 4) {
try {
@@ -189,8 +259,8 @@
// translate for
instance g++ to gcc...
aol =
narInfo.getAOL(aol);
if (aol != null) {
- classifier =
NarUtil.replace("${aol}", aol.toString(),
-
classifier);
+ classifier =
NarUtil.replace("${aol}", aol
+
.toString(), classifier);
}
String version =
nar.length >= 5 ? nar[4].trim()
:
dependency.getVersion();
@@ -216,22 +286,53 @@
throws MojoExecutionException {
// FIXME reported to maven developer list, isSnapshot
changes behaviour
// of getBaseVersion, called in pathOf.
- if (dependency.isSnapshot())
+ if (dependency.isSnapshot()) {
;
+ }
+ // TODO Take a account when it's a direct NarAttached
dependency
+ // with classifier data
+ // IDEA : create a fake NarInfo
+ NarInfo info = null;
+ if (dependency instanceof NarArtifact) {
+ info = ((NarArtifact) dependency).getNarInfo();
+ } else {
- File file = new File(repository.getBasedir(), repository
- .pathOf(dependency));
+ //XXX : Problem with RELEASE version label
+ File file = null;
+
if(dependency.getVersion().equals(Artifact.RELEASE_VERSION)){
+ file = dependency.getFile();
+ // RESOLVE VERSION
+ // Maybe with DefaultArtifactResolver dar = ???
+ //
ReleaseArtifactTransformation.transformForResolve
+ //new
ReleaseArtifactTransformation().transformForResolve(dependency,
project.getRepositories(), repository);
+ // Quickfix : version from file !!!
+ String version = file.getName();
+ String artifactId = dependency.getArtifactId();
+ int begin =
version.indexOf(artifactId)+artifactId.length()+1;//index of the first
character of version string
+ int end = version.indexOf(".jar");
+ version = version.substring(begin,end);
+ dependency.setVersion(version);
+ //
+
+ }else{
+ // the correct mean is above but i don't want break old
behaviour
+ file = new File(repository.getBasedir(),
repository.pathOf(dependency));
+ }
+
+
JarFile jar = null;
try {
jar = new JarFile(file);
- NarInfo info = new
NarInfo(dependency.getGroupId(), dependency
+ info = new
NarInfo(dependency.getGroupId(), dependency
.getArtifactId(),
dependency.getVersion(), log);
- if (!info.exists(jar))
- return null;
+ if (info.exists(jar)) {
info.read(jar);
- return info;
+ } else {
+ info = null;
+ }
} catch (IOException e) {
- throw new MojoExecutionException("Error while
reading " + file, e);
+ throw new MojoExecutionException("Error
while reading " + file,
+ e);
} finally {
if (jar != null) {
try {
@@ -242,12 +343,15 @@
}
}
}
+ return info;
+ }
public File getNarFile(Artifact dependency) throws
MojoFailureException {
// FIXME reported to maven developer list, isSnapshot
changes behaviour
// of getBaseVersion, called in pathOf.
- if (dependency.isSnapshot())
+ if (dependency.isSnapshot()) {
;
+ }
return new File(repository.getBasedir(),
NarUtil.replace("${aol}",
defaultAOL.toString(),
repository.pathOf(dependency)));
}
@@ -258,16 +362,34 @@
} else if (scope.equals("runtime")) {
return project.getRuntimeArtifacts();
}
- return project.getCompileArtifacts();
+ return this.getCompileArtifacts();
}
+ // Hacked from maven source without isAddedToClasspath() check
+ private List getCompileArtifacts() {
+ List list = new
ArrayList(project.getArtifacts().size());
+
+ for (Iterator i = project.getArtifacts().iterator();
i.hasNext();) {
+ Artifact a = (Artifact) i.next();
+
+ // TODO: let the scope handler deal with this
+ if (Artifact.SCOPE_COMPILE.equals(a.getScope())
+ ||
Artifact.SCOPE_PROVIDED.equals(a.getScope())
+ ||
Artifact.SCOPE_SYSTEM.equals(a.getScope())) {
+ list.add(a);
+ }
+ }
+ return list;
+ }
+
public void downloadAttachedNars(List/* <NarArtifacts>
*/narArtifacts,
List remoteRepositories, ArtifactResolver
resolver,
String classifier) throws
MojoExecutionException,
MojoFailureException {
// FIXME this may not be the right way to do this.... -U
ignored and
// also SNAPSHOT not used
- List dependencies =
getAttachedNarDependencies(narArtifacts, classifier);
+ List dependencies =
this.getAttachedNarDependencies(narArtifacts,
+ classifier);
for (Iterator i = dependencies.iterator(); i.hasNext();)
{
Artifact dependency = (Artifact) i.next();
try {
@@ -286,17 +408,19 @@
public void unpackAttachedNars(List/* <NarArtifacts>
*/narArtifacts,
ArchiverManager manager, String classifier,
String os)
throws MojoExecutionException,
MojoFailureException {
- log.debug("Unpack called for OS: "+os+", classifier:
"+classifier+" for NarArtifacts {");
- for (Iterator i = narArtifacts.iterator(); i.hasNext();
) {
- log.debug(" - "+((NarArtifact)i.next()));
+ log.debug("Unpack called for OS: " + os + ", classifier:
" + classifier
+ + " for NarArtifacts {");
+ for (Iterator i = narArtifacts.iterator(); i.hasNext();)
{
+ log.debug(" - " + (i.next()));
}
log.debug("}");
// FIXME, kludge to get to download the -noarch, based
on classifier
- List dependencies =
getAttachedNarDependencies(narArtifacts, classifier);
+ List dependencies =
this.getAttachedNarDependencies(narArtifacts,
+ classifier);
for (Iterator i = dependencies.iterator(); i.hasNext();)
{
Artifact dependency = (Artifact) i.next();
log.debug("Unpack " + dependency);
- File file = getNarFile(dependency);
+ File file = this.getNarFile(dependency);
File narLocation = new
File(file.getParentFile(), "nar");
File flagFile = new File(narLocation,
FileUtils.basename(file
.getPath(), "." +
AbstractNarMojo.NAR_EXTENSION)
@@ -314,22 +438,25 @@
if (process) {
try {
- unpackNar(manager, file,
narLocation);
+ this.unpackNar(manager, file,
narLocation);
if
(!NarUtil.getOS(os).equals("Windows")) {
-
NarUtil.makeExecutable(new File(narLocation, "bin/"+defaultAOL),
- log);
+
NarUtil.makeExecutable(new File(narLocation, "bin/"
+ +
defaultAOL), log);
// FIXME clumsy
if
(defaultAOL.hasLinker("g++")) {
-
NarUtil.makeExecutable(new File(narLocation,
"bin/"+NarUtil.replace("g++", "gcc", defaultAOL.toString())),
-
log);
+
NarUtil.makeExecutable(new File(narLocation, "bin/"
+
+ NarUtil.replace("g++", "gcc", defaultAOL
+
.toString())), log);
}
}
if (linkerName.equals("gcc") ||
linkerName.equals("g++")) {
- NarUtil.runRanlib(new
File(narLocation, "lib/"+defaultAOL), log);
+ NarUtil.runRanlib(new
File(narLocation, "lib/"
+ +
defaultAOL), log);
// FIXME clumsy
if
(defaultAOL.hasLinker("g++")) {
-
NarUtil.runRanlib(new File(narLocation, "lib/"+NarUtil.replace("g++",
"gcc", defaultAOL.toString())),
-
log);
+
NarUtil.runRanlib(new File(narLocation, "lib/"
+
+ NarUtil.replace("g++", "gcc", defaultAOL
+
.toString())), log);
}
}
FileUtils.fileDelete(flagFile.getPath());
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarPackageMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarPackageMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarPackageMojo.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarResourcesMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarResourcesMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarResourcesMojo.java 1.2
@@ -23,7 +23,7 @@
* @phase process-resources
* @requiresProject
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: NarResourcesMojo.java,v 1.1 2009/04/03 07:11:37
hardion Exp $
+ * @version $Id: NarResourcesMojo.java,v 1.2 2009/04/03 11:52:36
hardion Exp $
*/
public class NarResourcesMojo extends AbstractCompileMojo {
@@ -62,14 +62,16 @@
/**
* To look up Archiver/UnArchiver implementations
*
- * @parameter
expression="${component.org.codehaus.plexus.archiver.manager.ArchiverMan
ager}"
+ * @parameter expression=
+ *
"${component.org.codehaus.plexus.archiver.manager.ArchiverManager}"
* @required
*/
private ArchiverManager archiverManager;
public void execute() throws MojoExecutionException,
MojoFailureException {
- if (shouldSkip())
+ if (this.shouldSkip()) {
return;
+ }
// scan for AOLs
File aolDir = new File(resourceDirectory, "aol");
@@ -79,14 +81,15 @@
boolean ignore = false;
for (Iterator j =
FileUtils.getDefaultExcludesAsList()
.iterator();
j.hasNext();) {
- String exclude =
(String)j.next();
- if
(SelectorUtils.matchPath(exclude.replace('/', File.separatorChar),
aols[i])) {
+ String exclude = (String)
j.next();
+ if
(SelectorUtils.matchPath(exclude.replace('/',
+
File.separatorChar), aols[i])) {
ignore = true;
break;
}
}
if (!ignore) {
- copyResources(new File(aolDir,
aols[i]));
+ this.copyResources(new
File(aolDir, aols[i]));
}
}
}
@@ -100,7 +103,8 @@
// copy headers
File includeDir = new File(aolDir,
resourceIncludeDir);
if (includeDir.exists()) {
- File includeDstDir = new
File(getTargetDirectory(), "include");
+ File includeDstDir = new
File(this.getTargetDirectory(),
+ "include");
includeDstDir = new File(includeDstDir,
aol);
copied += NarUtil.copyDirectoryStructure(includeDir,
@@ -110,7 +114,7 @@
// copy binaries
File binDir = new File(aolDir, resourceBinDir);
if (binDir.exists()) {
- File binDstDir = new
File(getTargetDirectory(), "bin");
+ File binDstDir = new
File(this.getTargetDirectory(), "bin");
binDstDir = new File(binDstDir, aol);
copied +=
NarUtil.copyDirectoryStructure(binDir, binDstDir,
@@ -121,33 +125,54 @@
File libDir = new File(aolDir, resourceLibDir);
if (libDir.exists()) {
// create all types of libs
- for (Iterator i =
getLibraries().iterator(); i.hasNext();) {
+ for (Iterator i =
this.getLibraries().iterator(); i.hasNext();) {
Library library = (Library)
i.next();
String type = library.getType();
- File libDstDir = new
File(getTargetDirectory(), "lib");
+
+ // Copy from typed directory
+ File typedLibDir = new
File(libDir, type);
+ if (typedLibDir.exists()) {
+
+ File libDstDir = new
File(this.getTargetDirectory(),
+ "lib");
libDstDir = new File(libDstDir,
aol);
libDstDir = new File(libDstDir,
type);
// filter files for lib
- // TODO For shared library under windows copy the
.lib too
- String includes = "**/*."
- +
NarUtil.getDefaults().getProperty(
-
NarUtil.getAOLKey(aol) + "." + type
-
+ ".extension");
- copied +=
NarUtil.copyDirectoryStructure(libDir, libDstDir,
- includes,
NarUtil.DEFAULT_EXCLUDES);
+ String includes =
"**/*.*";
+ // +
NarUtil.getDefaults().getProperty(
+ //
NarUtil.getAOLKey(aol) + "." + type
+ // + ".extension");
+ // // For shared library
under windows copy the .lib too
+ // if
((type.equals(Library.SHARED))
+ // &&
NarUtil.getAOLKey(aol).endsWith(
+ // "Windows-msvc")) {
+ // includes = includes
+ // + ","
+ // +
NarUtil.getDefaults().getProperty(
+ //
NarUtil.getAOLKey(aol) + "."
+ // + Library.STATIC
+ // + ".extension");
+ // this.getLog().debug(
+ // "add import lib for
dll for windows ");
+ // }
+ copied +=
NarUtil.copyDirectoryStructure(typedLibDir,
+
libDstDir, includes, NarUtil.DEFAULT_EXCLUDES);
}
}
+ }
// unpack jar files
- File classesDirectory = new
File(getOutputDirectory(),"classes");
+ File classesDirectory = new
File(this.getOutputDirectory(),
+ "classes");
classesDirectory.mkdirs();
List jars = FileUtils.getFiles(aolDir,
"**/*.jar", null);
- for (Iterator i=jars.iterator(); i.hasNext(); )
{
- File jar = (File)i.next();
- getLog().debug("Unpacking jar "+jar);
+ for (Iterator i = jars.iterator(); i.hasNext();)
{
+ File jar = (File) i.next();
+ this.getLog().debug("Unpacking jar " +
jar);
UnArchiver unArchiver;
- unArchiver =
archiverManager.getUnArchiver(AbstractNarMojo.NAR_ROLE_HINT);
+ unArchiver = archiverManager
+
.getUnArchiver(AbstractNarMojo.NAR_ROLE_HINT);
unArchiver.setSourceFile(jar);
unArchiver.setDestDirectory(classesDirectory);
unArchiver.extract();
@@ -157,9 +182,10 @@
} catch (NoSuchArchiverException e) {
throw new MojoExecutionException("NAR: Could not
find archiver", e);
} catch (ArchiverException e) {
- throw new MojoExecutionException("NAR: Could not
unarchive jar file", e);
+ throw new MojoExecutionException(
+ "NAR: Could not unarchive jar
file", e);
}
- getLog().info("Copied " + copied + " resources for " +
aol);
+ this.getLog().info("Copied " + copied + " resources for
" + aol);
}
}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarSystemGenerate.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarSystemGenerate.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarSystemGenerate.java 1.2
@@ -7,6 +7,10 @@
import java.io.PrintWriter;
import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -18,13 +22,25 @@
* @phase generate-sources
* @requiresProject
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: NarSystemGenerate.java,v 1.1 2009/04/03 07:11:37
hardion Exp $
+ * @version $Id: NarSystemGenerate.java,v 1.2 2009/05/15 16:20:58
hardion Exp $
*/
public class NarSystemGenerate extends AbstractCompileMojo {
public void execute() throws MojoExecutionException,
MojoFailureException {
if (shouldSkip())
return;
+ this.getLog().debug("List of dependencies : ");
+ List dependencies =
this.getMavenProject().getDependencies();
+ for (Iterator iterator = dependencies.iterator();
iterator.hasNext();) {
+ Dependency object = (Dependency)
iterator.next();
+ this.getLog().debug("Found dependency : " +
object.toString());
+ }
+ this.getLog().debug("List of artifacts : ");
+ Set artifacts = this.getMavenProject().getArtifacts();
+ for (Iterator iterator = artifacts.iterator();
iterator.hasNext();) {
+ Artifact object = (Artifact) iterator.next();
+ this.getLog().debug("Found artifact : " + object.toString()
+" "+ object.getVersion()+" "+object.isResolved());
+ }
// get packageName if specified for JNI.
String packageName = null;
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarTestCompileMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarTestCompileMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarTestCompileMojo.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarTestMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarTestMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarTestMojo.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUnArchiver.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUnArchiver.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUnArchiver.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUnpackMojo.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUnpackMojo.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUnpackMojo.java 1.11
@@ -4,8 +4,15 @@
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
/**
@@ -13,11 +20,11 @@
* and also sets flags on binaries and corrects static libraries.
*
* @goal nar-unpack
- * @phase process-sources
+ * @phase generate-sources
* @requiresProject
* @requiresDependencyResolution
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark
Donszelmann</a>
- * @version $Id: NarUnpackMojo.java,v 1.1 2009/04/03 07:11:37 hardion
Exp $
+ * @version $Id: NarUnpackMojo.java,v 1.11 2009/05/19 07:45:32 hardion
Exp $
*/
public class NarUnpackMojo extends AbstractDependencyMojo {
@@ -38,8 +45,9 @@
private ArchiverManager archiverManager;
public void execute() throws MojoExecutionException,
MojoFailureException {
- if (shouldSkip()) return;
-
+ if (shouldSkip()) {
+ return;
+ }
List narArtifacts =
getNarManager().getNarDependencies("compile");
if (classifiers == null) {
getNarManager().unpackAttachedNars(narArtifacts,
archiverManager, null, getOS());
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUtil.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUtil.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/NarUtil.java 1.4
@@ -6,6 +6,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -18,13 +19,14 @@
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugin.logging.SystemStreamLog;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.PropertyUtils;
import org.codehaus.plexus.util.cli.Commandline;
/**
* @author Mark Donszelmann
- * @version $Id: NarUtil.java,v 1.1 2009/04/03 07:11:37 hardion Exp $
+ * @version $Id: NarUtil.java,v 1.4 2009/07/20 17:13:38 hardion Exp $
*/
public class NarUtil {
@@ -207,6 +209,7 @@
/* Matcher. jdk 1.4
*/quoteReplacement(replacement.toString()));
}
+
/* for jdk 1.4 */
private static String quote(String s) {
int slashEIndex = s.indexOf("\\E");
@@ -414,4 +417,31 @@
}
}
+ private static Log LOG = new SystemStreamLog();
+
+ public final static <T extends Collection> T
enhanceCollection(String name, final T original, final T enhancer) {
+ T result = original;
+// LOG.debug(name+" Enhance Collection :"+original+" (original)
:"+enhancer+" (enhancer)");
+ // Not initialized List case
+ if (enhancer != null) {
+ if (original == null) {
+ result = enhancer;
+ } else {
+ result.addAll(enhancer);
}
+// LOG.debug(name+" Collection enhanced:"+original+"
(original) :"+enhancer+" (enhancer) : "+result+" (result)");
+ }
+ return result;
+ }
+
+ public final static <T> T enhanceDefaultObject(String name, final
T original, final T enhancer, final T defaultValue) {
+ T result = original;
+// LOG.debug(name+" Enhance Object :"+original+" (original)
:"+enhancer+" (enhancer)");
+ if ((enhancer != null) && !(enhancer.equals(defaultValue))) {
+ result = enhancer;
+// LOG.debug(name+" Object enhanced:"+original+" (original)
:"+enhancer+" (enhancer) : "+result+" (result)");
+ }
+ return result;
+ }
+
+}
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/OS.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/OS.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/OS.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/SysLib.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/SysLib.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/SysLib.java 1.1
Index:
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Test.java
---
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Test.java 1.1
+++
ContinuousIntegration/maven/plugins/freehep-nar-plugin/src/main/java/org
/freehep/maven/nar/Test.java 1.1
Best regards,
Vincent Hardion
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org