Ejemplo n.º 1
0
 def test_getRecipeReader(self):
   f = getRecipeReader("foo")
   assert(type(f) == FileReader)
   f = getRecipeReader("dist:foo@master")
   assert(type(f) == FileReader)
   f = getRecipeReader("dist:foo@master", "alidist")
   assert(type(f) == GitReader)
Ejemplo n.º 2
0
 def test_getRecipeReader(self):
     f = getRecipeReader("foo")
     self.assertEqual(type(f), FileReader)
     f = getRecipeReader("dist:foo@master")
     self.assertEqual(type(f), FileReader)
     f = getRecipeReader("dist:foo@master", "alidist")
     self.assertEqual(type(f), GitReader)
Ejemplo n.º 3
0
 def test_getRecipeReader(self):
   f = getRecipeReader("foo")
   self.assertEqual(type(f), FileReader)
   f = getRecipeReader("dist:foo@master")
   self.assertEqual(type(f), FileReader)
   f = getRecipeReader("dist:foo@master", "alidist")
   self.assertEqual(type(f), GitReader)
Ejemplo n.º 4
0
 def test_getRecipeReader(self):
     f = getRecipeReader("foo")
     assert (type(f) == FileReader)
     f = getRecipeReader("dist:foo@master")
     assert (type(f) == FileReader)
     f = getRecipeReader("dist:foo@master", "alidist")
     assert (type(f) == GitReader)
Ejemplo n.º 5
0
def deps(recipesDir, topPackage, outFile, buildRequires, transitiveRed, disable):
  dot = {}
  keys = [ "requires" ]
  if buildRequires:
    keys.append("build_requires")
  for p in glob("%s/*.sh" % recipesDir):
    debug(format("Reading file %(filename)s", filename=p))
    try:
      err, recipe, _ = parseRecipe(getRecipeReader(p))
      name = recipe["package"]
      if name in disable:
        debug("Ignoring %s, disabled explicitly" % name)
        continue
    except Exception as e:
      error(format("Error reading recipe %(filename)s: %(type)s: %(msg)s",
                   filename=p, type=type(e).__name__, msg=str(e)))
      sys.exit(1)
    dot[name] = dot.get(name, [])
    for k in keys:
      for d in recipe.get(k, []):
        d = d.split(":")[0]
        d in disable or dot[name].append(d)

  selected = None
  if topPackage != "all":
    if not topPackage in dot:
      error(format("Package %(topPackage)s does not exist", topPackage=topPackage))
      return False
    selected = [ topPackage ]
    olen = 0
    while len(selected) != olen:
      olen = len(selected)
      selected += [ x
                    for s in selected if s in dot
                    for x in dot[s] if not x in selected ]
    selected.sort()

  result = "digraph {\n"
  for p,deps in list(dot.items()):
    if selected and not p in selected: continue
    result += "  \"%s\";\n" % p
    for d in deps:
      result += "  \"%s\" -> \"%s\";\n" % (p,d)
  result += "}\n"

  with NamedTemporaryFile(delete=False) as fp:
    fp.write(result)
  try:
    if transitiveRed:
      execute(format("tred %(dotFile)s > %(dotFile)s.0 && mv %(dotFile)s.0 %(dotFile)s",
              dotFile=fp.name))
    execute(["dot", fp.name, "-Tpdf", "-o", outFile])
  except Exception as e:
    error(format("Error generating dependencies with dot: %(type)s: %(msg)s",
                 type=type(e).__name__, msg=str(e)))
  else:
    info(format("Dependencies graph generated: %(outFile)s", outFile=outFile))
  remove(fp.name)
  return True
Ejemplo n.º 6
0
def deps(recipesDir, topPackage, outFile, buildRequires, transitiveRed,
         disable):
    dot = {}
    keys = ["requires"]
    if buildRequires:
        keys.append("build_requires")
    for p in glob("%s/*.sh" % recipesDir):
        debug(format("Reading file %(filename)s", filename=p))
        try:
            err, recipe, _ = parseRecipe(getRecipeReader(p))
            name = recipe["package"]
            if name in disable:
                debug("Ignoring %s, disabled explicitly" % name)
                continue
        except Exception as e:
            error(
                format("Error reading recipe %(filename)s: %(type)s: %(msg)s",
                       filename=p,
                       type=type(e).__name__,
                       msg=str(e)))
            sys.exit(1)
        dot[name] = dot.get(name, [])
        for k in keys:
            for d in recipe.get(k, []):
                d = d.split(":")[0]
                d in disable or dot[name].append(d)

    selected = None
    if topPackage != "all":
        if not topPackage in dot:
            error(
                format("Package %(topPackage)s does not exist",
                       topPackage=topPackage))
            return False
        selected = [topPackage]
        olen = 0
        while len(selected) != olen:
            olen = len(selected)
            selected += [
                x for s in selected if s in dot for x in dot[s]
                if not x in selected
            ]
        selected.sort()

    result = "digraph {\n"
    for p, deps in list(dot.items()):
        if selected and not p in selected: continue
        result += "  \"%s\";\n" % p
        for d in deps:
            result += "  \"%s\" -> \"%s\";\n" % (p, d)
    result += "}\n"

    with NamedTemporaryFile(delete=False) as fp:
        fp.write(result)
    try:
        if transitiveRed:
            execute(
                format(
                    "tred %(dotFile)s > %(dotFile)s.0 && mv %(dotFile)s.0 %(dotFile)s",
                    dotFile=fp.name))
        execute(["dot", fp.name, "-Tpdf", "-o", outFile])
    except Exception as e:
        error(
            format("Error generating dependencies with dot: %(type)s: %(msg)s",
                   type=type(e).__name__,
                   msg=str(e)))
    else:
        info(
            format("Dependencies graph generated: %(outFile)s",
                   outFile=outFile))
    remove(fp.name)
    return True