diff options
author | randomdan <randomdan@localhost> | 2010-08-11 22:38:30 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2010-08-11 22:38:30 +0000 |
commit | ade9525879ecd84233011cd9702053622ecd597f (patch) | |
tree | 85c754f22ea39d4cd40e380aabb44e769f433b1b | |
parent | Implement downloading and merging open Gentoo bugs into the database (diff) | |
download | gentoobrowse-ade9525879ecd84233011cd9702053622ecd597f.tar.bz2 gentoobrowse-ade9525879ecd84233011cd9702053622ecd597f.tar.xz gentoobrowse-ade9525879ecd84233011cd9702053622ecd597f.zip |
Migrate package import to project2 sqlmerge
Show bug summary on package page
-rw-r--r-- | gentoobrowse/browse.xslt | 26 | ||||
-rw-r--r-- | gentoobrowse/console/bugassociate.xml | 18 | ||||
-rw-r--r-- | gentoobrowse/console/bugimport.xml | 13 | ||||
-rw-r--r-- | gentoobrowse/console/packagefileimport.xml | 37 | ||||
-rw-r--r-- | gentoobrowse/console/packageimport.xml | 121 | ||||
-rw-r--r-- | gentoobrowse/views/package.xml | 12 |
6 files changed, 215 insertions, 12 deletions
diff --git a/gentoobrowse/browse.xslt b/gentoobrowse/browse.xslt index db3f4f6..c356828 100644 --- a/gentoobrowse/browse.xslt +++ b/gentoobrowse/browse.xslt @@ -105,7 +105,10 @@ <xsl:apply-templates select="packageUrls" /> <xsl:apply-templates select="versions" /> <xsl:apply-templates select="deps" /> + <xsl:apply-templates select="packageBugs" /> </xsl:template> + + <!-- Package URLs --> <xsl:template match="/gentoo/summary/package/packageUrls"> <div class="urls"> <xsl:apply-templates match="url" /> @@ -119,14 +122,37 @@ <xsl:value-of select="url" /> </a> </xsl:template> + + <!-- Package bugs --> + <xsl:template match="/gentoo/summary/package/packageBugs"> + <h3>Open bugs</h3> + <ul> + <xsl:apply-templates match="bug" /> + </ul> + </xsl:template> + <xsl:template match="/gentoo/summary/package/packageBugs/bug"> + <li> + <a target="_blank"> + <xsl:attribute name="href">http://bugs.gentoo.org/<xsl:value-of select="bugid" /></xsl:attribute> + <xsl:value-of select="summary" /> + </a> + (<xsl:value-of select="bugid" />) + </li> + </xsl:template> + + <!-- Version use flags --> <xsl:template match="/gentoo/summary/package/versionUses/use"> <xsl:value-of select="use" /> <xsl:text> </xsl:text> </xsl:template> + + <!-- Version archs --> <xsl:template match="/gentoo/summary/package/versionArchs/arch"> <xsl:value-of select="arch" /> <xsl:text> </xsl:text> </xsl:template> + + <!-- Package dependencies --> <xsl:template match="/gentoo/summary/package/deps"> <h3>Dependencies</h3> <ul> diff --git a/gentoobrowse/console/bugassociate.xml b/gentoobrowse/console/bugassociate.xml new file mode 100644 index 0000000..b026205 --- /dev/null +++ b/gentoobrowse/console/bugassociate.xml @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<bugassoc name="bugassociate" xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:project2="http://project2.randomdan.homeip.net"> + <xi:include href="../datasources/postgres.xml" /> + <project2:sqlmerge name="bugbind" datasource="postgres" targettable="package_bugs"> + <sql> + SELECT b.bugid, p.packageid + FROM bugs b, packages p, categories c + WHERE p.categoryid = c.categoryid + AND TO_TSVECTOR('english', b.summary) @@ PLAINTO_TSQUERY('english', c.name || '/' || p.name) + </sql> + <columns> + <column key="true">bugid</column> + <column key="true">packageid</column> + </columns> + </project2:sqlmerge> +</bugassoc> + diff --git a/gentoobrowse/console/bugimport.xml b/gentoobrowse/console/bugimport.xml index 90b73ee..4e32e56 100644 --- a/gentoobrowse/console/bugimport.xml +++ b/gentoobrowse/console/bugimport.xml @@ -18,16 +18,5 @@ <column>summary</column> </columns> </project2:sqlmerge> - <project2:sqlmerge name="bugbind" datasource="postgres" targettable="package_bugs"> - <sql> - SELECT b.bugid, p.packageid - FROM bugs b, packages p, categories c - WHERE p.categoryid = c.categoryid - AND TO_TSVECTOR('english', b.summary) @@ PLAINTO_TSQUERY('english', c.name || '/' || p.name) - </sql> - <columns> - <column key="true">bugid</column> - <column key="true">packageid</column> - </columns> - </project2:sqlmerge> + <xi:include href="bugassociate.xml" /> </bugimport> diff --git a/gentoobrowse/console/packagefileimport.xml b/gentoobrowse/console/packagefileimport.xml new file mode 100644 index 0000000..270ef8b --- /dev/null +++ b/gentoobrowse/console/packagefileimport.xml @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<packageimport name="bugassociate" xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:project2="http://project2.randomdan.homeip.net"> + <xi:include href="../datasources/postgres.xml" /> + + <project2:sqlmerge name="files" datasource="postgres" targettable="files"> + <project2:prociterate name="findCacheFiles" newline=" " encoding="ascii" fieldSep="|" quoteChar="" + path="find /usr/portage/metadata/cache/ -type f -printf "%p|%t\n" | sed 's#/usr/portage/metadata/cache/##'" > + <columns> + <column>filename</column> + <column>moddate</column> + </columns> + </project2:prociterate> + <columns> + <column key="true">filename</column> + <column>moddate</column> + </columns> + </project2:sqlmerge> + + <project2:sqlmerge name="loadCacheContent" datasource="postgres" targettable="filecache"> + <project2:prociterate name="readFileContent" newline=" " encoding="ascii" fieldSep="|" quoteChar="" + path="grep -n . /usr/portage/metadata/cache/app-misc/w* | sed -e 's#/usr/portage/metadata/cache/##' -e 's#:#|#' -e 's#:#|#'" > + <columns> + <column>fileid</column> + <column>line</column> + <column>content</column> + </columns> + </project2:prociterate> + <columns> + <column key="true" maptable="files" mapcolumn="filename">fileid</column> + <column key="true">line</column> + <column>content</column> + </columns> + </project2:sqlmerge> + + <xi:include href="packageimport.xml" /> +</packageimport> diff --git a/gentoobrowse/console/packageimport.xml b/gentoobrowse/console/packageimport.xml new file mode 100644 index 0000000..6f8d39d --- /dev/null +++ b/gentoobrowse/console/packageimport.xml @@ -0,0 +1,121 @@ +<?xml version="1.0"?> +<packageimport name="bugassociate" xmlns:xi="http://www.w3.org/2001/XInclude" + xmlns:project2="http://project2.randomdan.homeip.net"> + <xi:include href="../datasources/postgres.xml" /> + + <project2:sqlmerge name="categories" datasource="postgres" targettable="categories"> + <sql>SELECT DISTINCT (REGEXP_MATCHES(filename, '^[^/]+'))[1] AS name FROM files</sql> + <columns> + <column key="true">name</column> + </columns> + </project2:sqlmerge> + + <project2:sqlmerge name="packages" datasource="postgres" targettable="packages"> + <sql> + SELECT c.categoryid, f.name, fc.content AS description FROM ( + SELECT MAX(fileid) AS fileid, + (REGEXP_MATCHES(filename, '^[^/]+'))[1] AS cat, + (REGEXP_MATCHES(filename, '/(.+)-[0-9]'))[1] AS name + FROM files f + GROUP BY cat, name) f LEFT OUTER JOIN filecache fc + ON fc.fileid = f.fileid AND fc.line = 8, + categories c + WHERE c.name = f.cat + </sql> + <columns> + <column key="true">categoryid</column> + <column key="true">name</column> + <column>description</column> + </columns> + </project2:sqlmerge> + + <project2:sqlmerge name="ebuilds" datasource="postgres" targettable="ebuilds"> + <sql> + SELECT packageid, version, fileid AS ebuildid, ebuildversion_constructor(version) AS versioninst + FROM ( SELECT f.fileid, + (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) f, categories c, packages p + WHERE f.cat = c.name + AND c.categoryid = p.categoryid + AND p.name = f.name + </sql> + <columns> + <column key="true">ebuildid</column> + <column>packageid</column> + <column>version</column> + <column>versioninst</column> + </columns> + </project2:sqlmerge> + + <project2:sqlmerge name="archs" datasource="postgres" targettable="ebuild_archs"> + <sql> + SELECT DISTINCT f.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(f.content, ' ') AS arch + FROM filecache f + WHERE f.line = 9 + </sql> + <columns> + <column key="true">ebuildid</column> + <column key="true">arch</column> + </columns> + </project2:sqlmerge> + + <project2:sqlmerge name="uses" datasource="postgres" targettable="ebuild_uses"> + <sql> + SELECT DISTINCT f.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(f.content, ' ') AS use + FROM filecache f + WHERE f.line = 11 + </sql> + <columns> + <column key="true">ebuildid</column> + <column key="true">use</column> + </columns> + </project2:sqlmerge> + + <project2:sqlmerge name="urls" datasource="postgres" targettable="package_urls"> + <sql> + SELECT DISTINCT e.packageid, REGEXP_SPLIT_TO_TABLE(f.content, ' ') AS url + FROM filecache f, ebuilds e + WHERE f.line = 6 + AND f.fileid = e.ebuildid + </sql> + <columns> + <column key="true">packageid</column> + <column key="true">url</column> + </columns> + </project2:sqlmerge> + + <project2:sqlmerge name="deps" datasource="postgres" targettable="ebuild_deps"> + <sql> + SELECT fileid AS ebuildid, packageid, COALESCE(slot, '') AS slot, COALESCE(op, '') AS op, + COALESCE(versionspec, '') AS versionspec, COALESCE(flags, '') AS flags + FROM ( + SELECT DISTINCT fileid, field[2] AS cat, field[3] AS pkg, field[7] AS slot, + field[1] AS op, field[5] AS versionspec, field[9] AS flags + FROM ( + SELECT fileid, REGEXP_MATCHES(dep, + '([^a-z0-9]*)([a-z0-9-]+)/([a-z0-9-]+?)(-([0-9][^:]*))?(:([0-9.]+))?(\\[([^]]+)\\])?') as field + FROM ( + SELECT f.fileid, REGEXP_SPLIT_TO_TABLE(f.content, ' ') AS dep + FROM filecache f + WHERE line = 1 + ) src + ) AS src2 + ) AS src3, categories c, packages p + WHERE p.categoryid = c.categoryid + AND p.name = pkg + AND c.name = cat + </sql> + <columns> + <column key="true">ebuildid</column> + <column key="true">packageid</column> + <column key="true">slot</column> + <column key="true">op</column> + <column key="true">versionspec</column> + <column key="true">flags</column> + </columns> + </project2:sqlmerge> + + <xi:include href="bugassociate.xml" /> +</packageimport> diff --git a/gentoobrowse/views/package.xml b/gentoobrowse/views/package.xml index 6ec12ec..ba5041b 100644 --- a/gentoobrowse/views/package.xml +++ b/gentoobrowse/views/package.xml @@ -72,6 +72,18 @@ <param bind="0" value="^packageid" /> </parameters> </project2:sqlview> + <project2:sqlview name="packageBugs" recordname="bug" datasource="postgres"> + <sql> + SELECT b.bugid, b.summary + FROM bugs b, package_bugs pb + WHERE b.bugid = pb.bugid + AND pb.packageid = ? + ORDER BY b.bugid + </sql> + <parameters> + <param bind="0" value="^packageid" /> + </parameters> + </project2:sqlview> <project2:sqlview name="deps" recordname="package" datasource="postgres"> <sql> SELECT distinct cd.name AS catname, pd.name AS pkgname, pd.description |