[137504] branches/gsoc15-dependency/base/src/macports1.0/macports_libsolv. tcl
ijackson at macports.org
ijackson at macports.org
Sat Jun 13 02:35:04 PDT 2015
Revision: 137504
https://trac.macports.org/changeset/137504
Author: ijackson at macports.org
Date: 2015-06-13 02:35:03 -0700 (Sat, 13 Jun 2015)
Log Message:
-----------
Implement search using libsolv
Add search feature using libsolv SAT-SOLVER.
This can be run be passing a -l option to port
e.g. port -l search <portname>
Modified Paths:
--------------
branches/gsoc15-dependency/base/src/macports1.0/macports_libsolv.tcl
Modified: branches/gsoc15-dependency/base/src/macports1.0/macports_libsolv.tcl
===================================================================
--- branches/gsoc15-dependency/base/src/macports1.0/macports_libsolv.tcl 2015-06-13 08:41:10 UTC (rev 137503)
+++ branches/gsoc15-dependency/base/src/macports1.0/macports_libsolv.tcl 2015-06-13 09:35:03 UTC (rev 137504)
@@ -45,22 +45,27 @@
namespace eval macports::libsolv {
## Variable to keep check if libsolv cache is created or not.
- variable libsolv_pool
+ # variable libsolv_pool
## Variable for pool
variable pool
proc print {} {
- variable libsolv_pool
+ variable pool
puts $solv::Job_SOLVER_SOLVABLE
- puts $libsolv_pool
+ puts $pool
+
+ set si [$pool cget -solvables]
+ puts "-------Printing Pool solvables------"
+ while {[set s [$si __next__]] ne "NULL"} {
+ puts "$s: [$s __str__]"
+ }
}
proc create_pool {} {
- variable libsolv_pool
variable pool
- if {![info exists libsolv_pool]} {
+ if {![info exists pool]} {
global macports::sources
set matches [list]
@@ -69,7 +74,6 @@
foreach source $sources {
set source [lindex $source 0]
set repo [$pool add_repo $source]
- set solvable [$repo add_solvable]
if {[catch {set fd [open [macports::getindex $source] r]} result]} {
ui_warn "Can't open index file for source: $source"
@@ -77,7 +81,9 @@
try {
#incr found 1
while {[gets $fd line] >= 0} {
- #puts $line
+ # Create a solvable for each port processed
+ set solvable [$repo add_solvable]
+
array unset portinfo
set name [lindex $line 0]
set len [lindex $line 1]
@@ -90,38 +96,34 @@
}
}
}
- set libsolv_pool ${pool}
- puts $libsolv_pool
+ # puts $pool
} else {
return {}
}
}
proc search {pattern} {
- # Search using libsolv
+ ## Search using libsolv
# puts "pattern = $pattern"
- # global macports::libsolv::pool
variable pool
+ $pool createwhatprovides
set sel [$pool Selection]
- #set di [$pool Dataiterator $solv::SOLVABLE_NAME $pattern [expr $solv::Dataiterator_SEARCH_SUBSTRING | $solv::Dataiterator_SEARCH_NOCASE]]
- #puts [$pool Dataiterator $solv::SOLVABLE_NAME $pattern [expr $solv::Dataiterator_SEARCH_SUBSTRING | $solv::Dataiterator_SEARCH_NOCASE]]
-
- #puts [$di __next__ ]
+ set di [$pool Dataiterator $solv::SOLVABLE_NAME $pattern [expr $solv::Dataiterator_SEARCH_GLOB | $solv::Dataiterator_SEARCH_NOCASE]]
+ # puts "$pool Dataiterator $solv::SOLVABLE_NAME $pattern [expr $solv::Dataiterator_SEARCH_GLOB | $solv::Dataiterator_SEARCH_NOCASE]"
- foreach data [$pool Dataiterator $solv::SOLVABLE_NAME $pattern [expr $solv::Dataiterator_SEARCH_SUBSTRING | $solv::Dataiterator_SEARCH_NOCASE]] {
- #while {[$di __next__] ne "NULL"}
- puts "data = $data"
- $sel add_raw $solv::Job_SOLVER_SOLVABLE $data::solvid
+ while {[set data [$di __next__]] ne "NULL"} {
+ # puts "data = $data"
+ # puts [$data cget -solvid]
+ $sel add_raw $solv::Job_SOLVER_SOLVABLE [$data cget -solvid]
+ # puts [$sel __repr__]
}
foreach s [$sel solvables] {
- puts "solvable = $s"
+ puts "solvable = $s [$s __str__]"
}
-
- #puts $res
- #if {[info exists res]} {
+ #if{[info exists sel]} {
# puts "$pattern found by libsolv"
#} else {
# puts "$pattern not found by libsolv"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20150613/0f71f73c/attachment.html>
More information about the macports-changes
mailing list