mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Use the official provider list to detect duplicates
Instead of automatically adding packages from the official binary repositories to the package blacklist, use the official provider list to prevent users from uploading duplicates. This does not only result in reduced disk usage but also has a nice visible side effect. The error messages printed by the update hook now look like error: package already provided by [community]: powerline-fonts instead of error: package is blacklisted: powerline-fonts which was confusing to most end users. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
b2e97cdd1e
commit
d273ee5eb2
2 changed files with 6 additions and 8 deletions
|
@ -331,12 +331,18 @@ pkgbase_id = cur.fetchone()[0] if cur.rowcount == 1 else 0
|
||||||
cur.execute("SELECT Name FROM PackageBlacklist")
|
cur.execute("SELECT Name FROM PackageBlacklist")
|
||||||
blacklist = [row[0] for row in cur.fetchall()]
|
blacklist = [row[0] for row in cur.fetchall()]
|
||||||
|
|
||||||
|
cur.execute("SELECT Name, Repo FROM OfficialProviders")
|
||||||
|
providers = dict(cur.fetchall())
|
||||||
|
|
||||||
for pkgname in srcinfo.utils.get_package_names(metadata):
|
for pkgname in srcinfo.utils.get_package_names(metadata):
|
||||||
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
|
||||||
pkgname = pkginfo['pkgname']
|
pkgname = pkginfo['pkgname']
|
||||||
|
|
||||||
if pkgname in blacklist and not privileged:
|
if pkgname in blacklist and not privileged:
|
||||||
die('package is blacklisted: {:s}'.format(pkgname))
|
die('package is blacklisted: {:s}'.format(pkgname))
|
||||||
|
if pkgname in providers and not privileged:
|
||||||
|
repo = providers[pkgname]
|
||||||
|
die('package already provided by [{:s}]: {:s}'.format(repo, pkgname))
|
||||||
|
|
||||||
cur.execute("SELECT COUNT(*) FROM Packages WHERE Name = %s AND " +
|
cur.execute("SELECT COUNT(*) FROM Packages WHERE Name = %s AND " +
|
||||||
"PackageBaseID <> %s", [pkgname, pkgbase_id])
|
"PackageBaseID <> %s", [pkgname, pkgbase_id])
|
||||||
|
|
|
@ -45,14 +45,6 @@ db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
|
||||||
unix_socket=aur_db_socket, buffered=True)
|
unix_socket=aur_db_socket, buffered=True)
|
||||||
cur = db.cursor()
|
cur = db.cursor()
|
||||||
|
|
||||||
cur.execute("SELECT Name FROM PackageBlacklist")
|
|
||||||
oldblacklist = set([row[0] for row in cur.fetchall()])
|
|
||||||
|
|
||||||
for pkg in blacklist.difference(oldblacklist):
|
|
||||||
cur.execute("INSERT INTO PackageBlacklist (Name) VALUES (%s)", [pkg])
|
|
||||||
for pkg in oldblacklist.difference(blacklist):
|
|
||||||
cur.execute("DELETE FROM PackageBlacklist WHERE Name = %s", [pkg])
|
|
||||||
|
|
||||||
cur.execute("SELECT Name, Provides FROM OfficialProviders")
|
cur.execute("SELECT Name, Provides FROM OfficialProviders")
|
||||||
oldproviders = set(cur.fetchall())
|
oldproviders = set(cur.fetchall())
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue