You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2017/06/26 15:35:00 UTC
[12/36] git commit: [flex-falcon] [refs/heads/develop] - fix issues
with library projects in FB
fix issues with library projects in FB
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/b36ee033
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/b36ee033
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/b36ee033
Branch: refs/heads/develop
Commit: b36ee0336b9a0e0cd3be8114bd007d047f7213f0
Parents: 61b2283
Author: Alex Harui <ah...@apache.org>
Authored: Wed May 17 16:32:15 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed May 17 16:36:27 2017 -0700
----------------------------------------------------------------------
.../apache/flex/compiler/clients/COMPJSC.java | 3 ++
.../flex/compiler/clients/COMPJSCFlex.java | 38 +++++++++++++
.../apache/flex/compiler/clients/MXMLJSC.java | 4 +-
.../src/main/java/flex2/tools/oem/Library.java | 57 +++++++++++++++++---
.../tools/oem/internal/OEMConfiguration.java | 15 ++++++
.../java/flex2/tools/oem/internal/OEMUtil.java | 40 ++++++++++++++
6 files changed, 148 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b36ee033/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java
index f13ee22..8b82cb8 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSC.java
@@ -202,6 +202,7 @@ public class COMPJSC extends MXMLJSC
case SWF:
System.out.println("COMPC");
COMPC compc = new COMPC();
+ mxmlc = compc;
compc.configurationClass = JSGoogCompcConfiguration.class;
result = compc.mainNoExit(removeJSArgs(args));
if (result != 0)
@@ -213,6 +214,7 @@ public class COMPJSC extends MXMLJSC
case JS_FLEX:
System.out.println("COMPCJSCFlex");
COMPJSCFlex flex = new COMPJSCFlex();
+ lastCompiler = flex;
result = flex.mainNoExit(removeASArgs(args), problems.getProblems(), false);
if (result != 0)
{
@@ -221,6 +223,7 @@ public class COMPJSC extends MXMLJSC
break;
case JS_NATIVE:
COMPJSCNative jsc = new COMPJSCNative();
+ lastCompiler = jsc;
result = jsc.mainNoExit(removeASArgs(args), problems.getProblems(), false);
if (result != 0)
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b36ee033/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java
index c403bbc..3744a67 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/COMPJSCFlex.java
@@ -29,8 +29,10 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
+import java.util.LinkedList;
import java.util.List;
import java.util.Set;
+import java.util.TreeSet;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
@@ -64,6 +66,7 @@ import org.apache.flex.compiler.problems.UnableToBuildSWFProblem;
import org.apache.flex.compiler.targets.ITarget.TargetType;
import org.apache.flex.compiler.targets.ITargetSettings;
import org.apache.flex.compiler.units.ICompilationUnit;
+import org.apache.flex.compiler.units.ICompilationUnit.UnitType;
import org.apache.flex.swc.io.SWCReader;
/**
@@ -525,4 +528,39 @@ public class COMPJSCFlex extends MXMLJSCFlex
{
return TargetType.SWC;
}
+
+ @Override
+ public List<String> getSourceList()
+ {
+ ArrayList<String> list = new ArrayList<String>();
+ LinkedList<ICompilerProblem> problemList = new LinkedList<ICompilerProblem>();
+ try
+ {
+ Collection<ICompilerProblem> errors = new ArrayList<ICompilerProblem>();
+ Collection<ICompilationUnit> roots = ((FlexJSSWCTarget)target).getReachableCompilationUnits(errors);
+ Collection<ICompilationUnit> units = project.getReachableCompilationUnitsInSWFOrder(roots);
+ for (ICompilationUnit unit : units)
+ {
+ UnitType ut = unit.getCompilationUnitType();
+ if (ut == UnitType.AS_UNIT || ut == UnitType.MXML_UNIT)
+ {
+ list.add(unit.getAbsoluteFilename());
+ }
+ }
+ }
+ catch (InterruptedException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return list;
+ }
+
+ @Override
+ public String getMainSource()
+ {
+ return null;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b36ee033/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
index 0916598..1f14259 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/clients/MXMLJSC.java
@@ -261,8 +261,8 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
protected ITargetSettings targetSettings;
protected IJSApplication jsTarget;
private IJSPublisher jsPublisher;
- private MXMLC mxmlc;
- private JSCompilerEntryPoint lastCompiler;
+ protected MXMLC mxmlc;
+ protected JSCompilerEntryPoint lastCompiler;
public boolean noLink;
public OutputStream err;
public Class<? extends Configuration> configurationClass = JSGoogConfiguration.class;
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b36ee033/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java
----------------------------------------------------------------------
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java
index bdcb3be..182c325 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/Library.java
@@ -37,13 +37,16 @@ import java.util.TreeSet;
import java.lang.annotation.Annotation;
import java.net.URI;
-import org.apache.flex.compiler.clients.COMPC;
+import org.apache.flex.compiler.clients.COMPJSC;
import org.apache.flex.compiler.clients.problems.ProblemFormatter;
import org.apache.flex.compiler.clients.problems.ProblemQuery;
import org.apache.flex.compiler.problems.CompilerProblemSeverity;
import org.apache.flex.compiler.problems.ICompilerProblem;
import org.apache.flex.compiler.problems.annotations.DefaultSeverity;
+import flex2.compiler.CompilerException;
+import flex2.compiler.Source;
+import flex2.compiler.SourceList;
import flex2.compiler.common.CompilerConfiguration;
import flex2.compiler.config.ConfigurationException;
import flex2.compiler.io.FileUtil;
@@ -55,6 +58,9 @@ import flex2.compiler.util.CompilerMessage;
import flex2.compiler.util.MimeMappings;
import flex2.compiler.util.PerformanceData;
import flex2.compiler.util.ThreadLocalToolkit;
+import flex2.linker.SimpleMovie;
+import flex2.tools.oem.internal.ApplicationCompilerConfiguration;
+import flex2.tools.oem.internal.LibraryCompilerConfiguration;
import flex2.tools.oem.internal.OEMConfiguration;
import flex2.tools.oem.internal.OEMReport;
import flex2.tools.oem.internal.OEMUtil;
@@ -249,6 +255,10 @@ public class Library implements Builder, Cloneable
private CompilerControl cc;
private ApplicationCache applicationCache;
private LibraryCache libraryCache;
+
+ private List<Source> compiledSources;
+ private SourceList sourceList;
+
// clean() would null out the following variables
//LibraryData data;
@@ -746,10 +756,10 @@ public class Library implements Builder, Cloneable
public Report getReport()
{
//OEMUtil.setupLocalizationManager();
- return new OEMReport(null,
- null,
+ return new OEMReport(compiledSources,
null,
null,
+ sourceList,
configurationReport,
messages, files);
}
@@ -904,14 +914,47 @@ public class Library implements Builder, Cloneable
true /* cleanConfig */,
false /* cleanMessages */,
false /* cleanThreadLocals */);
- COMPC compc = new COMPC();
- int returnValue = compc.mainNoExit(constructCommandLine(oemConfiguration));
- if (returnValue == 0)
+ COMPJSC compc = new COMPJSC();
+ int returnValue = compc.mainNoExit(constructCommandLine(oemConfiguration), null, true);
+ if (returnValue == 0 || returnValue == 2)
returnValue = OK;
else
returnValue = FAIL;
- convertMessages(compc.getProblems());
+ LibraryCompilerConfiguration acc = ((LibraryCompilerConfiguration)tempOEMConfiguration.configuration);
+ VirtualFile[] sourcePaths = acc.getCompilerConfiguration().getSourcePath();
+
+ compiledSources = new ArrayList<Source>();
+ List<String> sourceFiles = compc.getSourceList();
+ String mainFile = compc.getMainSource();
+ VirtualFile mainVirtualFile = null;
+ for (String sourceFile : sourceFiles)
+ {
+ for (VirtualFile sourcePath : sourcePaths)
+ {
+ String pathName = sourcePath.getName();
+ if (sourceFile.indexOf(pathName) == 0)
+ {
+ String relPath = sourceFile.substring(pathName.length());
+ int lastSep = relPath.lastIndexOf(File.separator);
+ String shortName = relPath.substring(lastSep + 1);
+ relPath = relPath.substring(0, lastSep);
+ boolean isRoot = sourceFile.equals(mainFile);
+ Source source = new Source(sourcePath, relPath, shortName, null, false, isRoot);
+ compiledSources.add(source);
+ if (mainFile != null && pathName.equals(mainFile))
+ mainVirtualFile = sourcePath;
+ }
+ }
+ }
+ try {
+ sourceList = new SourceList(new ArrayList<VirtualFile>(), sourcePaths, mainVirtualFile, new String[0]);
+ } catch (CompilerException e2) {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ }
+
+ convertMessages(compc.getProblemQuery());
clean(returnValue != OK, false, false);
return returnValue;
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b36ee033/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java
----------------------------------------------------------------------
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java
index f141fd8..eef9c03 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMConfiguration.java
@@ -1163,6 +1163,21 @@ public class OEMConfiguration implements Configuration, ConfigurationConstants,
*
* @param paths an array of <code>java.io.File</code> (<code>File.isDirectory()</code> must return <code>true</code>).
*/
+ public File[] getSourcePath()
+ {
+ if (args.containsKey(COMPILER_SOURCE_PATH))
+ return (File[]) args.get(COMPILER_SOURCE_PATH);
+ if (more.containsKey(COMPILER_SOURCE_PATH))
+ return (File[]) more.get(COMPILER_SOURCE_PATH);
+ return null;
+ }
+
+ /**
+ * Sets a list of path elements that form the roots of ActionScript class hierarchies.
+ * This is equivalent to using <code>mxmlc/compc --compiler.source-path</code>.
+ *
+ * @param paths an array of <code>java.io.File</code> (<code>File.isDirectory()</code> must return <code>true</code>).
+ */
public void setSourcePath(File[] paths)
{
args.put(COMPILER_SOURCE_PATH, paths);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b36ee033/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java
----------------------------------------------------------------------
diff --git a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java
index b6e1d5b..d791e10 100644
--- a/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java
+++ b/flex-compiler-oem/src/main/java/flex2/tools/oem/internal/OEMUtil.java
@@ -243,6 +243,8 @@ public class OEMUtil
private static LibraryCompilerConfiguration processCOMPCCConfiguration(org.apache.flex.compiler.config.Configuration config)
{
LibraryCompilerConfiguration acc = new LibraryCompilerConfiguration();
+ ConfigurationPathResolver resolver = new ConfigurationPathResolver();
+ acc.setConfigPathResolver(resolver);
acc.setBackgroundColor(config.getDefaultBackgroundColor());
acc.setDebug(config.debug());
acc.setFrameRate(config.getDefaultFrameRate());
@@ -251,7 +253,45 @@ public class OEMUtil
acc.setSwfVersion(config.getSwfVersion());
acc.setScriptRecursionLimit(config.getScriptRecursionLimit());
acc.setScriptTimeLimit(config.getScriptTimeLimit());
+ CompilerConfiguration cc = acc.getCompilerConfiguration();
+ List<String> externalLibraries = config.getCompilerExternalLibraryPath();
+ String[] extlibs = new String[externalLibraries.size()];
+ externalLibraries.toArray(extlibs);
+ try
+ {
+ cc.cfgExternalLibraryPath(null, extlibs);
+ }
+ catch (ConfigurationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ List<String> libraries = config.getCompilerLibraryPath();
+ String[] libs = new String[libraries.size()];
+ libraries.toArray(libs);
+ try
+ {
+ cc.cfgLibraryPath(null, libs);
+ }
+ catch (ConfigurationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ List<String> sources = config.getCompilerSourcePath();
+ String[] srcs = new String[sources.size()];
+ sources.toArray(srcs);
+ try
+ {
+ cc.cfgSourcePath(null, srcs);
+ }
+ catch (ConfigurationException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
return acc;
}