summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README1
-rw-r--r--devel/management/commands/reporead.py84
-rw-r--r--devel/tests.py7
-rw-r--r--devel/urls.py1
-rw-r--r--devel/views.py39
-rw-r--r--feeds.py9
-rw-r--r--main/fixtures/groups.json198
-rw-r--r--main/fixtures/repos.json10
-rw-r--r--main/fixtures/test_packages.json11118
-rw-r--r--main/migrations/0038_add_depends_optional_description.py156
-rw-r--r--main/migrations/0039_auto__del_field_package_license.py157
-rw-r--r--main/migrations/0040_split_package_files.py166
-rw-r--r--main/migrations/0041_move_package_files_data.py186
-rw-r--r--main/migrations/0042_auto__del_field_packagefile_path.py158
-rw-r--r--main/models.py62
-rw-r--r--media/archweb.css542
-rw-r--r--mirrors/admin.py20
-rw-r--r--mirrors/management/commands/mirrorcheck.py17
-rw-r--r--mirrors/management/commands/mirrorresolv.py11
-rw-r--r--mirrors/models.py40
-rw-r--r--mirrors/urls.py10
-rw-r--r--mirrors/urls_mirrorlist.py12
-rw-r--r--packages/admin.py11
-rw-r--r--packages/migrations/0004_auto__add_license.py118
-rw-r--r--packages/migrations/0005_move_license_data.py120
-rw-r--r--packages/models.py42
-rw-r--r--packages/urls.py2
-rw-r--r--packages/urls_groups.py9
-rw-r--r--packages/utils.py24
-rw-r--r--packages/views.py51
-rw-r--r--public/views.py31
-rw-r--r--requirements.txt2
-rw-r--r--requirements_prod.txt2
-rw-r--r--templates/base.html2
-rw-r--r--templates/devel/index.html9
-rw-r--r--templates/devel/new_account.txt5
-rw-r--r--templates/general_form.html12
-rw-r--r--templates/packages/details.html38
-rw-r--r--templates/packages/files-list.html2
-rw-r--r--templates/packages/outofdate.txt4
-rw-r--r--templates/packages/search.html6
-rw-r--r--templates/packages/stale_relations.html112
-rw-r--r--templates/registration/logout.html4
-rw-r--r--templates/todolists/email_notification.txt13
-rw-r--r--templates/todolists/view.html4
-rw-r--r--todolists/views.py136
-rw-r--r--urls.py73
47 files changed, 2161 insertions, 11675 deletions
diff --git a/README b/README
index 6b492d84..3e315388 100644
--- a/README
+++ b/README
@@ -58,6 +58,7 @@ packages, you will probably want the following:
(archweb-env) $ ./manage.py loaddata main/fixtures/arches.json
(archweb-env) $ ./manage.py loaddata main/fixtures/repos.json
+ (archweb-env) $ ./manage.py loaddata main/fixtures/groups.json
(archweb-env) $ ./manage.py loaddata mirrors/fixtures/mirrorprotocols.json
7. Use the following commands to start a service instance
diff --git a/devel/management/commands/reporead.py b/devel/management/commands/reporead.py
index e31478c5..09e48559 100644
--- a/devel/management/commands/reporead.py
+++ b/devel/management/commands/reporead.py
@@ -27,9 +27,17 @@ import logging
from datetime import datetime
from optparse import make_option
+# New in 2.6, but fast (C implementation) in 2.7. We will use it over codecs if
+# available. Eventually remove the codecs import completely.
+io = None
+try:
+ import io
+except ImportError:
+ pass
+
from logging import ERROR, WARNING, INFO, DEBUG
-from main.models import Arch, Package, Repo
+from main.models import Arch, Package, PackageDepend, PackageFile, Repo
logging.basicConfig(
level=WARNING,
@@ -79,14 +87,13 @@ class Pkg(object):
"""An interim 'container' object for holding Arch package data."""
bare = ( 'name', 'base', 'arch', 'desc', 'filename',
'md5sum', 'url', 'builddate', 'packager' )
- squash = ( 'license', )
number = ( 'csize', 'isize' )
def __init__(self, repo):
self.repo = repo
self.ver = None
self.rel = None
- for k in self.bare + self.squash + self.number:
+ for k in self.bare + self.number:
setattr(self, k, None)
def populate(self, values):
@@ -94,8 +101,6 @@ class Pkg(object):
# ensure we stay under our DB character limit
if k in self.bare:
setattr(self, k, v[0][:254])
- elif k in self.squash:
- setattr(self, k, u', '.join(v)[:254])
elif k in self.number:
setattr(self, k, long(v[0]))
elif k == 'force':
@@ -158,6 +163,20 @@ def find_user(userstring):
# lookup more than strictly necessary.
find_user.cache = {}
+def create_depend(package, dep_str, optional=False):
+ depend = PackageDepend(pkg=package, optional=optional)
+ # lop off any description first
+ parts = dep_str.split(':', 1)
+ if len(parts) > 1:
+ depend.description = parts[1].strip()
+ match = re.match(r"^(.+?)((>=|<=|=|>|<)(.*))?$", parts[0].strip())
+ if match:
+ depend.depname = match.group(1)
+ if match.group(2):
+ depend.depvcmp = match.group(2)
+ depend.save(force_insert=True)
+ return depend
+
def populate_pkg(dbpkg, repopkg, force=False, timestamp=None):
if repopkg.base:
dbpkg.pkgbase = repopkg.base
@@ -166,7 +185,6 @@ def populate_pkg(dbpkg, repopkg, force=False, timestamp=None):
dbpkg.pkgver = repopkg.ver
dbpkg.pkgrel = repopkg.rel
dbpkg.pkgdesc = repopkg.desc
- dbpkg.license = repopkg.license
dbpkg.url = repopkg.url
dbpkg.filename = repopkg.filename
dbpkg.compressed_size = repopkg.csize
@@ -192,21 +210,22 @@ def populate_pkg(dbpkg, repopkg, force=False, timestamp=None):
populate_files(dbpkg, repopkg, force=force)
dbpkg.packagedepend_set.all().delete()
- if 'depends' in repopkg.__dict__:
+ if hasattr(repopkg, 'depends'):
for y in repopkg.depends:
- # make sure we aren't adding self depends..
- # yes *sigh* i have seen them in pkgbuilds
- dpname, dpvcmp = re.match(r"([a-z0-9._+-]+)(.*)", y).groups()
- if dpname == repopkg.name:
- logger.warning('Package %s has a depend on itself', repopkg.name)
- continue
- dbpkg.packagedepend_set.create(depname=dpname, depvcmp=dpvcmp)
- logger.debug('Added %s as dep for pkg %s', dpname, repopkg.name)
+ dep = create_depend(dbpkg, y)
+ if hasattr(repopkg, 'optdepends'):
+ for y in repopkg.optdepends:
+ dep = create_depend(dbpkg, y, True)
- dbpkg.packagegroup_set.all().delete()
- if 'groups' in repopkg.__dict__:
+ dbpkg.groups.all().delete()
+ if hasattr(repopkg, 'groups'):
for y in repopkg.groups:
- dbpkg.packagegroup_set.create(name=y)
+ dbpkg.groups.create(name=y)
+
+ dbpkg.licenses.all().delete()
+ if hasattr(repopkg, 'license'):
+ for y in repopkg.license:
+ dbpkg.licenses.create(name=y)
def populate_files(dbpkg, repopkg, force=False):
@@ -222,12 +241,21 @@ def populate_files(dbpkg, repopkg, force=False):
elif dbpkg.files_last_update > dbpkg.last_update:
return
# only delete files if we are reading a DB that contains them
- if 'files' in repopkg.__dict__:
+ if hasattr(repopkg, 'files'):
dbpkg.packagefile_set.all().delete()
logger.info("adding %d files for package %s",
len(repopkg.files), dbpkg.pkgname)
- for x in repopkg.files:
- dbpkg.packagefile_set.create(path=x)
+ for f in repopkg.files:
+ dirname, filename = f.rsplit('/', 1)
+ if filename == '':
+ filename = None
+ # this is basically like calling dbpkg.packagefile_set.create(),
+ # but much faster as we can skip a lot of the repeated code paths
+ pkgfile = PackageFile(pkg=dbpkg,
+ is_directory=(filename is None),
+ directory=dirname + '/',
+ filename=filename)
+ pkgfile.save()
dbpkg.files_last_update = datetime.now()
dbpkg.save()
@@ -363,21 +391,21 @@ def parse_repo(repopath):
logger.error("File does not have the proper extension")
raise Exception("File does not have the proper extension")
- repodb = tarfile.open(repopath,"r")
- ## assuming well formed tar, with dir first then files after
- ## repo-add enforces this
+ repodb = tarfile.open(repopath, "r")
logger.debug("Starting package parsing")
dbfiles = ('desc', 'depends', 'files')
pkgs = {}
for tarinfo in repodb.getmembers():
- if tarinfo.isdir():
- continue
- elif tarinfo.isreg():
+ if tarinfo.isreg():
pkgid, fname = os.path.split(tarinfo.name)
if fname not in dbfiles:
continue
data_file = repodb.extractfile(tarinfo)
- data_file = codecs.EncodedFile(data_file, 'utf-8')
+ if io is None:
+ data_file = codecs.EncodedFile(data_file, 'utf-8')
+ else:
+ data_file = io.TextIOWrapper(io.BytesIO(data_file.read()),
+ encoding='utf=8')
try:
data = parse_info(data_file)
p = pkgs.setdefault(pkgid, Pkg(reponame))
diff --git a/devel/tests.py b/devel/tests.py
index 682f3d92..da5459d6 100644
--- a/devel/tests.py
+++ b/devel/tests.py
@@ -10,13 +10,6 @@ class DevelTest(TestCase):
self.assertEqual(response['location'],
'http://testserver/login/?next=/devel/')
- def test_notify(self):
- response = self.client.get('/devel/notify/')
- self.assertEqual(response.status_code, 302)
- self.assertEqual(response.has_header('Location'), True)
- self.assertEqual(response['location'],
- 'http://testserver/login/?next=/devel/notify/')
-
def test_profile(self):
response = self.client.get('/devel/profile/')
self.assertEqual(response.status_code, 302)
diff --git a/devel/urls.py b/devel/urls.py
index 0a050a92..bcf9c071 100644
--- a/devel/urls.py
+++ b/devel/urls.py
@@ -3,7 +3,6 @@ from django.conf.urls.defaults import patterns
urlpatterns = patterns('devel.views',
(r'^$', 'index'),
(r'^clock/$', 'clock'),
- (r'^notify/$', 'change_notify'),
(r'^profile/$', 'change_profile'),
(r'^newuser/$', 'new_user_form'),
)
diff --git a/devel/views.py b/devel/views.py
index b26c7af0..311922ca 100644
--- a/devel/views.py
+++ b/devel/views.py
@@ -4,6 +4,7 @@ from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from django.core.mail import send_mail
+from django.template import loader, Context
from django.views.decorators.cache import never_cache
from django.views.generic.simple import direct_to_template
@@ -23,8 +24,8 @@ from string import ascii_letters, digits
def index(request):
'''the Developer dashboard'''
inner_q = PackageRelation.objects.filter(user=request.user).values('pkgbase')
- flagged = Package.objects.select_related('arch', 'repo').filter(flag_date__isnull=False)
- flagged = flagged.filter(pkgbase__in=inner_q).order_by('pkgname')
+ flagged = Package.objects.select_related('arch', 'repo').filter(
+ flag_date__isnull=False, pkgbase__in=inner_q).order_by('pkgname')
todopkgs = TodolistPkg.objects.select_related(
'pkg', 'pkg__arch', 'pkg__repo').filter(complete=False)
@@ -65,15 +66,6 @@ def clock(request):
return direct_to_template(request, 'devel/clock.html', page_dict)
-@login_required
-def change_notify(request):
- maint = User.objects.get(username=request.user.username)
- notify = request.POST.get('notify', 'no')
- prof = maint.get_profile()
- prof.notify = (notify == 'yes')
- prof.save()
- return HttpResponseRedirect('/devel/')
-
class ProfileForm(forms.Form):
email = forms.EmailField(label='Private email (not shown publicly):',
help_text="Used for out-of-date notifications, etc.")
@@ -120,25 +112,34 @@ class NewUserForm(forms.ModelForm):
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
+ def clean_username(self):
+ username = self.cleaned_data['username']
+ if User.objects.filter(username=username).exists():
+ raise forms.ValidationError(
+ "A user with that username already exists.")
+ return username
+
def save(self):
profile = forms.ModelForm.save(self, False)
pwletters = ascii_letters + digits
- pw = ''.join([random.choice(pwletters) for i in xrange(8)])
+ password = ''.join([random.choice(pwletters) for i in xrange(8)])
user = User.objects.create_user(username=self.cleaned_data['username'],
- email=self.cleaned_data['email'], password=pw)
+ email=self.cleaned_data['email'], password=password)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.save()
profile.user = user
profile.save()
- domain = Site.objects.get_current().domain
+
+ t = loader.get_template('devel/new_account.txt')
+ c = Context({
+ 'site': Site.objects.get_current(),
+ 'user': user,
+ 'password': password,
+ })
send_mail("Your new archweb account",
- """You can now log into:
-https://%s/login/
-with these login details:
-Username: %s
-Password: %s""" % (domain, user.username, pw),
+ t.render(c),
'Arch Website Notification <nobody@archlinux.org>',
[user.email],
fail_silently=False)
diff --git a/feeds.py b/feeds.py
index 3f1e95f0..bff97cba 100644
--- a/feeds.py
+++ b/feeds.py
@@ -62,7 +62,8 @@ class PackageFeed(Feed):
def get_object(self, request, arch='', repo=''):
obj = dict()
- qs = Package.objects.select_related('arch', 'repo').order_by('-last_update')
+ qs = Package.objects.select_related('arch', 'repo').order_by(
+ '-last_update')
if arch != '':
# feed for a single arch, also include 'any' packages everywhere
@@ -142,11 +143,11 @@ class NewsFeed(Feed):
return wrapper(super(NewsFeed, self).__call__)(request, *args, **kwargs)
def items(self):
- return News.objects.select_related('author').order_by('-postdate', '-id')[:10]
+ return News.objects.select_related('author').order_by(
+ '-postdate', '-id')[:10]
def item_pubdate(self, item):
- d = item.postdate
- return datetime.datetime(d.year, d.month, d.day)
+ return item.postdate
def item_author_name(self, item):
return item.author.get_full_name()
diff --git a/main/fixtures/groups.json b/main/fixtures/groups.json
new file mode 100644
index 00000000..32416a7a
--- /dev/null
+++ b/main/fixtures/groups.json
@@ -0,0 +1,198 @@
+[
+ {
+ "pk": 1,
+ "model": "auth.group",
+ "fields": {
+ "name": "Developers",
+ "permissions": [
+ [
+ "change_package",
+ "main",
+ "package"
+ ],
+ [
+ "add_signoff",
+ "main",
+ "signoff"
+ ],
+ [
+ "add_todolist",
+ "main",
+ "todolist"
+ ],
+ [
+ "change_todolist",
+ "main",
+ "todolist"
+ ],
+ [
+ "add_todolistpkg",
+ "main",
+ "todolistpkg"
+ ],
+ [
+ "change_todolistpkg",
+ "main",
+ "todolistpkg"
+ ],
+ [
+ "delete_todolistpkg",
+ "main",
+ "todolistpkg"
+ ],
+ [
+ "add_news",
+ "news",
+ "news"
+ ],
+ [
+ "change_news",
+ "news",
+ "news"
+ ]
+ ]
+ }
+ },
+ {
+ "pk": 3,
+ "model": "auth.group",
+ "fields": {
+ "name": "Mirror Maintainers",
+ "permissions": [
+ [
+ "add_mirror",
+ "mirrors",
+ "mirror"
+ ],
+ [
+ "change_mirror",
+ "mirrors",
+ "mirror"
+ ],
+ [
+ "delete_mirror",
+ "mirrors",
+ "mirror"
+ ],
+ [
+ "add_mirrorprotocol",
+ "mirrors",
+ "mirrorprotocol"
+ ],
+ [
+ "change_mirrorprotocol",
+ "mirrors",
+ "mirrorprotocol"
+ ],
+ [
+ "delete_mirrorprotocol",
+ "mirrors",
+ "mirrorprotocol"
+ ],
+ [
+ "add_mirrorrsync",
+ "mirrors",
+ "mirrorrsync"
+ ],
+ [
+ "change_mirrorrsync",
+ "mirrors",
+ "mirrorrsync"
+ ],
+ [
+ "delete_mirrorrsync",
+ "mirrors",
+ "mirrorrsync"
+ ],
+ [
+ "add_mirrorurl",
+ "mirrors",
+ "mirrorurl"
+ ],
+ [
+ "change_mirrorurl",
+ "mirrors",
+ "mirrorurl"
+ ],
+ [
+ "delete_mirrorurl",
+ "mirrors",
+ "mirrorurl"
+ ]
+ ]
+ }
+ },
+ {
+ "pk": 2,
+ "model": "auth.group",
+ "fields": {
+ "name": "Trusted Users",
+ "permissions": [
+ [
+ "change_package",
+ "main",
+ "package"
+ ],
+ [
+ "add_signoff",
+ "main",
+ "signoff"
+ ],
+ [
+ "add_todolist",
+ "main",
+ "todolist"
+ ],
+ [
+ "change_todolist",
+ "main",
+ "todolist"
+ ],
+ [
+ "add_todolistpkg",
+ "main",
+ "todolistpkg"
+ ],
+ [
+ "change_todolistpkg",
+ "main",
+ "todolistpkg"
+ ],
+ [
+ "delete_todolistpkg",
+ "main",
+ "todolistpkg"
+ ]
+ ]
+ }
+ },
+ {
+ "pk": 4,
+ "model": "auth.group",
+ "fields": {
+ "name": "User Admins",
+ "permissions": [
+ [
+ "add_user",
+ "auth",
+ "user"
+ ],
+ [
+ "change_user",
+ "auth",
+ "user"
+ ],
+ [
+ "add_userprofile",
+ "main",
+ "userprofile"
+ ],
+ [
+ "change_userprofile",
+ "main",
+ "userprofile"
+ ]
+ ]
+ }
+ }
+] \ No newline at end of file
diff --git a/main/fixtures/repos.json b/main/fixtures/repos.json
index a89af7b5..3b79d964 100644
--- a/main/fixtures/repos.json
+++ b/main/fixtures/repos.json
@@ -50,6 +50,16 @@
}
},
{
+ "pk": 8,
+ "model": "main.repo",
+ "fields": {
+ "svn_root": "community",
+ "testing": true,
+ "name": "Multilib-Testing",
+ "bugs_project": 5
+ }
+ },
+ {
"pk": 3,
"model": "main.repo",
"fields": {
diff --git a/main/fixtures/test_packages.json b/main/fixtures/test_packages.json
deleted file mode 100644
index bc3be6d1..00000000
--- a/main/fixtures/test_packages.json
+++ /dev/null
@@ -1,11118 +0,0 @@
-[
- {
- "pk": "1",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities to download and work with the Arch Build System (ABS)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "abs",
- "arch": 2,
- "pkgver": "2.0"
- }
- },
- {
- "pk": "2",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Library for filesystem ACL support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "acl",
- "arch": 2,
- "pkgver": "2.2.47"
- }
- },
- {
- "pk": "3",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Drivers for atl2 ethernet card",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "atl2",
- "arch": 2,
- "pkgver": "2.0.4"
- }
- },
- {
- "pk": "4",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Extended attribute support library for ACL support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "attr",
- "arch": 2,
- "pkgver": "2.4.41"
- }
- },
- {
- "pk": "5",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A GNU tool for automatically configuring source code",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "autoconf",
- "arch": 2,
- "pkgver": "2.61"
- }
- },
- {
- "pk": "6",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A GNU tool for automatically creating Makefiles",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "automake",
- "arch": 2,
- "pkgver": "1.10.1"
- }
- },
- {
- "pk": "7",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The GNU Bourne Again shell",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "bash",
- "arch": 2,
- "pkgver": "3.2.033"
- }
- },
- {
- "pk": "8",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "firmware extractor for the bcm43xx kernel module",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "bcm43xx-fwcutter",
- "arch": 2,
- "pkgver": "006"
- }
- },
- {
- "pk": "9",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A complete 8086 assembler and loader",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "bin86",
- "arch": 2,
- "pkgver": "0.16.17"
- }
- },
- {
- "pk": "10",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A set of programs to assemble and manipulate binary and object files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "binutils",
- "arch": 2,
- "pkgver": "2.18"
- }
- },
- {
- "pk": "11",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The GNU general-purpose parser generator",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "bison",
- "arch": 2,
- "pkgver": "2.3"
- }
- },
- {
- "pk": "12",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Layer2 ethernet bridging for Linux",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "bridge-utils",
- "arch": 2,
- "pkgver": "1.2"
- }
- },
- {
- "pk": "13",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A high-quality data compression program",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "bzip2",
- "arch": 2,
- "pkgver": "1.0.4"
- }
- },
- {
- "pk": "14",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "capi utils for isdn cards",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "capi4k-utils",
- "arch": 2,
- "pkgver": "050718"
- }
- },
- {
- "pk": "15",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The basic file, shell and text manipulation utilities of the GNU operating system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "coreutils",
- "arch": 2,
- "pkgver": "6.10"
- }
- },
- {
- "pk": "16",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool to copy files into or out of a cpio or tar archive",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "cpio",
- "arch": 2,
- "pkgver": "2.9"
- }
- },
- {
- "pk": "17",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Password Checking Library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "cracklib",
- "arch": 2,
- "pkgver": "2.8.10"
- }
- },
- {
- "pk": "18",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Userspace setup tool for transparent encryption of block devices using the Linux 2.6 cryptoapi",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "cryptsetup",
- "arch": 2,
- "pkgver": "1.0.6"
- }
- },
- {
- "pk": "19",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "csup - cvsup rewritten in C",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "csup",
- "arch": 2,
- "pkgver": "20060318"
- }
- },
- {
- "pk": "20",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A POSIX compliant shell that aims to be as small as possible",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "dash",
- "arch": 2,
- "pkgver": "0.5.4"
- }
- },
- {
- "pk": "21",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The Berkeley DB embedded database system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "db",
- "arch": 2,
- "pkgver": "4.6.21"
- }
- },
- {
- "pk": "22",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Dillon's Cron Daemon",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "dcron",
- "arch": 2,
- "pkgver": "3.2"
- }
- },
- {
- "pk": "23",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Device mapper userspace library and tools.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "device-mapper",
- "arch": 2,
- "pkgver": "1.02.24"
- }
- },
- {
- "pk": "24",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A DHCP client daemon",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "dhcpcd",
- "arch": 2,
- "pkgver": "3.2.1"
- }
- },
- {
- "pk": "25",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool to display dialog boxes from shell scripts",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "dialog",
- "arch": 2,
- "pkgver": "1.1_20071028"
- }
- },
- {
- "pk": "26",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utility programs used for creating patch files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "diffutils",
- "arch": 2,
- "pkgver": "2.8.1"
- }
- },
- {
- "pk": "27",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Data migration API",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "dmapi",
- "arch": 2,
- "pkgver": "2.2.8"
- }
- },
- {
- "pk": "28",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Device mapper RAID interface",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "dmraid",
- "arch": 2,
- "pkgver": "1.0.0.rc14"
- }
- },
- {
- "pk": "29",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Various DNS utilities - dig host nslookup nsupdate",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "dnsutils",
- "arch": 2,
- "pkgver": "9.4.2"
- }
- },
- {
- "pk": "30",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "DOS filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "dosfstools",
- "arch": 2,
- "pkgver": "2.11"
- }
- },
- {
- "pk": "31",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Ext2 filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "e2fsprogs",
- "arch": 2,
- "pkgver": "1.40.8"
- }
- },
- {
- "pk": "32",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A POSIX-compliant line editor",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "ed",
- "arch": 2,
- "pkgver": "0.9"
- }
- },
- {
- "pk": "33",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A new API to format and send structured log messages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "eventlog",
- "arch": 2,
- "pkgver": "0.2.5"
- }
- },
- {
- "pk": "34",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Gives a fake root environment, useful for building packages as a non-privileged user",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "fakeroot",
- "arch": 2,
- "pkgver": "1.9.3"
- }
- },
- {
- "pk": "35",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "File type identification utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "file",
- "arch": 2,
- "pkgver": "4.23"
- }
- },
- {
- "pk": "36",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Base filesystem",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "filesystem",
- "arch": 2,
- "pkgver": "2008.03"
- }
- },
- {
- "pk": "37",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU utilities to locate files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "findutils",
- "arch": 2,
- "pkgver": "4.2.33"
- }
- },
- {
- "pk": "38",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool for generating text-scanning programs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "flex",
- "arch": 2,
- "pkgver": "2.5.33"
- }
- },
- {
- "pk": "39",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A library that makes it possible to implement a filesystem in a userspace program.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "fuse",
- "arch": 2,
- "pkgver": "2.7.3"
- }
- },
- {
- "pk": "40",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Gnu version of awk",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "gawk",
- "arch": 2,
- "pkgver": "3.1.6"
- }
- },
- {
- "pk": "41",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The GNU Compiler Collection",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "gcc",
- "arch": 2,
- "pkgver": "4.3.0"
- }
- },
- {
- "pk": "42",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Runtime libraries shipped by GCC for C and C++ languages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "gcc-libs",
- "arch": 2,
- "pkgver": "4.3.0"
- }
- },
- {
- "pk": "43",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU database library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "gdbm",
- "arch": 2,
- "pkgver": "1.8.3"
- }
- },
- {
- "pk": "44",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Program to compress initramfs images",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "gen-init-cpio",
- "arch": 2,
- "pkgver": "2.6.17"
- }
- },
- {
- "pk": "45",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU internationalization library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "gettext",
- "arch": 2,
- "pkgver": "0.17"
- }
- },
- {
- "pk": "46",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Common C routines used by GTK+ 2.4 and other libs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "glib2",
- "arch": 2,
- "pkgver": "2.16.2"
- }
- },
- {
- "pk": "47",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU C Library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "9",
- "pkgname": "glibc",
- "arch": 2,
- "pkgver": "2.7"
- }
- },
- {
- "pk": "48",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A free library for arbitrary precision arithmetic",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "gmp",
- "arch": 2,
- "pkgver": "4.2.2"
- }
- },
- {
- "pk": "49",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A mouse server for the console and xterm",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "7",
- "pkgname": "gpm",
- "arch": 2,
- "pkgver": "1.20.1"
- }
- },
- {
- "pk": "50",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A string search utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "grep",
- "arch": 2,
- "pkgver": "2.5.3"
- }
- },
- {
- "pk": "51",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU troff text-formatting system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "groff",
- "arch": 2,
- "pkgver": "1.19.2"
- }
- },
- {
- "pk": "52",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A GNU multiboot boot loader",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "12",
- "pkgname": "grub",
- "arch": 2,
- "pkgver": "0.97"
- }
- },
- {
- "pk": "53",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU compression utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "gzip",
- "arch": 2,
- "pkgver": "1.3.12"
- }
- },
- {
- "pk": "54",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A shell utility for manipulating Linux IDE drive\/driver parameters",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "hdparm",
- "arch": 2,
- "pkgver": "8.6"
- }
- },
- {
- "pk": "55",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Heimdal Kerberos V5 libraries",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "heimdal",
- "arch": 2,
- "pkgver": "1.0.1"
- }
- },
- {
- "pk": "56",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Hardware detection script with loading modules and mkinitcpio.conf \/ rc.conf support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "hwdetect",
- "arch": 2,
- "pkgver": "0.9"
- }
- },
- {
- "pk": "57",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utility for bonding ethernet interfaces",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "ifenslave",
- "arch": 2,
- "pkgver": "1.1.0"
- }
- },
- {
- "pk": "58",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "System initialization\/bootup scripts",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "initscripts",
- "arch": 2,
- "pkgver": "2008.03"
- }
- },
- {
- "pk": "59",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "IP Routing Utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "iproute",
- "arch": 2,
- "pkgver": "2.6.24_rc7"
- }
- },
- {
- "pk": "60",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A Linux kernel packet control tool",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "iptables",
- "arch": 2,
- "pkgver": "1.4.0"
- }
- },
- {
- "pk": "61",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "IP Configuration Utilities (and Ping)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "iputils",
- "arch": 2,
- "pkgver": "20070202"
- }
- },
- {
- "pk": "62",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel Centrino Drivers firmware for IPW2100",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ipw2100-fw",
- "arch": 2,
- "pkgver": "1.3"
- }
- },
- {
- "pk": "63",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel Centrino Drivers firmware for IPW2200",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ipw2200-fw",
- "arch": 2,
- "pkgver": "3.0"
- }
- },
- {
- "pk": "64",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Driver for the Intel PRO\/Wireless 3945ABG miniPCI express adapter",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "8",
- "pkgname": "ipw3945",
- "arch": 2,
- "pkgver": "1.2.2"
- }
- },
- {
- "pk": "65",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel Centrino Drivers firmware for IPW3945",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ipw3945-ucode",
- "arch": 2,
- "pkgver": "1.14.2"
- }
- },
- {
- "pk": "66",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Regulatory daemon for IPW3945",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "ipw3945d",
- "arch": 2,
- "pkgver": "1.7.22"
- }
- },
- {
- "pk": "67",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "User space administration programs and tools for ISDN",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "isdn4k-utils",
- "arch": 2,
- "pkgver": "3.2p1"
- }
- },
- {
- "pk": "68",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel wireless firmware for IPW3945 (iwlwifi driver)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "iwlwifi-3945-ucode",
- "arch": 2,
- "pkgver": "2.14.1.5"
- }
- },
- {
- "pk": "69",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel wireless firmware for IPW4965 (iwlwifi driver)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "iwlwifi-4965-ucode",
- "arch": 2,
- "pkgver": "4.44.1.20"
- }
- },
- {
- "pk": "70",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "JFS filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "jfsutils",
- "arch": 2,
- "pkgver": "1.1.12"
- }
- },
- {
- "pk": "71",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Keytable files and keyboard utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "kbd",
- "arch": 2,
- "pkgver": "1.14.1.20080309"
- }
- },
- {
- "pk": "72",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Kernel headers sanitized for use in userspace",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "kernel-headers",
- "arch": 2,
- "pkgver": "2.6.24.3"
- }
- },
- {
- "pk": "73",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The Linux Kernel and modules",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "kernel26",
- "arch": 2,
- "pkgver": "2.6.24.4"
- }
- },
- {
- "pk": "74",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a minimal libc made for early-userspace",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "klibc",
- "arch": 2,
- "pkgver": "1.5"
- }
- },
- {
- "pk": "75",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Extra apps for klibc early-userspace",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "klibc-extras",
- "arch": 2,
- "pkgver": "2.4"
- }
- },
- {
- "pk": "76",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Keytable files and keyboard utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "klibc-kbd",
- "arch": 2,
- "pkgver": "1.15.20080312"
- }
- },
- {
- "pk": "77",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for inserting and removing modules from the Linux kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "klibc-module-init-tools",
- "arch": 2,
- "pkgver": "3.2.2"
- }
- },
- {
- "pk": "78",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "udevd compiled under klibc",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "klibc-udev",
- "arch": 2,
- "pkgver": "116"
- }
- },
- {
- "pk": "79",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A terminal based program for viewing text files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "less",
- "arch": 2,
- "pkgver": "418"
- }
- },
- {
- "pk": "80",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "library that can create and read several streaming archive formats",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libarchive",
- "arch": 2,
- "pkgver": "2.4.17"
- }
- },
- {
- "pk": "81",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "URL based download library, forked from libfetch",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libdownload",
- "arch": 2,
- "pkgver": "1.3"
- }
- },
- {
- "pk": "82",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "libelf is a free ELF object file access library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "libelf",
- "arch": 2,
- "pkgver": "0.8.10"
- }
- },
- {
- "pk": "83",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libevent",
- "arch": 2,
- "pkgver": "1.3e"
- }
- },
- {
- "pk": "84",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a general purpose crypto library based on the code used",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1.1",
- "pkgname": "libgcrypt",
- "arch": 2,
- "pkgver": "1.4.0"
- }
- },
- {
- "pk": "85",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Support library for libgcrypt",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libgpg-error",
- "arch": 2,
- "pkgver": "1.6"
- }
- },
- {
- "pk": "86",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "LDAP client libraries",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "libldap",
- "arch": 2,
- "pkgver": "2.3.39"
- }
- },
- {
- "pk": "87",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A system-independent interface for user-level packet capture",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "libpcap",
- "arch": 2,
- "pkgver": "0.9.8"
- }
- },
- {
- "pk": "88",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Cyrus Simple Authentication Service Layer (SASL) library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "libsasl",
- "arch": 2,
- "pkgver": "2.1.22"
- }
- },
- {
- "pk": "89",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A generic library support script",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "libtool",
- "arch": 2,
- "pkgver": "2.2"
- }
- },
- {
- "pk": "90",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Library to enable user space application programs to communicate with USB devices",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "libusb",
- "arch": 2,
- "pkgver": "0.1.12"
- }
- },
- {
- "pk": "91",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The standard licenses distribution package",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "licenses",
- "arch": 2,
- "pkgver": "2.3"
- }
- },
- {
- "pk": "92",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A bootloader for Linux",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "lilo",
- "arch": 2,
- "pkgver": "22.8"
- }
- },
- {
- "pk": "93",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A text WWW browser, similar to Lynx",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "links",
- "arch": 2,
- "pkgver": "2.1pre33"
- }
- },
- {
- "pk": "94",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Drivers and tools to support ATM networking under Linux.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "linux-atm",
- "arch": 2,
- "pkgver": "2.4.1"
- }
- },
- {
- "pk": "95",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Rotates system logs automatically",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "logrotate",
- "arch": 2,
- "pkgver": "3.7.5"
- }
- },
- {
- "pk": "96",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Logical Volume Manager 2 utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "lvm2",
- "arch": 2,
- "pkgver": "2.02.33"
- }
- },
- {
- "pk": "97",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a portable lossless data compression library written in ANSI C",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "lzo2",
- "arch": 2,
- "pkgver": "2.02"
- }
- },
- {
- "pk": "98",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "m4 macro processor",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "m4",
- "arch": 2,
- "pkgver": "1.4.10"
- }
- },
- {
- "pk": "99",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Madwifi drivers for Atheros wireless chipsets. For stock arch 2.6 kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "madwifi",
- "arch": 2,
- "pkgver": "0.9.4.3382"
- }
- },
- {
- "pk": "100",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Userspace tools of madwifi drivers for Atheros wireless chipsets.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "madwifi-utils",
- "arch": 2,
- "pkgver": "0.9.4.3382"
- }
- },
- {
- "pk": "101",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A commandline utility for sending email",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "mailx",
- "arch": 2,
- "pkgver": "8.1.1"
- }
- },
- {
- "pk": "102",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU make utility to maintain groups of programs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "make",
- "arch": 2,
- "pkgver": "3.81"
- }
- },
- {
- "pk": "103",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility for reading man pages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "man",
- "arch": 2,
- "pkgver": "1.6f"
- }
- },
- {
- "pk": "104",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Linux man pages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "man-pages",
- "arch": 2,
- "pkgver": "2.79"
- }
- },
- {
- "pk": "105",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool for managing\/monitoring Linux md device arrays, also known as Software RAID",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "mdadm",
- "arch": 2,
- "pkgver": "2.6.4"
- }
- },
- {
- "pk": "106",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Advanced, modular initramfs image creation utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "mkinitcpio",
- "arch": 2,
- "pkgver": "0.5.18.1"
- }
- },
- {
- "pk": "107",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Faster merging drop-in for slocate",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "mlocate",
- "arch": 2,
- "pkgver": "0.18"
- }
- },
- {
- "pk": "108",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for inserting and removing modules from the Linux kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "module-init-tools",
- "arch": 2,
- "pkgver": "3.2.2"
- }
- },
- {
- "pk": "109",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "multiple-precision floating-point library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "mpfr",
- "arch": 2,
- "pkgver": "2.3.1"
- }
- },
- {
- "pk": "110",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Pico editor clone with enhancements",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "nano",
- "arch": 2,
- "pkgver": "2.0.7"
- }
- },
- {
- "pk": "111",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A System V Release 4.0 curses emulation library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "ncurses",
- "arch": 2,
- "pkgver": "5.6"
- }
- },
- {
- "pk": "112",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Module for NDIS (Windows Network Drivers) drivers supplied by vendors. For stock arch 2.6 kernel.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ndiswrapper",
- "arch": 2,
- "pkgver": "1.52"
- }
- },
- {
- "pk": "113",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Binaries for ndiswrapper module",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "ndiswrapper-utils",
- "arch": 2,
- "pkgver": "1.52"
- }
- },
- {
- "pk": "114",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Configuration tools for Linux networking",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "13",
- "pkgname": "net-tools",
- "arch": 2,
- "pkgver": "1.60"
- }
- },
- {
- "pk": "115",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Network configuration and profile scripts",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "netcfg",
- "arch": 2,
- "pkgver": "2.0.6"
- }
- },
- {
- "pk": "116",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A telnet client (and server)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "7",
- "pkgname": "netkit-telnet",
- "arch": 2,
- "pkgver": "0.17"
- }
- },
- {
- "pk": "117",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Support programs for Network File Systems",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "nfs-utils",
- "arch": 2,
- "pkgver": "1.1.0"
- }
- },
- {
- "pk": "118",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Library to help mapping IDs, mainly for NFSv4",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "nfsidmap",
- "arch": 2,
- "pkgver": "0.20"
- }
- },
- {
- "pk": "119",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Third generation Linux NTFS driver",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "ntfs-3g",
- "arch": 2,
- "pkgver": "1.2310"
- }
- },
- {
- "pk": "120",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "NTFS Resizing Tool",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ntfsprogs",
- "arch": 2,
- "pkgver": "2.0.0"
- }
- },
- {
- "pk": "121",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A Secure SHell server\/client",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "openssh",
- "arch": 2,
- "pkgver": "4.7p1"
- }
- },
- {
- "pk": "122",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The Open Source toolkit for Secure Sockets Layer and Transport Layer Security",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "openssl",
- "arch": 2,
- "pkgver": "0.9.8g"
- }
- },
- {
- "pk": "123",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Open Source implementation of IPsec for the Linux operating system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "openswan",
- "arch": 2,
- "pkgver": "2.4.11"
- }
- },
- {
- "pk": "124",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "An easy-to-use, robust, and highly configurable VPN (Virtual Private Network)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "openvpn",
- "arch": 2,
- "pkgver": "2.0.9"
- }
- },
- {
- "pk": "125",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A library-based package manager with dependency support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "pacman",
- "arch": 2,
- "pkgver": "3.1.4"
- }
- },
- {
- "pk": "126",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "PAM (Pluggable Authentication Modules) library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "pam",
- "arch": 2,
- "pkgver": "0.99.9.0"
- }
- },
- {
- "pk": "127",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility to apply patch files to original sources",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "patch",
- "arch": 2,
- "pkgver": "2.5.4"
- }
- },
- {
- "pk": "128",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "PCI bus configuration space access library and tools",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pciutils",
- "arch": 2,
- "pkgver": "2.2.8"
- }
- },
- {
- "pk": "129",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for inserting and removing PCMCIA cards",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "pcmciautils",
- "arch": 2,
- "pkgver": "014"
- }
- },
- {
- "pk": "130",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A library that implements Perl 5-style regular expressions",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pcre",
- "arch": 2,
- "pkgver": "7.6"
- }
- },
- {
- "pk": "131",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Practical Extraction and Report Language",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "perl",
- "arch": 2,
- "pkgver": "5.10.0"
- }
- },
- {
- "pk": "132",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A system for managing library compile\/link flags",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pkgconfig",
- "arch": 2,
- "pkgver": "0.22"
- }
- },
- {
- "pk": "133",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A commandline option parser",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "popt",
- "arch": 2,
- "pkgver": "1.10.6"
- }
- },
- {
- "pk": "134",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "RPC connection manager",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "portmap",
- "arch": 2,
- "pkgver": "6.0"
- }
- },
- {
- "pk": "135",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A daemon which implements the PPP protocol for dial-up networking",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "ppp",
- "arch": 2,
- "pkgver": "2.4.4"
- }
- },
- {
- "pk": "136",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Client for the proprietary Microsoft Point-to-Point Tunneling Protocol, PPTP.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pptpclient",
- "arch": 2,
- "pkgver": "1.7.1"
- }
- },
- {
- "pk": "137",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Displays useful information from \/proc",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "procinfo",
- "arch": 2,
- "pkgver": "19"
- }
- },
- {
- "pk": "138",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for monitoring your system and processes on your system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "procps",
- "arch": 2,
- "pkgver": "3.2.7"
- }
- },
- {
- "pk": "139",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Miscellaneous procfs tools",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "psmisc",
- "arch": 2,
- "pkgver": "22.6"
- }
- },
- {
- "pk": "140",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU readline library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "7",
- "pkgname": "readline",
- "arch": 2,
- "pkgver": "5.2"
- }
- },
- {
- "pk": "141",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Reiserfs utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "reiserfsprogs",
- "arch": 2,
- "pkgver": "3.6.20"
- }
- },
- {
- "pk": "142",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Roaring Penguin's Point-to-Point Protocol over Ethernet client",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "rp-pppoe",
- "arch": 2,
- "pkgver": "3.8"
- }
- },
- {
- "pk": "143",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Drivers for rt2500 chipset wireless cards",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "21",
- "pkgname": "rt2500",
- "arch": 2,
- "pkgver": "1.1.0_B4"
- }
- },
- {
- "pk": "144",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for the rt2x00 wireless drivers",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "rt2x00-rt61-fw",
- "arch": 2,
- "pkgver": "1.2"
- }
- },
- {
- "pk": "145",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for the rt2x00 wireless drivers",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "rt2x00-rt71w-fw",
- "arch": 2,
- "pkgver": "1.8"
- }
- },
- {
- "pk": "146",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "An utility similar to hdparm but for SCSI devices",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "sdparm",
- "arch": 2,
- "pkgver": "1.02"
- }
- },
- {
- "pk": "147",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU stream editor",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "sed",
- "arch": 2,
- "pkgver": "4.1.5"
- }
- },
- {
- "pk": "148",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Shadow password file utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "shadow",
- "arch": 2,
- "pkgver": "4.0.18.2"
- }
- },
- {
- "pk": "149",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Give certain users the ability to run some commands as root",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "sudo",
- "arch": 2,
- "pkgver": "1.6.9p12"
- }
- },
- {
- "pk": "150",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "System Utilities Based on Sysfs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "sysfsutils",
- "arch": 2,
- "pkgver": "2.1.0"
- }
- },
- {
- "pk": "151",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Next-generation syslogd with advanced networking and filtering capabilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "syslog-ng",
- "arch": 2,
- "pkgver": "2.0.6"
- }
- },
- {
- "pk": "152",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Linux System V Init",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "sysvinit",
- "arch": 2,
- "pkgver": "2.86"
- }
- },
- {
- "pk": "153",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utility used to store, backup, and transport files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "tar",
- "arch": 2,
- "pkgver": "1.19"
- }
- },
- {
- "pk": "154",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Monitors and Controls incoming TCP connections",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "8",
- "pkgname": "tcp_wrappers",
- "arch": 2,
- "pkgver": "7.6"
- }
- },
- {
- "pk": "155",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities to work with and produce manuals, ASCII text, and on-line documentation from a single source file",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "texinfo",
- "arch": 2,
- "pkgver": "4.11"
- }
- },
- {
- "pk": "156",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "OpenSource module for Texas Instruments ACX100\/ACX111 wireless chips. For stock arch 2.6 kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "tiacx",
- "arch": 2,
- "pkgver": "20080210"
- }
- },
- {
- "pk": "157",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for Texas Instruments ACX100\/ACX111 wireless chips.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "tiacx-firmware",
- "arch": 2,
- "pkgver": "2"
- }
- },
- {
- "pk": "158",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Sources for time zone and daylight saving time data",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "tzdata",
- "arch": 2,
- "pkgver": "2008b"
- }
- },
- {
- "pk": "159",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The userspace dev tools (udev)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "udev",
- "arch": 2,
- "pkgver": "119"
- }
- },
- {
- "pk": "160",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "USB Device Utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "usbutils",
- "arch": 2,
- "pkgver": "0.73"
- }
- },
- {
- "pk": "161",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Miscellaneous system utilities for Linux",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "util-linux-ng",
- "arch": 2,
- "pkgver": "2.13.0.1"
- }
- },
- {
- "pk": "162",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a highly configurable, improved version of the vi text editor (basic version)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "vi",
- "arch": 2,
- "pkgver": "7.1.267"
- }
- },
- {
- "pk": "163",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "VPN client for cisco3000 VPN Concentrators",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "vpnc",
- "arch": 2,
- "pkgver": "0.5.1"
- }
- },
- {
- "pk": "164",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A network utility to retrieve files from the Web",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "wget",
- "arch": 2,
- "pkgver": "1.11"
- }
- },
- {
- "pk": "165",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility to show the full path of commands",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "which",
- "arch": 2,
- "pkgver": "2.19"
- }
- },
- {
- "pk": "166",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Wireless Tools",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "wireless_tools",
- "arch": 2,
- "pkgver": "29"
- }
- },
- {
- "pk": "167",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Wireless Lan usb modules. For kernel26.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "15",
- "pkgname": "wlan-ng26",
- "arch": 2,
- "pkgver": "0.2.8"
- }
- },
- {
- "pk": "168",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Wireless Lan userspace tools.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "wlan-ng26-utils",
- "arch": 2,
- "pkgver": "0.2.8"
- }
- },
- {
- "pk": "169",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility providing key negotiation for WPA wireless networks",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "wpa_supplicant",
- "arch": 2,
- "pkgver": "0.5.10"
- }
- },
- {
- "pk": "170",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "XFS filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "xfsprogs",
- "arch": 2,
- "pkgver": "2.9.7"
- }
- },
- {
- "pk": "171",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "xinetd is a secure replacement for inetd",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "xinetd",
- "arch": 2,
- "pkgver": "2.3.14"
- }
- },
- {
- "pk": "172",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for the in-kernel26 zd1211rw wireless driver",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "zd1211-firmware",
- "arch": 2,
- "pkgver": "1.4"
- }
- },
- {
- "pk": "173",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A compression\/decompression Library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:02:44",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "zlib",
- "arch": 2,
- "pkgver": "1.2.3"
- }
- },
- {
- "pk": "174",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities to download and work with the Arch Build System (ABS)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "abs",
- "arch": 3,
- "pkgver": "2.0"
- }
- },
- {
- "pk": "175",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Library for filesystem ACL support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "acl",
- "arch": 3,
- "pkgver": "2.2.47"
- }
- },
- {
- "pk": "176",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Drivers for atl2 ethernet card",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "atl2",
- "arch": 3,
- "pkgver": "2.0.4"
- }
- },
- {
- "pk": "177",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Extended attribute support library for ACL support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "attr",
- "arch": 3,
- "pkgver": "2.4.41"
- }
- },
- {
- "pk": "178",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A GNU tool for automatically configuring source code",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "autoconf",
- "arch": 3,
- "pkgver": "2.61"
- }
- },
- {
- "pk": "179",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A GNU tool for automatically creating Makefiles",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "automake",
- "arch": 3,
- "pkgver": "1.10.1"
- }
- },
- {
- "pk": "180",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The GNU Bourne Again shell",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "bash",
- "arch": 3,
- "pkgver": "3.2.033"
- }
- },
- {
- "pk": "181",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "firmware extractor for the bcm43xx kernel module",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "bcm43xx-fwcutter",
- "arch": 3,
- "pkgver": "006"
- }
- },
- {
- "pk": "182",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A complete 8086 assembler and loader",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "bin86",
- "arch": 3,
- "pkgver": "0.16.17"
- }
- },
- {
- "pk": "183",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A set of programs to assemble and manipulate binary and object files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "binutils",
- "arch": 3,
- "pkgver": "2.18"
- }
- },
- {
- "pk": "184",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The GNU general-purpose parser generator",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "bison",
- "arch": 3,
- "pkgver": "2.3"
- }
- },
- {
- "pk": "185",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Layer2 ethernet bridging for Linux",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "bridge-utils",
- "arch": 3,
- "pkgver": "1.2"
- }
- },
- {
- "pk": "186",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A high-quality data compression program",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "bzip2",
- "arch": 3,
- "pkgver": "1.0.4"
- }
- },
- {
- "pk": "187",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "capi utils for isdn cards",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "capi4k-utils",
- "arch": 3,
- "pkgver": "050718"
- }
- },
- {
- "pk": "188",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The basic file, shell and text manipulation utilities of the GNU operating system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "coreutils",
- "arch": 3,
- "pkgver": "6.10"
- }
- },
- {
- "pk": "189",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool to copy files into or out of a cpio or tar archive",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "cpio",
- "arch": 3,
- "pkgver": "2.9"
- }
- },
- {
- "pk": "190",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Password Checking Library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "cracklib",
- "arch": 3,
- "pkgver": "2.8.10"
- }
- },
- {
- "pk": "191",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Userspace setup tool for transparent encryption of block devices using the Linux 2.6 cryptoapi",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "cryptsetup",
- "arch": 3,
- "pkgver": "1.0.6"
- }
- },
- {
- "pk": "192",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "csup - cvsup rewritten in C",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "csup",
- "arch": 3,
- "pkgver": "20060318"
- }
- },
- {
- "pk": "193",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A POSIX compliant shell that aims to be as small as possible",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "dash",
- "arch": 3,
- "pkgver": "0.5.4"
- }
- },
- {
- "pk": "194",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The Berkeley DB embedded database system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "db",
- "arch": 3,
- "pkgver": "4.6.21"
- }
- },
- {
- "pk": "195",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Dillon's Cron Daemon",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "dcron",
- "arch": 3,
- "pkgver": "3.2"
- }
- },
- {
- "pk": "196",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Device mapper userspace library and tools.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "device-mapper",
- "arch": 3,
- "pkgver": "1.02.24"
- }
- },
- {
- "pk": "197",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A DHCP client daemon",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "dhcpcd",
- "arch": 3,
- "pkgver": "3.2.1"
- }
- },
- {
- "pk": "198",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool to display dialog boxes from shell scripts",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "dialog",
- "arch": 3,
- "pkgver": "1.1_20071028"
- }
- },
- {
- "pk": "199",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utility programs used for creating patch files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "diffutils",
- "arch": 3,
- "pkgver": "2.8.1"
- }
- },
- {
- "pk": "200",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Data migration API",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "dmapi",
- "arch": 3,
- "pkgver": "2.2.8"
- }
- },
- {
- "pk": "201",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Device mapper RAID interface",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "dmraid",
- "arch": 3,
- "pkgver": "1.0.0.rc14"
- }
- },
- {
- "pk": "202",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Various DNS utilities - dig host nslookup nsupdate",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "dnsutils",
- "arch": 3,
- "pkgver": "9.4.2"
- }
- },
- {
- "pk": "203",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "DOS filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "dosfstools",
- "arch": 3,
- "pkgver": "2.11"
- }
- },
- {
- "pk": "204",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Ext2 filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "e2fsprogs",
- "arch": 3,
- "pkgver": "1.40.8"
- }
- },
- {
- "pk": "205",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A POSIX-compliant line editor",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "ed",
- "arch": 3,
- "pkgver": "0.9"
- }
- },
- {
- "pk": "206",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A new API to format and send structured log messages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "eventlog",
- "arch": 3,
- "pkgver": "0.2.5"
- }
- },
- {
- "pk": "207",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Gives a fake root environment, useful for building packages as a non-privileged user",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "fakeroot",
- "arch": 3,
- "pkgver": "1.9.3"
- }
- },
- {
- "pk": "208",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "File type identification utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "file",
- "arch": 3,
- "pkgver": "4.23"
- }
- },
- {
- "pk": "209",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Base filesystem",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "filesystem",
- "arch": 3,
- "pkgver": "2008.03"
- }
- },
- {
- "pk": "210",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU utilities to locate files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "findutils",
- "arch": 3,
- "pkgver": "4.2.33"
- }
- },
- {
- "pk": "211",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool for generating text-scanning programs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "flex",
- "arch": 3,
- "pkgver": "2.5.33"
- }
- },
- {
- "pk": "212",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A library that makes it possible to implement a filesystem in a userspace program.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "fuse",
- "arch": 3,
- "pkgver": "2.7.3"
- }
- },
- {
- "pk": "213",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Gnu version of awk",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "gawk",
- "arch": 3,
- "pkgver": "3.1.6"
- }
- },
- {
- "pk": "214",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The GNU Compiler Collection",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "gcc",
- "arch": 3,
- "pkgver": "4.3.0"
- }
- },
- {
- "pk": "215",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Runtime libraries shipped by GCC for C and C++ languages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "gcc-libs",
- "arch": 3,
- "pkgver": "4.3.0"
- }
- },
- {
- "pk": "216",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU database library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "gdbm",
- "arch": 3,
- "pkgver": "1.8.3"
- }
- },
- {
- "pk": "217",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Program to compress initramfs images",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "gen-init-cpio",
- "arch": 3,
- "pkgver": "2.6.17"
- }
- },
- {
- "pk": "218",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU internationalization library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "gettext",
- "arch": 3,
- "pkgver": "0.17"
- }
- },
- {
- "pk": "219",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Common C routines used by GTK+ 2.4 and other libs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "glib2",
- "arch": 3,
- "pkgver": "2.16.3"
- }
- },
- {
- "pk": "220",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU C Library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "9",
- "pkgname": "glibc",
- "arch": 3,
- "pkgver": "2.7"
- }
- },
- {
- "pk": "221",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A free library for arbitrary precision arithmetic",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "gmp",
- "arch": 3,
- "pkgver": "4.2.2"
- }
- },
- {
- "pk": "222",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A mouse server for the console and xterm",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "7",
- "pkgname": "gpm",
- "arch": 3,
- "pkgver": "1.20.1"
- }
- },
- {
- "pk": "223",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A string search utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "grep",
- "arch": 3,
- "pkgver": "2.5.3"
- }
- },
- {
- "pk": "224",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU troff text-formatting system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "groff",
- "arch": 3,
- "pkgver": "1.19.2"
- }
- },
- {
- "pk": "225",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A GNU multiboot boot loader",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "12",
- "pkgname": "grub",
- "arch": 3,
- "pkgver": "0.97"
- }
- },
- {
- "pk": "226",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU compression utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "gzip",
- "arch": 3,
- "pkgver": "1.3.12"
- }
- },
- {
- "pk": "227",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A shell utility for manipulating Linux IDE drive\/driver parameters",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "hdparm",
- "arch": 3,
- "pkgver": "8.6"
- }
- },
- {
- "pk": "228",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Heimdal Kerberos V5 libraries",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "heimdal",
- "arch": 3,
- "pkgver": "1.0.1"
- }
- },
- {
- "pk": "229",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Hardware detection script with loading modules and mkinitcpio.conf \/ rc.conf support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "hwdetect",
- "arch": 3,
- "pkgver": "0.9"
- }
- },
- {
- "pk": "230",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utility for bonding ethernet interfaces",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "ifenslave",
- "arch": 3,
- "pkgver": "1.1.0"
- }
- },
- {
- "pk": "231",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "System initialization\/bootup scripts",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "initscripts",
- "arch": 3,
- "pkgver": "2008.03"
- }
- },
- {
- "pk": "232",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "IP Routing Utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "iproute",
- "arch": 3,
- "pkgver": "2.6.24_rc7"
- }
- },
- {
- "pk": "233",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A Linux kernel packet control tool",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "iptables",
- "arch": 3,
- "pkgver": "1.4.0"
- }
- },
- {
- "pk": "234",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "IP Configuration Utilities (and Ping)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "iputils",
- "arch": 3,
- "pkgver": "20070202"
- }
- },
- {
- "pk": "235",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel Centrino Drivers firmware for IPW2100",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ipw2100-fw",
- "arch": 3,
- "pkgver": "1.3"
- }
- },
- {
- "pk": "236",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel Centrino Drivers firmware for IPW2200",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ipw2200-fw",
- "arch": 3,
- "pkgver": "3.0"
- }
- },
- {
- "pk": "237",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Driver for the Intel PRO\/Wireless 3945ABG miniPCI express adapter",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "8",
- "pkgname": "ipw3945",
- "arch": 3,
- "pkgver": "1.2.2"
- }
- },
- {
- "pk": "238",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel Centrino Drivers firmware for IPW3945",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ipw3945-ucode",
- "arch": 3,
- "pkgver": "1.14.2"
- }
- },
- {
- "pk": "239",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Regulatory daemon for IPW3945",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "ipw3945d",
- "arch": 3,
- "pkgver": "1.7.22"
- }
- },
- {
- "pk": "240",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "User space administration programs and tools for ISDN",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "isdn4k-utils",
- "arch": 3,
- "pkgver": "3.2p1"
- }
- },
- {
- "pk": "241",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel wireless firmware for IPW3945 (iwlwifi driver)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "iwlwifi-3945-ucode",
- "arch": 3,
- "pkgver": "2.14.1.5"
- }
- },
- {
- "pk": "242",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Intel wireless firmware for IPW4965 (iwlwifi driver)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "iwlwifi-4965-ucode",
- "arch": 3,
- "pkgver": "4.44.1.20"
- }
- },
- {
- "pk": "243",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "JFS filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "jfsutils",
- "arch": 3,
- "pkgver": "1.1.12"
- }
- },
- {
- "pk": "244",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Keytable files and keyboard utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "kbd",
- "arch": 3,
- "pkgver": "1.14.1.20080309"
- }
- },
- {
- "pk": "245",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Kernel headers sanitized for use in userspace",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "kernel-headers",
- "arch": 3,
- "pkgver": "2.6.24.3"
- }
- },
- {
- "pk": "246",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The Linux Kernel and modules",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "kernel26",
- "arch": 3,
- "pkgver": "2.6.24.4"
- }
- },
- {
- "pk": "247",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a minimal libc made for early-userspace",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "klibc",
- "arch": 3,
- "pkgver": "1.5"
- }
- },
- {
- "pk": "248",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Extra apps for klibc early-userspace",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "klibc-extras",
- "arch": 3,
- "pkgver": "2.4"
- }
- },
- {
- "pk": "249",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Keytable files and keyboard utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "klibc-kbd",
- "arch": 3,
- "pkgver": "1.15.20080312"
- }
- },
- {
- "pk": "250",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for inserting and removing modules from the Linux kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "klibc-module-init-tools",
- "arch": 3,
- "pkgver": "3.2.2"
- }
- },
- {
- "pk": "251",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "udevd compiled under klibc",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "klibc-udev",
- "arch": 3,
- "pkgver": "116"
- }
- },
- {
- "pk": "252",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A terminal based program for viewing text files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "less",
- "arch": 3,
- "pkgver": "418"
- }
- },
- {
- "pk": "253",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "library that can create and read several streaming archive formats",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libarchive",
- "arch": 3,
- "pkgver": "2.4.17"
- }
- },
- {
- "pk": "254",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "URL based download library, forked from libfetch",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libdownload",
- "arch": 3,
- "pkgver": "1.3"
- }
- },
- {
- "pk": "255",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "libelf is a free ELF object file access library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3.1",
- "pkgname": "libelf",
- "arch": 3,
- "pkgver": "0.8.10"
- }
- },
- {
- "pk": "256",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libevent",
- "arch": 3,
- "pkgver": "1.3e"
- }
- },
- {
- "pk": "257",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a general purpose crypto library based on the code used",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libgcrypt",
- "arch": 3,
- "pkgver": "1.4.0"
- }
- },
- {
- "pk": "258",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Support library for libgcrypt",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "libgpg-error",
- "arch": 3,
- "pkgver": "1.6"
- }
- },
- {
- "pk": "259",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "LDAP client libraries",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "libldap",
- "arch": 3,
- "pkgver": "2.3.39"
- }
- },
- {
- "pk": "260",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A system-independent interface for user-level packet capture",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "libpcap",
- "arch": 3,
- "pkgver": "0.9.8"
- }
- },
- {
- "pk": "261",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Cyrus Simple Authentication Service Layer (SASL) library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "libsasl",
- "arch": 3,
- "pkgver": "2.1.22"
- }
- },
- {
- "pk": "262",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A generic library support script",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "libtool",
- "arch": 3,
- "pkgver": "2.2"
- }
- },
- {
- "pk": "263",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Library to enable user space application programs to communicate with USB devices",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "libusb",
- "arch": 3,
- "pkgver": "0.1.12"
- }
- },
- {
- "pk": "264",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The standard licenses distribution package",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "licenses",
- "arch": 3,
- "pkgver": "2.3"
- }
- },
- {
- "pk": "265",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A bootloader for Linux",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "lilo",
- "arch": 3,
- "pkgver": "22.8"
- }
- },
- {
- "pk": "266",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A text WWW browser, similar to Lynx",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "links",
- "arch": 3,
- "pkgver": "2.1pre33"
- }
- },
- {
- "pk": "267",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Drivers and tools to support ATM networking under Linux.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "linux-atm",
- "arch": 3,
- "pkgver": "2.4.1"
- }
- },
- {
- "pk": "268",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Rotates system logs automatically",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "logrotate",
- "arch": 3,
- "pkgver": "3.7.5"
- }
- },
- {
- "pk": "269",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Logical Volume Manager 2 utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "lvm2",
- "arch": 3,
- "pkgver": "2.02.33"
- }
- },
- {
- "pk": "270",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a portable lossless data compression library written in ANSI C",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "lzo2",
- "arch": 3,
- "pkgver": "2.02"
- }
- },
- {
- "pk": "271",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "m4 macro processor",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "m4",
- "arch": 3,
- "pkgver": "1.4.10"
- }
- },
- {
- "pk": "272",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Madwifi drivers for Atheros wireless chipsets. For stock arch 2.6 kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "madwifi",
- "arch": 3,
- "pkgver": "0.9.4.3382"
- }
- },
- {
- "pk": "273",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Userspace tools of madwifi drivers for Atheros wireless chipsets.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "madwifi-utils",
- "arch": 3,
- "pkgver": "0.9.4.3382"
- }
- },
- {
- "pk": "274",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A commandline utility for sending email",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "mailx",
- "arch": 3,
- "pkgver": "8.1.1"
- }
- },
- {
- "pk": "275",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU make utility to maintain groups of programs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "make",
- "arch": 3,
- "pkgver": "3.81"
- }
- },
- {
- "pk": "276",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility for reading man pages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "man",
- "arch": 3,
- "pkgver": "1.6f"
- }
- },
- {
- "pk": "277",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Linux man pages",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "man-pages",
- "arch": 3,
- "pkgver": "2.79"
- }
- },
- {
- "pk": "278",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A tool for managing\/monitoring Linux md device arrays, also known as Software RAID",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "mdadm",
- "arch": 3,
- "pkgver": "2.6.4"
- }
- },
- {
- "pk": "279",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Advanced, modular initramfs image creation utility",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "mkinitcpio",
- "arch": 3,
- "pkgver": "0.5.18.1"
- }
- },
- {
- "pk": "280",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Faster merging drop-in for slocate",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "mlocate",
- "arch": 3,
- "pkgver": "0.18"
- }
- },
- {
- "pk": "281",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for inserting and removing modules from the Linux kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "module-init-tools",
- "arch": 3,
- "pkgver": "3.2.2"
- }
- },
- {
- "pk": "282",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "multiple-precision floating-point library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "mpfr",
- "arch": 3,
- "pkgver": "2.3.1"
- }
- },
- {
- "pk": "283",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Pico editor clone with enhancements",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "nano",
- "arch": 3,
- "pkgver": "2.0.7"
- }
- },
- {
- "pk": "284",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A System V Release 4.0 curses emulation library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "ncurses",
- "arch": 3,
- "pkgver": "5.6"
- }
- },
- {
- "pk": "285",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Module for NDIS (Windows Network Drivers) drivers supplied by vendors. For stock arch 2.6 kernel.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ndiswrapper",
- "arch": 3,
- "pkgver": "1.52"
- }
- },
- {
- "pk": "286",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Binaries for ndiswrapper module",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "ndiswrapper-utils",
- "arch": 3,
- "pkgver": "1.52"
- }
- },
- {
- "pk": "287",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Configuration tools for Linux networking",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "13",
- "pkgname": "net-tools",
- "arch": 3,
- "pkgver": "1.60"
- }
- },
- {
- "pk": "288",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Network configuration and profile scripts",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "netcfg",
- "arch": 3,
- "pkgver": "2.0.6"
- }
- },
- {
- "pk": "289",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A telnet client (and server)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "7",
- "pkgname": "netkit-telnet",
- "arch": 3,
- "pkgver": "0.17"
- }
- },
- {
- "pk": "290",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Support programs for Network File Systems",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "nfs-utils",
- "arch": 3,
- "pkgver": "1.1.0"
- }
- },
- {
- "pk": "291",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Library to help mapping IDs, mainly for NFSv4",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "nfsidmap",
- "arch": 3,
- "pkgver": "0.20"
- }
- },
- {
- "pk": "292",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Third generation Linux NTFS driver",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "ntfs-3g",
- "arch": 3,
- "pkgver": "1.2310"
- }
- },
- {
- "pk": "293",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "NTFS Resizing Tool",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "ntfsprogs",
- "arch": 3,
- "pkgver": "2.0.0"
- }
- },
- {
- "pk": "294",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A Secure SHell server\/client",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "openssh",
- "arch": 3,
- "pkgver": "4.7p1"
- }
- },
- {
- "pk": "295",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The Open Source toolkit for Secure Sockets Layer and Transport Layer Security",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "openssl",
- "arch": 3,
- "pkgver": "0.9.8g"
- }
- },
- {
- "pk": "296",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Open Source implementation of IPsec for the Linux operating system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "openswan",
- "arch": 3,
- "pkgver": "2.4.11"
- }
- },
- {
- "pk": "297",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "An easy-to-use, robust, and highly configurable VPN (Virtual Private Network)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "openvpn",
- "arch": 3,
- "pkgver": "2.0.9"
- }
- },
- {
- "pk": "298",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A library-based package manager with dependency support",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "pacman",
- "arch": 3,
- "pkgver": "3.1.4"
- }
- },
- {
- "pk": "299",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "PAM (Pluggable Authentication Modules) library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "pam",
- "arch": 3,
- "pkgver": "0.99.9.0"
- }
- },
- {
- "pk": "300",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility to apply patch files to original sources",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "patch",
- "arch": 3,
- "pkgver": "2.5.4"
- }
- },
- {
- "pk": "301",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "PCI bus configuration space access library and tools",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pciutils",
- "arch": 3,
- "pkgver": "2.2.8"
- }
- },
- {
- "pk": "302",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for inserting and removing PCMCIA cards",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "pcmciautils",
- "arch": 3,
- "pkgver": "014"
- }
- },
- {
- "pk": "303",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A library that implements Perl 5-style regular expressions",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pcre",
- "arch": 3,
- "pkgver": "7.6"
- }
- },
- {
- "pk": "304",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Practical Extraction and Report Language",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "perl",
- "arch": 3,
- "pkgver": "5.10.0"
- }
- },
- {
- "pk": "305",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A system for managing library compile\/link flags",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pkgconfig",
- "arch": 3,
- "pkgver": "0.22"
- }
- },
- {
- "pk": "306",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A commandline option parser",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "popt",
- "arch": 3,
- "pkgver": "1.10.6"
- }
- },
- {
- "pk": "307",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "RPC connection manager",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "portmap",
- "arch": 3,
- "pkgver": "6.0"
- }
- },
- {
- "pk": "308",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A daemon which implements the PPP protocol for dial-up networking",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "6",
- "pkgname": "ppp",
- "arch": 3,
- "pkgver": "2.4.4"
- }
- },
- {
- "pk": "309",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Client for the proprietary Microsoft Point-to-Point Tunneling Protocol, PPTP.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "pptpclient",
- "arch": 3,
- "pkgver": "1.7.1"
- }
- },
- {
- "pk": "310",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Displays useful information from \/proc",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "procinfo",
- "arch": 3,
- "pkgver": "19"
- }
- },
- {
- "pk": "311",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities for monitoring your system and processes on your system",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "procps",
- "arch": 3,
- "pkgver": "3.2.7"
- }
- },
- {
- "pk": "312",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Miscellaneous procfs tools",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "psmisc",
- "arch": 3,
- "pkgver": "22.6"
- }
- },
- {
- "pk": "313",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU readline library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "7",
- "pkgname": "readline",
- "arch": 3,
- "pkgver": "5.2"
- }
- },
- {
- "pk": "314",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Reiserfs utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "reiserfsprogs",
- "arch": 3,
- "pkgver": "3.6.20"
- }
- },
- {
- "pk": "315",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Roaring Penguin's Point-to-Point Protocol over Ethernet client",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "rp-pppoe",
- "arch": 3,
- "pkgver": "3.8"
- }
- },
- {
- "pk": "316",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Drivers for rt2500 chipset wireless cards",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "21",
- "pkgname": "rt2500",
- "arch": 3,
- "pkgver": "1.1.0_B4"
- }
- },
- {
- "pk": "317",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for the rt2x00 wireless drivers",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "rt2x00-rt61-fw",
- "arch": 3,
- "pkgver": "1.2"
- }
- },
- {
- "pk": "318",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for the rt2x00 wireless drivers",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "rt2x00-rt71w-fw",
- "arch": 3,
- "pkgver": "1.8"
- }
- },
- {
- "pk": "319",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "An utility similar to hdparm but for SCSI devices",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "sdparm",
- "arch": 3,
- "pkgver": "1.02"
- }
- },
- {
- "pk": "320",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "GNU stream editor",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "sed",
- "arch": 3,
- "pkgver": "4.1.5"
- }
- },
- {
- "pk": "321",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Shadow password file utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "shadow",
- "arch": 3,
- "pkgver": "4.0.18.2"
- }
- },
- {
- "pk": "322",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Give certain users the ability to run some commands as root",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "sudo",
- "arch": 3,
- "pkgver": "1.6.9p12"
- }
- },
- {
- "pk": "323",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "System Utilities Based on Sysfs",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "sysfsutils",
- "arch": 3,
- "pkgver": "2.1.0"
- }
- },
- {
- "pk": "324",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Next-generation syslogd with advanced networking and filtering capabilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "syslog-ng",
- "arch": 3,
- "pkgver": "2.0.6"
- }
- },
- {
- "pk": "325",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Linux System V Init",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "sysvinit",
- "arch": 3,
- "pkgver": "2.86"
- }
- },
- {
- "pk": "326",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utility used to store, backup, and transport files",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "tar",
- "arch": 3,
- "pkgver": "1.19"
- }
- },
- {
- "pk": "327",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Monitors and Controls incoming TCP connections",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "8",
- "pkgname": "tcp_wrappers",
- "arch": 3,
- "pkgver": "7.6"
- }
- },
- {
- "pk": "328",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Utilities to work with and produce manuals, ASCII text, and on-line documentation from a single source file",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "texinfo",
- "arch": 3,
- "pkgver": "4.11"
- }
- },
- {
- "pk": "329",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "OpenSource module for Texas Instruments ACX100\/ACX111 wireless chips. For stock arch 2.6 kernel",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "tiacx",
- "arch": 3,
- "pkgver": "20080210"
- }
- },
- {
- "pk": "330",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for Texas Instruments ACX100\/ACX111 wireless chips.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "tiacx-firmware",
- "arch": 3,
- "pkgver": "2"
- }
- },
- {
- "pk": "331",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Sources for time zone and daylight saving time data",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "tzdata",
- "arch": 3,
- "pkgver": "2008b"
- }
- },
- {
- "pk": "332",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "The userspace dev tools (udev)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "udev",
- "arch": 3,
- "pkgver": "119"
- }
- },
- {
- "pk": "333",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "USB Device Utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "5",
- "pkgname": "usbutils",
- "arch": 3,
- "pkgver": "0.73"
- }
- },
- {
- "pk": "334",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Miscellaneous system utilities for Linux",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "util-linux-ng",
- "arch": 3,
- "pkgver": "2.13.0.1"
- }
- },
- {
- "pk": "335",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "a highly configurable, improved version of the vi text editor (basic version)",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "vi",
- "arch": 3,
- "pkgver": "7.1.267"
- }
- },
- {
- "pk": "336",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "VPN client for cisco3000 VPN Concentrators",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "vpnc",
- "arch": 3,
- "pkgver": "0.5.1"
- }
- },
- {
- "pk": "337",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A network utility to retrieve files from the Web",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "wget",
- "arch": 3,
- "pkgver": "1.11"
- }
- },
- {
- "pk": "338",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility to show the full path of commands",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "which",
- "arch": 3,
- "pkgver": "2.19"
- }
- },
- {
- "pk": "339",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Wireless Tools",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "wireless_tools",
- "arch": 3,
- "pkgver": "29"
- }
- },
- {
- "pk": "340",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Wireless Lan usb modules. For kernel26.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "15",
- "pkgname": "wlan-ng26",
- "arch": 3,
- "pkgver": "0.2.8"
- }
- },
- {
- "pk": "341",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Wireless Lan userspace tools.",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "wlan-ng26-utils",
- "arch": 3,
- "pkgver": "0.2.8"
- }
- },
- {
- "pk": "342",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A utility providing key negotiation for WPA wireless networks",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "wpa_supplicant",
- "arch": 3,
- "pkgver": "0.5.10"
- }
- },
- {
- "pk": "343",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "XFS filesystem utilities",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "1",
- "pkgname": "xfsprogs",
- "arch": 3,
- "pkgver": "2.9.7"
- }
- },
- {
- "pk": "344",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "xinetd is a secure replacement for inetd",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "3",
- "pkgname": "xinetd",
- "arch": 3,
- "pkgver": "2.3.14"
- }
- },
- {
- "pk": "345",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "Firmware for the in-kernel26 zd1211rw wireless driver",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "2",
- "pkgname": "zd1211-firmware",
- "arch": 3,
- "pkgver": "1.4"
- }
- },
- {
- "pk": "346",
- "model": "main.package",
- "fields": {
- "maintainer": 1,
- "pkgdesc": "A compression\/decompression Library",
- "url": "",
- "needupdate": 0,
- "last_update": "2008-04-18 03:03:05",
- "repo": 1,
- "pkgrel": "4",
- "pkgname": "zlib",
- "arch": 3,
- "pkgver": "1.2.3"
- }
- },
- {
- "pk": "1",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 1
- }
- },
- {
- "pk": "2",
- "model": "main.packagedepend",
- "fields": {
- "depname": "rsync",
- "depvcmp": "",
- "pkg": 1
- }
- },
- {
- "pk": "3",
- "model": "main.packagedepend",
- "fields": {
- "depname": "attr",
- "depvcmp": ">=2.4.41",
- "pkg": 2
- }
- },
- {
- "pk": "4",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.4-1",
- "pkg": 3
- }
- },
- {
- "pk": "5",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<2.6.25",
- "pkg": 3
- }
- },
- {
- "pk": "6",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 4
- }
- },
- {
- "pk": "7",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 5
- }
- },
- {
- "pk": "8",
- "model": "main.packagedepend",
- "fields": {
- "depname": "m4",
- "depvcmp": "",
- "pkg": 5
- }
- },
- {
- "pk": "9",
- "model": "main.packagedepend",
- "fields": {
- "depname": "diffutils",
- "depvcmp": "",
- "pkg": 5
- }
- },
- {
- "pk": "10",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 5
- }
- },
- {
- "pk": "11",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 6
- }
- },
- {
- "pk": "12",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 6
- }
- },
- {
- "pk": "13",
- "model": "main.packagedepend",
- "fields": {
- "depname": "readline",
- "depvcmp": ">=5.2",
- "pkg": 7
- }
- },
- {
- "pk": "14",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 7
- }
- },
- {
- "pk": "15",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 8
- }
- },
- {
- "pk": "16",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 9
- }
- },
- {
- "pk": "17",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": ">=2.7",
- "pkg": 10
- }
- },
- {
- "pk": "18",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 11
- }
- },
- {
- "pk": "19",
- "model": "main.packagedepend",
- "fields": {
- "depname": "m4",
- "depvcmp": "",
- "pkg": 11
- }
- },
- {
- "pk": "20",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 12
- }
- },
- {
- "pk": "21",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 13
- }
- },
- {
- "pk": "22",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 14
- }
- },
- {
- "pk": "23",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 14
- }
- },
- {
- "pk": "24",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": ">=2.7-7",
- "pkg": 15
- }
- },
- {
- "pk": "25",
- "model": "main.packagedepend",
- "fields": {
- "depname": "shadow",
- "depvcmp": ">=4.0.18.2-2",
- "pkg": 15
- }
- },
- {
- "pk": "26",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": ">=0.99.9.0-2",
- "pkg": 15
- }
- },
- {
- "pk": "27",
- "model": "main.packagedepend",
- "fields": {
- "depname": "acl",
- "depvcmp": ">=2.2.45-2",
- "pkg": 15
- }
- },
- {
- "pk": "28",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 16
- }
- },
- {
- "pk": "29",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 17
- }
- },
- {
- "pk": "30",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": "",
- "pkg": 18
- }
- },
- {
- "pk": "31",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libgcrypt",
- "depvcmp": "",
- "pkg": 18
- }
- },
- {
- "pk": "32",
- "model": "main.packagedepend",
- "fields": {
- "depname": "popt",
- "depvcmp": "",
- "pkg": 18
- }
- },
- {
- "pk": "33",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 18
- }
- },
- {
- "pk": "34",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 19
- }
- },
- {
- "pk": "35",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 19
- }
- },
- {
- "pk": "36",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 19
- }
- },
- {
- "pk": "37",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 21
- }
- },
- {
- "pk": "38",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 21
- }
- },
- {
- "pk": "39",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 22
- }
- },
- {
- "pk": "40",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 23
- }
- },
- {
- "pk": "41",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 24
- }
- },
- {
- "pk": "42",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 25
- }
- },
- {
- "pk": "43",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 26
- }
- },
- {
- "pk": "44",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 27
- }
- },
- {
- "pk": "45",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": "",
- "pkg": 28
- }
- },
- {
- "pk": "46",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": ">=0.9.8e",
- "pkg": 29
- }
- },
- {
- "pk": "47",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 30
- }
- },
- {
- "pk": "48",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 31
- }
- },
- {
- "pk": "49",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 32
- }
- },
- {
- "pk": "50",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 33
- }
- },
- {
- "pk": "51",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 34
- }
- },
- {
- "pk": "52",
- "model": "main.packagedepend",
- "fields": {
- "depname": "filesystem",
- "depvcmp": "",
- "pkg": 34
- }
- },
- {
- "pk": "53",
- "model": "main.packagedepend",
- "fields": {
- "depname": "grep",
- "depvcmp": "",
- "pkg": 34
- }
- },
- {
- "pk": "54",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 34
- }
- },
- {
- "pk": "55",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 35
- }
- },
- {
- "pk": "56",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 35
- }
- },
- {
- "pk": "57",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 37
- }
- },
- {
- "pk": "58",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 38
- }
- },
- {
- "pk": "59",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 38
- }
- },
- {
- "pk": "60",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 39
- }
- },
- {
- "pk": "61",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 40
- }
- },
- {
- "pk": "62",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 40
- }
- },
- {
- "pk": "63",
- "model": "main.packagedepend",
- "fields": {
- "depname": "binutils",
- "depvcmp": ">=2.18-3",
- "pkg": 41
- }
- },
- {
- "pk": "64",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": ">=4.3.0",
- "pkg": 41
- }
- },
- {
- "pk": "65",
- "model": "main.packagedepend",
- "fields": {
- "depname": "mpfr",
- "depvcmp": ">=2.3.1",
- "pkg": 41
- }
- },
- {
- "pk": "66",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": ">=2.7",
- "pkg": 42
- }
- },
- {
- "pk": "67",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 43
- }
- },
- {
- "pk": "68",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 44
- }
- },
- {
- "pk": "69",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 45
- }
- },
- {
- "pk": "70",
- "model": "main.packagedepend",
- "fields": {
- "depname": "acl",
- "depvcmp": "",
- "pkg": 45
- }
- },
- {
- "pk": "71",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pcre",
- "depvcmp": ">=7.6-3",
- "pkg": 46
- }
- },
- {
- "pk": "72",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 47
- }
- },
- {
- "pk": "73",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel-headers",
- "depvcmp": ">=2.6.24.3",
- "pkg": 47
- }
- },
- {
- "pk": "74",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tzdata",
- "depvcmp": "",
- "pkg": 47
- }
- },
- {
- "pk": "75",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 48
- }
- },
- {
- "pk": "76",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 49
- }
- },
- {
- "pk": "77",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 50
- }
- },
- {
- "pk": "78",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pcre",
- "depvcmp": "",
- "pkg": 50
- }
- },
- {
- "pk": "79",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 51
- }
- },
- {
- "pk": "80",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 51
- }
- },
- {
- "pk": "81",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 52
- }
- },
- {
- "pk": "82",
- "model": "main.packagedepend",
- "fields": {
- "depname": "diffutils",
- "depvcmp": "",
- "pkg": 52
- }
- },
- {
- "pk": "83",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 52
- }
- },
- {
- "pk": "84",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 53
- }
- },
- {
- "pk": "85",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 53
- }
- },
- {
- "pk": "86",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 54
- }
- },
- {
- "pk": "87",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 55
- }
- },
- {
- "pk": "88",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 55
- }
- },
- {
- "pk": "89",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 55
- }
- },
- {
- "pk": "90",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 56
- }
- },
- {
- "pk": "91",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 56
- }
- },
- {
- "pk": "92",
- "model": "main.packagedepend",
- "fields": {
- "depname": "grep",
- "depvcmp": "",
- "pkg": 56
- }
- },
- {
- "pk": "93",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 56
- }
- },
- {
- "pk": "94",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 56
- }
- },
- {
- "pk": "95",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 57
- }
- },
- {
- "pk": "96",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "97",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "98",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "99",
- "model": "main.packagedepend",
- "fields": {
- "depname": "grep",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "100",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "101",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "102",
- "model": "main.packagedepend",
- "fields": {
- "depname": "udev",
- "depvcmp": ">=118",
- "pkg": 58
- }
- },
- {
- "pk": "103",
- "model": "main.packagedepend",
- "fields": {
- "depname": "net-tools",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "104",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 58
- }
- },
- {
- "pk": "105",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 59
- }
- },
- {
- "pk": "106",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 60
- }
- },
- {
- "pk": "107",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 61
- }
- },
- {
- "pk": "108",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 62
- }
- },
- {
- "pk": "109",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 63
- }
- },
- {
- "pk": "110",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 64
- }
- },
- {
- "pk": "111",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 64
- }
- },
- {
- "pk": "112",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 64
- }
- },
- {
- "pk": "113",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ipw3945-ucode",
- "depvcmp": "",
- "pkg": 64
- }
- },
- {
- "pk": "114",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ipw3945d",
- "depvcmp": "",
- "pkg": 64
- }
- },
- {
- "pk": "115",
- "model": "main.packagedepend",
- "fields": {
- "depname": "udev",
- "depvcmp": "",
- "pkg": 65
- }
- },
- {
- "pk": "116",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 66
- }
- },
- {
- "pk": "117",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 67
- }
- },
- {
- "pk": "118",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 70
- }
- },
- {
- "pk": "119",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 71
- }
- },
- {
- "pk": "120",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 73
- }
- },
- {
- "pk": "121",
- "model": "main.packagedepend",
- "fields": {
- "depname": "module-init-tools",
- "depvcmp": "",
- "pkg": 73
- }
- },
- {
- "pk": "122",
- "model": "main.packagedepend",
- "fields": {
- "depname": "mkinitcpio",
- "depvcmp": ">=0.5.18",
- "pkg": 73
- }
- },
- {
- "pk": "123",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 75
- }
- },
- {
- "pk": "124",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 76
- }
- },
- {
- "pk": "125",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kbd",
- "depvcmp": "",
- "pkg": 76
- }
- },
- {
- "pk": "126",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 77
- }
- },
- {
- "pk": "127",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 78
- }
- },
- {
- "pk": "128",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 78
- }
- },
- {
- "pk": "129",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 79
- }
- },
- {
- "pk": "130",
- "model": "main.packagedepend",
- "fields": {
- "depname": "file",
- "depvcmp": "",
- "pkg": 79
- }
- },
- {
- "pk": "131",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 80
- }
- },
- {
- "pk": "132",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bzip2",
- "depvcmp": "",
- "pkg": 80
- }
- },
- {
- "pk": "133",
- "model": "main.packagedepend",
- "fields": {
- "depname": "acl",
- "depvcmp": "",
- "pkg": 80
- }
- },
- {
- "pk": "134",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 81
- }
- },
- {
- "pk": "135",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 82
- }
- },
- {
- "pk": "136",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 83
- }
- },
- {
- "pk": "137",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libgpg-error",
- "depvcmp": ">=1.6",
- "pkg": 84
- }
- },
- {
- "pk": "138",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 85
- }
- },
- {
- "pk": "139",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libsasl",
- "depvcmp": "",
- "pkg": 86
- }
- },
- {
- "pk": "140",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": ">=0.9.8f",
- "pkg": 86
- }
- },
- {
- "pk": "141",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 87
- }
- },
- {
- "pk": "142",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 88
- }
- },
- {
- "pk": "143",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 89
- }
- },
- {
- "pk": "144",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 90
- }
- },
- {
- "pk": "145",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": "",
- "pkg": 92
- }
- },
- {
- "pk": "146",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 92
- }
- },
- {
- "pk": "147",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bzip2",
- "depvcmp": "",
- "pkg": 93
- }
- },
- {
- "pk": "148",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 93
- }
- },
- {
- "pk": "149",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 93
- }
- },
- {
- "pk": "150",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gpm",
- "depvcmp": "",
- "pkg": 93
- }
- },
- {
- "pk": "151",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 94
- }
- },
- {
- "pk": "152",
- "model": "main.packagedepend",
- "fields": {
- "depname": "popt",
- "depvcmp": "",
- "pkg": 95
- }
- },
- {
- "pk": "153",
- "model": "main.packagedepend",
- "fields": {
- "depname": "cron",
- "depvcmp": "",
- "pkg": 95
- }
- },
- {
- "pk": "154",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gzip",
- "depvcmp": "",
- "pkg": 95
- }
- },
- {
- "pk": "155",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": ">=1.02.22",
- "pkg": 96
- }
- },
- {
- "pk": "156",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 97
- }
- },
- {
- "pk": "157",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 98
- }
- },
- {
- "pk": "158",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 98
- }
- },
- {
- "pk": "159",
- "model": "main.packagedepend",
- "fields": {
- "depname": "madwifi-utils",
- "depvcmp": "",
- "pkg": 99
- }
- },
- {
- "pk": "160",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 99
- }
- },
- {
- "pk": "161",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 99
- }
- },
- {
- "pk": "162",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 100
- }
- },
- {
- "pk": "163",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 101
- }
- },
- {
- "pk": "164",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 102
- }
- },
- {
- "pk": "165",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 102
- }
- },
- {
- "pk": "166",
- "model": "main.packagedepend",
- "fields": {
- "depname": "groff",
- "depvcmp": "",
- "pkg": 103
- }
- },
- {
- "pk": "167",
- "model": "main.packagedepend",
- "fields": {
- "depname": "less",
- "depvcmp": "",
- "pkg": 103
- }
- },
- {
- "pk": "168",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gzip",
- "depvcmp": "",
- "pkg": 103
- }
- },
- {
- "pk": "169",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 103
- }
- },
- {
- "pk": "170",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 103
- }
- },
- {
- "pk": "171",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 103
- }
- },
- {
- "pk": "172",
- "model": "main.packagedepend",
- "fields": {
- "depname": "diffutils",
- "depvcmp": "",
- "pkg": 103
- }
- },
- {
- "pk": "173",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 105
- }
- },
- {
- "pk": "174",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-5",
- "pkg": 106
- }
- },
- {
- "pk": "175",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-extras",
- "depvcmp": ">=2.4",
- "pkg": 106
- }
- },
- {
- "pk": "176",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-udev",
- "depvcmp": ">=116-3",
- "pkg": 106
- }
- },
- {
- "pk": "177",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gen-init-cpio",
- "depvcmp": "",
- "pkg": 106
- }
- },
- {
- "pk": "178",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-module-init-tools",
- "depvcmp": "",
- "pkg": 106
- }
- },
- {
- "pk": "179",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 106
- }
- },
- {
- "pk": "180",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 106
- }
- },
- {
- "pk": "181",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-kbd",
- "depvcmp": "",
- "pkg": 106
- }
- },
- {
- "pk": "182",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 107
- }
- },
- {
- "pk": "183",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 108
- }
- },
- {
- "pk": "184",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gmp",
- "depvcmp": ">=4.2.2",
- "pkg": 109
- }
- },
- {
- "pk": "185",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 110
- }
- },
- {
- "pk": "186",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 110
- }
- },
- {
- "pk": "187",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 111
- }
- },
- {
- "pk": "188",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ndiswrapper-utils",
- "depvcmp": "=1.52",
- "pkg": 112
- }
- },
- {
- "pk": "189",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 112
- }
- },
- {
- "pk": "190",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 112
- }
- },
- {
- "pk": "191",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 113
- }
- },
- {
- "pk": "192",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 113
- }
- },
- {
- "pk": "193",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 114
- }
- },
- {
- "pk": "194",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 115
- }
- },
- {
- "pk": "195",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wpa_supplicant",
- "depvcmp": "",
- "pkg": 115
- }
- },
- {
- "pk": "196",
- "model": "main.packagedepend",
- "fields": {
- "depname": "net-tools",
- "depvcmp": "",
- "pkg": 115
- }
- },
- {
- "pk": "197",
- "model": "main.packagedepend",
- "fields": {
- "depname": "mktemp",
- "depvcmp": "",
- "pkg": 115
- }
- },
- {
- "pk": "198",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 116
- }
- },
- {
- "pk": "199",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 117
- }
- },
- {
- "pk": "200",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tcp_wrappers",
- "depvcmp": "",
- "pkg": 117
- }
- },
- {
- "pk": "201",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 117
- }
- },
- {
- "pk": "202",
- "model": "main.packagedepend",
- "fields": {
- "depname": "portmap",
- "depvcmp": "",
- "pkg": 117
- }
- },
- {
- "pk": "203",
- "model": "main.packagedepend",
- "fields": {
- "depname": "nfsidmap",
- "depvcmp": "",
- "pkg": 117
- }
- },
- {
- "pk": "204",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libevent",
- "depvcmp": ">=1.3e",
- "pkg": 117
- }
- },
- {
- "pk": "205",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 118
- }
- },
- {
- "pk": "206",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libldap",
- "depvcmp": "",
- "pkg": 118
- }
- },
- {
- "pk": "207",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 119
- }
- },
- {
- "pk": "208",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 120
- }
- },
- {
- "pk": "209",
- "model": "main.packagedepend",
- "fields": {
- "depname": "fuse",
- "depvcmp": "",
- "pkg": 120
- }
- },
- {
- "pk": "210",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 120
- }
- },
- {
- "pk": "211",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": ">=0.9.8g",
- "pkg": 121
- }
- },
- {
- "pk": "212",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 121
- }
- },
- {
- "pk": "213",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": "",
- "pkg": 121
- }
- },
- {
- "pk": "214",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tcp_wrappers",
- "depvcmp": "",
- "pkg": 121
- }
- },
- {
- "pk": "215",
- "model": "main.packagedepend",
- "fields": {
- "depname": "heimdal",
- "depvcmp": "",
- "pkg": 121
- }
- },
- {
- "pk": "216",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 122
- }
- },
- {
- "pk": "217",
- "model": "main.packagedepend",
- "fields": {
- "depname": "iproute",
- "depvcmp": "",
- "pkg": 123
- }
- },
- {
- "pk": "218",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gmp",
- "depvcmp": "",
- "pkg": 123
- }
- },
- {
- "pk": "219",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 123
- }
- },
- {
- "pk": "220",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 124
- }
- },
- {
- "pk": "221",
- "model": "main.packagedepend",
- "fields": {
- "depname": "lzo2",
- "depvcmp": "",
- "pkg": 124
- }
- },
- {
- "pk": "222",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 125
- }
- },
- {
- "pk": "223",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 125
- }
- },
- {
- "pk": "224",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libarchive",
- "depvcmp": ">=2.4.17",
- "pkg": 125
- }
- },
- {
- "pk": "225",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libdownload",
- "depvcmp": ">=1.3",
- "pkg": 125
- }
- },
- {
- "pk": "226",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 126
- }
- },
- {
- "pk": "227",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 126
- }
- },
- {
- "pk": "228",
- "model": "main.packagedepend",
- "fields": {
- "depname": "cracklib",
- "depvcmp": "",
- "pkg": 126
- }
- },
- {
- "pk": "229",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 127
- }
- },
- {
- "pk": "230",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ed",
- "depvcmp": "",
- "pkg": 127
- }
- },
- {
- "pk": "231",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 128
- }
- },
- {
- "pk": "232",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 129
- }
- },
- {
- "pk": "233",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sysfsutils",
- "depvcmp": "",
- "pkg": 129
- }
- },
- {
- "pk": "234",
- "model": "main.packagedepend",
- "fields": {
- "depname": "module-init-tools",
- "depvcmp": ">=3.2pre9",
- "pkg": 129
- }
- },
- {
- "pk": "235",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 130
- }
- },
- {
- "pk": "236",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gdbm",
- "depvcmp": "",
- "pkg": 131
- }
- },
- {
- "pk": "237",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 131
- }
- },
- {
- "pk": "238",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 131
- }
- },
- {
- "pk": "239",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 131
- }
- },
- {
- "pk": "240",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 131
- }
- },
- {
- "pk": "241",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 132
- }
- },
- {
- "pk": "242",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 133
- }
- },
- {
- "pk": "243",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 134
- }
- },
- {
- "pk": "244",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 135
- }
- },
- {
- "pk": "245",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libpcap",
- "depvcmp": ">=0.9.8",
- "pkg": 135
- }
- },
- {
- "pk": "246",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 136
- }
- },
- {
- "pk": "247",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ppp",
- "depvcmp": "",
- "pkg": 136
- }
- },
- {
- "pk": "248",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 137
- }
- },
- {
- "pk": "249",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 137
- }
- },
- {
- "pk": "250",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 137
- }
- },
- {
- "pk": "251",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 138
- }
- },
- {
- "pk": "252",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 139
- }
- },
- {
- "pk": "253",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 139
- }
- },
- {
- "pk": "254",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 140
- }
- },
- {
- "pk": "255",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 140
- }
- },
- {
- "pk": "256",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 141
- }
- },
- {
- "pk": "257",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ppp",
- "depvcmp": "",
- "pkg": 142
- }
- },
- {
- "pk": "258",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 143
- }
- },
- {
- "pk": "259",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 143
- }
- },
- {
- "pk": "260",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 146
- }
- },
- {
- "pk": "261",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 147
- }
- },
- {
- "pk": "262",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": "",
- "pkg": 148
- }
- },
- {
- "pk": "263",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 149
- }
- },
- {
- "pk": "264",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": "",
- "pkg": 149
- }
- },
- {
- "pk": "265",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 150
- }
- },
- {
- "pk": "266",
- "model": "main.packagedepend",
- "fields": {
- "depname": "logrotate",
- "depvcmp": "",
- "pkg": 151
- }
- },
- {
- "pk": "267",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 151
- }
- },
- {
- "pk": "268",
- "model": "main.packagedepend",
- "fields": {
- "depname": "shadow",
- "depvcmp": "",
- "pkg": 152
- }
- },
- {
- "pk": "269",
- "model": "main.packagedepend",
- "fields": {
- "depname": "util-linux",
- "depvcmp": "",
- "pkg": 152
- }
- },
- {
- "pk": "270",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 152
- }
- },
- {
- "pk": "271",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 152
- }
- },
- {
- "pk": "272",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 152
- }
- },
- {
- "pk": "273",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 153
- }
- },
- {
- "pk": "274",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 153
- }
- },
- {
- "pk": "275",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 154
- }
- },
- {
- "pk": "276",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 154
- }
- },
- {
- "pk": "277",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 155
- }
- },
- {
- "pk": "278",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 156
- }
- },
- {
- "pk": "279",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 156
- }
- },
- {
- "pk": "280",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<2.6.25",
- "pkg": 156
- }
- },
- {
- "pk": "281",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tiacx-firmware",
- "depvcmp": "",
- "pkg": 156
- }
- },
- {
- "pk": "282",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 159
- }
- },
- {
- "pk": "283",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 159
- }
- },
- {
- "pk": "284",
- "model": "main.packagedepend",
- "fields": {
- "depname": "util-linux",
- "depvcmp": "",
- "pkg": 159
- }
- },
- {
- "pk": "285",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 160
- }
- },
- {
- "pk": "286",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libusb",
- "depvcmp": "",
- "pkg": 160
- }
- },
- {
- "pk": "287",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 161
- }
- },
- {
- "pk": "288",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 161
- }
- },
- {
- "pk": "289",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 161
- }
- },
- {
- "pk": "290",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 161
- }
- },
- {
- "pk": "291",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 162
- }
- },
- {
- "pk": "292",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 162
- }
- },
- {
- "pk": "293",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 162
- }
- },
- {
- "pk": "294",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libgcrypt",
- "depvcmp": "",
- "pkg": 163
- }
- },
- {
- "pk": "295",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 163
- }
- },
- {
- "pk": "296",
- "model": "main.packagedepend",
- "fields": {
- "depname": "iproute",
- "depvcmp": "",
- "pkg": 163
- }
- },
- {
- "pk": "297",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 164
- }
- },
- {
- "pk": "298",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 164
- }
- },
- {
- "pk": "299",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 165
- }
- },
- {
- "pk": "300",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 166
- }
- },
- {
- "pk": "301",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 167
- }
- },
- {
- "pk": "302",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 167
- }
- },
- {
- "pk": "303",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wlan-ng26-utils",
- "depvcmp": "",
- "pkg": 167
- }
- },
- {
- "pk": "304",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 168
- }
- },
- {
- "pk": "305",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 168
- }
- },
- {
- "pk": "306",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 169
- }
- },
- {
- "pk": "307",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 170
- }
- },
- {
- "pk": "308",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 171
- }
- },
- {
- "pk": "309",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tcp_wrappers",
- "depvcmp": "",
- "pkg": 171
- }
- },
- {
- "pk": "310",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 173
- }
- },
- {
- "pk": "311",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 174
- }
- },
- {
- "pk": "312",
- "model": "main.packagedepend",
- "fields": {
- "depname": "rsync",
- "depvcmp": "",
- "pkg": 174
- }
- },
- {
- "pk": "313",
- "model": "main.packagedepend",
- "fields": {
- "depname": "attr",
- "depvcmp": ">=2.4.41",
- "pkg": 175
- }
- },
- {
- "pk": "314",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.4-1",
- "pkg": 176
- }
- },
- {
- "pk": "315",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<2.6.25",
- "pkg": 176
- }
- },
- {
- "pk": "316",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 177
- }
- },
- {
- "pk": "317",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 178
- }
- },
- {
- "pk": "318",
- "model": "main.packagedepend",
- "fields": {
- "depname": "m4",
- "depvcmp": "",
- "pkg": 178
- }
- },
- {
- "pk": "319",
- "model": "main.packagedepend",
- "fields": {
- "depname": "diffutils",
- "depvcmp": "",
- "pkg": 178
- }
- },
- {
- "pk": "320",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 178
- }
- },
- {
- "pk": "321",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 179
- }
- },
- {
- "pk": "322",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 179
- }
- },
- {
- "pk": "323",
- "model": "main.packagedepend",
- "fields": {
- "depname": "readline",
- "depvcmp": ">=5.2",
- "pkg": 180
- }
- },
- {
- "pk": "324",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 180
- }
- },
- {
- "pk": "325",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 181
- }
- },
- {
- "pk": "326",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 182
- }
- },
- {
- "pk": "327",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": ">=2.7",
- "pkg": 183
- }
- },
- {
- "pk": "328",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 184
- }
- },
- {
- "pk": "329",
- "model": "main.packagedepend",
- "fields": {
- "depname": "m4",
- "depvcmp": "",
- "pkg": 184
- }
- },
- {
- "pk": "330",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 185
- }
- },
- {
- "pk": "331",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 186
- }
- },
- {
- "pk": "332",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 187
- }
- },
- {
- "pk": "333",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 187
- }
- },
- {
- "pk": "334",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": ">=2.7-7",
- "pkg": 188
- }
- },
- {
- "pk": "335",
- "model": "main.packagedepend",
- "fields": {
- "depname": "shadow",
- "depvcmp": ">=4.0.18.2-2",
- "pkg": 188
- }
- },
- {
- "pk": "336",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": ">=0.99.9.0-2",
- "pkg": 188
- }
- },
- {
- "pk": "337",
- "model": "main.packagedepend",
- "fields": {
- "depname": "acl",
- "depvcmp": ">=2.2.45-2",
- "pkg": 188
- }
- },
- {
- "pk": "338",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 189
- }
- },
- {
- "pk": "339",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 190
- }
- },
- {
- "pk": "340",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": "",
- "pkg": 191
- }
- },
- {
- "pk": "341",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libgcrypt",
- "depvcmp": "",
- "pkg": 191
- }
- },
- {
- "pk": "342",
- "model": "main.packagedepend",
- "fields": {
- "depname": "popt",
- "depvcmp": "",
- "pkg": 191
- }
- },
- {
- "pk": "343",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 191
- }
- },
- {
- "pk": "344",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 192
- }
- },
- {
- "pk": "345",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 192
- }
- },
- {
- "pk": "346",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 192
- }
- },
- {
- "pk": "347",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 194
- }
- },
- {
- "pk": "348",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 194
- }
- },
- {
- "pk": "349",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 195
- }
- },
- {
- "pk": "350",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 196
- }
- },
- {
- "pk": "351",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 197
- }
- },
- {
- "pk": "352",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 198
- }
- },
- {
- "pk": "353",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 199
- }
- },
- {
- "pk": "354",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 200
- }
- },
- {
- "pk": "355",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": "",
- "pkg": 201
- }
- },
- {
- "pk": "356",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": ">=0.9.8e",
- "pkg": 202
- }
- },
- {
- "pk": "357",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 203
- }
- },
- {
- "pk": "358",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 204
- }
- },
- {
- "pk": "359",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 205
- }
- },
- {
- "pk": "360",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 206
- }
- },
- {
- "pk": "361",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 207
- }
- },
- {
- "pk": "362",
- "model": "main.packagedepend",
- "fields": {
- "depname": "filesystem",
- "depvcmp": "",
- "pkg": 207
- }
- },
- {
- "pk": "363",
- "model": "main.packagedepend",
- "fields": {
- "depname": "grep",
- "depvcmp": "",
- "pkg": 207
- }
- },
- {
- "pk": "364",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 207
- }
- },
- {
- "pk": "365",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 208
- }
- },
- {
- "pk": "366",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 208
- }
- },
- {
- "pk": "367",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 210
- }
- },
- {
- "pk": "368",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 211
- }
- },
- {
- "pk": "369",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 211
- }
- },
- {
- "pk": "370",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 212
- }
- },
- {
- "pk": "371",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 213
- }
- },
- {
- "pk": "372",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 213
- }
- },
- {
- "pk": "373",
- "model": "main.packagedepend",
- "fields": {
- "depname": "binutils",
- "depvcmp": ">=2.18-3",
- "pkg": 214
- }
- },
- {
- "pk": "374",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": ">=4.3.0",
- "pkg": 214
- }
- },
- {
- "pk": "375",
- "model": "main.packagedepend",
- "fields": {
- "depname": "mpfr",
- "depvcmp": ">=2.3.1",
- "pkg": 214
- }
- },
- {
- "pk": "376",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": ">=2.7",
- "pkg": 215
- }
- },
- {
- "pk": "377",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 216
- }
- },
- {
- "pk": "378",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 217
- }
- },
- {
- "pk": "379",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 218
- }
- },
- {
- "pk": "380",
- "model": "main.packagedepend",
- "fields": {
- "depname": "acl",
- "depvcmp": "",
- "pkg": 218
- }
- },
- {
- "pk": "381",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pcre",
- "depvcmp": ">=7.6-3",
- "pkg": 219
- }
- },
- {
- "pk": "382",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 220
- }
- },
- {
- "pk": "383",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel-headers",
- "depvcmp": ">=2.6.24.3",
- "pkg": 220
- }
- },
- {
- "pk": "384",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tzdata",
- "depvcmp": "",
- "pkg": 220
- }
- },
- {
- "pk": "385",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 221
- }
- },
- {
- "pk": "386",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 222
- }
- },
- {
- "pk": "387",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 223
- }
- },
- {
- "pk": "388",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pcre",
- "depvcmp": "",
- "pkg": 223
- }
- },
- {
- "pk": "389",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 224
- }
- },
- {
- "pk": "390",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 224
- }
- },
- {
- "pk": "391",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 225
- }
- },
- {
- "pk": "392",
- "model": "main.packagedepend",
- "fields": {
- "depname": "diffutils",
- "depvcmp": "",
- "pkg": 225
- }
- },
- {
- "pk": "393",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 225
- }
- },
- {
- "pk": "394",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 226
- }
- },
- {
- "pk": "395",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 226
- }
- },
- {
- "pk": "396",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 227
- }
- },
- {
- "pk": "397",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 228
- }
- },
- {
- "pk": "398",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 228
- }
- },
- {
- "pk": "399",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 228
- }
- },
- {
- "pk": "400",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 229
- }
- },
- {
- "pk": "401",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 229
- }
- },
- {
- "pk": "402",
- "model": "main.packagedepend",
- "fields": {
- "depname": "grep",
- "depvcmp": "",
- "pkg": 229
- }
- },
- {
- "pk": "403",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 229
- }
- },
- {
- "pk": "404",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 229
- }
- },
- {
- "pk": "405",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 230
- }
- },
- {
- "pk": "406",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "407",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "408",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "409",
- "model": "main.packagedepend",
- "fields": {
- "depname": "grep",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "410",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "411",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sed",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "412",
- "model": "main.packagedepend",
- "fields": {
- "depname": "udev",
- "depvcmp": ">=118",
- "pkg": 231
- }
- },
- {
- "pk": "413",
- "model": "main.packagedepend",
- "fields": {
- "depname": "net-tools",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "414",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 231
- }
- },
- {
- "pk": "415",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 232
- }
- },
- {
- "pk": "416",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 233
- }
- },
- {
- "pk": "417",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 234
- }
- },
- {
- "pk": "418",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 235
- }
- },
- {
- "pk": "419",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 236
- }
- },
- {
- "pk": "420",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 237
- }
- },
- {
- "pk": "421",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 237
- }
- },
- {
- "pk": "422",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 237
- }
- },
- {
- "pk": "423",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ipw3945-ucode",
- "depvcmp": "",
- "pkg": 237
- }
- },
- {
- "pk": "424",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ipw3945d",
- "depvcmp": "",
- "pkg": 237
- }
- },
- {
- "pk": "425",
- "model": "main.packagedepend",
- "fields": {
- "depname": "udev",
- "depvcmp": "",
- "pkg": 238
- }
- },
- {
- "pk": "426",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 239
- }
- },
- {
- "pk": "427",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 240
- }
- },
- {
- "pk": "428",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 243
- }
- },
- {
- "pk": "429",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 244
- }
- },
- {
- "pk": "430",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 246
- }
- },
- {
- "pk": "431",
- "model": "main.packagedepend",
- "fields": {
- "depname": "module-init-tools",
- "depvcmp": "",
- "pkg": 246
- }
- },
- {
- "pk": "432",
- "model": "main.packagedepend",
- "fields": {
- "depname": "mkinitcpio",
- "depvcmp": ">=0.5.18",
- "pkg": 246
- }
- },
- {
- "pk": "433",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 248
- }
- },
- {
- "pk": "434",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 249
- }
- },
- {
- "pk": "435",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kbd",
- "depvcmp": "",
- "pkg": 249
- }
- },
- {
- "pk": "436",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 250
- }
- },
- {
- "pk": "437",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 251
- }
- },
- {
- "pk": "438",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-4",
- "pkg": 251
- }
- },
- {
- "pk": "439",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 252
- }
- },
- {
- "pk": "440",
- "model": "main.packagedepend",
- "fields": {
- "depname": "file",
- "depvcmp": "",
- "pkg": 252
- }
- },
- {
- "pk": "441",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 253
- }
- },
- {
- "pk": "442",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bzip2",
- "depvcmp": "",
- "pkg": 253
- }
- },
- {
- "pk": "443",
- "model": "main.packagedepend",
- "fields": {
- "depname": "acl",
- "depvcmp": "",
- "pkg": 253
- }
- },
- {
- "pk": "444",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 254
- }
- },
- {
- "pk": "445",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 255
- }
- },
- {
- "pk": "446",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 256
- }
- },
- {
- "pk": "447",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libgpg-error",
- "depvcmp": ">=1.6",
- "pkg": 257
- }
- },
- {
- "pk": "448",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 258
- }
- },
- {
- "pk": "449",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libsasl",
- "depvcmp": "",
- "pkg": 259
- }
- },
- {
- "pk": "450",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": ">=0.9.8f",
- "pkg": 259
- }
- },
- {
- "pk": "451",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 260
- }
- },
- {
- "pk": "452",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 261
- }
- },
- {
- "pk": "453",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 262
- }
- },
- {
- "pk": "454",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 263
- }
- },
- {
- "pk": "455",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": "",
- "pkg": 265
- }
- },
- {
- "pk": "456",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 265
- }
- },
- {
- "pk": "457",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bzip2",
- "depvcmp": "",
- "pkg": 266
- }
- },
- {
- "pk": "458",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 266
- }
- },
- {
- "pk": "459",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 266
- }
- },
- {
- "pk": "460",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gpm",
- "depvcmp": "",
- "pkg": 266
- }
- },
- {
- "pk": "461",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 267
- }
- },
- {
- "pk": "462",
- "model": "main.packagedepend",
- "fields": {
- "depname": "popt",
- "depvcmp": "",
- "pkg": 268
- }
- },
- {
- "pk": "463",
- "model": "main.packagedepend",
- "fields": {
- "depname": "cron",
- "depvcmp": "",
- "pkg": 268
- }
- },
- {
- "pk": "464",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gzip",
- "depvcmp": "",
- "pkg": 268
- }
- },
- {
- "pk": "465",
- "model": "main.packagedepend",
- "fields": {
- "depname": "device-mapper",
- "depvcmp": ">=1.02.22",
- "pkg": 269
- }
- },
- {
- "pk": "466",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 270
- }
- },
- {
- "pk": "467",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 271
- }
- },
- {
- "pk": "468",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 271
- }
- },
- {
- "pk": "469",
- "model": "main.packagedepend",
- "fields": {
- "depname": "madwifi-utils",
- "depvcmp": "",
- "pkg": 272
- }
- },
- {
- "pk": "470",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 272
- }
- },
- {
- "pk": "471",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 272
- }
- },
- {
- "pk": "472",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 273
- }
- },
- {
- "pk": "473",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 274
- }
- },
- {
- "pk": "474",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 275
- }
- },
- {
- "pk": "475",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 275
- }
- },
- {
- "pk": "476",
- "model": "main.packagedepend",
- "fields": {
- "depname": "groff",
- "depvcmp": "",
- "pkg": 276
- }
- },
- {
- "pk": "477",
- "model": "main.packagedepend",
- "fields": {
- "depname": "less",
- "depvcmp": "",
- "pkg": 276
- }
- },
- {
- "pk": "478",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gzip",
- "depvcmp": "",
- "pkg": 276
- }
- },
- {
- "pk": "479",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 276
- }
- },
- {
- "pk": "480",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 276
- }
- },
- {
- "pk": "481",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 276
- }
- },
- {
- "pk": "482",
- "model": "main.packagedepend",
- "fields": {
- "depname": "diffutils",
- "depvcmp": "",
- "pkg": 276
- }
- },
- {
- "pk": "483",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 278
- }
- },
- {
- "pk": "484",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc",
- "depvcmp": ">=1.5-5",
- "pkg": 279
- }
- },
- {
- "pk": "485",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-extras",
- "depvcmp": ">=2.4",
- "pkg": 279
- }
- },
- {
- "pk": "486",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-udev",
- "depvcmp": ">=116-3",
- "pkg": 279
- }
- },
- {
- "pk": "487",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gen-init-cpio",
- "depvcmp": "",
- "pkg": 279
- }
- },
- {
- "pk": "488",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-module-init-tools",
- "depvcmp": "",
- "pkg": 279
- }
- },
- {
- "pk": "489",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 279
- }
- },
- {
- "pk": "490",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 279
- }
- },
- {
- "pk": "491",
- "model": "main.packagedepend",
- "fields": {
- "depname": "klibc-kbd",
- "depvcmp": "",
- "pkg": 279
- }
- },
- {
- "pk": "492",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 280
- }
- },
- {
- "pk": "493",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 281
- }
- },
- {
- "pk": "494",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gmp",
- "depvcmp": ">=4.2.2",
- "pkg": 282
- }
- },
- {
- "pk": "495",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 283
- }
- },
- {
- "pk": "496",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 283
- }
- },
- {
- "pk": "497",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 284
- }
- },
- {
- "pk": "498",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ndiswrapper-utils",
- "depvcmp": "=1.52",
- "pkg": 285
- }
- },
- {
- "pk": "499",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 285
- }
- },
- {
- "pk": "500",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 285
- }
- },
- {
- "pk": "501",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 286
- }
- },
- {
- "pk": "502",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 286
- }
- },
- {
- "pk": "503",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 287
- }
- },
- {
- "pk": "504",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 288
- }
- },
- {
- "pk": "505",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wpa_supplicant",
- "depvcmp": "",
- "pkg": 288
- }
- },
- {
- "pk": "506",
- "model": "main.packagedepend",
- "fields": {
- "depname": "net-tools",
- "depvcmp": "",
- "pkg": 288
- }
- },
- {
- "pk": "507",
- "model": "main.packagedepend",
- "fields": {
- "depname": "mktemp",
- "depvcmp": "",
- "pkg": 288
- }
- },
- {
- "pk": "508",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 289
- }
- },
- {
- "pk": "509",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 290
- }
- },
- {
- "pk": "510",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tcp_wrappers",
- "depvcmp": "",
- "pkg": 290
- }
- },
- {
- "pk": "511",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 290
- }
- },
- {
- "pk": "512",
- "model": "main.packagedepend",
- "fields": {
- "depname": "portmap",
- "depvcmp": "",
- "pkg": 290
- }
- },
- {
- "pk": "513",
- "model": "main.packagedepend",
- "fields": {
- "depname": "nfsidmap",
- "depvcmp": "",
- "pkg": 290
- }
- },
- {
- "pk": "514",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libevent",
- "depvcmp": ">=1.3e",
- "pkg": 290
- }
- },
- {
- "pk": "515",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 291
- }
- },
- {
- "pk": "516",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libldap",
- "depvcmp": "",
- "pkg": 291
- }
- },
- {
- "pk": "517",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 292
- }
- },
- {
- "pk": "518",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 293
- }
- },
- {
- "pk": "519",
- "model": "main.packagedepend",
- "fields": {
- "depname": "fuse",
- "depvcmp": "",
- "pkg": 293
- }
- },
- {
- "pk": "520",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 293
- }
- },
- {
- "pk": "521",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": ">=0.9.8g",
- "pkg": 294
- }
- },
- {
- "pk": "522",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 294
- }
- },
- {
- "pk": "523",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": "",
- "pkg": 294
- }
- },
- {
- "pk": "524",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tcp_wrappers",
- "depvcmp": "",
- "pkg": 294
- }
- },
- {
- "pk": "525",
- "model": "main.packagedepend",
- "fields": {
- "depname": "heimdal",
- "depvcmp": "",
- "pkg": 294
- }
- },
- {
- "pk": "526",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 295
- }
- },
- {
- "pk": "527",
- "model": "main.packagedepend",
- "fields": {
- "depname": "iproute",
- "depvcmp": "",
- "pkg": 296
- }
- },
- {
- "pk": "528",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gmp",
- "depvcmp": "",
- "pkg": 296
- }
- },
- {
- "pk": "529",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 296
- }
- },
- {
- "pk": "530",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 297
- }
- },
- {
- "pk": "531",
- "model": "main.packagedepend",
- "fields": {
- "depname": "lzo2",
- "depvcmp": "",
- "pkg": 297
- }
- },
- {
- "pk": "532",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 298
- }
- },
- {
- "pk": "533",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 298
- }
- },
- {
- "pk": "534",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libarchive",
- "depvcmp": ">=2.4.17",
- "pkg": 298
- }
- },
- {
- "pk": "535",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libdownload",
- "depvcmp": ">=1.3",
- "pkg": 298
- }
- },
- {
- "pk": "536",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 299
- }
- },
- {
- "pk": "537",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 299
- }
- },
- {
- "pk": "538",
- "model": "main.packagedepend",
- "fields": {
- "depname": "cracklib",
- "depvcmp": "",
- "pkg": 299
- }
- },
- {
- "pk": "539",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 300
- }
- },
- {
- "pk": "540",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ed",
- "depvcmp": "",
- "pkg": 300
- }
- },
- {
- "pk": "541",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 301
- }
- },
- {
- "pk": "542",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 302
- }
- },
- {
- "pk": "543",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sysfsutils",
- "depvcmp": "",
- "pkg": 302
- }
- },
- {
- "pk": "544",
- "model": "main.packagedepend",
- "fields": {
- "depname": "module-init-tools",
- "depvcmp": ">=3.2pre9",
- "pkg": 302
- }
- },
- {
- "pk": "545",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gcc-libs",
- "depvcmp": "",
- "pkg": 303
- }
- },
- {
- "pk": "546",
- "model": "main.packagedepend",
- "fields": {
- "depname": "gdbm",
- "depvcmp": "",
- "pkg": 304
- }
- },
- {
- "pk": "547",
- "model": "main.packagedepend",
- "fields": {
- "depname": "db",
- "depvcmp": ">=4.6",
- "pkg": 304
- }
- },
- {
- "pk": "548",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 304
- }
- },
- {
- "pk": "549",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 304
- }
- },
- {
- "pk": "550",
- "model": "main.packagedepend",
- "fields": {
- "depname": "sh",
- "depvcmp": "",
- "pkg": 304
- }
- },
- {
- "pk": "551",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 305
- }
- },
- {
- "pk": "552",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 306
- }
- },
- {
- "pk": "553",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 307
- }
- },
- {
- "pk": "554",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 308
- }
- },
- {
- "pk": "555",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libpcap",
- "depvcmp": ">=0.9.8",
- "pkg": 308
- }
- },
- {
- "pk": "556",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 309
- }
- },
- {
- "pk": "557",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ppp",
- "depvcmp": "",
- "pkg": 309
- }
- },
- {
- "pk": "558",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 310
- }
- },
- {
- "pk": "559",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 310
- }
- },
- {
- "pk": "560",
- "model": "main.packagedepend",
- "fields": {
- "depname": "perl",
- "depvcmp": "",
- "pkg": 310
- }
- },
- {
- "pk": "561",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 311
- }
- },
- {
- "pk": "562",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 312
- }
- },
- {
- "pk": "563",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 312
- }
- },
- {
- "pk": "564",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 313
- }
- },
- {
- "pk": "565",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 313
- }
- },
- {
- "pk": "566",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 314
- }
- },
- {
- "pk": "567",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ppp",
- "depvcmp": "",
- "pkg": 315
- }
- },
- {
- "pk": "568",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 316
- }
- },
- {
- "pk": "569",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 316
- }
- },
- {
- "pk": "570",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 319
- }
- },
- {
- "pk": "571",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 320
- }
- },
- {
- "pk": "572",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": "",
- "pkg": 321
- }
- },
- {
- "pk": "573",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 322
- }
- },
- {
- "pk": "574",
- "model": "main.packagedepend",
- "fields": {
- "depname": "pam",
- "depvcmp": "",
- "pkg": 322
- }
- },
- {
- "pk": "575",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 323
- }
- },
- {
- "pk": "576",
- "model": "main.packagedepend",
- "fields": {
- "depname": "logrotate",
- "depvcmp": "",
- "pkg": 324
- }
- },
- {
- "pk": "577",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 324
- }
- },
- {
- "pk": "578",
- "model": "main.packagedepend",
- "fields": {
- "depname": "shadow",
- "depvcmp": "",
- "pkg": 325
- }
- },
- {
- "pk": "579",
- "model": "main.packagedepend",
- "fields": {
- "depname": "util-linux",
- "depvcmp": "",
- "pkg": 325
- }
- },
- {
- "pk": "580",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 325
- }
- },
- {
- "pk": "581",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 325
- }
- },
- {
- "pk": "582",
- "model": "main.packagedepend",
- "fields": {
- "depname": "awk",
- "depvcmp": "",
- "pkg": 325
- }
- },
- {
- "pk": "583",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 326
- }
- },
- {
- "pk": "584",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 326
- }
- },
- {
- "pk": "585",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 327
- }
- },
- {
- "pk": "586",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 327
- }
- },
- {
- "pk": "587",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 328
- }
- },
- {
- "pk": "588",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wireless_tools",
- "depvcmp": "",
- "pkg": 329
- }
- },
- {
- "pk": "589",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 329
- }
- },
- {
- "pk": "590",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<2.6.25",
- "pkg": 329
- }
- },
- {
- "pk": "591",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tiacx-firmware",
- "depvcmp": "",
- "pkg": 329
- }
- },
- {
- "pk": "592",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 332
- }
- },
- {
- "pk": "593",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 332
- }
- },
- {
- "pk": "594",
- "model": "main.packagedepend",
- "fields": {
- "depname": "util-linux",
- "depvcmp": "",
- "pkg": 332
- }
- },
- {
- "pk": "595",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 333
- }
- },
- {
- "pk": "596",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libusb",
- "depvcmp": "",
- "pkg": 333
- }
- },
- {
- "pk": "597",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 334
- }
- },
- {
- "pk": "598",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 334
- }
- },
- {
- "pk": "599",
- "model": "main.packagedepend",
- "fields": {
- "depname": "zlib",
- "depvcmp": "",
- "pkg": 334
- }
- },
- {
- "pk": "600",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 334
- }
- },
- {
- "pk": "601",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 335
- }
- },
- {
- "pk": "602",
- "model": "main.packagedepend",
- "fields": {
- "depname": "ncurses",
- "depvcmp": "",
- "pkg": 335
- }
- },
- {
- "pk": "603",
- "model": "main.packagedepend",
- "fields": {
- "depname": "coreutils",
- "depvcmp": "",
- "pkg": 335
- }
- },
- {
- "pk": "604",
- "model": "main.packagedepend",
- "fields": {
- "depname": "libgcrypt",
- "depvcmp": "",
- "pkg": 336
- }
- },
- {
- "pk": "605",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 336
- }
- },
- {
- "pk": "606",
- "model": "main.packagedepend",
- "fields": {
- "depname": "iproute",
- "depvcmp": "",
- "pkg": 336
- }
- },
- {
- "pk": "607",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 337
- }
- },
- {
- "pk": "608",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 337
- }
- },
- {
- "pk": "609",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 338
- }
- },
- {
- "pk": "610",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 339
- }
- },
- {
- "pk": "611",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": ">=2.6.24.3-4",
- "pkg": 340
- }
- },
- {
- "pk": "612",
- "model": "main.packagedepend",
- "fields": {
- "depname": "kernel26",
- "depvcmp": "<=2.6.25-0",
- "pkg": 340
- }
- },
- {
- "pk": "613",
- "model": "main.packagedepend",
- "fields": {
- "depname": "wlan-ng26-utils",
- "depvcmp": "",
- "pkg": 340
- }
- },
- {
- "pk": "614",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 341
- }
- },
- {
- "pk": "615",
- "model": "main.packagedepend",
- "fields": {
- "depname": "bash",
- "depvcmp": "",
- "pkg": 341
- }
- },
- {
- "pk": "616",
- "model": "main.packagedepend",
- "fields": {
- "depname": "openssl",
- "depvcmp": "",
- "pkg": 342
- }
- },
- {
- "pk": "617",
- "model": "main.packagedepend",
- "fields": {
- "depname": "e2fsprogs",
- "depvcmp": "",
- "pkg": 343
- }
- },
- {
- "pk": "618",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 344
- }
- },
- {
- "pk": "619",
- "model": "main.packagedepend",
- "fields": {
- "depname": "tcp_wrappers",
- "depvcmp": "",
- "pkg": 344
- }
- },
- {
- "pk": "620",
- "model": "main.packagedepend",
- "fields": {
- "depname": "glibc",
- "depvcmp": "",
- "pkg": 346
- }
- }
-]
diff --git a/main/migrations/0038_add_depends_optional_description.py b/main/migrations/0038_add_depends_optional_description.py
new file mode 100644
index 00000000..ab3b3381
--- /dev/null
+++ b/main/migrations/0038_add_depends_optional_description.py
@@ -0,0 +1,156 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ db.add_column('package_depends', 'optional', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=False)
+ db.add_column('package_depends', 'description', self.gf('django.db.models.fields.TextField')(null=True, blank=True), keep_default=False)
+
+ def backwards(self, orm):
+ db.delete_column('package_depends', 'optional')
+ db.delete_column('package_depends', 'description')
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.donor': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.packagedepend': {
+ 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
+ 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.packagefile': {
+ 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'main.signoff': {
+ 'Meta': {'object_name': 'Signoff'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolist': {
+ 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
+ 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolistpkg': {
+ 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
+ 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.userprofile': {
+ 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
+ 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
+ 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
+ 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
+ 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['main']
diff --git a/main/migrations/0039_auto__del_field_package_license.py b/main/migrations/0039_auto__del_field_package_license.py
new file mode 100644
index 00000000..2860bc47
--- /dev/null
+++ b/main/migrations/0039_auto__del_field_package_license.py
@@ -0,0 +1,157 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ depends_on = (
+ ('packages', '0005_move_license_data'),
+ )
+
+ def forwards(self, orm):
+ db.delete_column('packages', 'license')
+
+ def backwards(self, orm):
+ db.add_column('packages', 'license', self.gf('django.db.models.fields.CharField')(max_length=255, null=True), keep_default=False)
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.donor': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.packagedepend': {
+ 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
+ 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'depvcmp': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.packagefile': {
+ 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'main.signoff': {
+ 'Meta': {'object_name': 'Signoff'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolist': {
+ 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
+ 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolistpkg': {
+ 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
+ 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.userprofile': {
+ 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
+ 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
+ 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
+ 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
+ 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['main']
diff --git a/main/migrations/0040_split_package_files.py b/main/migrations/0040_split_package_files.py
new file mode 100644
index 00000000..42e96d01
--- /dev/null
+++ b/main/migrations/0040_split_package_files.py
@@ -0,0 +1,166 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding field 'PackageFile.is_directory'
+ db.add_column('package_files', 'is_directory', self.gf('django.db.models.fields.BooleanField')(default=False), keep_default=True)
+ # Adding field 'PackageFile.directory'
+ db.add_column('package_files', 'directory', self.gf('django.db.models.fields.CharField')(default='', max_length=255), keep_default=False)
+ # Adding field 'PackageFile.filename'
+ db.add_column('package_files', 'filename', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True), keep_default=False)
+
+ def backwards(self, orm):
+ # Deleting field 'PackageFile.is_directory'
+ db.delete_column('package_files', 'is_directory')
+ # Deleting field 'PackageFile.directory'
+ db.delete_column('package_files', 'directory')
+ # Deleting field 'PackageFile.filename'
+ db.delete_column('package_files', 'filename')
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.donor': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.packagedepend': {
+ 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
+ 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.packagefile': {
+ 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
+ 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'main.signoff': {
+ 'Meta': {'object_name': 'Signoff'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolist': {
+ 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
+ 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolistpkg': {
+ 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
+ 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.userprofile': {
+ 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
+ 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
+ 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
+ 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
+ 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['main']
diff --git a/main/migrations/0041_move_package_files_data.py b/main/migrations/0041_move_package_files_data.py
new file mode 100644
index 00000000..31eecaa5
--- /dev/null
+++ b/main/migrations/0041_move_package_files_data.py
@@ -0,0 +1,186 @@
+# encoding: utf-8
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+from django.db.models import F
+
+class Migration(DataMigration):
+
+ def forwards(self, orm):
+ # Handle the paths that are directories first
+ orm.PackageFile.objects.filter(path__endswith='/').update(
+ is_directory=True, directory=F('path'))
+
+ if db.backend_name == 'mysql':
+ db.execute("UPDATE package_files "
+ "SET filename = SUBSTRING_INDEX(path, '/', -1), "
+ "directory = SUBSTRING(path, 1, LENGTH(path) - INSTR(REVERSE(path), '/') + 1) "
+ "WHERE is_directory = 0")
+ elif db.backend_name == 'postgresql':
+ db.execute("UPDATE package_files "
+ "SET filename = substring(filename, '.*/(.*?)$'), "
+ "directory = substring(filename, '.*/') "
+ "WHERE is_directory = 0")
+ else:
+ # Sucks that we can't always do this in one query at the DB level...
+ files = orm.PackageFile.objects.filter(is_directory=False)
+ for f in files:
+ parts = f.path.rsplit('/', 1)
+ db.execute("UPDATE package_files "
+ "SET filename = %s, "
+ "directory = %s "
+ "WHERE id = %s",
+ (parts[1], parts[0] + '/', f.id))
+ # We could do this, but then Django takes forever to generate
+ # basically the same query for every row.
+ #f.filename = parts[1]
+ #f.directory = parts[0] + '/'
+ #f.save()
+
+ def backwards(self, orm):
+ orm.PackageFile.objects.all().update(is_directory=False,
+ directory='', filename=None)
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.donor': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.packagedepend': {
+ 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
+ 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.packagefile': {
+ 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
+ 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'main.signoff': {
+ 'Meta': {'object_name': 'Signoff'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolist': {
+ 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
+ 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolistpkg': {
+ 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
+ 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.userprofile': {
+ 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
+ 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
+ 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
+ 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
+ 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['main']
diff --git a/main/migrations/0042_auto__del_field_packagefile_path.py b/main/migrations/0042_auto__del_field_packagefile_path.py
new file mode 100644
index 00000000..837a6a7f
--- /dev/null
+++ b/main/migrations/0042_auto__del_field_packagefile_path.py
@@ -0,0 +1,158 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Deleting field 'PackageFile.path'
+ db.delete_column('package_files', 'path')
+
+ def backwards(self, orm):
+ # Adding field 'PackageFile.path'
+ db.add_column('package_files', 'path', self.gf('django.db.models.fields.CharField')(default='', max_length=255), keep_default=False)
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.donor': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Donor', 'db_table': "'donors'"},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.packagedepend': {
+ 'Meta': {'object_name': 'PackageDepend', 'db_table': "'package_depends'"},
+ 'depname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'depvcmp': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255'}),
+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'optional': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.packagefile': {
+ 'Meta': {'object_name': 'PackageFile', 'db_table': "'package_files'"},
+ 'directory': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_directory': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'main.signoff': {
+ 'Meta': {'object_name': 'Signoff'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolist': {
+ 'Meta': {'object_name': 'Todolist', 'db_table': "'todolists'"},
+ 'creator': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
+ 'date_added': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+ 'description': ('django.db.models.fields.TextField', [], {}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+ },
+ 'main.todolistpkg': {
+ 'Meta': {'unique_together': "(('list', 'pkg'),)", 'object_name': 'TodolistPkg', 'db_table': "'todolist_pkgs'"},
+ 'complete': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'list': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Todolist']"}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['main.Package']"})
+ },
+ 'main.userprofile': {
+ 'Meta': {'object_name': 'UserProfile', 'db_table': "'user_profiles'"},
+ 'alias': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'allowed_repos': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['main.Repo']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'favorite_distros': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'interests': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'languages': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'location': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'notify': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'occupation': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'other_contact': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
+ 'picture': ('django.db.models.fields.files.FileField', [], {'default': "'devs/silhouette.png'", 'max_length': '100'}),
+ 'public_email': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
+ 'roles': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+ 'time_zone': ('django.db.models.fields.CharField', [], {'default': "'UTC'", 'max_length': '100'}),
+ 'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'userprofile'", 'unique': 'True', 'to': "orm['auth.User']"}),
+ 'website': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'yob': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
+ }
+ }
+
+ complete_apps = ['main']
diff --git a/main/models.py b/main/models.py
index ff2ecf02..a7cc2335 100644
--- a/main/models.py
+++ b/main/models.py
@@ -7,7 +7,6 @@ from packages.models import PackageRelation
from itertools import groupby
import pytz
-from operator import attrgetter
class UserProfile(models.Model):
notify = models.BooleanField(
@@ -117,7 +116,6 @@ class Package(models.Model):
build_date = models.DateTimeField(null=True)
last_update = models.DateTimeField(null=True, blank=True)
files_last_update = models.DateTimeField(null=True, blank=True)
- license = models.CharField(max_length=255, null=True)
packager_str = models.CharField(max_length=255)
packager = models.ForeignKey(User, null=True)
flag_date = models.DateTimeField(null=True)
@@ -174,10 +172,15 @@ class Package(models.Model):
list slim by including the corresponding package in the same testing
category as this package if that check makes sense.
"""
- requiredby = Package.objects.select_related('arch', 'repo').filter(
- packagedepend__depname=self.pkgname,
- arch__in=self.applicable_arches()
- ).distinct().order_by('pkgname')
+ requiredby = PackageDepend.objects.select_related('pkg',
+ 'pkg__arch', 'pkg__repo').filter(
+ pkg__arch__in=self.applicable_arches(),
+ depname=self.pkgname).order_by(
+ 'pkg__pkgname', 'pkg__id')
+ # sort out duplicate packages; this happens if something has a double
+ # versioned dep such as a kernel module
+ requiredby = [list(vals)[0] for k, vals in
+ groupby(requiredby, lambda x: x.pkg.id)]
# find another package by this name in the opposite testing setup
if not Package.objects.filter(pkgname=self.pkgname,
@@ -190,14 +193,15 @@ class Package(models.Model):
# for each unique package name, try to screen our package list down to
# those packages in the same testing category (yes or no) iff there is
# a package in the same testing category.
- for name, pkgs in groupby(requiredby, attrgetter('pkgname')):
- pkgs = list(pkgs)
- pkg = pkgs[0]
- if len(pkgs) > 1:
- pkgs = [p for p in pkgs if p.repo.testing == self.repo.testing]
- if len(pkgs) > 0:
- pkg = pkgs[0]
- trimmed.append(pkg)
+ for name, dep_pkgs in groupby(requiredby, lambda x: x.pkg.pkgname):
+ dep_pkgs = list(dep_pkgs)
+ dep = dep_pkgs[0]
+ if len(dep_pkgs) > 1:
+ dep_pkgs = [d for d in dep_pkgs
+ if d.pkg.repo.testing == self.repo.testing]
+ if len(dep_pkgs) > 0:
+ dep = dep_pkgs[0]
+ trimmed.append(dep)
return trimmed
@cache_function(300)
@@ -210,7 +214,7 @@ class Package(models.Model):
"""
deps = []
# TODO: we can use list comprehension and an 'in' query to make this more effective
- for dep in self.packagedepend_set.order_by('depname'):
+ for dep in self.packagedepend_set.order_by('optional', 'depname'):
pkgs = Package.objects.select_related('arch', 'repo').filter(
pkgname=dep.depname)
if not self.arch.agnostic:
@@ -260,7 +264,7 @@ class Package(models.Model):
repo.testing flag. For any non-split packages, the return value will be
an empty list.
"""
- return Package.objects.filter(arch__in=self.applicable_arches,
+ return Package.objects.filter(arch__in=self.applicable_arches(),
repo__testing=self.repo.testing, pkgbase=self.pkgbase).exclude(id=self.id)
def get_svn_link(self, svnpath):
@@ -309,15 +313,27 @@ class Signoff(models.Model):
packager = models.ForeignKey(User)
class PackageFile(models.Model):
- pkg = models.ForeignKey('Package')
- path = models.CharField(max_length=255)
+ pkg = models.ForeignKey(Package)
+ is_directory = models.BooleanField(default=False)
+ directory = models.CharField(max_length=255)
+ filename = models.CharField(max_length=255, null=True, blank=True)
+
+ def __unicode__(self):
+ return "%s%s" % (self.directory, self.filename or '')
+
class Meta:
db_table = 'package_files'
class PackageDepend(models.Model):
- pkg = models.ForeignKey('Package')
- depname = models.CharField(db_index=True, max_length=255)
- depvcmp = models.CharField(max_length=255)
+ pkg = models.ForeignKey(Package)
+ depname = models.CharField(max_length=255, db_index=True)
+ depvcmp = models.CharField(max_length=255, default='')
+ optional = models.BooleanField(default=False)
+ description = models.TextField(null=True, blank=True)
+
+ def __unicode__(self):
+ return "%s%s" % (self.depname, self.depvcmp)
+
class Meta:
db_table = 'package_depends'
@@ -349,8 +365,8 @@ class Todolist(models.Model):
return '/todo/%i/' % self.id
class TodolistPkg(models.Model):
- list = models.ForeignKey('Todolist')
- pkg = models.ForeignKey('Package')
+ list = models.ForeignKey(Todolist)
+ pkg = models.ForeignKey(Package)
complete = models.BooleanField(default=False)
class Meta:
db_table = 'todolist_pkgs'
diff --git a/media/archweb.css b/media/archweb.css
index a99dab68..6ae720c1 100644
--- a/media/archweb.css
+++ b/media/archweb.css
@@ -1,269 +1,273 @@
-/*
- * ARCH LINUX DJANGO (MAIN SITE)
- *
- * Font sizing based on 16px browser defaults (use em):
- * 14px = 0.875em
- * 13px = 0.812em
- * 12px = 0.75em
- * 11px = 0.6875em
- *
- */
-
-/* import the global navbar stylesheet */
-@import url('archnavbar/archnavbar.css');
-
-/* simple reset */
-* { margin: 0; padding: 0; line-height: 1.4; }
-
-/* general styling */
-body { min-width: 650px; background: #f6f7fc; color: #222; font: normal 100% sans-serif; text-align: center; }
-p { margin: .33em 0 1em; }
-ol, ul { margin-bottom: 1em; padding-left: 2em; }
-ul { list-style: square; }
-code { font: 1.2em monospace; background: #ffa; padding: 0.15em 0.25em; }
-pre { font: 1.2em monospace; border: 1px solid #bdb; background: #dfd; padding: 0.5em; margin: 0.25em 2em; }
-blockquote { margin: 1.5em 2em; }
-input { vertical-align: middle; }
-select[multiple] { padding-top: 1px; padding-bottom: 1px; }
-select[multiple] option { padding-left: 0.3em; padding-right: 0.5em; }
-input[type=submit] { padding-left: 0.6em; padding-right: 0.6em; }
-.clear { clear: both; }
-hr { border: none; border-top: 1px solid #888; }
-img { border: 0; }
-
-/* scale fonts down to a sane default (16 * .812 = 13px) */
-#content { font-size: 0.812em; }
-
-/* link style */
-a { text-decoration: none; }
-a:link, th a:visited { color: #07b; }
-a:visited { color: #666; }
-a:hover { text-decoration: underline; color: #666; }
-a:active { color: #e90; }
-
-/* headings */
-h2 { font-size: 1.5em; margin-bottom: 0.5em; border-bottom: 1px solid #888; }
-h3 { font-size: 1.25em; margin-top: 1em; }
-h4 { font-size: 1.15em; margin-top: 1em; }
-h5 { font-size: 1em; margin-top: 1em; }
-
-/* general layout */
-div#content { width: 95%; margin: 0 auto; text-align: left; }
-div#content-left-wrapper { float: left; width: 100%; } /* req to keep content above sidebar in source code */
-div#content-left { margin: 0 340px 0 0; }
-div#content-right { float: left; width: 300px; margin-left: -300px; }
-div.box { margin-bottom: 1.5em; padding: 0.65em; background: #ecedf5; border: 1px solid #bbbedd; }
-div#footer { clear: both; margin: 2em 0 1em; }
-div#footer p { margin: 0; text-align: center; font-size: 0.85em; }
-
-/* alignment */
-div.center, table.center, img.center { width: auto; margin-left: auto; margin-right: auto; }
-p.center, td.center, th.center { text-align: center; }
-
-/* table generics */
-table { width: 100%; border-collapse: collapse; }
-table .wrap { white-space: normal; }
-th, td { white-space: nowrap; text-align: left; }
-th { vertical-align: middle; font-weight: bold; }
-td { vertical-align: top; }
-
-/* table pretty styles */
-table.pretty1 { width: auto; margin-top: 0.25em; margin-bottom: 0.5em; border-collapse: collapse; border: 1px solid #bbbedd; }
-table.pretty1 th { padding: 0.35em; background: #e4e7ff; border: 1px solid #bbbedd; }
-table.pretty1 td { padding: 0.35em; border: 1px dotted #bbbedd; }
-table.pretty2 { width: auto; margin-top: 0.25em; margin-bottom: 0.5em; border-collapse: collapse; border: 1px solid #bbb; }
-table.pretty2 th { padding: 0.35em; background: #eee; border: 1px solid #bbb; }
-table.pretty2 td { padding: 0.35em; border: 1px dotted #bbb; }
-
-/* forms and input styling */
-form p { margin: 0.5em 0; }
-fieldset { border: 0; }
-label { width: 12em; vertical-align: top; display: inline-block; font-weight: bold; }
-input[type=text], input[type=password], textarea { padding: 0.10em; }
-form.general-form label, form.general-form .form-help { width: 10em; vertical-align: top; display: inline-block; }
-form.general-form input[type=text], form.general-form textarea { width: 45%; }
-
-/* archdev navbar */
-div#archdev-navbar { margin: 1.5em 0; }
-div#archdev-navbar ul { list-style: none; margin: -0.5em 0; padding: 0; }
-div#archdev-navbar li { display: inline; margin: 0; padding: 0; font-size: 0.9em; }
-div#archdev-navbar li a { padding: 0 0.5em; color: #07b; }
-
-/* error/info messages (x pkg is already flagged out-of-date, etc) */
-#sys-message { width: 35em; text-align: center; margin: 1em auto; padding: 0.5em; background: #fff; border: 1px solid #f00; }
-#sys-message p { margin: 0; }
-
-ul.errorlist { color: red; }
-
-/*
- * PAGE SPECIFIC STYLES
- */
-
-/* home: introduction */
-#intro p.readmore { margin: -0.5em 0 0 0; font-size: .9em; text-align: right; }
-
-/* home: news */
-#news { margin-top: 1.5em; }
-#news h3 { border-bottom: 1px solid #888; }
-#news div { margin-bottom: 1em; }
-#news div p { margin-bottom: 0.5em; }
-#news .more { font-weight: normal; }
-#news .rss-icon { float: right; margin: -1.6em 0.4em 0 0; }
-#news h4 { font-size: 1em; margin-top: 1.5em; border-bottom: 1px dotted #bbb; }
-#news .timestamp { float: right; font-size: 0.85em; margin: -1.8em 0.5em 0 0; }
-
-/* home: pkgsearch box */
-#pkgsearch { padding: 1em 0.75em; background: #787DAB; color: #fff; border: 1px solid #3c47ab; }
-#pkgsearch label { width: auto; padding: 0.1em 0; }
-#pkgsearch input { width: 10em; float: right; font-size: 1em; color: #000; background: #fff; border: 1px solid #3c47ab; }
-
-/* home: recent pkg updates */
-#pkg-updates h3 { margin: 0 0 0.3em; }
-#pkg-updates .more { font-weight: normal; }
-#pkg-updates .rss-icon { float: right; margin: -2em 0 0 0; }
-#pkg-updates table { margin: 0; }
-#pkg-updates td.pkg-name { white-space: normal; }
-#pkg-updates td.pkg-arch { text-align: right; }
-#pkg-updates span.testing, #pkg-updates span.community-testing, span.multilib-testing { font-style: italic; }
-
-/* home: sidebar navigation */
-div#nav-sidebar ul { list-style: none; margin: 0.5em 0 0.5em 1em; padding: 0; }
-
-/* home: sponsor banners */
-div#arch-sponsors img { padding: 0.3em 0; }
-
-/* home: sidebar components (navlist, sponsors, pkgsearch, etc) */
-div.widget { margin-bottom: 1.5em; }
-
-/* feeds page */
-#rss-feeds .rss { padding-right: 20px; background: url(rss.png) top right no-repeat; }
-
-/* artwork: logo images */
-#artwork img.inverted { background: #333; padding: 0; }
-#artwork div.imagelist img { display: inline; margin: 0.75em; }
-
-/* news: article list */
-.news-nav { float: right; margin-top: -2.2em; }
-.news-nav .prev, .news-nav .next { margin-left: 1em; margin-right: 1em; }
-
-/* news: article pages */
-div.news-article .article-info { margin: 0; color: #999; }
-
-/* news: add/edit article */
-form#newsform { width: 60em; }
-form#newsform input[type=text], form#newsform textarea { width: 75%; }
-
-/* donate: donor list */
-div#donor-list ul { width: 100%; }
-/* max 4 columns, but possibly fewer if screen size doesn't allow for more */
-div#donor-list li { float: left; width: 25%; min-width: 20em; }
-
-/* download page */
-#arch-downloads h3 { border-bottom: 1px dotted #aaa; }
-table#download-torrents .cpu-arch { text-align: center; }
-table#download-mirrors { width: auto; margin-bottom: 1em; }
-table#download-mirrors td.mirror-country { padding-top: 1em; }
-table#download-mirrors td.mirror-server { padding-right: 1em; }
-table#download-mirrors a { display: block; float: right; width: 4em; }
-
-/* pkglists/devlists */
-table.results { font-size: 0.846em; border-top: 1px dotted #999; border-bottom: 1px dotted #999; }
-table.results th { padding: 0.5em 1em 0.25em 0.25em; border-bottom: 1px solid #999; white-space: nowrap; background-color:#fff; }
-table.results td { padding: .3em 1em .3em 3px; }
-table.results tr.odd { background: #fff; }
-table.results tr.even { background: #e4e7ff; }
-/* additional styles for JS sorting */
-table.results th.header { padding-right: 20px; background-image: url(nosort.gif); background-repeat: no-repeat; background-position: center right; cursor: pointer; }
-table.results th.headerSortDown { background-color: #e4e7ff; background-image: url(desc.gif); }
-table.results th.headerSortUp { background-color: #e4e7ff; background-image: url(asc.gif); }
-table.results .flagged { color: red; }
-
-/* pkglist: layout */
-div#pkglist-about { margin-top: 1.5em; }
-
-/* pkglist: results navigation */
-#pkglist-stats-top, #pkglist-stats-bottom { font-size: 0.85em; }
-#pkglist-results .pkglist-nav { float: right; margin-top: -2.2em; }
-.pkglist-nav .prev { margin-right: 1em; }
-.pkglist-nav .next { margin-right: 1em; }
-
-/* search fields and other filter selections */
-.filter-criteria h3 { font-size: 1em; margin-top:0; }
-.filter-criteria div { float: left; margin-right: 1.65em; font-size: 0.85em; }
-.filter-criteria legend { display: none; }
-.filter-criteria label { width: auto; display: block; font-weight: normal; }
-
-/* pkgdetails: details links that float on the right */
-#pkgdetails #detailslinks { float: right; }
-#pkgdetails #detailslinks h4 { margin-top: 0; margin-bottom: 0.25em; }
-#pkgdetails #detailslinks ul { list-style: none; padding: 0; margin-bottom: 0; font-size: 0.846em; }
-#pkgdetails #detailslinks > div { padding: 0.5em; margin-bottom: 1em; background: #eee; border: 1px solid #bbb; }
-#pkgdetails #actionlist .flagged { color: red; font-size: 0.9em; font-style: italic; }
-
-/* pkgdetails: pkg info */
-#pkgdetails #pkginfo { width: auto; }
-#pkgdetails #pkginfo td { padding: 0.25em 0 0.25em 1.5em; }
-
-/* pkgdetails: flag package */
-form#flag-pkg-form label { width: 10em; }
-form#flag-pkg-form textarea, form#flag-pkg-form input[type=text] { width: 45%; }
-
-/* pkgdetails: deps, required by and file lists */
-#pkgdetails #metadata h3 { background: #555; color: #fff; font-size: 1em; margin-bottom: 0.5em; padding: 0.2em 0.35em; }
-#pkgdetails #metadata ul { list-style: none; margin: 0; padding: 0; }
-#pkgdetails #metadata li { padding-left: 0.5em; }
-#pkgdetails #metadata p { padding-left: 0.5em; }
-#pkgdetails #metadata .message { font-style: italic; }
-#pkgdetails #metadata br { clear: both; }
-#pkgdetails #pkgdeps { float: left; width: 48%; margin-right: 2%; }
-#pkgdetails #pkgreqs { float: left; width: 50%; }
-#pkgdetails #pkgfiles { clear: left; padding-top: 1em; }
-
-/* dev/TU biographies */
-div#arch-bio-toc { width: 75%; margin: 0 auto; text-align: center; }
-table.arch-bio-entry td.pic { vertical-align: top; padding-right: 15px; padding-top: 10px; }
-table.arch-bio-entry td.pic img { padding: 4px; border: 1px solid #ccc; }
-table.arch-bio-entry table.bio { margin-bottom: 2em; }
-table.arch-bio-entry table.bio th { text-align: left; padding-right: 0.5em; vertical-align: top; white-space: nowrap; }
-table.arch-bio-entry table.bio td { width: 100%; padding-bottom: 0.25em; }
-
-/* dev: login/out */
-p.login-error {}
-table#dev-login { width: auto; }
-
-/* dev dashboard: flagged packages */
-form#dash-pkg-notify { text-align: right; padding: 1em 0 0; margin-top: 1em; font-size: 0.85em; border-top: 1px dotted #aaa; }
-form#dash-pkg-notify label { width: auto; font-weight: normal; }
-form#dash-pkg-notify input { vertical-align: middle; margin: 0 0.25em; }
-form#dash-pkg-notify input[type=submit] { margin-top: -0.25em; }
-form#dash-pkg-notify p { margin: 0; }
-
-/* dev dashboard: collapse stat tables by default */
-table#stats-by-maintainer, table#stats-by-repo, table#stats-by-arch { display: none; }
-table.dash-stats .key { width: 50%; }
-span.dash-click { font-weight: normal; font-size: 0.8em; color: #888; }
-div.dash-stats h3 { color: #07b; }
-
-/* read only (public) todo lists */
-#public_todo_lists .todo_list {
- margin-left: 2em;
-}
-
-/* dev dashboard: admin actions (add news items, todo list, etc) */
-ul.admin-actions { float: right; list-style: none; margin-top: -2.5em; }
-ul.admin-actions li { display: inline; padding-left: 1.5em; }
-
-/* dev: todo list */
-.todo-table .complete { color: green; }
-.todo-table .incomplete { color: red; }
-
-/* dev: signoff page */
-#dev-signoffs ul { list-style: none; margin: 0; padding: 0; }
-#dev-signoffs .signoff-yes { color: green; font-weight: bold; }
-#dev-signoffs .signoff-no { color: red; }
-#dev-signoffs .signed-username { color: #888; margin-left: 0.5em; }
-
-/* highlight current website in the navbar */
-#archnavbar.anb-home ul li#anb-home a { color: white !important; }
-#archnavbar.anb-packages ul li#anb-packages a { color: white !important; }
-#archnavbar.anb-download ul li#anb-download a { color: white !important; }
+/*
+ * ARCH LINUX DJANGO (MAIN SITE)
+ *
+ * Font sizing based on 16px browser defaults (use em):
+ * 14px = 0.875em
+ * 13px = 0.812em
+ * 12px = 0.75em
+ * 11px = 0.6875em
+ *
+ */
+
+/* import the global navbar stylesheet */
+@import url('archnavbar/archnavbar.css');
+
+/* simple reset */
+* { margin: 0; padding: 0; line-height: 1.4; }
+
+/* general styling */
+body { min-width: 650px; background: #f6f9fc; color: #222; font: normal 100% sans-serif; text-align: center; }
+p { margin: .33em 0 1em; }
+ol, ul { margin-bottom: 1em; padding-left: 2em; }
+ul { list-style: square; }
+code { font: 1.2em monospace; background: #ffa; padding: 0.15em 0.25em; }
+pre { font: 1.2em monospace; border: 1px solid #bdb; background: #dfd; padding: 0.5em; margin: 0.25em 2em; }
+blockquote { margin: 1.5em 2em; }
+input { vertical-align: middle; }
+select[multiple] { padding-top: 1px; padding-bottom: 1px; }
+select[multiple] option { padding-left: 0.3em; padding-right: 0.5em; }
+input[type=submit] { padding-left: 0.6em; padding-right: 0.6em; }
+.clear { clear: both; }
+hr { border: none; border-top: 1px solid #888; }
+img { border: 0; }
+
+/* scale fonts down to a sane default (16 * .812 = 13px) */
+#content { font-size: 0.812em; }
+
+/* link style */
+a { text-decoration: none; }
+a:link, th a:visited { color: #07b; }
+a:visited { color: #666; }
+a:hover { text-decoration: underline; color: #666; }
+a:active { color: #e90; }
+
+/* headings */
+h2 { font-size: 1.5em; margin-bottom: 0.5em; border-bottom: 1px solid #888; }
+h3 { font-size: 1.25em; margin-top: 1em; }
+h4 { font-size: 1.15em; margin-top: 1em; }
+h5 { font-size: 1em; margin-top: 1em; }
+
+/* general layout */
+div#content { width: 95%; margin: 0 auto; text-align: left; }
+div#content-left-wrapper { float: left; width: 100%; } /* req to keep content above sidebar in source code */
+div#content-left { margin: 0 340px 0 0; }
+div#content-right { float: left; width: 300px; margin-left: -300px; }
+div.box { margin-bottom: 1.5em; padding: 0.65em; background: #ecf2f5; border: 1px solid #bcd; }
+div#footer { clear: both; margin: 2em 0 1em; }
+div#footer p { margin: 0; text-align: center; font-size: 0.85em; }
+
+/* alignment */
+div.center, table.center, img.center { width: auto; margin-left: auto; margin-right: auto; }
+p.center, td.center, th.center { text-align: center; }
+
+/* table generics */
+table { width: 100%; border-collapse: collapse; }
+table .wrap { white-space: normal; }
+th, td { white-space: nowrap; text-align: left; }
+th { vertical-align: middle; font-weight: bold; }
+td { vertical-align: top; }
+
+/* table pretty styles */
+table.pretty1 { width: auto; margin-top: 0.25em; margin-bottom: 0.5em; border-collapse: collapse; border: 1px solid #bcd; }
+table.pretty1 th { padding: 0.35em; background: #e4eeff; border: 1px solid #bcd; }
+table.pretty1 td { padding: 0.35em; border: 1px dotted #bcd; }
+table.pretty2 { width: auto; margin-top: 0.25em; margin-bottom: 0.5em; border-collapse: collapse; border: 1px solid #bbb; }
+table.pretty2 th { padding: 0.35em; background: #eee; border: 1px solid #bbb; }
+table.pretty2 td { padding: 0.35em; border: 1px dotted #bbb; }
+
+/* forms and input styling */
+form p { margin: 0.5em 0; }
+fieldset { border: 0; }
+label { width: 12em; vertical-align: top; display: inline-block; font-weight: bold; }
+input[type=text], input[type=password], textarea { padding: 0.10em; }
+form.general-form label, form.general-form .form-help { width: 10em; vertical-align: top; display: inline-block; }
+form.general-form input[type=text], form.general-form textarea { width: 45%; }
+
+/* archdev navbar */
+div#archdev-navbar { margin: 1.5em 0; }
+div#archdev-navbar ul { list-style: none; margin: -0.5em 0; padding: 0; }
+div#archdev-navbar li { display: inline; margin: 0; padding: 0; font-size: 0.9em; }
+div#archdev-navbar li a { padding: 0 0.5em; color: #07b; }
+
+/* error/info messages (x pkg is already flagged out-of-date, etc) */
+#sys-message { width: 35em; text-align: center; margin: 1em auto; padding: 0.5em; background: #fff; border: 1px solid #f00; }
+#sys-message p { margin: 0; }
+
+ul.errorlist { color: red; }
+
+/*
+ * PAGE SPECIFIC STYLES
+ */
+
+/* home: introduction */
+#intro p.readmore { margin: -0.5em 0 0 0; font-size: .9em; text-align: right; }
+
+/* home: news */
+#news { margin-top: 1.5em; }
+#news h3 { border-bottom: 1px solid #888; }
+#news div { margin-bottom: 1em; }
+#news div p { margin-bottom: 0.5em; }
+#news .more { font-weight: normal; }
+#news .rss-icon { float: right; margin: -1.6em 0.4em 0 0; }
+#news h4 { font-size: 1em; margin-top: 1.5em; border-bottom: 1px dotted #bbb; }
+#news .timestamp { float: right; font-size: 0.85em; margin: -1.8em 0.5em 0 0; }
+
+/* home: pkgsearch box */
+#pkgsearch { padding: 1em 0.75em; background: #787DAB; color: #fff; border: 1px solid #3C47AB; }
+#pkgsearch label { width: auto; padding: 0.1em 0; }
+#pkgsearch input { width: 10em; float: right; font-size: 1em; color: #000; background: #fff; border: 1px solid #09c; }
+
+/* home: recent pkg updates */
+#pkg-updates h3 { margin: 0 0 0.3em; }
+#pkg-updates .more { font-weight: normal; }
+#pkg-updates .rss-icon { float: right; margin: -2em 0 0 0; }
+#pkg-updates table { margin: 0; }
+#pkg-updates td.pkg-name { white-space: normal; }
+#pkg-updates td.pkg-arch { text-align: right; }
+#pkg-updates span.testing, #pkg-updates span.community-testing, span.multilib-testing { font-style: italic; }
+
+/* home: sidebar navigation */
+div#nav-sidebar ul { list-style: none; margin: 0.5em 0 0.5em 1em; padding: 0; }
+
+/* home: sponsor banners */
+div#arch-sponsors img { padding: 0.3em 0; }
+
+/* home: sidebar components (navlist, sponsors, pkgsearch, etc) */
+div.widget { margin-bottom: 1.5em; }
+
+/* feeds page */
+#rss-feeds .rss { padding-right: 20px; background: url(rss.png) top right no-repeat; }
+
+/* artwork: logo images */
+#artwork img.inverted { background: #333; padding: 0; }
+#artwork div.imagelist img { display: inline; margin: 0.75em; }
+
+/* news: article list */
+.news-nav { float: right; margin-top: -2.2em; }
+.news-nav .prev, .news-nav .next { margin-left: 1em; margin-right: 1em; }
+
+/* news: article pages */
+div.news-article .article-info { margin: 0; color: #999; }
+
+/* news: add/edit article */
+form#newsform { width: 60em; }
+form#newsform input[type=text], form#newsform textarea { width: 75%; }
+
+/* donate: donor list */
+div#donor-list ul { width: 100%; }
+/* max 4 columns, but possibly fewer if screen size doesn't allow for more */
+div#donor-list li { float: left; width: 25%; min-width: 20em; }
+
+/* download page */
+#arch-downloads h3 { border-bottom: 1px dotted #aaa; }
+table#download-torrents .cpu-arch { text-align: center; }
+table#download-mirrors { width: auto; margin-bottom: 1em; }
+table#download-mirrors td.mirror-country { padding-top: 1em; }
+table#download-mirrors td.mirror-server { padding-right: 1em; }
+table#download-mirrors a { display: block; float: right; width: 4em; }
+
+/* pkglists/devlists */
+table.results { font-size: 0.846em; border-top: 1px dotted #999; border-bottom: 1px dotted #999; }
+table.results th { padding: 0.5em 1em 0.25em 0.25em; border-bottom: 1px solid #999; white-space: nowrap; background-color:#fff; }
+table.results td { padding: .3em 1em .3em 3px; }
+table.results tr.odd { background: #fff; }
+table.results tr.even { background: #e4eeff; }
+/* additional styles for JS sorting */
+table.results th.header { padding-right: 20px; background-image: url(nosort.gif); background-repeat: no-repeat; background-position: center right; cursor: pointer; }
+table.results th.headerSortDown { background-color: #e4eeff; background-image: url(desc.gif); }
+table.results th.headerSortUp { background-color: #e4eeff; background-image: url(asc.gif); }
+table.results .flagged { color: red; }
+
+/* pkglist: layout */
+div#pkglist-about { margin-top: 1.5em; }
+
+/* pkglist: results navigation */
+#pkglist-stats-top, #pkglist-stats-bottom { font-size: 0.85em; }
+#pkglist-results .pkglist-nav { float: right; margin-top: -2.2em; }
+.pkglist-nav .prev { margin-right: 1em; }
+.pkglist-nav .next { margin-right: 1em; }
+
+/* search fields and other filter selections */
+.filter-criteria h3 { font-size: 1em; margin-top:0; }
+.filter-criteria div { float: left; margin-right: 1.65em; font-size: 0.85em; }
+.filter-criteria legend { display: none; }
+.filter-criteria label { width: auto; display: block; font-weight: normal; }
+
+/* pkgdetails: details links that float on the right */
+#pkgdetails #detailslinks { float: right; }
+#pkgdetails #detailslinks h4 { margin-top: 0; margin-bottom: 0.25em; }
+#pkgdetails #detailslinks ul { list-style: none; padding: 0; margin-bottom: 0; font-size: 0.846em; }
+#pkgdetails #detailslinks > div { padding: 0.5em; margin-bottom: 1em; background: #eee; border: 1px solid #bbb; }
+#pkgdetails #actionlist .flagged { color: red; font-size: 0.9em; font-style: italic; }
+
+/* pkgdetails: pkg info */
+#pkgdetails #pkginfo { width: auto; }
+#pkgdetails #pkginfo td { padding: 0.25em 0 0.25em 1.5em; }
+
+/* pkgdetails: flag package */
+form#flag-pkg-form label { width: 10em; }
+form#flag-pkg-form textarea, form#flag-pkg-form input[type=text] { width: 45%; }
+
+/* pkgdetails: deps, required by and file lists */
+#pkgdetails #metadata h3 { background: #555; color: #fff; font-size: 1em; margin-bottom: 0.5em; padding: 0.2em 0.35em; }
+#pkgdetails #metadata ul { list-style: none; margin: 0; padding: 0; }
+#pkgdetails #metadata li { padding-left: 0.5em; }
+#pkgdetails #metadata p { padding-left: 0.5em; }
+#pkgdetails #metadata .message { font-style: italic; }
+#pkgdetails #metadata br { clear: both; }
+#pkgdetails #pkgdeps { float: left; width: 48%; margin-right: 2%; }
+#pkgdetails #metadata .virtual-dep { font-style: italic; }
+#pkgdetails #metadata .testing-dep { font-style: italic; }
+#pkgdetails #metadata .opt-dep { font-style: italic; }
+#pkgdetails #metadata .dep-desc { font-style: italic; }
+#pkgdetails #pkgreqs { float: left; width: 50%; }
+#pkgdetails #pkgfiles { clear: left; padding-top: 1em; }
+
+/* dev/TU biographies */
+div#arch-bio-toc { width: 75%; margin: 0 auto; text-align: center; }
+table.arch-bio-entry td.pic { vertical-align: top; padding-right: 15px; padding-top: 10px; }
+table.arch-bio-entry td.pic img { padding: 4px; border: 1px solid #ccc; }
+table.arch-bio-entry table.bio { margin-bottom: 2em; }
+table.arch-bio-entry table.bio th { text-align: left; padding-right: 0.5em; vertical-align: top; white-space: nowrap; }
+table.arch-bio-entry table.bio td { width: 100%; padding-bottom: 0.25em; }
+
+/* dev: login/out */
+p.login-error {}
+table#dev-login { width: auto; }
+
+/* dev dashboard: flagged packages */
+form#dash-pkg-notify { text-align: right; padding: 1em 0 0; margin-top: 1em; font-size: 0.85em; border-top: 1px dotted #aaa; }
+form#dash-pkg-notify label { width: auto; font-weight: normal; }
+form#dash-pkg-notify input { vertical-align: middle; margin: 0 0.25em; }
+form#dash-pkg-notify input[type=submit] { margin-top: -0.25em; }
+form#dash-pkg-notify p { margin: 0; }
+
+/* dev dashboard: collapse stat tables by default */
+table#stats-by-maintainer, table#stats-by-repo, table#stats-by-arch { display: none; }
+table.dash-stats .key { width: 50%; }
+span.dash-click { font-weight: normal; font-size: 0.8em; color: #888; }
+div.dash-stats h3 { color: #07b; }
+
+/* read only (public) todo lists */
+#public_todo_lists .todo_list {
+ margin-left: 2em;
+}
+
+/* dev dashboard: admin actions (add news items, todo list, etc) */
+ul.admin-actions { float: right; list-style: none; margin-top: -2.5em; }
+ul.admin-actions li { display: inline; padding-left: 1.5em; }
+
+/* dev: todo list */
+.todo-table .complete { color: green; }
+.todo-table .incomplete { color: red; }
+
+/* dev: signoff page */
+#dev-signoffs ul { list-style: none; margin: 0; padding: 0; }
+#dev-signoffs .signoff-yes { color: green; font-weight: bold; }
+#dev-signoffs .signoff-no { color: red; }
+#dev-signoffs .signed-username { color: #888; margin-left: 0.5em; }
+
+/* highlight current website in the navbar */
+#archnavbar.anb-home ul li#anb-home a { color: white !important; }
+#archnavbar.anb-packages ul li#anb-packages a { color: white !important; }
+#archnavbar.anb-download ul li#anb-download a { color: white !important; }
diff --git a/mirrors/admin.py b/mirrors/admin.py
index 6990cca2..b9c2876a 100644
--- a/mirrors/admin.py
+++ b/mirrors/admin.py
@@ -1,4 +1,5 @@
import re
+from urlparse import urlparse, urlunsplit
from django import forms
from django.contrib import admin
@@ -9,15 +10,26 @@ class MirrorUrlForm(forms.ModelForm):
class Meta:
model = MirrorUrl
def clean_url(self):
+ # is this a valid-looking URL?
+ url_parts = urlparse(self.cleaned_data["url"])
+ if not url_parts.scheme:
+ raise forms.ValidationError("No URL scheme (protocol) provided.")
+ if not url_parts.netloc:
+ raise forms.ValidationError("No URL host provided.")
+ if url_parts.params or url_parts.query or url_parts.fragment:
+ raise forms.ValidationError(
+ "URL parameters, query, and fragment elements are not supported.")
# ensure we always save the URL with a trailing slash
- url = self.cleaned_data["url"].strip()
- if url[-1] == '/':
- return url
- return url + '/'
+ path = url_parts.path
+ if not path.endswith('/'):
+ path += '/'
+ url = urlunsplit((url_parts.scheme, url_parts.netloc, path, '', ''))
+ return url
class MirrorUrlInlineAdmin(admin.TabularInline):
model = MirrorUrl
form = MirrorUrlForm
+ readonly_fields = ('protocol', 'has_ipv4', 'has_ipv6')
extra = 3
# ripped off from django.forms.fields, adding netmask ability
diff --git a/mirrors/management/commands/mirrorcheck.py b/mirrors/management/commands/mirrorcheck.py
index 44d2b364..51be71ea 100644
--- a/mirrors/management/commands/mirrorcheck.py
+++ b/mirrors/management/commands/mirrorcheck.py
@@ -10,7 +10,9 @@ Usage: ./manage.py mirrorcheck
"""
from django.core.management.base import NoArgsCommand
+from django.db import transaction
+from collections import deque
from datetime import datetime, timedelta
import logging
import re
@@ -130,7 +132,7 @@ def mirror_url_worker(work, output):
item = work.get(block=False)
try:
log = check_mirror_url(item)
- output.put(log)
+ output.append(log)
finally:
work.task_done()
except Empty:
@@ -139,7 +141,7 @@ def mirror_url_worker(work, output):
class MirrorCheckPool(object):
def __init__(self, work, num_threads=10):
self.tasks = Queue()
- self.logs = Queue()
+ self.logs = deque()
for i in list(work):
self.tasks.put(i)
self.threads = []
@@ -149,6 +151,7 @@ class MirrorCheckPool(object):
thread.daemon = True
self.threads.append(thread)
+ @transaction.commit_on_success
def run(self):
logger.debug("starting threads")
for t in self.threads:
@@ -156,13 +159,9 @@ class MirrorCheckPool(object):
logger.debug("joining on all threads")
self.tasks.join()
logger.debug("processing log entries")
- try:
- while True:
- log = self.logs.get(block=False)
- log.save()
- self.logs.task_done()
- except Empty:
- logger.debug("all log items saved to database")
+ for log in self.logs:
+ log.save()
+ logger.debug("log entries saved")
def check_current_mirrors():
urls = MirrorUrl.objects.filter(
diff --git a/mirrors/management/commands/mirrorresolv.py b/mirrors/management/commands/mirrorresolv.py
index 8cbd51a3..8a628bd4 100644
--- a/mirrors/management/commands/mirrorresolv.py
+++ b/mirrors/management/commands/mirrorresolv.py
@@ -12,7 +12,6 @@ from django.core.management.base import NoArgsCommand
import sys
import logging
-from urlparse import urlparse
import socket
from mirrors.models import MirrorUrl
@@ -42,15 +41,13 @@ def resolve_mirrors():
logger.debug("requesting list of mirror URLs")
for mirrorurl in MirrorUrl.objects.filter(mirror__active=True):
try:
- hostname = urlparse(mirrorurl.url).hostname
- logger.debug("resolving %3i (%s)", mirrorurl.id, hostname)
- info = socket.getaddrinfo(hostname, None, 0, socket.SOCK_STREAM)
- families = [x[0] for x in info]
+ logger.debug("resolving %3i (%s)", mirrorurl.id, mirrorurl.hostname)
+ families = mirrorurl.address_families()
mirrorurl.has_ipv4 = socket.AF_INET in families
mirrorurl.has_ipv6 = socket.AF_INET6 in families
- logger.debug("%s: v4: %s v6: %s", hostname,
+ logger.debug("%s: v4: %s v6: %s", mirrorurl.hostname,
mirrorurl.has_ipv4, mirrorurl.has_ipv6)
- mirrorurl.save()
+ mirrorurl.save(force_update=True)
except socket.error, e:
logger.warn("error resolving %s: %s", hostname, e)
diff --git a/mirrors/models.py b/mirrors/models.py
index e070b1cd..401821a8 100644
--- a/mirrors/models.py
+++ b/mirrors/models.py
@@ -1,4 +1,8 @@
from django.db import models
+from django.core.exceptions import ValidationError
+
+import socket
+from urlparse import urlparse
TIER_CHOICES = (
(0, 'Tier 0'),
@@ -47,13 +51,43 @@ class MirrorProtocol(models.Model):
class Meta:
verbose_name = 'Mirror Protocol'
+ ordering = ('protocol',)
class MirrorUrl(models.Model):
url = models.CharField(max_length=255)
- protocol = models.ForeignKey(MirrorProtocol, related_name="urls")
+ protocol = models.ForeignKey(MirrorProtocol, related_name="urls",
+ editable=False)
mirror = models.ForeignKey(Mirror, related_name="urls")
- has_ipv4 = models.BooleanField("IPv4 capable", default=True)
- has_ipv6 = models.BooleanField("IPv6 capable", default=False)
+ has_ipv4 = models.BooleanField("IPv4 capable", default=True,
+ editable=False)
+ has_ipv6 = models.BooleanField("IPv6 capable", default=False,
+ editable=False)
+
+ def address_families(self):
+ hostname = urlparse(self.url).hostname
+ info = socket.getaddrinfo(hostname, None, 0, socket.SOCK_STREAM)
+ families = [x[0] for x in info]
+ return families
+
+ @property
+ def hostname(self):
+ return urlparse(self.url).hostname
+
+ def clean(self):
+ try:
+ # Auto-map the protocol field by looking at the URL
+ protocol = urlparse(self.url).scheme
+ self.protocol = MirrorProtocol.objects.get(protocol=protocol)
+ except Exception as e:
+ raise ValidationError(e)
+ try:
+ families = self.address_families()
+ self.has_ipv4 = socket.AF_INET in families
+ self.has_ipv6 = socket.AF_INET6 in families
+ except socket.error as e:
+ # We don't fail in this case; we'll just set both to False
+ self.has_ipv4 = False
+ self.has_ipv6 = False
def __unicode__(self):
return self.url
diff --git a/mirrors/urls.py b/mirrors/urls.py
new file mode 100644
index 00000000..fed9c807
--- /dev/null
+++ b/mirrors/urls.py
@@ -0,0 +1,10 @@
+from django.conf.urls.defaults import patterns
+
+urlpatterns = patterns('mirrors.views',
+ (r'^$', 'mirrors', {}, 'mirror-list'),
+ (r'^status/$', 'status', {}, 'mirror-status'),
+ (r'^status/json/$', 'status_json', {}, 'mirror-status-json'),
+ (r'^(?P<name>[\.\-\w]+)/$', 'mirror_details'),
+)
+
+# vim: set ts=4 sw=4 et:
diff --git a/mirrors/urls_mirrorlist.py b/mirrors/urls_mirrorlist.py
new file mode 100644
index 00000000..70bc18d2
--- /dev/null
+++ b/mirrors/urls_mirrorlist.py
@@ -0,0 +1,12 @@
+from django.conf.urls.defaults import patterns
+
+urlpatterns = patterns('mirrors.views',
+ (r'^$', 'generate_mirrorlist', {}, 'mirrorlist'),
+ (r'^all/$', 'find_mirrors', {'countries': ['all']}),
+ (r'^all/ftp/$', 'find_mirrors',
+ {'countries': ['all'], 'protocols': ['ftp']}),
+ (r'^all/http/$', 'find_mirrors',
+ {'countries': ['all'], 'protocols': ['http']}),
+)
+
+# vim: set ts=4 sw=4 et:
diff --git a/packages/admin.py b/packages/admin.py
new file mode 100644
index 00000000..3ecfdbb1
--- /dev/null
+++ b/packages/admin.py
@@ -0,0 +1,11 @@
+from django.contrib import admin
+
+from .models import PackageRelation
+
+class PackageRelationAdmin(admin.ModelAdmin):
+ list_display = ('user', 'pkgbase', 'type')
+ list_filter = ('type', 'user')
+
+admin.site.register(PackageRelation, PackageRelationAdmin)
+
+# vim: set ts=4 sw=4 et:
diff --git a/packages/migrations/0004_auto__add_license.py b/packages/migrations/0004_auto__add_license.py
new file mode 100644
index 00000000..001440fe
--- /dev/null
+++ b/packages/migrations/0004_auto__add_license.py
@@ -0,0 +1,118 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ # Adding model 'License'
+ db.create_table('packages_license', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('pkg', self.gf('django.db.models.fields.related.ForeignKey')(related_name='licenses', to=orm['main.Package'])),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
+ ))
+ db.send_create_signal('packages', ['License'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'License'
+ db.delete_table('packages_license')
+
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'packages.license': {
+ 'Meta': {'object_name': 'License'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
+ },
+ 'packages.packagegroup': {
+ 'Meta': {'object_name': 'PackageGroup'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
+ },
+ 'packages.packagerelation': {
+ 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
+ }
+ }
+
+ complete_apps = ['packages']
diff --git a/packages/migrations/0005_move_license_data.py b/packages/migrations/0005_move_license_data.py
new file mode 100644
index 00000000..1c1e689a
--- /dev/null
+++ b/packages/migrations/0005_move_license_data.py
@@ -0,0 +1,120 @@
+# encoding: utf-8
+import datetime
+from south.db import db
+from south.v2 import DataMigration
+from django.db import models
+
+class Migration(DataMigration):
+
+ depends_on = (
+ # the last structural change to the package model
+ ('main', '0026_auto__add_field_package_packager_str__add_field_package_packager'),
+ )
+
+ def forwards(self, orm):
+ "Migrate the flat license text to a seperate relation."
+ for pkg in orm['main.Package'].objects.all():
+ licenses = pkg.license.split(u', ')
+ for license in licenses:
+ pkg.licenses.create(name=license)
+
+ def backwards(self, orm):
+ for pkg in orm['main.Package'].objects.all():
+ pkg.license = u', '.join([l.name for l in pkg.licenses.all()])
+ pkg.save()
+
+ models = {
+ 'auth.group': {
+ 'Meta': {'object_name': 'Group'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
+ },
+ 'auth.permission': {
+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
+ },
+ 'auth.user': {
+ 'Meta': {'object_name': 'User'},
+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
+ },
+ 'contenttypes.contenttype': {
+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
+ },
+ 'main.arch': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Arch', 'db_table': "'arches'"},
+ 'agnostic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
+ },
+ 'main.package': {
+ 'Meta': {'ordering': "('pkgname',)", 'object_name': 'Package', 'db_table': "'packages'"},
+ 'arch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Arch']"}),
+ 'build_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'compressed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'files_last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'flag_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'installed_size': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
+ 'last_update': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'license': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'packager': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}),
+ 'packager_str': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgdesc': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
+ 'pkgname': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
+ 'pkgrel': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkgver': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'repo': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'packages'", 'to': "orm['main.Repo']"}),
+ 'url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'})
+ },
+ 'main.repo': {
+ 'Meta': {'ordering': "['name']", 'object_name': 'Repo', 'db_table': "'repos'"},
+ 'bugs_project': ('django.db.models.fields.SmallIntegerField', [], {'default': '1'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
+ 'svn_root': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
+ 'testing': ('django.db.models.fields.BooleanField', [], {'default': 'False'})
+ },
+ 'packages.license': {
+ 'Meta': {'object_name': 'License'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'licenses'", 'to': "orm['main.Package']"})
+ },
+ 'packages.packagegroup': {
+ 'Meta': {'object_name': 'PackageGroup'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'pkg': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'groups'", 'to': "orm['main.Package']"})
+ },
+ 'packages.packagerelation': {
+ 'Meta': {'unique_together': "(('pkgbase', 'user', 'type'),)", 'object_name': 'PackageRelation'},
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'pkgbase': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+ 'type': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'package_relations'", 'to': "orm['auth.User']"})
+ }
+ }
+
+ complete_apps = ['packages']
diff --git a/packages/models.py b/packages/models.py
index 70ac4fe5..5dbdea45 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -1,4 +1,5 @@
from django.db import models
+from django.db.models.signals import post_save
from django.contrib.auth.models import User
class PackageRelation(models.Model):
@@ -17,6 +18,21 @@ class PackageRelation(models.Model):
pkgbase = models.CharField(max_length=255)
user = models.ForeignKey(User, related_name="package_relations")
type = models.PositiveIntegerField(choices=TYPE_CHOICES, default=MAINTAINER)
+
+ def get_associated_packages(self):
+ # TODO: delayed import to avoid circular reference
+ from main.models import Package
+ return Package.objects.filter(pkgbase=self.pkgbase).select_related(
+ 'arch', 'repo')
+
+ def repositories(self):
+ packages = self.get_associated_packages()
+ return sorted(set([p.repo for p in packages]))
+
+ def __unicode__(self):
+ return "%s: %s (%s)" % (
+ self.pkgbase, self.user, self.get_type_display())
+
class Meta:
unique_together = (('pkgbase', 'user', 'type'),)
@@ -25,7 +41,31 @@ class PackageGroup(models.Model):
Represents a group a package is in. There is no actual group entity,
only names that link to given packages.
'''
- pkg = models.ForeignKey('main.Package')
+ pkg = models.ForeignKey('main.Package', related_name='groups')
+ name = models.CharField(max_length=255)
+
+ def __unicode__(self):
+ return "%s: %s" % (name, pkg)
+
+class License(models.Model):
+ pkg = models.ForeignKey('main.Package', related_name='licenses')
name = models.CharField(max_length=255)
+ def __unicode__(self):
+ return self.name
+
+ class Meta:
+ ordering = ['name']
+
+def remove_inactive_maintainers(sender, instance, created, **kwargs):
+ # instance is an auth.models.User; we want to remove any existing
+ # maintainer relations if the user is no longer active
+ if not instance.is_active:
+ maint_relations = PackageRelation.objects.filter(user=instance,
+ type=PackageRelation.MAINTAINER)
+ maint_relations.delete()
+
+post_save.connect(remove_inactive_maintainers, sender=User,
+ dispatch_uid="packages.models")
+
# vim: set ts=4 sw=4 et:
diff --git a/packages/urls.py b/packages/urls.py
index b7ce5c74..638a370a 100644
--- a/packages/urls.py
+++ b/packages/urls.py
@@ -25,6 +25,8 @@ urlpatterns = patterns('packages.views',
(r'^(?P<page>\d+)/$', 'search'),
(r'^differences/$', 'arch_differences'),
+ (r'^stale_relations/$', 'stale_relations'),
+ (r'^stale_relations/update/$','stale_relations_update'),
(r'^(?P<name>[A-z0-9\-+.]+)/$',
'details'),
diff --git a/packages/urls_groups.py b/packages/urls_groups.py
new file mode 100644
index 00000000..c561e50d
--- /dev/null
+++ b/packages/urls_groups.py
@@ -0,0 +1,9 @@
+from django.conf.urls.defaults import patterns
+
+urlpatterns = patterns('packages.views',
+ (r'^$', 'groups', {}, 'groups-list'),
+ (r'^(?P<arch>[A-z0-9]+)/$', 'groups'),
+ (r'^(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/$', 'group_details'),
+)
+
+# vim: set ts=4 sw=4 et:
diff --git a/packages/utils.py b/packages/utils.py
index aaec0ec4..8d9f13ab 100644
--- a/packages/utils.py
+++ b/packages/utils.py
@@ -5,7 +5,7 @@ from operator import itemgetter
from main.models import Package
from main.utils import cache_function
-from .models import PackageGroup
+from .models import PackageGroup, PackageRelation
@cache_function(300)
def get_group_info(include_arches=None):
@@ -128,4 +128,26 @@ SELECT p.id, q.id
differences.sort(key=lambda a: (a.repo.name, a.pkgname))
return differences
+def get_wrong_permissions():
+ sql = """
+SELECT DISTINCT id
+ FROM (
+ SELECT pr.id, p.repo_id, pr.user_id
+ FROM packages p
+ JOIN packages_packagerelation pr ON p.pkgbase = pr.pkgbase
+ WHERE pr.type = %s
+ ) pkgs
+ WHERE pkgs.repo_id NOT IN (
+ SELECT repo_id FROM user_profiles_allowed_repos ar
+ INNER JOIN user_profiles up ON ar.userprofile_id = up.id
+ WHERE up.user_id = pkgs.user_id
+ )
+"""
+ cursor = connection.cursor()
+ cursor.execute(sql, [PackageRelation.MAINTAINER])
+ to_fetch = [row[0] for row in cursor.fetchall()]
+ relations = PackageRelation.objects.select_related('user').filter(
+ id__in=to_fetch)
+ return relations
+
# vim: set ts=4 sw=4 et:
diff --git a/packages/views.py b/packages/views.py
index 4f7c3b93..59779fe4 100644
--- a/packages/views.py
+++ b/packages/views.py
@@ -8,9 +8,10 @@ from django.core.mail import send_mail
from django.db.models import Q
from django.http import HttpResponse, Http404
from django.shortcuts import get_object_or_404, redirect
-from django.template import loader, Context, RequestContext
+from django.template import loader, Context
from django.utils import simplejson
from django.views.decorators.cache import never_cache
+from django.views.decorators.http import require_POST
from django.views.decorators.vary import vary_on_headers
from django.views.generic import list_detail
from django.views.generic.simple import direct_to_template
@@ -23,7 +24,7 @@ from main.models import Arch, Repo, Signoff
from main.utils import make_choice
from mirrors.models import MirrorUrl
from .models import PackageRelation
-from .utils import get_group_info, get_differences_info
+from .utils import get_group_info, get_differences_info, get_wrong_permissions
def opensearch(request):
if request.is_secure():
@@ -36,6 +37,7 @@ def opensearch(request):
mimetype='application/opensearchdescription+xml')
@permission_required('main.change_package')
+@require_POST
def update(request):
ids = request.POST.getlist('pkgid')
count = 0
@@ -104,8 +106,7 @@ def group_details(request, arch, name):
arch = get_object_or_404(Arch, name=arch)
arches = [ arch ]
arches.extend(Arch.objects.filter(agnostic=True))
- pkgs = Package.objects.filter(packagegroup__name=name,
- arch__in=arches)
+ pkgs = Package.objects.filter(groups__name=name, arch__in=arches)
pkgs = pkgs.order_by('pkgname')
if len(pkgs) == 0:
raise Http404
@@ -126,8 +127,8 @@ def getmaintainer(request, name, repo, arch):
return HttpResponse(str('\n'.join(names)), mimetype='text/plain')
class PackageSearchForm(forms.Form):
- repo = forms.ChoiceField(required=False)
- arch = forms.ChoiceField(required=False)
+ repo = forms.MultipleChoiceField(required=False)
+ arch = forms.MultipleChoiceField(required=False)
q = forms.CharField(required=False)
maintainer = forms.ChoiceField(required=False)
last_update = forms.DateField(required=False, widget=AdminDateWidget(),
@@ -156,9 +157,9 @@ class PackageSearchForm(forms.Form):
def __init__(self, *args, **kwargs):
super(PackageSearchForm, self).__init__(*args, **kwargs)
- self.fields['repo'].choices = [('', 'All')] + make_choice(
+ self.fields['repo'].choices = make_choice(
[repo.name for repo in Repo.objects.all()])
- self.fields['arch'].choices = [('', 'All')] + make_choice(
+ self.fields['arch'].choices = make_choice(
[arch.name for arch in Arch.objects.all()])
self.fields['q'].widget.attrs.update({"size": "30"})
maints = User.objects.filter(is_active=True).order_by('username')
@@ -177,11 +178,11 @@ def search(request, page=None):
if form.is_valid():
if form.cleaned_data['repo']:
packages = packages.filter(
- repo__name=form.cleaned_data['repo'])
+ repo__name__in=form.cleaned_data['repo'])
if form.cleaned_data['arch']:
packages = packages.filter(
- arch__name=form.cleaned_data['arch'])
+ arch__name__in=form.cleaned_data['arch'])
if form.cleaned_data['maintainer'] == 'orphan':
inner_q = PackageRelation.objects.all().values('pkgbase')
@@ -235,7 +236,7 @@ def search(request, page=None):
def files(request, name, repo, arch):
pkg = get_object_or_404(Package,
pkgname=name, repo__name__iexact=repo, arch__name=arch)
- fileslist = PackageFile.objects.filter(pkg=pkg).order_by('path')
+ fileslist = PackageFile.objects.filter(pkg=pkg).order_by('directory', 'filename')
template = 'packages/files.html'
if request.is_ajax():
template = 'packages/files-list.html'
@@ -402,4 +403,32 @@ def arch_differences(request):
}
return direct_to_template(request, 'packages/differences.html', context)
+@permission_required('main.change_package')
+def stale_relations(request):
+ relations = PackageRelation.objects.select_related('user')
+ pkgbases = Package.objects.all().values('pkgbase')
+
+ inactive_user = relations.filter(user__is_active=False)
+ missing_pkgbase = relations.exclude(
+ pkgbase__in=pkgbases).order_by('pkgbase')
+ wrong_permissions = get_wrong_permissions()
+
+ context = {
+ 'inactive_user': inactive_user,
+ 'missing_pkgbase': missing_pkgbase,
+ 'wrong_permissions': wrong_permissions,
+ }
+ return direct_to_template(request, 'packages/stale_relations.html', context)
+
+@permission_required('packages.delete_packagerelation')
+@require_POST
+def stale_relations_update(request):
+ ids = set(request.POST.getlist('relation_id'))
+
+ if ids:
+ PackageRelation.objects.filter(id__in=ids).delete()
+
+ messages.info(request, "%d package relations deleted." % len(ids))
+ return redirect('/packages/stale_relations/')
+
# vim: set ts=4 sw=4 et:
diff --git a/public/views.py b/public/views.py
index 330f04b4..0ad1ca1c 100644
--- a/public/views.py
+++ b/public/views.py
@@ -5,6 +5,7 @@ from . import utils
from django.contrib.auth.models import User
from django.db.models import Q
+from django.http import Http404
from django.views.generic import list_detail
from django.views.generic.simple import direct_to_template
from django.shortcuts import redirect
@@ -18,20 +19,28 @@ def index(request):
}
return direct_to_template(request, 'public/index.html', context)
-def userlist(request, type='Developers'):
+USER_LISTS = {
+ 'devs': {
+ 'user_type': 'Hackers',
+ 'description': "This is a list of the current Parabola Hackers. They maintain the [libre] package repository and keep the [core], [extra] and [community] repositories clean of unfree software, in addition to doing any other developer duties.",
+ },
+ 'fellows': {
+ 'user_type': 'Fellows',
+ 'description': "Below you can find a list of ex-hackers (aka project fellows). These folks helped make Parabola what it is today. Thanks!",
+ },
+}
+
+def userlist(request, type='hackers'):
users = User.objects.order_by('username').select_related('userprofile')
- if type == 'Hackers':
+ if type == 'hackers':
users = users.filter(is_active=True, groups__name="Hackers")
- msg = "This is a list of the current Parabola GNU/Linux hackers. They maintain the *-libre packages in addition to doing any other developer duties."
- elif type == 'Fellows':
- users = users.filter(is_active=False)
- msg = "Below you can find a list of ex-hackers (aka project fellows). These folks helped make Parabola what it is today. Thanks!"
+ elif type == 'fellows':
+ users = users.filter(is_active=False, groups__name__in=["Hackers"])
+ else:
+ raise Http404
- context = {
- 'user_type': type,
- 'description': msg,
- 'users': users,
- }
+ context = USER_LISTS[type].copy()
+ context['users'] = users
return direct_to_template(request, 'public/userlist.html', context)
def donate(request):
diff --git a/requirements.txt b/requirements.txt
index ba21a59a..0a746d96 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
-Django==1.2.4
+Django==1.2.5
Markdown==2.0.3
South==0.7.3
pytz>=2010o
diff --git a/requirements_prod.txt b/requirements_prod.txt
index b8665f35..d9875667 100644
--- a/requirements_prod.txt
+++ b/requirements_prod.txt
@@ -1,4 +1,4 @@
-Django==1.2.4
+Django==1.2.5
Markdown==2.0.3
MySQL-python==1.2.3c1
South==0.7.3
diff --git a/templates/base.html b/templates/base.html
index bf780460..d0378567 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -43,7 +43,7 @@
title="dev mailing list archives">Archives</a></li>
<li><a href="/devel/clock/" title="Developer world clocks">Dev Clocks</a></li>
<li><a href="/devel/profile/" title="Modify your account profile">Profile</a></li>
- <li><a href="/accounts/logout/" title="Logout of the developer interface">Logout</a></li>
+ <li><a href="/logout/" title="Logout of the developer interface">Logout</a></li>
</ul>
{% endif %}
</div><!-- #archdev-navbar -->
diff --git a/templates/devel/index.html b/templates/devel/index.html
index 54bb317d..b681a96e 100644
--- a/templates/devel/index.html
+++ b/templates/devel/index.html
@@ -89,15 +89,6 @@
</tbody>
</table>
- <form id="dash-pkg-notify" method="post" action="/devel/notify/">{% csrf_token %}
- <fieldset>
- <p><input id="notify" name="notify" type="checkbox" value="yes"
- {% if user.get_profile.notify %} checked="checked"{% endif %} />
- <label for="notify">Notify me when packages are flagged out-of-date</label>
- <input title="Update notification status" type="submit" value="Update" /></p>
- </fieldset>
- </form>
-
</div><!-- #dev-dashboard -->
<div id="dash-by-arch" class="dash-stats box">
diff --git a/templates/devel/new_account.txt b/templates/devel/new_account.txt
new file mode 100644
index 00000000..1159992a
--- /dev/null
+++ b/templates/devel/new_account.txt
@@ -0,0 +1,5 @@
+You can now log into https://{{ site.domain }}/login/ with these login details:
+Username: {{ user.username }}
+Password: {{ password }}
+
+Please update your profile once logged in and change your password.
diff --git a/templates/general_form.html b/templates/general_form.html
index 92625cf2..5e620087 100644
--- a/templates/general_form.html
+++ b/templates/general_form.html
@@ -6,14 +6,18 @@
<h2>{{title}}</h2>
- {% if description %}{{description}}{% endif %}
+ {{description}}
+ {{form.non_field_errors}}
<form class="general-form" method="post">{% csrf_token %}
<fieldset>
{% for field in form %}
- <p><label>{{field.label}}{% if field.help_text %}:</label><br />
- <span class="form-help">{{field.help_text}}</span> {% else %}:</label> {% endif %}
- {{field}} {% if field.required %}<span class="form-req-field">*</span>{% endif%}</p>
+ {{field.errors}}
+ <p><label for="{{field.auto_id}}">{{field.label}}:</label>
+ {% if field.help_text %}<br/><span class="form-help">{{field.help_text}}</span>{% endif %}
+ {{field}}
+ {% if field.field.required %}<span class="form-req-field">*</span>{% endif %}
+ </p>
{% endfor %}
</fieldset>
<p><label></label> <input type="submit" value="{{submit_text}}" /></p>
diff --git a/templates/packages/details.html b/templates/packages/details.html
index b1b50d6e..4fae6c68 100644
--- a/templates/packages/details.html
+++ b/templates/packages/details.html
@@ -26,7 +26,7 @@
title="Testing package details for {{ tp.pkgname }}">{{ tp.pkgver }}-{{ tp.pkgrel }}</a>
in testing</span></li>
{% endif %}{% endwith %}
- {% if user.is_authenticated %}
+ {% if perms.main.change_package %}
<li><a href="unflag/" title="Unflag this package">Click here to unflag</a></li>
<li><a href="unflag/all/" title="Unflag all matching pkgbase">Click here to unflag all split packages</a></li>
{% endif %}
@@ -40,7 +40,7 @@
<li><a href="download/" title="Download {{ pkg.pkgname }} from mirror">Download From Mirror</a></li>
</ul>
- {% if user.is_authenticated %}
+ {% if perms.main.change_package %}
<form id="pkg-action" method="post" action="/packages/update/">{% csrf_token %}
<div><input type="hidden" name="pkgid" value="{{ pkg.id }}" /></div>
<p>{% if user in pkg.maintainers %}
@@ -108,11 +108,11 @@
<td>{% if pkg.url %}<a href="{{ pkg.url }}"
title="Visit the website for {{ pkg.pkgname }}">{{ pkg.url }}</a>{% endif %}</td>
</tr><tr>
- <th>License:</th>
- <td>{{ pkg.license }}</td>
+ <th>License(s):</th>
+ <td>{{ pkg.licenses.all|join:", " }}</td>
</tr><tr>
<th>Groups:</th>
- {% with pkg.packagegroup_set.all as groups %}
+ {% with pkg.groups.all as groups %}
<td>{% if groups %}
{% for g in groups %}
<a href="/groups/{{ pkg.arch.name }}/{{ g.name }}/"
@@ -159,16 +159,18 @@
{% if deps %}
<ul>
- {% for depend in deps %}
- {% ifequal depend.pkg None %}
- <li>{{ depend.dep.depname }} (virtual)</li>
- {% else %}
+ {% for depend in deps %}
+ {% ifequal depend.pkg None %}
+ <li>{{ depend.dep.depname }} <span class="virtual-dep">(virtual)</span></li>
+ {% else %}
<li><a href="{{ depend.pkg.get_absolute_url }}"
- title="View package details for {{ depend.dep.depname }}">{{ depend.dep.depname }}</a>
- {{ depend.dep.depvcmp }}{% if depend.pkg.repo.testing %}
- <span class="testing-dep">(testing)</span>{% endif %}</li>
- {% endifequal %}
- {% endfor %}
+ title="View package details for {{ depend.dep.depname }}">{{ depend.dep.depname }}</a>{{ depend.dep.depvcmp|default:"" }}
+ {% if depend.pkg.repo.testing %}<span class="testing-dep">(testing)</span>{% endif %}
+ {% if depend.dep.optional %}<span class="opt-dep">(optional)</span>{% endif %}
+ {% if depend.dep.description %}- <span class="dep-desc">{{ depend.dep.description }}</span>{% endif %}
+ </li>
+ {% endifequal %}
+ {% endfor %}
</ul>
{% endif %}
@@ -184,9 +186,11 @@
{% if rqdby %}
<ul>
{% for req in rqdby %}
- <li><a href="{{req.get_absolute_url}}"
- title="View package details for {{ req.pkgname }}">{{ req.pkgname }}</a>
- {% if req.repo.testing %} (testing){% endif %}</li>
+ <li><a href="{{ req.pkg.get_absolute_url }}"
+ title="View package details for {{ req.pkg.pkgname }}">{{ req.pkg.pkgname }}</a>
+ {% if req.pkg.repo.testing %}<span class="testing-dep">(testing)</span>{% endif %}
+ {% if req.optional %}<span class="opt-dep">(optional)</span>{% endif %}
+ </li>
{% endfor %}
</ul>
{% endif %}
diff --git a/templates/packages/files-list.html b/templates/packages/files-list.html
index 1c9ea635..bb89b663 100644
--- a/templates/packages/files-list.html
+++ b/templates/packages/files-list.html
@@ -5,7 +5,7 @@ of the package; it may be out of date.</p>
{% if files.count %}
<ul>
{% for file in files %}
- <li>{{ file.path }}</li>
+ <li>{{ file.directory }}{{ file.filename|default:'' }}</li>
{% endfor %}
</ul>
{% else %}
diff --git a/templates/packages/outofdate.txt b/templates/packages/outofdate.txt
index d8b74005..93abea03 100644
--- a/templates/packages/outofdate.txt
+++ b/templates/packages/outofdate.txt
@@ -1,6 +1,4 @@
-{% autoescape off %}* Note: this is an automated message
-
-{{ email }} wants to notify you that the following package may be out-of-date:
+{% autoescape off %}{{ email }} wants to notify you that the following package may be out-of-date:
Package Name: {{ pkg.pkgname }}
Architecture: {{ pkg.arch.name }}
diff --git a/templates/packages/search.html b/templates/packages/search.html
index 3f0d49c7..74f7ede3 100644
--- a/templates/packages/search.html
+++ b/templates/packages/search.html
@@ -71,7 +71,7 @@
<table class="results">
<thead>
<tr>
- {% if user.is_authenticated %}
+ {% if perms.main.change_package %}
<th>&nbsp;</th>
{% endif %}
<th><a href="/packages/{% buildsortqs "arch" %}"
@@ -91,7 +91,7 @@
<tbody>
{% for pkg in package_list %}
<tr class="{% cycle 'odd' 'even' %}">
- {% if user.is_authenticated %}
+ {% if perms.main.change_package %}
<td><input type="checkbox" name="pkgid" value="{{ pkg.id }}" /></td>
{% endif %}
<td>{{ pkg.arch.name }}</td>
@@ -134,7 +134,7 @@
</div>
{% endif %}
- {% if user.is_authenticated %}
+ {% if perms.main.change_package %}
<p><input title="Adopt selected packages" type="submit" id="adopt-btn"
name="adopt" value="Adopt Packages" />
<input title="Orphan selected packages" type="submit" id="disown-btn"
diff --git a/templates/packages/stale_relations.html b/templates/packages/stale_relations.html
new file mode 100644
index 00000000..8e2f8930
--- /dev/null
+++ b/templates/packages/stale_relations.html
@@ -0,0 +1,112 @@
+{% extends "base.html" %}
+{% block title %}Arch Linux - Stale Package Relations{% endblock %}
+{% block navbarclass %}anb-packages{% endblock %}
+
+{% block content %}
+<div class="box">
+ <h2>Stale Package Relations</h2>
+
+ <form id="stale-relations-form" method="post" action="update/">{% csrf_token %}
+ <h3>Inactive User Relations ({{ inactive_user|length }})</h3>
+
+ <table class="results" id="inactive-user">
+ <thead>
+ <tr>
+ <th>&nbsp;</th>
+ <th>Package Base</th>
+ <th>Packages</th>
+ <th>User</th>
+ <th>Type</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for relation in inactive_user %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td><input type="checkbox" name="relation_id" value="{{ relation.id }}" /></td>
+ <td>{{ relation.pkgbase }}</td>
+ <td class="wrap">{% for pkg in relation.get_associated_packages %}
+ <a href="{{ pkg.get_absolute_url }}"
+ title="View package details for {{ pkg.pkgname }}">{{ pkg.repo|lower }}/{{ pkg.pkgname }} ({{ pkg.arch }})</a>{% if not forloop.last %}, {% endif %}
+ {% endfor %}</td>
+ <td>{{ relation.user.get_full_name }}</td>
+ <td>{{ relation.get_type_display }}</td>
+ </tr>
+ {% empty %}
+ <tr class="empty"><td colspan="5"><em>No inactive user relations.</em></td></tr>
+ {% endfor %}
+ </tbody>
+ </table>
+
+ <h3>Relations with Non-existent <tt>pkgbase</tt> ({{ missing_pkgbase|length }})</h3>
+
+ <table class="results" id="missing-pkgbase">
+ <thead>
+ <tr>
+ <th>&nbsp;</th>
+ <th>Package Base</th>
+ <th>User</th>
+ <th>Type</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for relation in missing_pkgbase %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td><input type="checkbox" name="relation_id" value="{{ relation.id }}" /></td>
+ <td>{{ relation.pkgbase }}</td>
+ <td>{{ relation.user.get_full_name }}</td>
+ <td>{{ relation.get_type_display }}</td>
+ </tr>
+ {% empty %}
+ <tr class="empty"><td colspan="4"><em>No non-existent pkgbase relations.</em></td></tr>
+ {% endfor %}
+ </tbody>
+ </table>
+
+ <h3>Maintainers with Wrong Permissions ({{ wrong_permissions|length }})</h3>
+
+ <table class="results" id="wrong-permissions">
+ <thead>
+ <tr>
+ <th>&nbsp;</th>
+ <th>Package Base</th>
+ <th>Packages</th>
+ <th>User</th>
+ <th>Allowed Repos</th>
+ <th>Currently in Repos</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for relation in wrong_permissions %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td><input type="checkbox" name="relation_id" value="{{ relation.id }}" /></td>
+ <td>{{ relation.pkgbase }}</td>
+ <td class="wrap">{% for pkg in relation.get_associated_packages %}
+ <a href="{{ pkg.get_absolute_url }}"
+ title="View package details for {{ pkg.pkgname }}">{{ pkg.repo|lower }}/{{ pkg.pkgname }} ({{ pkg.arch }})</a>{% if not forloop.last %}, {% endif %}
+ {% endfor %}</td>
+ <td>{{ relation.user.get_full_name }}</td>
+ <td class="wrap">{{ relation.user.userprofile.allowed_repos.all|join:", " }}</td>
+ <td class="wrap">{{ relation.repositories|join:", " }}</td>
+ </tr>
+ {% empty %}
+ <tr class="empty"><td colspan="6"><em>No relations with wrong permissions.</em></td></tr>
+ {% endfor %}
+ </tbody>
+ </table>
+
+ <p><input title="Delete selected relations" type="submit" id="delete-relations"
+ name="delete" value="Delete Selected Relations" />
+ </form>
+
+</div>
+{% load cdn %}{% jquery %}
+<script type="text/javascript" src="/media/jquery.tablesorter.min.js"></script>
+<script type="text/javascript" src="/media/archweb.js"></script>
+<script type="text/javascript">
+$(document).ready(function() {
+ $('#inactive-user:not(:has(tbody tr.empty))').tablesorter({widgets: ['zebra'], headers: { 0: { sorter: false } }, sortList: [[3,0]]});
+ $('#missing-pkgbase:not(:has(tbody tr.empty))').tablesorter({widgets: ['zebra'], headers: { 0: { sorter: false } }, sortList: [[1,0]]});
+});
+ $('#wrong-permissions:not(:has(tbody tr.empty))').tablesorter({widgets: ['zebra'], headers: { 0: { sorter: false } }, sortList: [[3,0]]});
+</script>
+{% endblock %}
diff --git a/templates/registration/logout.html b/templates/registration/logout.html
index e2815cdc..e2e5449c 100644
--- a/templates/registration/logout.html
+++ b/templates/registration/logout.html
@@ -3,7 +3,9 @@
{% block content %}
<div id="dev-logout" class="box">
- <p>Logout successful.<p>
+ <h2>Developer Logout</h2>
+
+ <p>Logout was successful.<p>
</div>
{% endblock %}
diff --git a/templates/todolists/email_notification.txt b/templates/todolists/email_notification.txt
index abe1dbf3..1825912c 100644
--- a/templates/todolists/email_notification.txt
+++ b/templates/todolists/email_notification.txt
@@ -1,14 +1,9 @@
-{% autoescape off %}* Note: this is an automated message
+{% autoescape off %}The todo list {{ todolist.name }} has had the following packages added to it for which you are a maintainer:
-The following package:
-
- Package Name: {{ pkg.pkgname }}
- Architecture: {{ pkg.arch.name }}
- Repository: {{ pkg.repo.name }}
- ({{ weburl }})
-
-has been added to this todo list:
+{% for tpkg in todo_packages %}
+{{ tpkg.pkg.repo.name|lower }}/{{ tpkg.pkg.pkgname }} ({{ tpkg.pkg.arch.name }}) - {{ tpkg.pkg.get_full_url }}{% endfor %}
+Todo list information:
Creator: {{todolist.creator.get_full_name}}
Name: {{todolist.name}}
Description:
diff --git a/templates/todolists/view.html b/templates/todolists/view.html
index 046aed32..477e0180 100644
--- a/templates/todolists/view.html
+++ b/templates/todolists/view.html
@@ -38,6 +38,7 @@
<td>{{ pkg.pkg.repo.name|capfirst }}</td>
<td>{{ pkg.pkg.maintainers|join:', ' }}</td>
<td>
+ {% if perms.main.change_todolistpkg %}
{% if pkg.complete %}
<a href="/todo/flag/{{ list.id }}/{{ pkg.id }}/"
class="status-link complete" title="Toggle completion status">Complete</a>
@@ -45,6 +46,9 @@
<a href="/todo/flag/{{ list.id }}/{{ pkg.id }}/"
class="status-link incomplete" title="Toggle completion status">Incomplete</a>
{% endif %}
+ {% else %}
+ {% if pkg.complete %}<span class="complete">Complete</span>{% else %}<span class="incomplete">Incomplete</span>{% endif %}
+ {% endif %}
</td>
</tr>
{% endfor %}
diff --git a/todolists/views.py b/todolists/views.py
index 519fae9d..6bd456ae 100644
--- a/todolists/views.py
+++ b/todolists/views.py
@@ -4,6 +4,7 @@ from django.http import HttpResponse
from django.core.mail import send_mail
from django.shortcuts import get_object_or_404, redirect
from django.contrib.auth.decorators import login_required, permission_required
+from django.db import transaction
from django.db.models import Count
from django.views.decorators.cache import never_cache
from django.views.generic.create_update import delete_object
@@ -13,11 +14,7 @@ from django.utils import simplejson
from main.models import Todolist, TodolistPkg, Package
-class TodoListForm(forms.Form):
- name = forms.CharField(max_length=255,
- widget=forms.TextInput(attrs={'size': '30'}))
- description = forms.CharField(required=False,
- widget=forms.Textarea(attrs={'rows': '4', 'cols': '60'}))
+class TodoListForm(forms.ModelForm):
packages = forms.CharField(required=False,
help_text='(one per line)',
widget=forms.Textarea(attrs={'rows': '20', 'cols': '60'}))
@@ -26,13 +23,16 @@ class TodoListForm(forms.Form):
package_names = [s.strip() for s in
self.cleaned_data['packages'].split("\n")]
package_names = set(package_names)
- packages = Package.objects.filter(
- pkgname__in=package_names).exclude(
- repo__testing=True).order_by('arch')
+ packages = Package.objects.filter(pkgname__in=package_names).exclude(
+ repo__testing=True).select_related(
+ 'arch', 'repo').order_by('arch')
return packages
+ class Meta:
+ model = Todolist
+ fields = ('name', 'description')
-@login_required
+@permission_required('main.change_todolistpkg')
@never_cache
def flag(request, listid, pkgid):
list = get_object_or_404(Todolist, id=listid)
@@ -68,23 +68,15 @@ def list(request):
return direct_to_template(request, 'todolists/list.html', {'lists': lists})
-# TODO: this calls for transaction management and async emailing
@permission_required('main.add_todolist')
@never_cache
def add(request):
if request.POST:
form = TodoListForm(request.POST)
if form.is_valid():
- todo = Todolist.objects.create(
- creator = request.user,
- name = form.cleaned_data['name'],
- description = form.cleaned_data['description'])
-
- for pkg in form.cleaned_data['packages']:
- tpkg = TodolistPkg.objects.create(list=todo, pkg=pkg)
- send_todolist_email(tpkg)
-
- return redirect('/todo/')
+ new_packages = create_todolist_packages(form, creator=request.user)
+ send_todolist_emails(form.instance, new_packages)
+ return redirect(form.instance)
else:
form = TodoListForm()
@@ -101,33 +93,15 @@ def add(request):
def edit(request, list_id):
todo_list = get_object_or_404(Todolist, id=list_id)
if request.POST:
- form = TodoListForm(request.POST)
+ form = TodoListForm(request.POST, instance=todo_list)
if form.is_valid():
- todo_list.name = form.cleaned_data['name']
- todo_list.description = form.cleaned_data['description']
- todo_list.save()
-
- packages = [p.pkg for p in todo_list.packages]
-
- # first delete any packages not in the new list
- for p in todo_list.packages:
- if p.pkg not in form.cleaned_data['packages']:
- p.delete()
-
- # now add any packages not in the old list
- for pkg in form.cleaned_data['packages']:
- if pkg not in packages:
- tpkg = TodolistPkg.objects.create(
- list=todo_list, pkg=pkg)
- send_todolist_email(tpkg)
-
+ new_packages = create_todolist_packages(form)
+ send_todolist_emails(todo_list, new_packages)
return redirect(todo_list)
else:
- form = TodoListForm(initial={
- 'name': todo_list.name,
- 'description': todo_list.description,
- 'packages': '\n'.join(todo_list.package_names),
- })
+ form = TodoListForm(instance=todo_list,
+ initial={ 'packages': '\n'.join(todo_list.package_names) })
+
page_dict = {
'title': 'Edit Todo List: %s' % todo_list.name,
'form': form,
@@ -142,25 +116,63 @@ def delete_todolist(request, object_id):
template_name="todolists/todolist_confirm_delete.html",
post_delete_redirect='/todo/')
-def send_todolist_email(todo):
- '''Sends an e-mail to the maintainer of a package notifying them that the
- package has been added to a todo list'''
- maints = todo.pkg.maintainers
- if not maints:
- return
- page_dict = {
- 'pkg': todo.pkg,
- 'todolist': todo.list,
- 'weburl': todo.pkg.get_full_url()
- }
- t = loader.get_template('todolists/email_notification.txt')
- c = Context(page_dict)
- send_mail('arch: Package [%s] added to Todolist' % todo.pkg.pkgname,
- t.render(c),
- 'Arch Website Notification <nobody@archlinux.org>',
- [m.email for m in maints],
- fail_silently=True)
+@transaction.commit_on_success
+def create_todolist_packages(form, creator=None):
+ packages = form.cleaned_data['packages']
+ if creator:
+ # todo list is new
+ todolist = form.save(commit=False)
+ todolist.creator = creator
+ todolist.save()
+
+ old_packages = []
+ else:
+ # todo list already existed
+ form.save()
+ todolist = form.instance
+ # first delete any packages not in the new list
+ for todo_pkg in todolist.packages:
+ if todo_pkg.pkg not in packages:
+ todo_pkg.delete()
+
+ # save the old package list so we know what to add
+ old_packages = [p.pkg for p in todolist.packages]
+
+ todo_pkgs = []
+ for package in packages:
+ if package not in old_packages:
+ todo_pkg = TodolistPkg.objects.create(list=todolist, pkg=package)
+ todo_pkgs.append(todo_pkg)
+
+ return todo_pkgs
+
+def send_todolist_emails(todo_list, new_packages):
+ '''Sends emails to package maintainers notifying them that packages have
+ been added to a todo list.'''
+ # start by flipping the incoming list on its head: we want a list of
+ # involved maintainers and the packages they need to be notified about.
+ orphan_packages = []
+ maint_packages = {}
+ for todo_package in new_packages:
+ maints = todo_package.pkg.maintainers.values_list('email', flat=True)
+ if not maints:
+ orphan_packages.append(todo_package)
+ else:
+ for maint in maints:
+ maint_packages.setdefault(maint, []).append(todo_package)
+
+ for maint, packages in maint_packages.iteritems():
+ c = Context({
+ 'todo_packages': sorted(packages),
+ 'todolist': todo_list,
+ })
+ t = loader.get_template('todolists/email_notification.txt')
+ send_mail('Packages added to todo list \'%s\'' % todo_list.name,
+ t.render(c),
+ 'Arch Website Notification <nobody@archlinux.org>',
+ [maint],
+ fail_silently=True)
def public_list(request):
todo_lists = Todolist.objects.incomplete()
diff --git a/urls.py b/urls.py
index a2c86d57..05f11c15 100644
--- a/urls.py
+++ b/urls.py
@@ -17,47 +17,24 @@ sitemaps = {
}
admin.autodiscover()
-
-urlpatterns = patterns('packages.views',
- (r'^groups/$', 'groups'),
- (r'^groups/(?P<arch>[A-z0-9]+)/$', 'groups'),
- (r'^groups/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/$',
- 'group_details'),
-
- (r'^opensearch/packages/$', 'opensearch', {}, 'opensearch-packages'),
-)
-
-urlpatterns += patterns('todolists.views',
- (r'^todolists/$', 'public_list'),
-)
-
-urlpatterns += patterns('mirrors.views',
- (r'^mirrors/status/$', 'status', {}, 'mirror-status'),
- (r'^mirrors/status/json/$', 'status_json', {}, 'mirror-status-json'),
-
- (r'^mirrors/$', 'mirrors', {}, 'mirrors-list'),
- (r'^mirrors/(?P<name>[\.\-\w]+)/$', 'mirror_details'),
-
- (r'^mirrorlist/$', 'generate_mirrorlist', {}, 'mirrorlist'),
- (r'^mirrorlist/all/$', 'find_mirrors', {'countries': ['all']}),
- (r'^mirrorlist/all/ftp/$', 'find_mirrors',
- {'countries': ['all'], 'protocols': ['ftp']}),
- (r'^mirrorlist/all/http/$', 'find_mirrors',
- {'countries': ['all'], 'protocols': ['http']}),
-)
-
-# Feeds and sitemaps
-urlpatterns += patterns('',
- (r'^feeds/$', 'public.views.feeds', {}, 'feeds-list'),
- (r'^feeds/news/$', NewsFeed()),
- (r'^feeds/packages/$', PackageFeed()),
- (r'^feeds/packages/(?P<arch>[A-z0-9]+)/$',
+urlpatterns = []
+
+# Feeds patterns, used later
+feeds_patterns = patterns('',
+ (r'^$', 'public.views.feeds', {}, 'feeds-list'),
+ (r'^news/$', NewsFeed()),
+ (r'^packages/$', PackageFeed()),
+ (r'^packages/(?P<arch>[A-z0-9]+)/$',
PackageFeed()),
- (r'^feeds/packages/(?P<arch>[A-z0-9]+)/(?P<repo>[A-z0-9\-]+)/$',
+ (r'^packages/(?P<arch>[A-z0-9]+)/(?P<repo>[A-z0-9\-]+)/$',
PackageFeed()),
- (r'^sitemap.xml$', 'django.contrib.sitemaps.views.index',
+)
+
+# Sitemaps
+urlpatterns += patterns('django.contrib.sitemaps.views',
+ (r'^sitemap.xml$', 'index',
{'sitemaps': sitemaps}),
- (r'^sitemap-(?P<section>.+)\.xml$', 'django.contrib.sitemaps.views.sitemap',
+ (r'^sitemap-(?P<section>.+)\.xml$', 'sitemap',
{'sitemaps': sitemaps}),
)
@@ -65,12 +42,8 @@ urlpatterns += patterns('',
urlpatterns += patterns('django.contrib.auth.views',
(r'^login/$', 'login', {
'template_name': 'registration/login.html'}),
- (r'^accounts/login/$', 'login', {
- 'template_name': 'registration/login.html'}),
(r'^logout/$', 'logout', {
'template_name': 'registration/logout.html'}),
- (r'^accounts/logout/$', 'logout', {
- 'template_name': 'registration/logout.html'}),
)
# Public pages
@@ -79,21 +52,27 @@ urlpatterns += patterns('public.views',
(r'^about/$', direct_to_template, {'template': 'public/about.html'}, 'page-about'),
(r'^art/$', direct_to_template, {'template': 'public/art.html'}, 'page-art'),
(r'^svn/$', direct_to_template, {'template': 'public/svn.html'}, 'page-svn'),
- (r'^hackers/$', 'userlist', { 'type':'Hackers' }, 'page-devs'),
- (r'^fellows/$', 'userlist', { 'type':'Fellows' }, 'page-fellows'),
+ (r'^hackers/$', 'userlist', { 'type':'hackers' }, 'page-devs'),
+ (r'^fellows/$', 'userlist', { 'type':'fellows' }, 'page-fellows'),
(r'^donate/$', 'donate', {}, 'page-donate'),
(r'^download/$', 'download', {}, 'page-download'),
)
# Includes and other remaining stuff
urlpatterns += patterns('',
- (r'^admin/', include(admin.site.urls)),
- (r'^jsi18n/$', 'django.views.i18n.null_javascript_catalog'),
-
+ (r'^jsi18n/$', 'django.views.i18n.null_javascript_catalog'),
+ (r'^admin/', include(admin.site.urls)),
(r'^devel/', include('devel.urls')),
+ (r'^feeds/', include(feeds_patterns)),
+ (r'^groups/', include('packages.urls_groups')),
+ (r'^mirrorlist/',include('mirrors.urls_mirrorlist')),
+ (r'^mirrors/', include('mirrors.urls')),
(r'^news/', include('news.urls')),
(r'^packages/', include('packages.urls')),
(r'^todo/', include('todolists.urls')),
+ (r'^opensearch/packages/$', 'packages.views.opensearch',
+ {}, 'opensearch-packages'),
+ (r'^todolists/$','todolists.views.public_list'),
)
if settings.DEBUG == True: