Diff
Not logged in

Differences From Artifact [2ae07ec8f6]:

To Artifact [3b1b700ac5]:


1528
1529
1530
1531
1532
1533
1534
1535





1536
1537
1538
1539
1540
1541
1542
1528
1529
1530
1531
1532
1533
1534

1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546







-
+
+
+
+
+







          "\" for prefix \"" $prefix \"...]
    }

    return $result
  }

  #
  # NOTE: TBD
  # NOTE: This procedure creates a new interpreter, which may be "safe", and
  #       places a reference to it in a variable in the context of the caller
  #       identified by the varName argument.  The created interpreter has a
  #       fully functioning [package] command ensemble; all other commands do
  #       nothing and return nothing.  This procedure may raise script errors.
  #
  proc createInterp { varName } {
    upvar 1 $varName interp

    set interp [interp create -safe]
    interp eval $interp [list set dir .]

1553
1554
1555
1556
1557
1558
1559
1560








1561
1562
1563
1564
1565
1566
1567
1557
1558
1559
1560
1561
1562
1563

1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578







-
+
+
+
+
+
+
+
+







    }

    interp eval $interp [list proc proc args ""]; # NOP
    return ""
  }

  #
  # NOTE: TBD
  # NOTE: This procedure evaluates a script file and attempts to determine the
  #       list of new [package ifneeded] scripts added by it.  When successful
  #       it returns a list-of-lists.  Each element of the outer list contains
  #       a package name and the list of its versions in descending order; in
  #       the event of failure, empty lists may be returned for the outer list
  #       or for a list of versions.  The interp argument is the interp to use
  #       when evaluating the file specified by the fileName argument.  This
  #       procedure may raise script errors.
  #
  proc getIfNeededVersions { interp fileName } {
    set result [list]

    set oldPackageNames [interp eval $interp [list package names]]
    interp invokehidden $interp source $fileName; # [package ifneeded], etc.
    set newPackageNames [interp eval $interp [list package names]]