lib/qx/tool/compiler/targets/BuildTarget.js
async function(compileInfo) {
      var t = this;
      var _arguments = arguments;
      var application = compileInfo.application;
      var targetUri = t._getOutputRootUri(application);
      var appRootDir = this.getApplicationRoot(application);
      
      // ResourceUri does not have a trailing "/" because qx.util.ResourceManager.toUri always adds one
      var mapTo = this.getPathMapping(path.join(appRootDir, this.getOutputDir(), "resource"));
      var resourceUri = mapTo ? mapTo : targetUri + "resource";
      
      compileInfo.build = { 
          parts: {}
      };
      await qx.tool.compiler.utils.Promisify.forEachOfSeries(compileInfo.configdata.loader.packages,
          (pkg, pkgId) => {
            compileInfo.build.parts[pkgId] = { 
                uris: pkg.uris,
                hashValue: null,
                modified: true
              };
                                          
            pkg.uris = ["__out__:" + t.getScriptPrefix() + "part-" + pkgId + ".js"];
          });

      var libraries = this.getAnalyser().getLibraries();
      var libraryLookup = {};
      libraries.forEach(function(library) {
        libraryLookup[library.getNamespace()] = library;
        compileInfo.configdata.libraries[library.getNamespace()] = {
          sourceUri: ".",
          resourceUri: resourceUri
        };
      });
      
      await qx.Promise.all([
        t._syncAssets(compileInfo),
        
        async () => {
          let buildJson = path.join(appRootDir, "build-data.json");
          let data = await qx.tool.compiler.utils.Json.loadJsonAsync(buildJson);
          if (data !== null) {
            await fs.unlinkAsync(buildJson).catch(() => {});
            try {
              data = data ? JSON.parse(data) : null;
            } catch (ex) {
              // Nothing
            }
            if (data.parts) {
              for (var pkgId in data.parts) {
                if (compileInfo.build.parts[pkgId]) {
                  compileInfo.build.parts[pkgId].hashValue = data.parts[pkgId].hashValue;
                }
              }
            }
          }
        }
      ])
      .then(() => t.base(_arguments, compileInfo));
    }
async function(compileInfo) {
      var t = this;
      var _arguments = arguments;
      var application = compileInfo.application;
      var targetUri = t._getOutputRootUri(application);
      var appRootDir = this.getApplicationRoot(application);
      
      // ResourceUri does not have a trailing "/" because qx.util.ResourceManager.toUri always adds one
      var mapTo = this.getPathMapping(path.join(appRootDir, this.getOutputDir(), "resource"));
      var resourceUri = mapTo ? mapTo : targetUri + "resource";
      
      compileInfo.build = { 
          parts: {}
      };
      await qx.tool.compiler.utils.Promisify.forEachOfSeries(compileInfo.configdata.loader.packages,
          (pkg, pkgId) => {
            compileInfo.build.parts[pkgId] = { 
                uris: pkg.uris,
                hashValue: null,
                modified: true
              };
                                          
            pkg.uris = ["__out__:" + t.getScriptPrefix() + "part-" + pkgId + ".js"];
          });

      var libraries = this.getAnalyser().getLibraries();
      var libraryLookup = {};
      libraries.forEach(function(library) {
        libraryLookup[library.getNamespace()] = library;
        compileInfo.configdata.libraries[library.getNamespace()] = {
          sourceUri: ".",
          resourceUri: resourceUri
        };
      });
      
      await qx.Promise.all([
        t._syncAssets(compileInfo),
        
        async () => {
          let buildJson = path.join(appRootDir, "build-data.json");
          let data = await qx.tool.compiler.utils.Json.loadJsonAsync(buildJson);
          if (data !== null) {
            await fs.unlinkAsync(buildJson).catch(() => {});
            try {
              data = data ? JSON.parse(data) : null;
            } catch (ex) {
              // Nothing
            }
            if (data.parts) {
              for (var pkgId in data.parts) {
                if (compileInfo.build.parts[pkgId]) {
                  compileInfo.build.parts[pkgId].hashValue = data.parts[pkgId].hashValue;
                }
              }
            }
          }
        }
      ])
      .then(() => t.base(_arguments, compileInfo));
    }
/*
@Override