whole_func_string: async function(maker, contribs) {
        let errors = [];
        let libs = maker.getAnalyser().getLibraries();
        const SDK_VERSION = await this.getUserQxVersion();
        // check all requieres
        for (let lib of libs) {
          let requires = lib.getRequires();
          if (!requires) {
            requires = {};
          }
          if (!contribs) {
            contribs = {};
          }
          // check for qooxdoo-range
          let range = lib.getLibraryInfo()["qooxdoo-range"];
          if (range) {
            if (this.argv.verbose) {
              console.warn(`${lib.getNamespace()}: The configuration setting "qooxdoo-range" in Manifest.json has been deprecated in favor of "requires.qooxdoo-sdk")`);
            }
            if (!requires["qooxdoo-sdk"]) {
              requires["qooxdoo-sdk"] = range;
            }
          }
          let requires_uris = Object.getOwnPropertyNames(requires).filter(name => !name.startsWith("qooxdoo-"));
          let contrib_libs = Object.getOwnPropertyNames(contribs);
          if (requires_uris.length > 0 && contrib_libs.length === 0) {
              // if we don't have contrib data
              if (this.argv.download) {
                // but we're instructed to download the libraries
                if (this.argv.verbose) {
                  console.info(`>>> Installing latest compatible version of required libraries...`);
                }
                const installer = new qx.tool.cli.commands.contrib.Install({
                  verbose: this.argv.verbose,
                  save: false // save to contrib.json only, not to manifest
                });
                await installer.process();
                throw new qx.tool.cli.Utils.UserError("Added missing library information from Manifest. Please restart the compilation.");
              } else {
                throw new qx.tool.cli.Utils.UserError("No library information available. Try 'qx compile --download'");
              }
            }
  
            for (let reqUri of Object.getOwnPropertyNames(requires)) {
              let reqVersion = requires[reqUri];
              switch (reqUri) {
                // npm release only
                case "qooxdoo-compiler": {
                  let qxVer = qx.tool.compiler.Version.VERSION;
                  if (!semver.satisfies(qxVer, reqVersion, {loose: true})) {
                    errors.push(`${lib.getNamespace()}: Needs qooxdoo-compiler version ${reqVersion}, found ${qxVer}`);
                  }
                  break;
                }
                // npm release only
                case "qooxdoo-sdk": {
                  let qxVer = SDK_VERSION;
                  if (!semver.satisfies(qxVer, reqVersion, {loose: true})) {
                    errors.push(`${lib.getNamespace()}: Needs qooxdoo-sdk version ${reqVersion}, found ${qxVer}`);
                  }
                  break;
                }
                // github repository release or commit-ish identifier
                default: {
                  let l = libs.find(entry => path.relative("", entry.getRootDir()) === contribs[reqUri]);
                  if (!l) {
                    errors.push(`${lib.getNamespace()}: Cannot find required library '${reqUri}'`);
                    break;
                  }
                  // github release in contrib registry
                  let libVersion = l.getLibraryInfo().version;
                  if (!semver.valid(libVersion, {loose: true})) {
                    console.warn(`${reqUri}: Version is not valid: ${libVersion}`);
                  } else if (!semver.satisfies(libVersion, reqVersion, {loose: true})) {
                    errors.push(`${lib.getNamespace()}: Needs ${reqUri} version ${reqVersion}, found ${libVersion}`);
                  }
                  break;
              }
            }
          }
        }
        return errors;
      }
func_code_string: async function(maker, contribs) {
        let errors = [];
        let libs = maker.getAnalyser().getLibraries();
        const SDK_VERSION = await this.getUserQxVersion();
        // check all requieres
        for (let lib of libs) {
          let requires = lib.getRequires();
          if (!requires) {
            requires = {};
          }
          if (!contribs) {
            contribs = {};
          }
          // check for qooxdoo-range
          let range = lib.getLibraryInfo()["qooxdoo-range"];
          if (range) {
            if (this.argv.verbose) {
              console.warn(`${lib.getNamespace()}: The configuration setting "qooxdoo-range" in Manifest.json has been deprecated in favor of "requires.qooxdoo-sdk")`);
            }
            if (!requires["qooxdoo-sdk"]) {
              requires["qooxdoo-sdk"] = range;
            }
          }
          let requires_uris = Object.getOwnPropertyNames(requires).filter(name => !name.startsWith("qooxdoo-"));
          let contrib_libs = Object.getOwnPropertyNames(contribs);
          if (requires_uris.length > 0 && contrib_libs.length === 0) {
              // if we don't have contrib data
              if (this.argv.download) {
                // but we're instructed to download the libraries
                if (this.argv.verbose) {
                  console.info(`>>> Installing latest compatible version of required libraries...`);
                }
                const installer = new qx.tool.cli.commands.contrib.Install({
                  verbose: this.argv.verbose,
                  save: false // save to contrib.json only, not to manifest
                });
                await installer.process();
                throw new qx.tool.cli.Utils.UserError("Added missing library information from Manifest. Please restart the compilation.");
              } else {
                throw new qx.tool.cli.Utils.UserError("No library information available. Try 'qx compile --download'");
              }
            }
  
            for (let reqUri of Object.getOwnPropertyNames(requires)) {
              let reqVersion = requires[reqUri];
              switch (reqUri) {
                // npm release only
                case "qooxdoo-compiler": {
                  let qxVer = qx.tool.compiler.Version.VERSION;
                  if (!semver.satisfies(qxVer, reqVersion, {loose: true})) {
                    errors.push(`${lib.getNamespace()}: Needs qooxdoo-compiler version ${reqVersion}, found ${qxVer}`);
                  }
                  break;
                }
                // npm release only
                case "qooxdoo-sdk": {
                  let qxVer = SDK_VERSION;
                  if (!semver.satisfies(qxVer, reqVersion, {loose: true})) {
                    errors.push(`${lib.getNamespace()}: Needs qooxdoo-sdk version ${reqVersion}, found ${qxVer}`);
                  }
                  break;
                }
                // github repository release or commit-ish identifier
                default: {
                  let l = libs.find(entry => path.relative("", entry.getRootDir()) === contribs[reqUri]);
                  if (!l) {
                    errors.push(`${lib.getNamespace()}: Cannot find required library '${reqUri}'`);
                    break;
                  }
                  // github release in contrib registry
                  let libVersion = l.getLibraryInfo().version;
                  if (!semver.valid(libVersion, {loose: true})) {
                    console.warn(`${reqUri}: Version is not valid: ${libVersion}`);
                  } else if (!semver.satisfies(libVersion, reqVersion, {loose: true})) {
                    errors.push(`${lib.getNamespace()}: Needs ${reqUri} version ${reqVersion}, found ${libVersion}`);
                  }
                  break;
              }
            }
          }
        }
        return errors;
      }
func_documentation_string: Checks the dependencies of the current library
  @param {qx.tool.compiler.makers.Maker} maker
  The maker object
  @param {Object|*} contribs
  If given, an object mapping library uris to library paths
  @return {Promise<Array>} Array of error messages
  @private