9 db_path
= aurweb
.config
.get('aurblup', 'db-path')
10 sync_dbs
= aurweb
.config
.get('aurblup', 'sync-dbs').split(' ')
11 server
= aurweb
.config
.get('aurblup', 'server')
19 h
= pyalpm
.Handle("/", db_path
)
20 for sync_db
in sync_dbs
:
21 repo
= h
.register_syncdb(sync_db
, pyalpm
.SIG_DATABASE_OPTIONAL
)
22 repo
.servers
= [server
.replace("%s", sync_db
)]
23 t
= h
.init_transaction()
27 for pkg
in repo
.pkgcache
:
28 blacklist
.add(pkg
.name
)
29 [blacklist
.add(x
) for x
in pkg
.replaces
]
30 providers
.add((pkg
.name
, pkg
.name
))
31 repomap
[(pkg
.name
, pkg
.name
)] = repo
.name
32 for provision
in pkg
.provides
:
33 provisionname
= re
.sub(r
'(<|=|>).*', '', provision
)
34 providers
.add((pkg
.name
, provisionname
))
35 repomap
[(pkg
.name
, provisionname
)] = repo
.name
37 conn
= aurweb
.db
.Connection()
39 cur
= conn
.execute("SELECT Name, Provides FROM OfficialProviders")
40 oldproviders
= set(cur
.fetchall())
42 for pkg
, provides
in providers
.difference(oldproviders
):
43 repo
= repomap
[(pkg
, provides
)]
44 conn
.execute("INSERT INTO OfficialProviders (Name, Repo, Provides) "
45 "VALUES (?, ?, ?)", [pkg
, repo
, provides
])
46 for pkg
, provides
in oldproviders
.difference(providers
):
47 conn
.execute("DELETE FROM OfficialProviders "
48 "WHERE Name = ? AND Provides = ?", [pkg
, provides
])
54 if __name__
== '__main__':