summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalph Bean <ralph.bean@gmail.com>2011-04-12 21:37:25 -0400
committerRalph Bean <ralph.bean@gmail.com>2011-04-12 21:37:25 -0400
commit2f8b1230d6b90523b92c0b60cb479ab499017f59 (patch)
tree5125c3884110d4bb0cb6cb83d1750364df114b3e
parent696ffbe2a33e2e1cec51ab503baed6169addc4d1 (diff)
parentef0f36eee50df5081280edd069ff452573c0f679 (diff)
downloadleafymiracle-2f8b1230d6b90523b92c0b60cb479ab499017f59.tar.gz
leafymiracle-2f8b1230d6b90523b92c0b60cb479ab499017f59.tar.xz
leafymiracle-2f8b1230d6b90523b92c0b60cb479ab499017f59.zip
Merge branch 'master' of git+ssh://fedorapeople.org/~lmacken/public_git/leafymiracle
-rw-r--r--.gitignore3
-rw-r--r--leafymiracle/models.py18
-rw-r--r--leafymiracle/populate.py40
-rw-r--r--leafymiracle/widgets.py1
-rwxr-xr-xlink_in_system_modules.sh10
5 files changed, 68 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index 3d8c425..f2beea2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,10 @@
*.pyc
*.pyo
-*.db
+*.db*
build
dist
env
*.egg-info
*.swp
README.pdf
+comps
diff --git a/leafymiracle/models.py b/leafymiracle/models.py
index 0e86aa1..0edbdd4 100644
--- a/leafymiracle/models.py
+++ b/leafymiracle/models.py
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from sqlalchemy import Integer, Column, Unicode, UnicodeText, ForeignKey
+from sqlalchemy import Integer, Column, Unicode, UnicodeText, ForeignKey, Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, scoped_session, sessionmaker
@@ -115,6 +115,22 @@ class Package(Base):
""".format(**self.__dict__)
}
+dependencies_mapping = Table(
+ 'packages_dependencies_mapping', Base.metadata,
+ Column('depender_id', Integer,
+ ForeignKey('packages.id'), primary_key=True),
+ Column('dependee_id', Integer,
+ ForeignKey('packages.id'), primary_key=True))
+
+Package.__mapper__.add_property('dependencies', relationship(
+ Package,
+ primaryjoin=Package.id==dependencies_mapping.c.dependee_id,
+ secondaryjoin=dependencies_mapping.c.depender_id==Package.id,
+ secondary=dependencies_mapping,
+ doc="List of this packages' dependencies!",
+))
+
+
def initialize_sql(engine):
DBSession.configure(bind=engine)
diff --git a/leafymiracle/populate.py b/leafymiracle/populate.py
index 9f78fc5..87d578a 100644
--- a/leafymiracle/populate.py
+++ b/leafymiracle/populate.py
@@ -19,7 +19,11 @@ from kitchen.text.converters import to_unicode
from models import Root, Category, Group, Package, DBSession, initialize_sql
-def populate(comps='comps-f16'):
+from yum import YumBase
+yumobj = YumBase()
+yumobj.setCacheDir()
+
+def populate(comps='comps-f16', do_dependencies=True):
from yum.comps import Comps
session = DBSession()
@@ -58,8 +62,42 @@ def populate(comps='comps-f16'):
session.flush()
+ if do_dependencies:
+ for package in session.query(Package).all():
+ add_dependencies(package, session)
+
session.commit()
+def add_dependencies(package, session):
+ deps = set()
+ pkg = yumobj.pkgSack.searchNevra(name=package.name)
+ if not pkg:
+ print "Cannot find package: %s" % package
+ return
+
+ deps_d = yumobj.findDeps([pkg[0]])
+ for dep in deps_d.itervalues():
+ for req in dep.itervalues():
+ deps.add(req[0].name)
+
+ for dep in deps:
+ base_query = session.query(Package).filter_by(name=dep)
+ if base_query.count() == 0:
+ _new_package = Package(name=dep)
+ session.add(_new_package)
+ session.flush()
+ add_dependencies(_new_package, session)
+
+ dep_as_package = base_query.one()
+
+ if dep_as_package not in package.dependencies:
+ package.dependencies.append(dep_as_package)
+
+ print "package: %s has (%i/%i) deps" % (
+ package.name, len(package.dependencies), len(deps))
+
+ session.flush()
+
def build_comps():
import subprocess
subprocess.call('git clone git://git.fedorahosted.org/comps.git', shell=True)
diff --git a/leafymiracle/widgets.py b/leafymiracle/widgets.py
index 9810fad..84cae34 100644
--- a/leafymiracle/widgets.py
+++ b/leafymiracle/widgets.py
@@ -41,7 +41,6 @@ class LeafyGraph(SQLARadialGraph):
show_attributes = False
imply_relations = True
auto_labels = False
- excluded_columns = ['group']
deep_linking = True
#transition = JSSymbol(src='$jit.Trans.Back.easeInOut')
duration = 400
diff --git a/link_in_system_modules.sh b/link_in_system_modules.sh
new file mode 100755
index 0000000..36bd81c
--- /dev/null
+++ b/link_in_system_modules.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+
+ln -s /usr/lib/python2.*/site-packages/yum* $WORKON_HOME/leafymiracle/lib/python*/site-packages
+ln -s /usr/lib/python2.*/site-packages/rpm* $WORKON_HOME/leafymiracle/lib/python*/site-packages
+ln -s /usr/lib/python2.*/site-packages/urlgrabber* $WORKON_HOME/leafymiracle/lib/python*/site-packages
+ln -s /usr/lib/python2.*/site-packages/libxml2* $WORKON_HOME/leafymiracle/lib/python*/site-packages
+ln -s /usr/lib/python2.*/site-packages/pycurl* $WORKON_HOME/leafymiracle/lib/python*/site-packages
+ln -s /usr/lib/python2.*/site-packages/sqlitecache* $WORKON_HOME/leafymiracle/lib/python*/site-packages
+ln -s /usr/lib/python2.*/site-packages/_sqlitecache* $WORKON_HOME/leafymiracle/lib/python*/site-packages