flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Harbs <harbs.li...@gmail.com>
Subject Re: [2/2] git commit: [flex-falcon] [refs/heads/develop] - FalconJX now checks debug flag to determine whether to generate the release build via Google Closure Compiler. Also added -skip-transpile option so when debug==false, you can skip the debug-mode tra
Date Wed, 13 Apr 2016 20:08:45 GMT
I’m confused about the options here.

If I’m reading this right, there’s 3 scenarios:
1. Generate js-debug and js-release
2. Only generate js-debug
3. Only generate js-release from an existing js-debug.

Did I get that right?

If so, what are the compile arguments for each case?

On Apr 13, 2016, at 10:08 PM, aharui@apache.org wrote:

> FalconJX now checks debug flag to determine whether to generate the release build via
Google Closure Compiler.  Also added -skip-transpile option so when debug==false, you can
skip the debug-mode transpilation.  By default, when debug==false, the compiler wil first
transpile into the js-debug folder then call GCC on that folder.  If you set -skip-transpile,
the copiler will not transpile into the js-debug folder and just hand the js-debug folder
to GCC.  This can come in handy if the compiler isn't generating the right code and you want
to hand-edit it before sending it to GCC for optimization
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
> Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/3357a102
> Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/3357a102
> Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/3357a102
> 
> Branch: refs/heads/develop
> Commit: 3357a10216f66f0ef93630a8861c43f975f509da
> Parents: fd87205
> Author: Alex Harui <aharui@apache.org>
> Authored: Wed Apr 13 12:07:52 2016 -0700
> Committer: Alex Harui <aharui@apache.org>
> Committed: Wed Apr 13 12:07:52 2016 -0700
> 
> ----------------------------------------------------------------------
> .../apache/flex/compiler/clients/MXMLJSC.java   | 109 ++++++++-------
> .../mxml/flexjs/MXMLFlexJSPublisher.java        | 140 ++++++++++---------
> .../driver/js/goog/JSGoogConfiguration.java     |  20 +++
> 3 files changed, 154 insertions(+), 115 deletions(-)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3357a102/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java b/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
> index d324c9f..c6d9508 100644
> --- a/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
> +++ b/compiler.jx/src/org/apache/flex/compiler/clients/MXMLJSC.java
> @@ -349,7 +349,7 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
>             if (continueCompilation)
>             {
>                 project.setProblems(problems.getProblems());
> -                compile();
> +               	compile();
>                 if (problems.hasFilteredProblems())
>                 {
>                     if (problems.hasErrors())
> @@ -410,12 +410,14 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
>         {
>             project.getSourceCompilationUnitFactory().addHandler(asFileHandler);
> 
> -            if (!setupTargetFile())
> -                return false;
> -
> -            buildArtifact();
> +            if (!((JSGoogConfiguration) config).getSkipTranspile())
> +            {
> +	            if (!setupTargetFile())
> +	                return false;
> 
> -            if (jsTarget != null)
> +	            buildArtifact();
> +            }
> +            if (jsTarget != null || ((JSGoogConfiguration) config).getSkipTranspile())
>             {
>                 List<ICompilerProblem> errors = new ArrayList<ICompilerProblem>();
>                 List<ICompilerProblem> warnings = new ArrayList<ICompilerProblem>();
> @@ -432,54 +434,57 @@ public class MXMLJSC implements JSCompilerEntryPoint, ProblemQueryProvider,
> 
>                 File outputFolder = jsPublisher.getOutputFolder();
> 
> -                ArrayList<ICompilationUnit> roots = new ArrayList<ICompilationUnit>();
> -                roots.add(mainCU);
> -                Set<ICompilationUnit> incs = target.getIncludesCompilationUnits();
> -                roots.addAll(incs);
> -                List<ICompilationUnit> reachableCompilationUnits = project.getReachableCompilationUnitsInSWFOrder(roots);
> -                for (final ICompilationUnit cu : reachableCompilationUnits)
> +                if (!((JSGoogConfiguration) config).getSkipTranspile())
>                 {
> -                    ICompilationUnit.UnitType cuType = cu.getCompilationUnitType();
> -
> -                    if (cuType == ICompilationUnit.UnitType.AS_UNIT
> -                            || cuType == ICompilationUnit.UnitType.MXML_UNIT)
> -                    {
> -                        final File outputClassFile = getOutputClassFile(
> -                                cu.getQualifiedNames().get(0), outputFolder);
> -
> -                        System.out.println("Compiling file: " + outputClassFile);
> -
> -                        ICompilationUnit unit = cu;
> -
> -                        IJSWriter writer;
> -                        if (cuType == ICompilationUnit.UnitType.AS_UNIT)
> -                        {
> -                            writer = (IJSWriter) JSSharedData.backend.createWriter(project,
> -                                    errors, unit, false);
> -                        }
> -                        else
> -                        {
> -                            writer = (IJSWriter) JSSharedData.backend.createMXMLWriter(
> -                                    project, errors, unit, false);
> -                        }
> -
> -                        BufferedOutputStream out = new BufferedOutputStream(
> -                                new FileOutputStream(outputClassFile));
> -
> -                        File outputSourceMapFile = null;
> -                        if (project.config.getSourceMap())
> -                        {
> -                            outputSourceMapFile = getOutputSourceMapFile(
> -                                    cu.getQualifiedNames().get(0), outputFolder);
> -                        }
> -                        
> -                        writer.writeTo(out, outputSourceMapFile);
> -                        out.flush();
> -                        out.close();
> -                        writer.close();
> -                    }
> +	                ArrayList<ICompilationUnit> roots = new ArrayList<ICompilationUnit>();
> +	                roots.add(mainCU);
> +	                Set<ICompilationUnit> incs = target.getIncludesCompilationUnits();
> +	                roots.addAll(incs);
> +	                List<ICompilationUnit> reachableCompilationUnits = project.getReachableCompilationUnitsInSWFOrder(roots);
> +	                for (final ICompilationUnit cu : reachableCompilationUnits)
> +	                {
> +	                    ICompilationUnit.UnitType cuType = cu.getCompilationUnitType();
> +	
> +	                    if (cuType == ICompilationUnit.UnitType.AS_UNIT
> +	                            || cuType == ICompilationUnit.UnitType.MXML_UNIT)
> +	                    {
> +	                        final File outputClassFile = getOutputClassFile(
> +	                                cu.getQualifiedNames().get(0), outputFolder);
> +	
> +	                        System.out.println("Compiling file: " + outputClassFile);
> +	
> +	                        ICompilationUnit unit = cu;
> +	
> +	                        IJSWriter writer;
> +	                        if (cuType == ICompilationUnit.UnitType.AS_UNIT)
> +	                        {
> +	                            writer = (IJSWriter) JSSharedData.backend.createWriter(project,
> +	                                    errors, unit, false);
> +	                        }
> +	                        else
> +	                        {
> +	                            writer = (IJSWriter) JSSharedData.backend.createMXMLWriter(
> +	                                    project, errors, unit, false);
> +	                        }
> +	
> +	                        BufferedOutputStream out = new BufferedOutputStream(
> +	                                new FileOutputStream(outputClassFile));
> +	
> +	                        File outputSourceMapFile = null;
> +	                        if (project.config.getSourceMap())
> +	                        {
> +	                            outputSourceMapFile = getOutputSourceMapFile(
> +	                                    cu.getQualifiedNames().get(0), outputFolder);
> +	                        }
> +	                        
> +	                        writer.writeTo(out, outputSourceMapFile);
> +	                        out.flush();
> +	                        out.close();
> +	                        writer.close();
> +	                    }
> +	                }
>                 }
> -
> +                
>                 if (jsPublisher != null)
>                 {
>                     compilationSuccess = jsPublisher.publish(problems);
> 
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3357a102/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> index 5f5387c..170a24b 100644
> --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
> @@ -130,7 +130,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
IJSPublisher
> 
>         // (erikdebruin) Marmotinni handles file management, so we
>         // bypass the setup.
> -        if (!isMarmotinniRun)
> +        if (!isMarmotinniRun && !((JSGoogConfiguration)configuration).getSkipTranspile())
>             setupOutputFolder();
> 
>         return outputFolder;
> @@ -162,12 +162,15 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
IJSPublisher
>                 org.apache.commons.io.FileUtils.deleteQuietly(releaseDir);
>             }
> 
> -            if (!releaseDir.mkdirs())
> -            {
> -                throw new IOException("Unable to create release directory at " + releaseDir.getAbsolutePath());
> -            }
> +	        if (!configuration.debug())
> +	        {
> +	            if (!releaseDir.mkdirs())
> +	            {
> +	                throw new IOException("Unable to create release directory at " + releaseDir.getAbsolutePath());
> +	            }
> +	        }
>         }
> -
> +	
>         // If the closure-lib parameter is empty we'll try to find the resources
>         // in the classpath, dump its content to the output directory and use
>         // this
> @@ -222,7 +225,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
IJSPublisher
>                 closureLibDirPath = ((JSGoogConfiguration) configuration).getClosureLib();
>             }
>         }
> -
> +	
>         // Dump FlexJS to the target directory.
>         @SuppressWarnings("unused")
>         String flexJsLibDirPath;
> @@ -273,18 +276,21 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
IJSPublisher
>         final String depsTgtFilePath = intermediateDirPath + "/deps.js";
>         final String projectIntermediateJSFilePath = intermediateDirPath + File.separator
+ outputFileName;
>         final String projectReleaseJSFilePath = releaseDirPath + File.separator + outputFileName;
> -
> -        appendExportSymbol(projectIntermediateJSFilePath, projectName);
> -        appendEncodedCSS(projectIntermediateJSFilePath, projectName);
> -
> -        // if (!subsetGoog)
> -        // {
> -        // (erikdebruin) We need to leave the 'goog' files and dependencies well
> -        // enough alone. We copy the entire library over so the
> -        // 'goog' dependencies will resolve without our help.
> -        FileUtils.copyDirectory(new File(closureGoogSrcLibDirPath), new File(closureGoogTgtLibDirPath));
> -        // }
> -
> +	
> +        if (!((JSGoogConfiguration)configuration).getSkipTranspile())
> +        {
> +	        appendExportSymbol(projectIntermediateJSFilePath, projectName);
> +	        appendEncodedCSS(projectIntermediateJSFilePath, projectName);
> +	
> +	        // if (!subsetGoog)
> +	        // {
> +	        // (erikdebruin) We need to leave the 'goog' files and dependencies well
> +	        // enough alone. We copy the entire library over so the
> +	        // 'goog' dependencies will resolve without our help.
> +	        FileUtils.copyDirectory(new File(closureGoogSrcLibDirPath), new File(closureGoogTgtLibDirPath));
> +	        // }
> +        }
> +        
>         JSClosureCompilerWrapper compilerWrapper = new JSClosureCompilerWrapper(((JSGoogConfiguration)
configuration).getJSCompilerOptions());
> 
>         List<ISWC> swcs = project.getLibraries();
> @@ -407,56 +413,64 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
IJSPublisher
>         IOFileFilter subdirs = FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, assetFiles);
> 
>         FileUtils.copyDirectory(srcDir, intermediateDir, subdirs);
> -        FileUtils.copyDirectory(srcDir, releaseDir, subdirs);
> +        if (!configuration.debug())
> +        	FileUtils.copyDirectory(srcDir, releaseDir, subdirs);
> 
> -        // File srcDeps = new File(depsSrcFilePath);
> +	        // File srcDeps = new File(depsSrcFilePath);
> 
> -        writeHTML("intermediate", projectName, intermediateDirPath, depsFileData.toString(),
gdw.additionalHTML);
> -        writeHTML("release", projectName, releaseDirPath, null, gdw.additionalHTML);
> -        if (project.needCSS)
> +        if (!((JSGoogConfiguration)configuration).getSkipTranspile())
> +	        writeHTML("intermediate", projectName, intermediateDirPath, depsFileData.toString(),
gdw.additionalHTML);
> +        if (!configuration.debug())
> +        	writeHTML("release", projectName, releaseDirPath, null, gdw.additionalHTML);
> +        if (project.needCSS || ((JSGoogConfiguration)configuration).getSkipTranspile())
>         {
> -            writeCSS(projectName, intermediateDirPath);
> -            writeCSS(projectName, releaseDirPath);
> +            if (!((JSGoogConfiguration)configuration).getSkipTranspile())
> +            	writeCSS(projectName, intermediateDirPath);
> +	        if (!configuration.debug())
> +	        	FileUtils.copyFile(new File(intermediateDirPath + File.separator + projectName
+ ".css"), 
> +	        			new File(releaseDirPath + File.separator + projectName + ".css"));
>         }
> -
> -        /*
> -         * if (!subsetGoog) { // (erikdebruin) add 'goog' files Collection<File>
> -         * files = org.apache.commons.io.FileUtils.listFiles(new File(
> -         * closureGoogTgtLibDirPath), new RegexFileFilter("^.*(\\.js)"),
> -         * DirectoryFileFilter.DIRECTORY); for (File file : files) {
> -         * compilerWrapper.addJSSourceFile(file.getCanonicalPath()); } }
> -         */
> -        Collection<File> files = org.apache.commons.io.FileUtils.listFiles(new
File(closureGoogSrcLibDirPath),
> -                new RegexFileFilter("^.*(\\.js)"), DirectoryFileFilter.DIRECTORY);
> -        for (File file : files)
> +        
> +        if (!configuration.debug())
>         {
> -            compilerWrapper.addJSSourceFile(file.getCanonicalPath());
> +	        /*
> +	         * if (!subsetGoog) { // (erikdebruin) add 'goog' files Collection<File>
> +	         * files = org.apache.commons.io.FileUtils.listFiles(new File(
> +	         * closureGoogTgtLibDirPath), new RegexFileFilter("^.*(\\.js)"),
> +	         * DirectoryFileFilter.DIRECTORY); for (File file : files) {
> +	         * compilerWrapper.addJSSourceFile(file.getCanonicalPath()); } }
> +	         */
> +	        Collection<File> files = org.apache.commons.io.FileUtils.listFiles(new
File(closureGoogSrcLibDirPath),
> +	                new RegexFileFilter("^.*(\\.js)"), DirectoryFileFilter.DIRECTORY);
> +	        for (File file : files)
> +	        {
> +	            compilerWrapper.addJSSourceFile(file.getCanonicalPath());
> +	        }
> +	
> +	        /*
> +	         * // (erikdebruin) add project files for (String filePath :
> +	         * gdw.filePathsInOrder) { compilerWrapper.addJSSourceFile( new
> +	         * File(filePath).getCanonicalPath()); }
> +	         */
> +	
> +	        compilerWrapper.setOptions(projectReleaseJSFilePath, useStrictPublishing, projectName);
> +	
> +	        /*
> +	         * // (erikdebruin) Include the 'goog' deps to allow the compiler to
> +	         * resolve // dependencies. compilerWrapper.addJSSourceFile(
> +	         * closureGoogSrcLibDirPath + File.separator + "deps.js");
> +	         */
> +	        List<String> externs = ((JSGoogConfiguration) configuration).getExternalJSLib();
> +	        for (String extern : externs)
> +	        {
> +	            compilerWrapper.addJSExternsFile(extern);
> +	        }
> +	
> +	        compilerWrapper.targetFilePath = projectReleaseJSFilePath;
> +	        compilerWrapper.compile();
> +	
> +	        appendSourceMapLocation(projectReleaseJSFilePath, projectName);
>         }
> -
> -        /*
> -         * // (erikdebruin) add project files for (String filePath :
> -         * gdw.filePathsInOrder) { compilerWrapper.addJSSourceFile( new
> -         * File(filePath).getCanonicalPath()); }
> -         */
> -
> -        compilerWrapper.setOptions(projectReleaseJSFilePath, useStrictPublishing, projectName);
> -
> -        /*
> -         * // (erikdebruin) Include the 'goog' deps to allow the compiler to
> -         * resolve // dependencies. compilerWrapper.addJSSourceFile(
> -         * closureGoogSrcLibDirPath + File.separator + "deps.js");
> -         */
> -        List<String> externs = ((JSGoogConfiguration) configuration).getExternalJSLib();
> -        for (String extern : externs)
> -        {
> -            compilerWrapper.addJSExternsFile(extern);
> -        }
> -
> -        compilerWrapper.targetFilePath = projectReleaseJSFilePath;
> -        compilerWrapper.compile();
> -
> -        appendSourceMapLocation(projectReleaseJSFilePath, projectName);
> -
>         /*
>          * if (!isMarmotinniRun) { String allDeps = ""; if (!subsetGoog) {
>          * allDeps += FileUtils.readFileToString(srcDeps); } allDeps +=
> 
> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3357a102/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
> ----------------------------------------------------------------------
> diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
b/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
> index 0f03323..6eb1037 100644
> --- a/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
> +++ b/compiler.jx/src/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
> @@ -256,6 +256,26 @@ public class JSGoogConfiguration extends JSConfiguration
>     }
> 
> 
> +    //
> +    // 'skip-transpile'
> +    //
> +
> +    private boolean skipTranspile = false;
> +
> +    public boolean getSkipTranspile()
> +    {
> +        return skipTranspile;
> +    }
> +
> +    @Config
> +    @Mapping("skip-transpile")
> +    public void setSkipTranspile(ConfigurationValue cv, boolean value)
> +            throws ConfigurationException
> +    {
> +    	skipTranspile = value;
> +    }
> +    
> +    
> 
>     protected String getAbsolutePathFromPathRelativeToMXMLC(String relativePath)
>         throws IOException
> 


Mime
View raw message