Changeset 7738
- Timestamp:
- 03/21/07 20:51:45 (22 months ago)
- Location:
- branches/0.4/buildscripts
- Files:
-
- 1 added
- 4 removed
- 4 modified
-
buildUtil.js (modified) (8 diffs)
-
buildUtilExt.js (deleted)
-
listProfileDeps.js (modified) (1 diff)
-
makeDojoJs.js (modified) (1 diff)
-
makeDojoJsWeb.js (modified) (1 diff)
-
profiles/layers.profile.js (added)
-
profiles/multi.one.js (deleted)
-
profiles/multi.profiles.js (deleted)
-
profiles/multi.two.js (deleted)
Legend:
- Unmodified
- Added
- Removed
-
branches/0.4/buildscripts/buildUtil.js
r7629 r7738 83 83 84 84 //Override dojo.provide to get a list of resource providers. 85 var provideList = [];85 var currentProvideList = []; 86 86 dojo._provide = dojo.provide; 87 87 dojo.provide = function(resourceName){ 88 provideList.push(resourceName);88 currentProvideList.push(resourceName); 89 89 dojo._provide(resourceName); 90 90 } … … 164 164 dependencies["dojoLoaded"](); 165 165 } 166 166 167 //Now build the URI list, starting with the main dojo.js file 168 var result = []; 169 result[0] = { 170 layerName: "dojo.js", 171 depList: buildUtil.determineUriList(dependencies, null, dependencies["filters"]), 172 provideList: currentProvideList 173 } 174 currentProvideList = []; 175 176 //Figure out if we have to process layers. 177 var layerCount = 0; 178 var layers = dependencies["layers"]; 179 if(layers && layers.length > 0){ 180 layerCount = layers.length; 181 } 182 183 //Process dojo layer files 184 if(layerCount){ 185 //Set up a lookup table for the layer URIs based on layer file name. 186 var namedLayerUris = {"dojo.js": result[0].depList}; 187 188 for(var i = 0; i < layerCount; i++){ 189 var layer = layers[i]; 190 191 //Set up list of module URIs that are already defined for this layer's 192 //layer dependencies. 193 var layerUris = []; 194 if(layer["layerDependencies"]){ 195 for(var j = 0; j < layer.layerDependencies.length; j++){ 196 if(namedLayerUris[layer.layerDependencies[j]]){ 197 layerUris.concat(namedLayerUris[layer.layerDependencies[j]]); 198 } 199 } 200 } 201 202 //Get the final list of dependencies in this layer 203 var depList = buildUtil.determineUriList(layer.dependencies, layerUris, dependencies["filters"]); 204 205 //Store the layer URIs that are in this file as well as all files it depends on. 206 namedLayerUris[layer.name] = layerUris.concat(depList); 207 208 //Add to the results object. 209 result[i + 1] = { 210 layerName: layer.name, 211 depList: depList, 212 provideList: currentProvideList 213 } 214 215 //Reset for another run through the loop. 216 currentProvideList = []; 217 } 218 } 219 220 if(isWebBuild){ 221 dojo.hostenv.loadUri = dojo.hostenv.oldLoadUri; 222 }else{ 223 load = old_load; // restore the original load function 224 dj_eval = old_eval; // restore the original dj_eval function 225 226 dj_global['dojo'] = undefined; 227 dj_global['djConfig'] = undefined; 228 delete dj_global; 229 } 230 231 return result; //Object with properties: name (String), depList (Array) and provideList (Array) 232 } 233 234 //Function to do the actual collection of file names to join. 235 buildUtil.determineUriList = function(/*Array*/dependencies, /*Array*/layerUris, /*Object*/filters){ 167 236 for(var x=0; x<dependencies.length; x++){ 168 237 try{ … … 182 251 } 183 252 } 184 185 // FIXME: we should also provide some way of figuring out what files are the 186 // test files for the namespaces which are included and provide them in the 187 // final package. 188 189 // FIXME: should we turn __package__.js file clobbering on? It will break things if there's a subdir rolled up into a __package__ 190 /* 191 for(var x=0; x<dojo.hostenv.loadedUris.length; x++){ 192 print(dojo.hostenv.loadedUris[x].substr(-14)); 193 if(dojo.hostenv.loadedUris[x].substr(-14) == "__package__.js"){ 194 dojo.hostenv.loadedUris.splice(x, 1); 195 x--; 196 } 197 } 198 */ 199 200 // print("URIs, in order: "); 201 // for(var x=0; x<dojo.hostenv.loadedUris.length; x++){ 202 // print(dojo.hostenv.loadedUris[x]); 203 // } 204 253 205 254 var depList = []; 206 255 var seen = {}; … … 209 258 if(!seen[curi]){ 210 259 seen[curi] = true; 211 if( dependencies["filters"]){212 for(var i in dependencies.filters){213 if(curi.match( dependencies.filters[i])){260 if(filters){ 261 for(var i in filters){ 262 if(curi.match(filters[i])){ 214 263 continue uris; 215 }}} 264 } 265 266 //If the uri is already accounted for in another 267 //layer, skip it. 268 if(layerUris){ 269 for(var i = 0; i < layerUris.length; i++){ 270 if(curi == layerUris[i]){ 271 continue uris; 272 } 273 } 274 } 275 } 276 } 216 277 depList.push(curi); 217 278 } 218 279 } 219 280 220 if(isWebBuild){ 221 dojo.hostenv.loadUri = dojo.hostenv.oldLoadUri; 222 }else{ 223 load = old_load; // restore the original load function 224 dj_eval = old_eval; // restore the original dj_eval function 225 226 dj_global['dojo'] = undefined; 227 dj_global['djConfig'] = undefined; 228 delete dj_global; 229 } 230 231 return { 232 depList: depList, 233 provideList: provideList 234 }; 235 } 236 237 buildUtil.loadDependencyList = function(/*String*/profileFile){ 281 //Clear out the loadedUris for the next run. 282 dojo.hostenv.loadedUris = []; 283 return depList; 284 } 285 286 287 buildUtil.evalProfile = function(/*String*/ profileFile){ 238 288 var dependencies = null; 239 289 var hostenvType = null; … … 243 293 profileText = profileText.replace(/load\(("|')getDependencyList.js("|')\)/, ""); 244 294 eval(profileText); 245 if(hostenvType){ 246 hostenvType.join(",\n"); 247 } 248 var depResult = buildUtil.getDependencyList(dependencies, hostenvType); 249 depResult.dependencies = dependencies; 295 return { 296 dependencies: dependencies, 297 hostenvType: hostenvType 298 }; 299 } 300 301 buildUtil.loadDependencyList = function(/*String*/profileFile){ 302 var profile = buildUtil.evalProfile(profileFile); 303 if(profile.hostenvType){ 304 profile.hostenvType = profile.hostenvType.join(",\n"); 305 } 306 var depResult = buildUtil.getDependencyList(profile.dependencies, profile.hostenvType); 307 depResult.dependencies = profile.dependencies; 250 308 251 309 return depResult; 252 310 } 253 311 254 buildUtil.makeDojoJs = function(/*Object*/dependencyResult, /*String*/version){ 255 //summary: Makes the uncompressed contents for dojo.js using the object 256 //returned from buildUtil.getDependencyList() 257 258 var lineSeparator = buildUtil.getLineSeparator(); 259 var depList = dependencyResult.depList; 312 buildUtil.createLayerContents = function(/*Array*/depList, /*Array*/provideList, /*String*/version){ 313 //summary: Creates the core contents for a build layer (including dojo.js). 260 314 261 315 //Concat the files together, and mark where we should insert all the … … 272 326 //Sort the provide list alphabetically to make it easy to read. 273 327 //Order of provide statements do not matter. 274 var provideList = dependencyResult.provideList.sort();328 provideList = provideList.sort(); 275 329 var depRegExpString = ""; 276 330 for(var i = 0; i < provideList.length; i++){ … … 320 374 ); 321 375 376 return dojoContents; 377 } 378 379 buildUtil.makeDojoJs = function(/*Object*/dependencyResult, /*String*/version){ 380 //summary: Makes the uncompressed contents for dojo.js using the object 381 //returned from buildUtil.getDependencyList() 382 383 var lineSeparator = buildUtil.getLineSeparator(); 384 385 //Cycle through the layers to create the content for each layer. 386 for(var i = 0; i< dependencyResult.length; i++){ 387 var layerResult = dependencyResult[i]; 388 layerResult.contents = buildUtil.createLayerContents(layerResult.depList, layerResult.provideList, version); 389 } 390 391 //Object with properties: 392 //depList: Array of file paths (src/io/js) 393 //provideList: Array of module resource names (dojo.io) 394 //name: name of the layer file 395 //contents: the file contents for that layer file. 396 return dependencyResult; 397 322 398 //Return the dependency list, since it is used for other things in the ant file. 323 399 return { … … 656 732 load("buildUtil.js"); 657 733 658 var prefixes = buildUtil.getDependencyPropertyFromProfile(profileFile, "prefixes"); 734 var profile = buildUtil.evalProfile(profileFile); 735 var dependencies = profileFile.dependencies; 736 737 var prefixes = dependencies["prefixes"] || []; 659 738 //Make sure dojo is in the list. 660 739 var dojoPath = releaseDir.replace(/^.*(\/|\\)release(\/|\\)/, "release/"); 661 740 prefixes.push(["dojo", dojoPath + "/src"]); 662 741 663 var skiplist = buildUtil.getDependencyPropertyFromProfile(profileFile, "internSkipList"); 664 742 var skiplist = dependencies["internSkipList"] || []; 743 744 //Intern strings for dojo.js 665 745 buildUtil.internTemplateStringsInFile(loader, releaseDir + "/dojo.js", srcRoot, prefixes, skiplist); 666 746 buildUtil.internTemplateStringsInFile(loader, releaseDir + "/dojo.js.uncompressed.js", srcRoot, prefixes, skiplist); 747 748 //Intern strings for any other layer files. 749 if(dependencies["layers"] && dependencies.layers.length > 0){ 750 for(var i = 0; i < dependencies.layers.length; i++){ 751 buildUtil.internTemplateStringsInFile(loader, releaseDir + "/" + dependencies.layers[i].name, srcRoot, prefixes, skiplist); 752 } 753 } 667 754 668 755 //Intern strings for all files in widget dir (xdomain and regular files) -
branches/0.4/buildscripts/listProfileDeps.js
r7054 r7738 6 6 var lineSeparator = java.lang.System.getProperty("line.separator"); 7 7 8 print("Files included in this profile:" + lineSeparator + buildUtil.loadDependencyList(profileFile).depList.join(lineSeparator)); 8 var result = buildUtil.loadDependencyList(profileFile); 9 10 var buildText = "Files included in this profile:" + lineSeparator; 11 for(var i = 0; i < result.length; i++){ 12 buildText += lineSeparator + result[i].layerName + ":" + lineSeparator; 13 buildText += result[i].depList.join(lineSeparator) + lineSeparator; 14 } 15 16 print(buildText); -
branches/0.4/buildscripts/makeDojoJs.js
r7075 r7738 11 11 var result = buildUtil.makeDojoJs(buildUtil.loadDependencyList(profileFile), version); 12 12 13 //Save the dojo.js contents. 14 buildUtil.saveFile(releaseDir + "/" + dojoFileName, result.dojoContents); 13 //Save the dojo.js contents. It is always the first result. 14 buildUtil.saveFile(releaseDir + "/" + dojoFileName, result[0].contents); 15 16 //Save the other layers, if there are any. 17 for(var i = 1; i < result.length; i++){ 18 buildUtil.saveFile(releaseDir + "/" + result[i].layerName, result[i].contents); 19 } 15 20 16 21 //Save the dependency list to build.txt 17 buildUtil.saveFile(releaseDir + "/build.txt", "Files baked into this build:" + lineSeparator + result.resourceDependencies.join(lineSeparator)); 22 var buildText = "Files baked into this build:" + lineSeparator; 23 for(var i = 0; i < result.length; i++){ 24 buildText += lineSeparator + result[i].layerName + ":" + lineSeparator; 25 buildText += result[i].depList.join(lineSeparator) + lineSeparator; 26 } 18 27 19 print("Files baked into this build:" + lineSeparator + result.resourceDependencies.join(lineSeparator));28 buildUtil.saveFile(releaseDir + "/build.txt", buildText); 20 29 30 print(buildText); 21 31 -
branches/0.4/buildscripts/makeDojoJsWeb.js
r7459 r7738 52 52 var buildSigDir = dojo.crypto.MD5.compute(depList.sort().join(","), dojo.crypto.outputTypes.Hex); 53 53 try{ 54 var contents = buildUtil. makeDojoJs(dependencyResult, version).dojoContents;54 var contents = buildUtil.createLayerContents(dependencyResult.depList, dependencyResult.provideList, version); 55 55 var compressedContents = ""; 56 56 var prefixes = [["dojo", "src"]];