summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@archlinux.org>2016-05-17 19:07:41 +0200
committerLukas Fleischer <lfleischer@archlinux.org>2016-05-18 09:22:44 +0200
commitd273ee5eb20ecb6e97d5d6cd8a1f493e3652b584 (patch)
treeb01ea13779a418a2b62b51e5c028e976951a1a8d
parentb2e97cdd1ee804468b2dd601eafda9574c05a3a7 (diff)
downloadaur-d273ee5eb20ecb6e97d5d6cd8a1f493e3652b584.tar.gz
aur-d273ee5eb20ecb6e97d5d6cd8a1f493e3652b584.tar.xz
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>
-rwxr-xr-xgit-interface/git-update.py6
-rwxr-xr-xscripts/aurblup.py8
2 files changed, 6 insertions, 8 deletions
diff --git a/git-interface/git-update.py b/git-interface/git-update.py
index e54e0e68..2c24e720 100755
--- a/git-interface/git-update.py
+++ b/git-interface/git-update.py
@@ -331,12 +331,18 @@ pkgbase_id = cur.fetchone()[0] if cur.rowcount == 1 else 0
cur.execute("SELECT Name FROM PackageBlacklist")
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):
pkginfo = srcinfo.utils.get_merged_package(pkgname, metadata)
pkgname = pkginfo['pkgname']
if pkgname in blacklist and not privileged:
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 " +
"PackageBaseID <> %s", [pkgname, pkgbase_id])
diff --git a/scripts/aurblup.py b/scripts/aurblup.py
index 9e11e430..6733b45d 100755
--- a/scripts/aurblup.py
+++ b/scripts/aurblup.py
@@ -45,14 +45,6 @@ db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
unix_socket=aur_db_socket, buffered=True)
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")
oldproviders = set(cur.fetchall())