[SCM] pkg-kde.alioth.debian.org website branch, master, updated. 676cc7d5f617688b254ff25994b426f5397a0329
Sandro Knauß
hefee at moszumanska.debian.org
Tue Dec 19 16:01:25 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/www.git;a=commitdiff;h=676cc7d
The following commit has been merged in the master branch:
commit 676cc7d5f617688b254ff25994b426f5397a0329
Author: Sandro Knauß <hefee at debian.org>
Date: Tue Dec 19 17:00:53 2017 +0100
Add tier view to Build Applications page.
---
files/pim-build-graph.py | 1 +
files/pim-build-tier-17.08.dot | 200 ++++++++++++++++++++++++
files/{pim-build-graph.py => pim-build-tier.py} | 69 +++++---
genweb.sh | 2 +-
pages/applications-17.08-build-deps | 15 +-
5 files changed, 263 insertions(+), 24 deletions(-)
diff --git a/files/pim-build-graph.py b/files/pim-build-graph.py
index 0d1d91c..72cf440 100755
--- a/files/pim-build-graph.py
+++ b/files/pim-build-graph.py
@@ -1,4 +1,5 @@
#!/usr/bin/python
+# -*- coding: utf-8 -*-
# depgraph
# Copyright (C) 2008 Stefano Zacchiroli <zack at debian.org>
diff --git a/files/pim-build-tier-17.08.dot b/files/pim-build-tier-17.08.dot
new file mode 100644
index 0000000..0c73b14
--- /dev/null
+++ b/files/pim-build-tier-17.08.dot
@@ -0,0 +1,200 @@
+digraph pimTier {
+ node [shape=diamond,fillcolor=lightblue,style=filled];
+ "kdepim-addons";
+ "kleopatra";
+ "kontact";
+ "akonadi-calendar-tools";
+ "kmail-account-wizard";
+ "kdepim-runtime";
+ "pim-data-exporter";
+ "knotes";
+ "kaddressbook";
+ "mbox-importer";
+ "korganizer";
+ "blogilo";
+ "akonadiconsole";
+ "akregator";
+ "pim-sieve-editor";
+ "kmail";
+ "kalarm";
+ "grantlee-editor";
+ "kgpg";
+ node [shape=ellipse,fillcolor=darkgreen];
+ "akonadi";
+ "kcalcore";
+ "kcontacts";
+ "kholidays";
+ "syndication";
+ "kontactinterface";
+ "libkf5grantleetheme";
+ "kpimtextedit";
+ "kdav";
+ "kldap";
+ "kmime";
+ node [shape=ellipse,fillcolor=white];
+ subgraph cluster_0 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 0";
+ "akonadi";
+ "kcalcore";
+ "kcontacts";
+ "kholidays";
+ "syndication";
+ "kontactinterface";
+ "libkf5grantleetheme";
+ "kpimtextedit";
+ "kdav";
+ "kldap";
+ "kmime";
+ }
+ subgraph cluster_1 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 1";
+ "kblog";
+ "kmbox";
+ "libkf5libkleo";
+ "kimap";
+ "libkgapi";
+ "akonadi-mime";
+ "akonadi-notes";
+ "kidentitymanagement";
+ }
+ "kcalcore" -> "kblog";
+ "syndication" -> "kblog";
+ "kmime" -> "kmbox";
+ "kpimtextedit" -> "libkf5libkleo";
+ "kmime" -> "kimap";
+ "kcalcore" -> "libkgapi";
+ "kcontacts" -> "libkgapi";
+ "akonadi" -> "akonadi-mime";
+ "kmime" -> "akonadi-mime";
+ "akonadi" -> "akonadi-notes";
+ "kmime" -> "akonadi-notes";
+ "kpimtextedit" -> "kidentitymanagement";
+ subgraph cluster_2 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 2";
+ "kleopatra";
+ "akonadi-contacts";
+ "kcalutils";
+ "kalarmcal";
+ "kmailtransport";
+ "akonadi-search";
+ }
+ "libkf5libkleo" -> "kleopatra";
+ "akonadi-mime" -> "akonadi-contacts";
+ "kidentitymanagement" -> "kcalutils";
+ "kidentitymanagement" -> "kalarmcal";
+ "akonadi-mime" -> "kmailtransport";
+ "akonadi-mime" -> "akonadi-search";
+ subgraph cluster_3 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 3";
+ "libkolab";
+ "ktnef";
+ "libkf5libkdepim";
+ "akonadi-calendar";
+ "kgpg";
+ }
+ "kcalutils" -> "libkolab";
+ "kcalutils" -> "ktnef";
+ "akonadi-search" -> "libkf5libkdepim";
+ "akonadi-contacts" -> "libkf5libkdepim";
+ "kmailtransport" -> "akonadi-calendar";
+ "akonadi-contacts" -> "akonadi-calendar";
+ "kcalutils" -> "akonadi-calendar";
+ "akonadi-contacts" -> "kgpg";
+ subgraph cluster_4 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 4";
+ "libkf5mailimporter";
+ "libkf5pimcommon";
+ }
+ "libkf5libkdepim" -> "libkf5mailimporter";
+ "libkf5libkdepim" -> "libkf5pimcommon";
+ subgraph cluster_5 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 5";
+ "kf5-kdepim-apps-libs";
+ "kmail-account-wizard";
+ "kdepim-runtime";
+ "knotes";
+ "libkf5ksieve";
+ "libkf5gravatar";
+ }
+ "libkf5pimcommon" -> "kf5-kdepim-apps-libs";
+ "libkf5pimcommon" -> "kmail-account-wizard";
+ "libkf5pimcommon" -> "kdepim-runtime";
+ "libkf5pimcommon" -> "knotes";
+ "libkf5pimcommon" -> "libkf5ksieve";
+ "libkf5pimcommon" -> "libkf5gravatar";
+ subgraph cluster_6 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 6";
+ "kontact";
+ "kf5-messagelib";
+ "kaddressbook";
+ "pim-sieve-editor";
+ "libkf5calendarsupport";
+ }
+ "kf5-kdepim-apps-libs" -> "kontact";
+ "libkf5gravatar" -> "kf5-messagelib";
+ "kf5-kdepim-apps-libs" -> "kf5-messagelib";
+ "kf5-kdepim-apps-libs" -> "kaddressbook";
+ "libkf5ksieve" -> "pim-sieve-editor";
+ "kf5-kdepim-apps-libs" -> "libkf5calendarsupport";
+ subgraph cluster_7 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 7";
+ "blogilo";
+ "libkf5eventviews";
+ "libkf5mailcommon";
+ "akonadiconsole";
+ "akregator";
+ "akonadi-calendar-tools";
+ "grantlee-editor";
+ }
+ "kf5-messagelib" -> "blogilo";
+ "libkf5calendarsupport" -> "libkf5eventviews";
+ "kf5-messagelib" -> "libkf5mailcommon";
+ "kf5-messagelib" -> "akonadiconsole";
+ "libkf5calendarsupport" -> "akonadiconsole";
+ "kf5-messagelib" -> "akregator";
+ "libkf5calendarsupport" -> "akonadi-calendar-tools";
+ "kf5-messagelib" -> "grantlee-editor";
+ subgraph cluster_8 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 8";
+ "pim-data-exporter";
+ "mbox-importer";
+ "libkf5incidenceeditor";
+ "akonadi-import-wizard";
+ "kmail";
+ "kalarm";
+ }
+ "libkf5mailcommon" -> "pim-data-exporter";
+ "libkf5mailcommon" -> "mbox-importer";
+ "libkf5eventviews" -> "libkf5incidenceeditor";
+ "libkf5mailcommon" -> "akonadi-import-wizard";
+ "libkf5mailcommon" -> "kmail";
+ "libkf5mailcommon" -> "kalarm";
+ subgraph cluster_9 {
+ style=filled;
+ color=lightgrey;
+ label = "Tier 9";
+ "korganizer";
+ "kdepim-addons";
+ }
+ "libkf5incidenceeditor" -> "korganizer";
+ "akonadi-import-wizard" -> "kdepim-addons";
+ "libkf5incidenceeditor" -> "kdepim-addons";
+}
diff --git a/files/pim-build-graph.py b/files/pim-build-tier.py
similarity index 63%
copy from files/pim-build-graph.py
copy to files/pim-build-tier.py
index 0d1d91c..358db9d 100755
--- a/files/pim-build-graph.py
+++ b/files/pim-build-tier.py
@@ -1,4 +1,5 @@
#!/usr/bin/python
+# -*- coding: utf-8 -*-
# depgraph
# Copyright (C) 2008 Stefano Zacchiroli <zack at debian.org>
@@ -41,11 +42,14 @@ def main():
return ("NODE_%d" % __fresh_id)
def emit_arc(node1, node2):
- print(' "%s" -> "%s" ;' % (node1, node2))
- def emit_node(node, dsc):
- print(' "%s" [label="%s"] ;' % (node, dsc))
+ print(' "%s" -> "%s";' % (node1, node2))
+ def emit_node(node, dsc=None):
+ if dsc is None:
+ print(' "%s";' % (node))
+ else:
+ print(' "%s" [label="%s"];' % (node, dsc))
def emit_nodecolor(node, color):
- print(' "%s" [fillcolor="%s", style="filled"] ;' % (node, color))
+ print(' "%s" [fillcolor="%s", style="filled"];' % (node, color))
sources={pkg['package']:[] for pkg in deb822.Sources.iter_paragraphs(open('Sources'))}
p2s = {}
@@ -75,11 +79,11 @@ def main():
graph[name] = sDeps
sgraph = {} # minimized graph
- ograph = graph
- fgraph = {} # full dependency graph
+ fgraph = graph # full dependency graph
for i in range(10):
changed = False
+ ograph = fgraph
for pkg in ograph:
deps = copy.copy(ograph[pkg])
for dep in ograph[pkg]:
@@ -90,7 +94,6 @@ def main():
if not changed:
break
- ograph = fgraph
for pkg in fgraph:
deps = copy.copy(graph[pkg])
@@ -98,26 +101,56 @@ def main():
deps -= fgraph[dep]
sgraph[pkg] = deps
- print("digraph pim {")
+ pkgs = set(graph.keys()) # packages to order into tiers
+ tiers = [] # each tier will be one entry
+ deps = set() # All deps from lower tiers
+
+ while pkgs:
+ tD = set()
+ if tiers:
+ deps |= tiers[-1]
+ tiers.append(set())
+ for pkg in pkgs:
+ if not (sgraph[pkg] - deps):
+ tiers[-1].add(pkg)
+ tD.add(pkg)
+ pkgs -= tD
+
+ ends = set()
+
for pkg in graph:
name = pkg
sDeps = sgraph[pkg]
- if sDeps == set():
- emit_nodecolor(name, 'darkgreen')
- else:
+ if sDeps:
for p in sgraph:
if p == pkg:
continue
if pkg in sgraph[p]:
break
else:
- emit_nodecolor(name, 'lightblue')
-
- for pkg in graph:
- name = pkg
- sDeps = sgraph[pkg]
- for dep in sDeps:
- emit_arc(dep, name)
+ ends.add(name)
+
+ print("digraph pimTier {")
+ print(" node [shape=diamond,fillcolor=lightblue,style=filled];")
+ for pkg in ends: # all end notes
+ emit_node(pkg)
+ print(" node [shape=ellipse,fillcolor=darkgreen];")
+ for pkg in tiers[0]: # all dependency free packages - aka tier 0
+ emit_node(pkg)
+ print(" node [shape=ellipse,fillcolor=white];")
+ for index, tier in enumerate(tiers):
+ print(" subgraph cluster_{} {{".format(index))
+ print(" style=filled;")
+ print(" color=lightgrey;")
+ print(' label = "Tier {}";'.format(index))
+ for pkg in tier:
+ emit_node(pkg)
+ print(" }")
+ if index > 0:
+ subTier = tiers[index-1]
+ for pkg in tier:
+ for dep in (sgraph[pkg] & subTier):
+ emit_arc(dep, pkg)
print("}")
if __name__ == '__main__':
diff --git a/genweb.sh b/genweb.sh
index abbf5b3..7ec1482 100755
--- a/genweb.sh
+++ b/genweb.sh
@@ -25,7 +25,7 @@ bash genrss.sh > $OUTPUT/rss.xml
dot -T png -o $OUTPUT/images/qt5_build_deps.png files/qt5-build-deps.dot
# Generate Pim5 build dependencies graph. Needs dot.
-for i in files/pim-build-deps*dot
+for i in files/pim-build-*dot
do
dot -T png -o $OUTPUT/images/`basename $i .dot`.png $i
done
diff --git a/pages/applications-17.08-build-deps b/pages/applications-17.08-build-deps
index 57ab878..a07726b 100644
--- a/pages/applications-17.08-build-deps
+++ b/pages/applications-17.08-build-deps
@@ -1,20 +1,25 @@
<h2>Build dependency graph for KDE Applications 17.08</h2>
- <p>We have only a graph of KDE Pim, because it is a complex part inside KDE Applications.</p>
+ <p>We have only a graph of KDE Pim, because it is a complex part inside KDE Applications. I added two packages from outside of the KDE Pim umbrella: libkgapi and libkolab, both depend on KDE Pim stuff and KDE Pim stuff depends on them.</p>
<div align="center">
<a href="images/pim-build-deps-17.08.png"> <img alt="Build Dependency of source packages" src="images/pim-build-deps-17.08.png" width=700 /> </a></br>
Click on the image to see it in it's original size.
</div>
+ <div align="center">
+ <h4>Tier view for KDE Pim</h4>
+ <p>The simple dependency graph is not very usefull, if you want to feed a builder. Here the tiers are more usefull. One tier is defined, that it only depends on things of lower tiers. That means you can build one tier in parallel. After building on tier you need to make sure, that the next tier will use the new built packages.
+ <a href="images/pim-build-tier-17.08.png"> <img alt="Build Dependency of source packages" src="images/pim-build-tier-17.08.png" width=700 /> </a></br>
+ Click on the image to see it in it's original size.
+ </div>
<br>
<ul>
<li>Packages with green background are inital packages, they have not dependencies inside KDE Pim.</li>
- <li>Packages with lightblue background are end of chain. Nothing depends on them.</li>
+ <li>Packages with lightblue/diamonds background are end of chain. Nothing depends on them.</li>
</ul>
<p>
- The dot file for generating this graph can be found <a href="files/pim-build-deps-17.08.dot">here</a>.<br />
- The code for creating the dot file can be found <a href="files/pim-build-graph.py">here</a>.
+ The dot file for generating this graph can be downloaded: <a href="files/pim-build-tier-17.08.dot">pim-build-tier-17.08.dot</a>, <a href="files/pim-build-tier-17.08.dot">pim-build-tier-17.08.dot</a>.<br />
+ The code for creating the dot file can be dewnloaded: <a href="files/pim-build-graph.py">pim-build-graph.py</a>, <a href="files/pim-build-tier.py">pim-build-tier.py</a>.
</p>
-
<h3>Upstream announcements<h3>
<ul>
<li><a href="https://www.kde.org/announcements/announce-applications-17.08.0.php">KDE Applications 17.08.0</a></li>
--
pkg-kde.alioth.debian.org website
More information about the pkg-kde-commits
mailing list