diff --git a/oscilloscope-move-from-pygtk2-to-gtk3-gobject.patch b/oscilloscope-move-from-pygtk2-to-gtk3-gobject.patch new file mode 100644 index 0000000..300117a --- /dev/null +++ b/oscilloscope-move-from-pygtk2-to-gtk3-gobject.patch @@ -0,0 +1,156 @@ +From 4511a331b8ea986b0026277e4753538b749c0a29 Mon Sep 17 00:00:00 2001 +From: Jiri Kastner +Date: Mon, 7 Jan 2019 21:57:56 +0100 +Subject: [PATCH] oscilloscope: move from pygtk2 to gtk3 gobject + +oscilloscope migration from pygtk2 to gtk3 + python +gobject introspection + +Signed-off-by: Jiri Kastner +--- + oscilloscope-cmd.py | 5 ++++- + tuna/oscilloscope.py | 47 ++++++++++++++++++++++++-------------------- + 2 files changed, 30 insertions(+), 22 deletions(-) + +diff --git a/oscilloscope-cmd.py b/oscilloscope-cmd.py +index 753b879..b9c24b4 100755 +--- a/oscilloscope-cmd.py ++++ b/oscilloscope-cmd.py +@@ -20,7 +20,10 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + # USA + +-import getopt, sys, gtk ++import getopt, sys ++import gi ++gi.require_version('Gtk', '3.0') ++from gi.repository import Gtk as gtk + from tuna import oscilloscope + + def usage(): +diff --git a/tuna/oscilloscope.py b/tuna/oscilloscope.py +index b26f903..af54d83 100755 +--- a/tuna/oscilloscope.py ++++ b/tuna/oscilloscope.py +@@ -23,16 +23,21 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + # USA + +-import gobject, gtk, os, sys +-from matplotlib.backends.backend_gtkagg import \ +- FigureCanvasGTKAgg as figure_canvas ++import os, sys, gi ++gi.require_version('Gtk', '3.0') ++from gi.repository import Gtk as gtk ++from gi.repository import Gdk as gdk ++from gi.repository import GObject as gobject ++ ++from matplotlib.backends.backend_gtk3agg import \ ++ FigureCanvasGTK3Agg as figure_canvas + import matplotlib.figure, matplotlib.ticker, numpy + + class histogram_frame(gtk.Frame): + def __init__(self, title = "Statistics", width = 780, height = 100, + max_value = 500, nr_entries = 10, + facecolor = "white"): +- gtk.Frame.__init__(self, title) ++ gtk.Frame.__init__(self) + + self.fraction = int(max_value / nr_entries) + if self.fraction == 0: +@@ -69,7 +74,7 @@ class histogram_frame(gtk.Frame): + label.set_alignment(0, 1) + table.attach(self.buckets_counter[bucket], 2, 3, bucket, bucket + 1, 0, 0, 0, 0) + +- self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(facecolor)) ++ self.modify_bg(gtk.StateFlags.NORMAL, gdk.color_parse(facecolor)) + + def add_sample(self, sample): + if sample > self.max_value: +@@ -97,7 +102,7 @@ class oscilloscope_frame(gtk.Frame): + bg_color = "darkgreen", facecolor = "white", + ylabel = "Latency", picker = None): + +- gtk.Frame.__init__(self, title) ++ gtk.Frame.__init__(self) + + self.font = { 'fontname' : 'Liberation Sans', + 'color' : 'b', +@@ -113,7 +118,7 @@ class oscilloscope_frame(gtk.Frame): + facecolor = facecolor) + ax = figure.add_subplot(111) + self.ax = ax +- ax.set_axis_bgcolor(bg_color) ++ ax.set_facecolor(bg_color) + + self.on_screen_samples = ax.plot(self.ind, self.samples, graph_type, + color = plot_color, +@@ -132,7 +137,7 @@ class oscilloscope_frame(gtk.Frame): + self.canvas.set_size_request(width, height) + + self.add(self.canvas) +- self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(facecolor)) ++ self.modify_bg(gtk.StateFlags.NORMAL, gdk.color_parse(facecolor)) + self.nr_samples = 0 + + def add_sample(self, sample): +@@ -164,9 +169,9 @@ def add_table_row(table, row, label_text, label_value = "0"): + + class system_info_frame(gtk.Frame): + def __init__(self, title = "System", facecolor = "white"): +- gtk.Frame.__init__(self, title) ++ gtk.Frame.__init__(self) + +- self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(facecolor)) ++ self.modify_bg(gtk.StateFlags.NORMAL, gdk.color_parse(facecolor)) + + table = gtk.Table(3, 2, False) + table.set_border_width(5) +@@ -209,8 +214,8 @@ class oscilloscope(gtk.Window): + vbox.set_border_width(8) + self.add(vbox) + +- stats_frame = gtk.Frame("Statistics") +- stats_frame.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(facecolor)) ++ stats_frame = gtk.Frame.new("Statistics") ++ stats_frame.modify_bg(gtk.StateFlags.NORMAL, gdk.color_parse(facecolor)) + + table = gtk.Table(3, 2, False) + table.set_border_width(5) +@@ -222,8 +227,8 @@ class oscilloscope(gtk.Window): + self.avg_label = add_table_row(table, 1, "Avg") + self.max_label = add_table_row(table, 2, "Max") + +- help_frame = gtk.Frame("Help") +- help_frame.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(facecolor)) ++ help_frame = gtk.Frame.new("Help") ++ help_frame.modify_bg(gtk.StateFlags.NORMAL, gdk.color_parse(facecolor)) + + table = gtk.Table(4, 2, False) + table.set_border_width(5) +@@ -251,15 +256,15 @@ class oscilloscope(gtk.Window): + info_frame = system_info_frame() + + vbox_help_info = gtk.VBox() +- vbox_help_info.pack_start(info_frame, False, False) +- vbox_help_info.pack_end(help_frame, False, False) ++ vbox_help_info.pack_start(info_frame, False, False, 0) ++ vbox_help_info.pack_end(help_frame, False, False, 0) + hbox = gtk.HBox() +- hbox.pack_start(vbox_help_info, False, False) +- hbox.pack_start(stats_frame, False, False) +- hbox.pack_end(self.hist, True, True) ++ hbox.pack_start(vbox_help_info, False, False, 0) ++ hbox.pack_start(stats_frame, False, False, 0) ++ hbox.pack_end(self.hist, True, True, 0) + +- vbox.pack_start(self.scope, True, True) +- vbox.pack_end(hbox, True, False) ++ vbox.pack_start(self.scope, True, True, 0) ++ vbox.pack_end(hbox, True, False, 0) + + self.show_all() + +-- +2.20.1 + diff --git a/tuna-0.13.1.tar.xz b/tuna-0.13.1.tar.xz deleted file mode 100644 index eae1d1a..0000000 Binary files a/tuna-0.13.1.tar.xz and /dev/null differ diff --git a/tuna-0.14.1.tar.xz b/tuna-0.14.1.tar.xz new file mode 100644 index 0000000..d091796 Binary files /dev/null and b/tuna-0.14.1.tar.xz differ diff --git a/tuna.spec b/tuna.spec index db16409..709bbad 100644 --- a/tuna.spec +++ b/tuna.spec @@ -1,16 +1,14 @@ -%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} -%{!?python_ver: %define python_ver %(%{__python} -c "import sys ; print sys.version[:3]")} - Name: tuna -Version: 0.13.1 -Release: 7 +Version: 0.14.1 +Release: 1 Summary: Application tuning GUI & command line utility License: GPLv2 URL: https://rt.wiki.kernel.org/index.php/Tuna Source: https://www.kernel.org/pub/software/utils/%{name}/%{name}-%{version}.tar.xz +Patch0: oscilloscope-move-from-pygtk2-to-gtk3-gobject.patch BuildArch: noarch -BuildRequires: python2-devel gettext -Requires: python2-ethtool python2-linux-procfs >= 0.4.5 python2-schedutils >= 0.2 +BuildRequires: python3-devel gettext +Requires: python3-ethtool python3-linux-procfs >= 0.6 python3-schedutils >= 0.6 %description Provides interface to change the scheduler and IRQ tunables across the CPU @@ -22,7 +20,8 @@ Can be used as a command line utility without installing a GUI library. %package -n oscilloscope Summary: Generic graphical signal plotting tool -Requires: python2-matplotlib python2-matplotlib-gtk python2-numpy pygtk2 +Requires: python3-matplotlib-gtk3 python3-numpy python3-cairocffi +Requires: gobject-introspection Requires: tuna = %{version}-%{release} %description -n oscilloscope @@ -42,19 +41,25 @@ Man manual document for tuna %autosetup -p1 -n %{name}-%{version} %build -%{__python} setup.py build +%py3_build +pathfix.py -pni "%{__python3} %{py3_shbang_opts}" tuna/ +pathfix.py -pni "%{__python3} %{py3_shbang_opts}" tuna-cmd.py +pathfix.py -pni "%{__python3} %{py3_shbang_opts}" oscilloscope-cmd.py %install -%{__python} setup.py install --skip-build --root %{buildroot} -install -d %{buildroot}/{%{_bindir},%{_datadir}/tuna/help/kthreads} +rm -rf %{buildroot} +%py3_install +mkdir -p %{buildroot}/%{_sysconfdir}/tuna/ +mkdir -p %{buildroot}/{%{_bindir},%{_datadir}/tuna/help/kthreads,%{_mandir}/man8} +mkdir -p %{buildroot}/%{_datadir}/polkit-1/actions/ install -p -m644 tuna/tuna_gui.glade %{buildroot}/%{_datadir}/tuna/ install -p -m755 tuna-cmd.py %{buildroot}/%{_bindir}/tuna install -p -m755 oscilloscope-cmd.py %{buildroot}/%{_bindir}/oscilloscope install -p -m644 help/kthreads/* %{buildroot}/%{_datadir}/tuna/help/kthreads/ -install -Dp -m644 etc/tuna.conf %{buildroot}/%{_sysconfdir}/tuna.conf -install -Dp -m644 org.tuna.policy %{buildroot}/%{_datadir}/polkit-1/actions/org.tuna.policy -install -Dp -m644 docs/tuna.8 %{buildroot}/%{_mandir}/man8/tuna.8 -install -Dp -m644 etc/tuna/example.conf %{buildroot}/%{_sysconfdir}/tuna/example.conf +install -p -m644 docs/tuna.8 %{buildroot}/%{_mandir}/man8/ +install -p -m644 etc/tuna/example.conf %{buildroot}/%{_sysconfdir}/tuna/ +install -p -m644 etc/tuna.conf %{buildroot}/%{_sysconfdir}/ +install -p -m644 org.tuna.policy %{buildroot}/%{_datadir}/polkit-1/actions/ for lng in `cat po/LINGUAS`; do po=po/"$lng.po" @@ -66,12 +71,10 @@ done %files -f tuna.lang %defattr(-,root,root,-) -%if "%{python_ver}" >= "2.5" -%{python_sitelib}/*.egg-info -%endif +%{python3_sitelib}/*.egg-info %{_bindir}/tuna %{_datadir}/tuna/ -%{python_sitelib}/tuna/ +%{python3_sitelib}/tuna/ %{_sysconfdir}/{tuna.conf,tuna/*} %{_datadir}/polkit-1/actions/org.tuna.policy @@ -85,5 +88,8 @@ done %doc ChangeLog %changelog +* Fri Sep 11 2020 maminjie - 0.14.1-1 +- Upgrade to 0.14.1 + * Thu Mar 5 2020 dingyiming - 0.13.1-7 - Package init