]> git.ipfire.org Git - pakfire.git/commitdiff
Make files searchable by glob patterns.
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Mar 2011 13:34:55 +0000 (14:34 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Mar 2011 13:34:55 +0000 (14:34 +0100)
pakfire/packages/base.py
pakfire/packages/installed.py
pakfire/repository/base.py
pakfire/repository/index.py
po/pakfire.pot

index fc6d95ae543eeb0a72ad252e96c7630cfc43d540..c963039fd4e530707cf78a09a94c295c16050516 100644 (file)
@@ -1,5 +1,7 @@
 #!/usr/bin/python
 
+
+import fnmatch
 import logging
 import re
 
@@ -254,7 +256,11 @@ class Package(object):
        ### methods ###
 
        def _does_provide_file(self, requires):
-               return requires.requires in self.filelist
+               for file in self.filelist:
+                       if fnmatch.fnmatch(file, requires.requires):
+                               return True
+
+               return False
 
        def does_provide(self, requires):
                if not isinstance(requires, pakfire.depsolve.Requires):
index 4d99f5f80692023d80806b7d25a0be2bb7c02e42..8e9c9792211be1c90ef4be564addeb99284b4c4d 100644 (file)
@@ -167,7 +167,7 @@ class DatabasePackage(Package):
                        A faster version to find a file in the database.
                """
                c = self.db.cursor()
-               c.execute("SELECT * FROM files WHERE name = ? AND pkg = ?",
+               c.execute("SELECT * FROM files WHERE name GLOB ? AND pkg = ?",
                        (requires.requires, self.id))
 
                ret = False
index c4b589a6400e581a5e157c15344115857f6c60d2..1cd57e604c96eaf5d240c894b182052f96301ea7 100644 (file)
@@ -79,7 +79,13 @@ class RepositoryFactory(object):
 
        def get_by_file(self, filename):
                for pkg in self.packages:
-                       if filename in pkg.filelist:
+                       match = False
+                       for pkg_filename in pkg.filelist:
+                               if fnmatch.fnmatch(pkg_filename, filename):
+                                       match = True
+                                       break
+
+                       if match:
                                yield pkg
 
        def search(self, pattern):
index 9d38c6479bd60d3d33a39d2fd49e87e9971b4dfb..a0c68b7e91e09e61016d4d073da7e643e0ea2036 100644 (file)
@@ -1,5 +1,6 @@
 #!/usr/bin/python
 
+import fnmatch
 import json
 import logging
 import lzma
@@ -37,7 +38,13 @@ class Index(object):
 
        def get_by_file(self, filename):
                for pkg in self.packages:
-                       if filename in pkg.filelist:
+                       match = False
+                       for pkg_filename in pkg.filelist:
+                               if fnmatch.fnmatch(pkg_filename, filename):
+                                       match = True
+                                       break
+
+                       if match:
                                yield pkg
 
        def get_by_id(self, id):
@@ -157,7 +164,7 @@ class DatabaseIndexFactory(Index):
 
        def get_by_file(self, filename):
                c = self.db.cursor()
-               c.execute("SELECT pkg FROM files WHERE name = ?", (filename,))
+               c.execute("SELECT pkg FROM files WHERE name GLOB ?", (filename,))
 
                for pkg in c:
                        yield self.get_by_id(pkg["pkg"])
index 00df40d7d6caf16a68517c7a82b4e40452aabea9..badbddd30525b596f4e61ebf36134134f6aa1de5 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-04 13:23+0100\n"
+"POT-Creation-Date: 2011-03-04 14:33+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -158,11 +158,11 @@ msgstr ""
 msgid "Package"
 msgstr ""
 
-#: ../pakfire/depsolve.py:220 ../pakfire/packages/base.py:55
+#: ../pakfire/depsolve.py:220 ../pakfire/packages/base.py:57
 msgid "Arch"
 msgstr ""
 
-#: ../pakfire/depsolve.py:220 ../pakfire/packages/base.py:56
+#: ../pakfire/depsolve.py:220 ../pakfire/packages/base.py:58
 msgid "Version"
 msgstr ""
 
@@ -170,7 +170,7 @@ msgstr ""
 msgid "Repository"
 msgstr ""
 
-#: ../pakfire/depsolve.py:220 ../pakfire/packages/base.py:58
+#: ../pakfire/depsolve.py:220 ../pakfire/packages/base.py:60
 msgid "Size"
 msgstr ""
 
@@ -228,47 +228,47 @@ msgstr ""
 msgid "Is this okay?"
 msgstr ""
 
-#: ../pakfire/packages/base.py:54
+#: ../pakfire/packages/base.py:56
 msgid "Name"
 msgstr ""
 
-#: ../pakfire/packages/base.py:57
+#: ../pakfire/packages/base.py:59
 msgid "Release"
 msgstr ""
 
-#: ../pakfire/packages/base.py:59
+#: ../pakfire/packages/base.py:61
 msgid "Repo"
 msgstr ""
 
-#: ../pakfire/packages/base.py:60
+#: ../pakfire/packages/base.py:62
 msgid "Summary"
 msgstr ""
 
-#: ../pakfire/packages/base.py:61
+#: ../pakfire/packages/base.py:63
 msgid "URL"
 msgstr ""
 
-#: ../pakfire/packages/base.py:62
+#: ../pakfire/packages/base.py:64
 msgid "License"
 msgstr ""
 
-#: ../pakfire/packages/base.py:65
+#: ../pakfire/packages/base.py:67
 msgid "Description"
 msgstr ""
 
-#: ../pakfire/packages/base.py:71
+#: ../pakfire/packages/base.py:73
 msgid "UUID"
 msgstr ""
 
-#: ../pakfire/packages/base.py:72
+#: ../pakfire/packages/base.py:74
 msgid "Build ID"
 msgstr ""
 
-#: ../pakfire/packages/base.py:73
+#: ../pakfire/packages/base.py:75
 msgid "Build date"
 msgstr ""
 
-#: ../pakfire/packages/base.py:74
+#: ../pakfire/packages/base.py:76
 msgid "Build host"
 msgstr ""
 
@@ -280,7 +280,7 @@ msgstr ""
 msgid "Extracting:"
 msgstr ""
 
-#: ../pakfire/repository/index.py:314
+#: ../pakfire/repository/index.py:321
 #, python-format
 msgid "%s: package database"
 msgstr ""