summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHartmut Goebel <h.goebel@crazy-compilers.com>2019-06-12 11:43:11 +0200
committerHartmut Goebel <h.goebel@crazy-compilers.com>2021-01-31 16:25:48 +0100
commit7ecc2c2ab27bbc5cd6d85424c49ee689e828e8f5 (patch)
treed2f7ccb1d18f48a8aeafd1b7ba7c5f8da67e04ff
parented000b6d2bf27229f2aab8470fc4c7a64f345193 (diff)
TEMP Add some scripts for maintaining KDE packages.
-rw-r--r--kde-build.sh16
-rwxr-xr-xkde-clean.sh15
-rw-r--r--kde-diff-buildlog.py62
-rwxr-xr-xkde-filter-buildlog.py94
-rw-r--r--kde-graph.sh13
-rw-r--r--kde-update.sh37
6 files changed, 237 insertions, 0 deletions
diff --git a/kde-build.sh b/kde-build.sh
new file mode 100644
index 0000000000..6ca6165e61
--- /dev/null
+++ b/kde-build.sh
@@ -0,0 +1,16 @@
+#!bash
+#
+# Copyright © 2016-2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+# License: GPLv3
+
+
+build () {
+ WHICH=$1 ; shift
+ ./pre-inst-env guix package -A | grep $WHICH | \
+ cut -f 1 | xargs ./pre-inst-env guix build -K "$@"
+}
+
+#build /qt.scm --fallback
+build /kde-frameworks.scm --fallback
+#build /kde.scm --fallback
+build /kde-plasma.scm --fallback
diff --git a/kde-clean.sh b/kde-clean.sh
new file mode 100755
index 0000000000..3648a1c5b6
--- /dev/null
+++ b/kde-clean.sh
@@ -0,0 +1,15 @@
+#!bash
+#
+# Copyright © 2016-2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+# License: GPLv3
+#
+# remove obviously old builds
+
+./pre-inst-env guix package -A | grep /kde-framework | \
+ cut -f 1,2 \
+| while read name version ; do
+ find /gnu/store -maxdepth 1 -name \*-$name-\* \
+ -not -name \*-$version\* \
+ -not -name \*.patch
+done | \
+ xargs guix gc -d
diff --git a/kde-diff-buildlog.py b/kde-diff-buildlog.py
new file mode 100644
index 0000000000..17decd9d95
--- /dev/null
+++ b/kde-diff-buildlog.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python3
+#
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+#
+# License: GPLv3
+
+import sys
+import tempfile, bz2
+import subprocess
+
+def find_unknow_properties(filename):
+ if filename.endswith('.bz2'):
+ fh = bz2.open(filename, mode="rt")
+ else:
+ fh = open(filename, mode="rt")
+ store = []
+ for l in fh.readlines():
+ if l.startswith(("About to parse service type file ",
+ "Found property definition ",
+ "Unknown property type for ")):
+ store.append(l) #.rstrip())
+ elif l.startswith('Generated "'):
+ yield l.split('/build/', 1)[1].rstrip(), store
+ store = []
+ if store:
+ yield 'zzzzz', store
+ fh.close()
+
+def strip_same_entries(me, there):
+ for k in list(me.keys()):
+ if k in there and me[k] == there[k]:
+ del me[k]
+ del there[k]
+
+
+def make_diff(me, there):
+ def write_data(data):
+ fh = tempfile.NamedTemporaryFile('wt')
+ for k in sorted(list(data.keys())):
+ print(k, file=fh)
+ fh.writelines(data[k])
+ print(file=fh) # seperator
+ print(file=fh) # enforce newline end end of file
+ fh.flush()
+ return fh
+
+ me_fh = write_data(me)
+ there_fh = write_data(there)
+ import pdb ; pdb.set_trace()
+ #subprocess.call('hexdump %s | tail' % me_fh.name, shell=True)
+ #subprocess.call('hexdump %s | tail' % there_fh.name, shell=True)
+ subprocess.call(['emacs-diff', me_fh.name, there_fh.name])
+ me_fh.close()
+ there_fh.close()
+
+
+me, there = sys.argv[1:3]
+me = dict(find_unknow_properties(me))
+there = dict(find_unknow_properties(there))
+strip_same_entries(me, there)
+make_diff(me, there)
diff --git a/kde-filter-buildlog.py b/kde-filter-buildlog.py
new file mode 100755
index 0000000000..133b2fa1ee
--- /dev/null
+++ b/kde-filter-buildlog.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python3
+#
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+#
+# License: GPLv3
+
+"""Filter the guix buildlog for some KDE package to find relevant information.
+
+Main features:
+* Print all the output of phases `check` and `configure`.
+* For phase `build': filter out warnings we are not interested in
+
+Usage example::
+
+ ./kde-filter-buildlog.py /var/log/guix/drvs/ay/…-kconfig-5.49.0.drv.bz2
+"""
+
+import sys
+import tempfile, bz2
+import subprocess
+
+def strip_log(filename):
+ if filename.endswith('.bz2'):
+ fh = bz2.open(filename, mode="rt")
+ else:
+ fh = open(filename, mode="rt")
+ state = 0
+ for l in fh.readlines():
+ if not state and l.startswith(("starting phase `check'",
+ "starting phase `configure'",)):
+ state = 1
+ yield l.rstrip()
+ elif not state and l.startswith("starting phase `build'"):
+ state = 2
+ yield l.rstrip()
+ elif state and l.startswith(("phase `",)):
+ if state:
+ yield l.rstrip()
+ state = 0
+ elif state == 2:
+ if l.startswith(("About to parse service type file ",)):
+ yield '' ; yield l.rstrip()
+ elif l.startswith(("Found property definition ",
+ "Unknown property type for ",
+ 'Generated "')):
+ yield l.rstrip()
+ else:
+ l = l.replace(' -Wl,--fatal-warnings ', ' ')
+ if 'warn' in l or 'Warn' in l:
+ if ('[-Wdeprecated-declarations]' in l or
+ '[-Wcpp]' in l or
+ '[-Wswitch]' in l or
+ '[-Wunused-' in l or
+ '[-Wunknown-pragmas]' in l or
+ '[-Wreorder]' in l or
+ '[-Wsign-compare]' in l or
+ '[-Wsuggest-override]' in l or
+ '[-Wpedantic]' in l or
+ '[-Wmaybe-uninitialized]' in l or
+ '[-Wextra]' in l or
+ '[-Woverloaded-' in l or
+ '[-Wignored-' in l or
+ '[-Wint-to-pointer-cast]' in l or
+ 'Warning: deprecated annotation' in l):
+ continue
+ yield l.rstrip()
+ elif state:
+ if l.startswith(("-- Could NOT find",)):
+ yield '####' ; yield l.rstrip() ; yield ''
+ else:
+ yield l.rstrip()
+ fh.close()
+
+
+me = sys.argv[1]
+#for l in strip_log(me):
+# print(l)
+
+try:
+ # args stolen fron git source, see `man less`
+ pager = subprocess.Popen(['less', '-cFRSi'], stdin=subprocess.PIPE)
+ has_output = False
+ for l in strip_log(me):
+ pager.stdin.write(l.encode('utf-8')+b'\n')
+ has_output = True
+ #print(l.encode('utf-8'), file=pager.stdin)
+ #if not has_output:
+ # pager.stdin.write('all lines have been filtered'.encode('utf-8'))
+ pager.stdin.close()
+ pager.wait()
+except KeyboardInterrupt:
+ # let less handle this, -K will exit cleanly
+ pass
diff --git a/kde-graph.sh b/kde-graph.sh
new file mode 100644
index 0000000000..e55c43ee3f
--- /dev/null
+++ b/kde-graph.sh
@@ -0,0 +1,13 @@
+#!bash
+#
+# Copyright © 2016-2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+# License: GPLv3
+
+graph () {
+ WHICH="$1" ; shift
+ ./pre-inst-env guix package -A | grep -E "$WHICH" | \
+ head | cut -f 1 | xargs ./pre-inst-env guix graph | dot -Tpdf > kde-graph.pdf
+}
+
+#graph '/kde(|-frameworks|-plasma)\.scm'
+graph '/kde-frameworks.scm'
diff --git a/kde-update.sh b/kde-update.sh
new file mode 100644
index 0000000000..436ab1982a
--- /dev/null
+++ b/kde-update.sh
@@ -0,0 +1,37 @@
+#!bash
+#
+# Copyright © 2016-2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+# License: GPLv3
+
+
+refresh () {
+ WHICH="$1" ; shift
+ ./pre-inst-env guix package -A | grep -E "$WHICH" | \
+ cut -f 1 | xargs ./pre-inst-env guix refresh --update
+}
+
+
+refresh_to_version () {
+ WHICH="$1" ; shift
+ VERSION="$1" ; shift
+ packages=$(./pre-inst-env guix package -A | grep -E "$WHICH" | \
+ cut -f 1)
+ url=https://download.kde.org/stable/plasma/$VERSION
+ for pkg in $packages ; do
+ hash=$(guix download $url/$pkg-$VERSION.tar.xz 2>/dev/null | tail -1)
+ echo $pkg $hash
+ done
+}
+
+
+download_src () {
+ WHICH="$1" ; shift
+ ./pre-inst-env guix package -A | grep -E "$WHICH" |\
+ cut -f 1 | xargs ./pre-inst-env guix build --source -K
+}
+
+#refresh '/kde(|-frameworks|-plasma).scm'
+#download_src '/kde(|-frameworks|-plasma)\.scm'
+#refresh '/kde-frameworks.scm'
+#refresh '/kde-plasma.scm'
+refresh_to_version '/kde-plasma.scm' 5.13.5