[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