[aur-dev] [PATCH 1/2] Add repository information to official providers

Lukas Fleischer lfleischer at archlinux.org
Tue May 17 19:04:05 UTC 2016


When updating the list of packages provided by the official
repositories, also save the repository names.
---
 schema/aur-schema.sql | 1 +
 scripts/aurblup.py    | 8 ++++++--
 upgrading/4.3.0.txt   | 5 +++++
 3 files changed, 12 insertions(+), 2 deletions(-)
 create mode 100644 upgrading/4.3.0.txt

diff --git a/schema/aur-schema.sql b/schema/aur-schema.sql
index aa5ed9d..ee58a52 100644
--- a/schema/aur-schema.sql
+++ b/schema/aur-schema.sql
@@ -310,6 +310,7 @@ CREATE TABLE PackageBlacklist (
 CREATE TABLE OfficialProviders (
 	ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
 	Name VARCHAR(64) NOT NULL,
+	Repo VARCHAR(64) NOT NULL,
 	Provides VARCHAR(64) NOT NULL,
 	PRIMARY KEY (ID)
 ) ENGINE = InnoDB;
diff --git a/scripts/aurblup.py b/scripts/aurblup.py
index 325ef3d..9e11e43 100755
--- a/scripts/aurblup.py
+++ b/scripts/aurblup.py
@@ -20,6 +20,7 @@ servers = config.get('aurblup', 'servers').split(' ')
 
 blacklist = set()
 providers = set()
+repomap = dict()
 
 h = pyalpm.Handle("/", db_path)
 for sync_db in sync_dbs:
@@ -33,9 +34,11 @@ for sync_db in sync_dbs:
         blacklist.add(pkg.name)
         [blacklist.add(x) for x in pkg.replaces]
         providers.add((pkg.name, pkg.name))
+        repomap[(pkg.name, pkg.name)] = repo.name
         for provision in pkg.provides:
             provisionname = re.sub(r'(<|=|>).*', '', provision)
             providers.add((pkg.name, provisionname))
+            repomap[(pkg.name, provisionname)] = repo.name
 
 db = mysql.connector.connect(host=aur_db_host, user=aur_db_user,
                              passwd=aur_db_pass, db=aur_db_name,
@@ -54,8 +57,9 @@ cur.execute("SELECT Name, Provides FROM OfficialProviders")
 oldproviders = set(cur.fetchall())
 
 for pkg, provides in providers.difference(oldproviders):
-    cur.execute("INSERT INTO OfficialProviders (Name, Provides) "
-                "VALUES (%s, %s)", [pkg, provides])
+    repo = repomap[(pkg, provides)]
+    cur.execute("INSERT INTO OfficialProviders (Name, Repo, Provides) "
+                "VALUES (%s, %s, %s)", [pkg, repo, provides])
 for pkg, provides in oldproviders.difference(providers):
     cur.execute("DELETE FROM OfficialProviders "
                 "WHERE Name = %s AND Provides = %s", [pkg, provides])
diff --git a/upgrading/4.3.0.txt b/upgrading/4.3.0.txt
new file mode 100644
index 0000000..b4d299f
--- /dev/null
+++ b/upgrading/4.3.0.txt
@@ -0,0 +1,5 @@
+1. Add a new column to store repository information of official providers:
+
+----
+ALTER TABLE OfficialProviders ADD COLUMN Repo VARCHAR(64) NOT NULL;
+----
-- 
2.8.2


More information about the aur-dev mailing list