[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