Changeset 8369

Show
Ignore:
Timestamp:
04/30/07 16:06:37 (21 months ago)
Author:
jburke
Message:

Fixes #2875. Release folder is now a sibling of dojo/dojox/dijit/util (also configurable to something else). If dijit and dojox are specified in dependencies.prefixes, they are now copied over correctly (uses paths relative to dojo.js). Also copy over DOH if copyTests is true.

Location:
util/trunk/buildscripts
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • util/trunk/buildscripts/build.js

    r8121 r8369  
    3232                helpText: "The set of locales to use when flattening i18n bundles." 
    3333        }, 
     34         
    3435        "releaseName": { 
    3536                defaultValue: "dojo", 
    36                 helpText: "The name of the release directory." 
     37                helpText: "The name of the release. A directory inside 'releaseDir' will be created with this name." 
     38        }, 
     39        "releaseDir": { 
     40                defaultValue: "../../release/", 
     41                helpText: "The top level release directory where builds end up. The 'releaseName' directories will " 
     42                        + " be placed inside this directory." 
    3743        }, 
    3844        "loader": { 
     
    114120        var buildNoticeText = fileUtil.readFile("build_notice.txt"); 
    115121         
     122        //Find the dojo prefix path. Need it to process other module prefixes. 
     123        for(var i = 0; i < prefixes.length; i++){ 
     124                if(prefixes[i][0] == "dojo"){ 
     125                        dojoPrefixPath = prefixes[i][1]; 
     126                        break; 
     127                } 
     128        } 
     129 
    116130        //Get the list of module directories we need to process. 
    117131        //They will be in the dependencies.prefixes array. 
    118132        //Copy each prefix dir to the releases and 
    119133        //operate on that copy. 
    120         if(prefixes && prefixes.length > 0){ 
    121                 for(var i = 0; i < prefixes.length; i++){ 
    122                         var prefixName = prefixes[i][0]; 
    123                         var prefixPath = prefixes[i][1]; 
    124                          
    125                         //Set prefix path to the release location, so that 
    126                         //build operations that depend/operate on it are using 
    127                         //the release location. 
    128                         prefixes[i][1] = kwArgs.releaseDir + "/"  + prefixName; 
    129          
    130                         //Save dojo for last. 
    131                         if(prefixName == "dojo"){ 
    132                                 dojoPrefixPath = prefixPath; 
    133                         }else{ 
    134                                 _prefixPathRelease(prefixName, prefixPath, kwArgs); 
    135                         } 
     134        for(var i = 0; i < prefixes.length; i++){ 
     135                var prefixName = prefixes[i][0]; 
     136                var prefixPath = prefixes[i][1]; 
     137                 
     138                //Set prefix path to the release location, so that 
     139                //build operations that depend/operate on it are using 
     140                //the release location. 
     141                prefixes[i][1] = kwArgs.releaseDir + "/"  + prefixName; 
     142 
     143                //dojo prefix is special. Do that later. 
     144                if(prefixName != "dojo"){ 
     145                        _prefixPathRelease(prefixName, dojoPrefixPath + "/" + prefixPath, kwArgs); 
    136146                } 
    137147        } 
    138148 
    139149        //Now process Dojo core. Special things for that one. 
    140         if(dojoPrefixPath){ 
    141                  _prefixPathRelease("dojo", dojoPrefixPath, kwArgs); 
    142  
    143                 //Make sure dojo is clear before trying to map dependencies. 
    144                 if(typeof dojo != "undefined"){ 
    145                         dojo = undefined; 
    146                 } 
    147  
    148                 //FIXME: loadDependency list reparses profile file, but we've already done that. 
    149                 logger.trace("Building dojo.js and layer files"); 
    150                 var result = buildUtil.makeDojoJs(buildUtil.loadDependencyList(kwArgs.profileFile), kwArgs.version); 
    151  
    152                 //Save the build layers. The first layer is dojo.js. 
    153                 var layerLegalText = copyrightText + buildNoticeText; 
    154                 var dojoReleaseDir = kwArgs.releaseDir + "/dojo/"; 
    155                 for(var i = 0; i < result.length; i++){ 
    156                         var fileName = dojoReleaseDir + result[i].layerName; 
    157                         var fileContents = result[i].contents; 
    158                          
    159                         //Flatten resources  
    160                         //FIXME: Flatten resources. Only do the top level flattening for bundles 
    161                         //in the layer files. How to do this for layers? only do one nls file for 
    162                         //all layers, or a different one for each layer? 
    163                         if(fileName == "dojo.js"){ 
    164                                 i18n.flattenLayerFileBundles(fileName, dojoReleaseDir + "nls", "nls", kwArgs); 
    165                         } 
    166  
    167                         //Save uncompressed file. 
    168                         var uncompressedFileName = fileName + ".uncompressed.js"; 
    169                         fileUtil.saveFile(uncompressedFileName, layerLegalText + fileContents); 
    170                          
    171                         //Intern strings if desired. Do this before compression, since, in the xd case, 
    172                         //"dojo" gets converted to a shortened name. 
    173                         if(kwArgs.internStrings){ 
    174                                 logger.info("Interning strings for file: " + fileName); 
    175                                 var prefixes = dependencies["prefixes"] || []; 
    176                                 var skiplist = dependencies["internSkipList"] || []; 
    177                                 buildUtil.internTemplateStringsInFile(uncompressedFileName, dojoReleaseDir, prefixes, skiplist); 
    178  
    179                                 //Load the file contents after string interning, to pick up interned strings. 
    180                                 fileContents = fileUtil.readFile(uncompressedFileName); 
    181                         } 
    182  
    183                         //Save compressed file. 
    184                         var compresedContents = buildUtil.optimizeJs(fileName, fileContents, layerLegalText, true); 
    185                         fileUtil.saveFile(fileName, compresedContents); 
    186  
    187                         //Remove _base from the release. 
    188                         fileUtil.deleteFile(dojoReleaseDir + "_base"); 
    189                         fileUtil.deleteFile(dojoReleaseDir + "_base.js"); 
    190                          
    191                         //FIXME: generate xd contents for layer files. 
    192                 } 
    193  
    194                 //Save the dependency lists to build.txt 
    195                 var buildText = "Files baked into this build:" + lineSeparator; 
    196                 for(var i = 0; i < result.length; i++){ 
    197                         buildText += lineSeparator + result[i].layerName + ":" + lineSeparator; 
    198                         buildText += result[i].depList.join(lineSeparator) + lineSeparator; 
    199                 } 
    200                 fileUtil.saveFile(kwArgs.releaseDir + "/dojo/build.txt", buildText); 
    201  
    202                 logger.info(buildText); 
    203         } 
     150         _prefixPathRelease("dojo", dojoPrefixPath, kwArgs); 
     151 
     152        //Make sure dojo is clear before trying to map dependencies. 
     153        if(typeof dojo != "undefined"){ 
     154                dojo = undefined; 
     155        } 
     156 
     157        //FIXME: loadDependency list reparses profile file, but we've already done that. 
     158        logger.trace("Building dojo.js and layer files"); 
     159        var result = buildUtil.makeDojoJs(buildUtil.loadDependencyList(kwArgs.profileFile), kwArgs.version); 
     160 
     161        //Save the build layers. The first layer is dojo.js. 
     162        var layerLegalText = copyrightText + buildNoticeText; 
     163        var dojoReleaseDir = kwArgs.releaseDir + "/dojo/"; 
     164        for(var i = 0; i < result.length; i++){ 
     165                var fileName = dojoReleaseDir + result[i].layerName; 
     166                var fileContents = result[i].contents; 
     167                 
     168                //Flatten resources  
     169                //FIXME: Flatten resources. Only do the top level flattening for bundles 
     170                //in the layer files. How to do this for layers? only do one nls file for 
     171                //all layers, or a different one for each layer? 
     172                if(fileName == "dojo.js"){ 
     173                        i18n.flattenLayerFileBundles(fileName, dojoReleaseDir + "nls", "nls", kwArgs); 
     174                } 
     175 
     176                //Save uncompressed file. 
     177                var uncompressedFileName = fileName + ".uncompressed.js"; 
     178                fileUtil.saveFile(uncompressedFileName, layerLegalText + fileContents); 
     179                 
     180                //Intern strings if desired. Do this before compression, since, in the xd case, 
     181                //"dojo" gets converted to a shortened name. 
     182                if(kwArgs.internStrings){ 
     183                        logger.info("Interning strings for file: " + fileName); 
     184                        var prefixes = dependencies["prefixes"] || []; 
     185                        var skiplist = dependencies["internSkipList"] || []; 
     186                        buildUtil.internTemplateStringsInFile(uncompressedFileName, dojoReleaseDir, prefixes, skiplist); 
     187 
     188                        //Load the file contents after string interning, to pick up interned strings. 
     189                        fileContents = fileUtil.readFile(uncompressedFileName); 
     190                } 
     191 
     192                //Save compressed file. 
     193                var compresedContents = buildUtil.optimizeJs(fileName, fileContents, layerLegalText, true); 
     194                fileUtil.saveFile(fileName, compresedContents); 
     195 
     196                //Remove _base from the release. 
     197                fileUtil.deleteFile(dojoReleaseDir + "_base"); 
     198                fileUtil.deleteFile(dojoReleaseDir + "_base.js"); 
     199                 
     200                //FIXME: generate xd contents for layer files. 
     201        } 
     202 
     203        //Save the dependency lists to build.txt 
     204        var buildText = "Files baked into this build:" + lineSeparator; 
     205        for(var i = 0; i < result.length; i++){ 
     206                buildText += lineSeparator + result[i].layerName + ":" + lineSeparator; 
     207                buildText += result[i].depList.join(lineSeparator) + lineSeparator; 
     208        } 
     209        fileUtil.saveFile(kwArgs.releaseDir + "/dojo/build.txt", buildText); 
     210        logger.info(buildText); 
     211 
     212        //Copy over DOH if tests where copied. 
     213        if(kwArgs.copyTests){ 
     214                copyRegExp = new RegExp(prefixName.replace(/\\/g, "/") + "/(?!tests)"); 
     215                fileUtil.copyDir("../doh", kwArgs.releaseDir + "/util/doh", /./); 
     216        } 
     217 
     218        logger.info("Build is in directory: " + kwArgs.releaseDir); 
    204219} 
    205220//********* End release ********* 
     
    218233        } 
    219234 
     235        logger.info("Copying: " + prefixPath + " to: " + releasePath); 
    220236        fileUtil.copyDir(prefixPath, releasePath, copyRegExp); 
    221237 
     
    278294 
    279295        //Set up some compound values 
    280         kwArgs.releaseDir = "release/" + kwArgs["releaseName"]; 
     296        kwArgs.releaseDir += kwArgs["releaseName"]; 
    281297        kwArgs.action = kwArgs.action.split(","); 
    282298        kwArgs.localeList = kwArgs.localeList.split(","); 
  • util/trunk/buildscripts/profiles/0.9.profile.js

    r8368 r8369  
    44 
    55dependencies.prefixes = [ 
    6         [ "dijit", "../../dijit" ], 
    7         [ "dojox", "../../dojox" ], 
     6        [ "dijit", "../dijit" ], 
     7        [ "dojox", "../dojox" ], 
    88];