src/Pure/System/build.scala
changeset 49497 45137257399a
parent 49493 146090de0474
child 49499 70898d016538
     1.1 --- a/src/Pure/System/build.scala	Tue Jul 24 18:38:07 2012 +0200
     1.2 +++ b/src/Pure/System/build.scala	Tue Jul 24 20:41:50 2012 +0200
     1.3 @@ -45,6 +45,7 @@
     1.4        base_name: String,
     1.5        dir: Path,
     1.6        parent: Option[String],
     1.7 +      parent_base_name: Option[String],
     1.8        description: String,
     1.9        options: Options,
    1.10        theories: List[(Options, List[Path])],
    1.11 @@ -188,16 +189,19 @@
    1.12        try {
    1.13          if (entry.name == "") error("Bad session name")
    1.14  
    1.15 -        val full_name =
    1.16 +        val (full_name, parent_base_name) =
    1.17            if (is_pure(entry.name)) {
    1.18              if (entry.parent.isDefined) error("Illegal parent session")
    1.19 -            else entry.name
    1.20 +            else (entry.name, None: Option[String])
    1.21            }
    1.22            else
    1.23              entry.parent match {
    1.24                case Some(parent_name) if queue1.defined(parent_name) =>
    1.25 -                if (entry.this_name) entry.name
    1.26 -                else parent_name + "-" + entry.name
    1.27 +                val full_name =
    1.28 +                  if (entry.this_name) entry.name
    1.29 +                  else parent_name + "-" + entry.name
    1.30 +                val parent_base_name = Some(queue1(parent_name).base_name)
    1.31 +                (full_name, parent_base_name)
    1.32                case _ => error("Bad parent session")
    1.33              }
    1.34  
    1.35 @@ -218,7 +222,7 @@
    1.36          val digest = SHA1.digest((full_name, entry.parent, entry.options, entry.theories).toString)
    1.37  
    1.38          val info =
    1.39 -          Session.Info(entry.name, dir + path, entry.parent,
    1.40 +          Session.Info(entry.name, dir + path, entry.parent, parent_base_name,
    1.41              entry.description, session_options, theories, files, digest)
    1.42  
    1.43          queue1 + (key, info)
    1.44 @@ -366,6 +370,7 @@
    1.45      }
    1.46  
    1.47      val parent = info.parent.getOrElse("")
    1.48 +    val parent_base_name = info.parent_base_name.getOrElse("")
    1.49  
    1.50      val cwd = info.dir.file
    1.51      val env = Map("INPUT" -> parent, "TARGET" -> name, "OUTPUT" -> output.getOrElse(""))
    1.52 @@ -396,7 +401,7 @@
    1.53        import XML.Encode._
    1.54            pair(bool, pair(Options.encode, pair(bool, pair(bool, pair(Path.encode, pair(string,
    1.55              pair(string, pair(string, list(pair(Options.encode, list(Path.encode)))))))))))(
    1.56 -          (output.isDefined, (options, (timing, (verbose, (browser_info, (parent,
    1.57 +          (output.isDefined, (options, (timing, (verbose, (browser_info, (parent_base_name,
    1.58              (name, (info.base_name, info.theories)))))))))
    1.59      }
    1.60      new Job(cwd, env, script, YXML.string_of_body(args_xml))
    1.61 @@ -455,7 +460,6 @@
    1.62          pending.dequeue(running.isDefinedAt(_)) match {
    1.63            case Some((name, info)) =>
    1.64              if (no_build) {
    1.65 -              if (verbose) echo(name + " in " + info.dir)
    1.66                loop(pending - name, running, results + (name -> 0))
    1.67              }
    1.68              else if (info.parent.map(results(_)).forall(_ == 0)) {