summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gentoobrowse/console/packageimport.xml102
-rw-r--r--gentoobrowse/views/search.xml2
-rw-r--r--gentoobrowse/views/use.xml4
3 files changed, 51 insertions, 57 deletions
diff --git a/gentoobrowse/console/packageimport.xml b/gentoobrowse/console/packageimport.xml
index c136294..4844dd0 100644
--- a/gentoobrowse/console/packageimport.xml
+++ b/gentoobrowse/console/packageimport.xml
@@ -2,26 +2,44 @@
<packageimport name="bugassociate" xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:project2="http://project2.randomdan.homeip.net">
<project2:sqlmerge name="categories" datasource="postgres" targettable="categories" useview="yes">
- <sql>SELECT DISTINCT (REGEXP_MATCHES(filename, '^[^/]+'))[1] AS name FROM files WHERE filetypeid = 1</sql>
+ <sql>SELECT DISTINCT SPLIT_PART(filename, '/', 1) AS name FROM files WHERE filetypeid = 1</sql>
<columns>
<name key="true" />
</columns>
</project2:sqlmerge>
+ <project2:sqltask name="tmpdefs" datasource="postgres">
+ <sql>
+ CREATE TEMPORARY TABLE ebuilddefs AS
+ SELECT d.*, c.categoryid, c.name AS catname, d[2] AS pkgname, d[3] AS version, ebuildversion_constructor(d[3]) AS versioninst
+ FROM (
+ SELECT *, REGEXP_MATCHES(filename, '^([^/]+)/(.+)-([0-9].*)$') AS d
+ FROM CROSSTAB(
+ 'SELECT f.filename AS filename, f.fileid, f.firstseen, f.moddate, SPLIT_PART(content, ''='', 1) AS category,
+ (REGEXP_MATCHES(content, E''([^=]+)=(.*)''))[2] AS value
+ FROM filecache fc, files f
+ WHERE fc.fileid = f.fileid
+ AND f.filetypeid = 1
+ ORDER BY 1,2',
+ 'SELECT DISTINCT SPLIT_PART(content, ''='', 1) AS attr
+ FROM filecache fc, files f
+ WHERE fc.fileid = f.fileid
+ AND f.filetypeid = 1
+ ORDER BY attr') AS ct(filename TEXT, fileid INT, firstseen TIMESTAMP WITHOUT TIME ZONE, moddate TIMESTAMP WITHOUT TIME ZONE,
+ defined_phases TEXT, depend TEXT, description TEXT, eapi INT,
+ homepage TEXT, iuse TEXT, keywords TEXT, license TEXT, pdepend TEXT, properties TEXT, rdepend TEXT, required_use TEXT,
+ restrict TEXT, slot TEXT, src_uri TEXT, _eclasses_ TEXT, _md5_ TEXT)) d, categories c
+ WHERE SPLIT_PART(d.filename, '/', 1) = c.name
+ </sql>
+ </project2:sqltask>
+
<project2:sqlmerge name="packages" datasource="postgres" targettable="packages" useview="yes">
<sql>
- SELECT categoryid, name, fc.content AS description FROM (
- SELECT c.categoryid, f.fileid, f.d[2] AS name,
- RANK() OVER(PARTITION BY c.categoryid, f.d[2] ORDER BY ebuildversion_constructor(f.d[3]) DESC) AS r FROM (
- SELECT fileid,
- REGEXP_MATCHES(filename, '^([^/]+)/(.+)-([0-9].*)$') as d
- FROM files f
- WHERE f.filetypeid = 1) f,
- categories c
- WHERE c.name = f.d[1]) f, filecache fc
- WHERE f.r = 1
- AND fc.fileid = f.fileid
- AND fc.line = 8
+ SELECT categoryid, pkgname AS name, description
+ FROM (
+ SELECT categoryid, pkgname, description, RANK() OVER(PARTITION BY categoryid, pkgname ORDER BY versioninst desc) r
+ FROM ebuilddefs) d
+ WHERE d.r = 1
</sql>
<columns>
<categoryid key="true" />
@@ -32,19 +50,10 @@
<project2:sqlmerge name="ebuilds" datasource="postgres" targettable="ebuilds" useview="yes">
<sql>
- SELECT packageid, version, f.fileid AS ebuildid, ebuildversion_constructor(version) AS versioninst, fcs.content AS slot,
- fcl.content AS license, f.firstseen, f.moddate
- FROM ( SELECT f.fileid, f.firstseen, f.moddate,
- (REGEXP_MATCHES(filename, '^[^/]+'))[1] AS cat,
- (REGEXP_MATCHES(filename, '/(.+)-[0-9]'))[1] AS name,
- (REGEXP_MATCHES(filename, '/.+-([0-9].*)$'))[1] AS version
- FROM files f
- WHERE filetypeid = 1) f LEFT OUTER JOIN filecache fcs
- ON fcs.fileid = f.fileid AND fcs.line = 3 LEFT OUTER JOIN filecache fcl
- ON fcl.fileid = f.fileid AND fcl.line = 7, categories c, packages p
- WHERE f.cat = c.name
- AND c.categoryid = p.categoryid
- AND p.name = f.name
+ SELECT p.packageid, e.version, e.fileid AS ebuildid, e.versioninst, e.slot, e.license, e.firstseen, e.moddate
+ FROM ebuilddefs e, packages p
+ WHERE e.pkgname = p.name
+ AND e.categoryid = p.categoryid
</sql>
<columns>
<ebuildid key="true" />
@@ -60,11 +69,8 @@
<project2:sqlmerge name="archs" datasource="postgres" targettable="ebuild_archs" useview="yes">
<sql>
- SELECT DISTINCT f.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS arch
- FROM filecache fc, files f
- WHERE fc.line = 9
- AND fc.fileid = f.fileid
- AND filetypeid = 1
+ SELECT DISTINCT e.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(e.keywords, ' ') AS arch
+ FROM ebuilddefs e
</sql>
<columns>
<ebuildid key="true" />
@@ -74,11 +80,8 @@
<project2:sqlmerge name="uses" datasource="postgres" targettable="ebuild_uses" useview="yes">
<sql>
- SELECT DISTINCT fc.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS use
- FROM filecache fc, files f
- WHERE fc.line = 11
- AND fc.fileid = f.fileid
- AND filetypeid = 1
+ SELECT DISTINCT e.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(e.iuse, ' ') AS use
+ FROM ebuilddefs e
</sql>
<columns>
<ebuildid key="true" />
@@ -88,14 +91,11 @@
<project2:sqlmerge name="urls" datasource="postgres" targettable="package_urls" useview="yes">
<sql>
- SELECT packageid, url FROM (
- SELECT DISTINCT e.packageid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS url
- FROM filecache fc, ebuilds e, files f
- WHERE fc.line = 6
- AND fc.fileid = e.ebuildid
- AND fc.fileid = f.fileid
- AND filetypeid = 1) AS u
- WHERE url LIKE '%://%'
+ SELECT DISTINCT p.packageid, e.homepage AS url
+ FROM ebuilddefs e, packages p
+ WHERE e.pkgname = p.name
+ AND e.categoryid = p.categoryid
+ AND homepage LIKE '%://%'
</sql>
<columns>
<packageid key="true" />
@@ -114,11 +114,8 @@
SELECT fileid, REGEXP_MATCHES(dep,
E'([^a-zA-Z0-9]*)([a-zA-Z0-9-]+)/([a-zA-Z0-9_+-]+?)(-([0-9][^:]*))?(:([0-9.]+))?(\\[([^]]+)\\])?') as field
FROM (
- SELECT fc.fileid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS dep
- FROM filecache fc, files f
- WHERE line = 1
- AND fc.fileid = f.fileid
- AND filetypeid = 1
+ SELECT e.fileid, REGEXP_SPLIT_TO_TABLE(e.depend, ' ') AS dep
+ FROM ebuilddefs e
) src
) AS src2
) AS src3, categories c, packages p
@@ -147,11 +144,8 @@
SELECT fileid, REGEXP_MATCHES(dep,
E'([^a-zA-Z0-9]*)([a-zA-Z0-9-]+)/([a-zA-Z0-9_+-]+?)(-([0-9][^:]*))?(:([0-9.]+))?(\\[([^]]+)\\])?') as field
FROM (
- SELECT fc.fileid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS dep
- FROM filecache fc, files f
- WHERE line = 2
- AND fc.fileid = f.fileid
- AND filetypeid = 1
+ SELECT e.fileid, REGEXP_SPLIT_TO_TABLE(e.rdepend, ' ') AS dep
+ FROM ebuilddefs e
) src
) AS src2
) AS src3, categories c, packages p
diff --git a/gentoobrowse/views/search.xml b/gentoobrowse/views/search.xml
index db08d33..347642a 100644
--- a/gentoobrowse/views/search.xml
+++ b/gentoobrowse/views/search.xml
@@ -38,7 +38,7 @@
AND e.packageid = p.packageid
AND p.categoryid = c.categoryid
<filter name="byUse">
- AND eu.use = <param name="use" />
+ AND LTRIM(eu.use, '+') = <param name="use" />
</filter>
ORDER BY c.name, p.name
</sql>
diff --git a/gentoobrowse/views/use.xml b/gentoobrowse/views/use.xml
index f0938bd..957cdbc 100644
--- a/gentoobrowse/views/use.xml
+++ b/gentoobrowse/views/use.xml
@@ -23,7 +23,7 @@
SELECT use, description
FROM use_global
<filter name="use">
- WHERE use = <param name="use" />
+ WHERE LTRIM(use, '+') = <param name="use" />
</filter>
</sql>
</project2:sqlrows>
@@ -32,7 +32,7 @@
SELECT packageid, use, description
FROM use_local
<filter name="use">
- WHERE use = <param name="use" />
+ WHERE LTRIM(use, '+') = <param name="use" />
ORDER BY packageid
</filter>
<filter name="package">