1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
|
"\" for prefix \"" $prefix \"...]
}
return $result
}
#
# NOTE: TBD
#
proc createInterp { varName } {
upvar 1 $varName interp
set interp [interp create -safe]
interp eval $interp [list set dir .]
|
|
>
>
>
>
|
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: 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
|
}
interp eval $interp [list proc proc args ""]; # NOP
return ""
}
#
# NOTE: TBD
#
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]]
|
|
>
>
>
>
>
>
>
|
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: 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]]
|