- add subpackage with kernel module sources

- obsolete kmod-sysprof
- add patch for warning user about missing module
- add README.Fedora file with module build procedure
This commit is contained in:
Gianluca Sforna 2007-12-27 10:07:36 +00:00
parent c549583696
commit 5359af473c
3 changed files with 147 additions and 1 deletions

5
README.Fedora Normal file
View File

@ -0,0 +1,5 @@
How to build the kernel module for sysprof
In order to build and install in the proper location the sysprof kernel
module, run as root:

View File

@ -0,0 +1,96 @@
Index: sysprof-1.0.9/sysprof.c
===================================================================
--- sysprof-1.0.9.orig/sysprof.c
+++ sysprof-1.0.9/sysprof.c
@@ -543,32 +543,67 @@ on_start_toggled (GtkWidget *widget, gpo
if (app->input_fd == -1)
{
- int fd;
- fd = open ("/proc/sysprof-trace", O_RDONLY);
- if (fd < 0)
- {
- load_module();
-
- fd = open ("/proc/sysprof-trace", O_RDONLY);
-
- if (fd < 0)
- {
- sorry (app->main_window,
- "Can't open /proc/sysprof-trace. You need to insert\n"
- "the sysprof kernel module. Run\n"
- "\n"
- " modprobe sysprof-module\n"
- "\n"
- "as root.");
-
- update_sensitivity (app);
- return;
- }
- }
+ // Check for kernel module existence
+ gchar * modules_path;
+ gchar * standard_output;
+ gchar * standard_error;
+ int exit_status = -1;
+ if (g_spawn_command_line_sync ("/bin/uname -r",
+ &standard_output, &standard_error,
+ &exit_status,
+ NULL))
+ {
+ g_strchomp( standard_output );
+ gchar * module_path;
+ module_path = g_strdup_printf( "/lib/modules/%s/extra/sysprof-module.ko", standard_output );
+
+ if ( ! g_file_test( module_path, G_FILE_TEST_EXISTS ))
+ {
+ sorry (app->main_window,
+ "Can not find sysprof kernel module in:\n\n"
+ " %s\n\n"
+ "Please see:\n"
+ "\n"
+ " %s/README.Fedora\n"
+ "\n"
+ "for more info about module installation.", module_path, PACKAGE_DOCDIR );
+ g_free( module_path );
+ update_sensitivity (app);
+ return;
+
+ }
+ g_free (standard_output);
+ g_free (standard_error);
+ g_free( module_path );
+ }
+
+ int fd;
+
+ fd = open ("/proc/sysprof-trace", O_RDONLY);
+ if (fd < 0)
+ {
+ load_module();
+
+ fd = open ("/proc/sysprof-trace", O_RDONLY);
+
+ if (fd < 0)
+ {
+ sorry (app->main_window,
+ "Can't open /proc/sysprof-trace. You need to insert\n"
+ "the sysprof kernel module. Run\n"
+ "\n"
+ " modprobe sysprof-module\n"
+ "\n"
+ "as root.");
+
+ update_sensitivity (app);
+ return;
+ }
+ }
- app->input_fd = fd;
- fd_add_watch (app->input_fd, app);
+ app->input_fd = fd;
+ fd_add_watch (app->input_fd, app);
}
fd_set_read_callback (app->input_fd, on_read);

View File

@ -1,6 +1,6 @@
Name: sysprof Name: sysprof
Version: 1.0.9 Version: 1.0.9
Release: 2%{?dist} Release: 3%{?dist}
Summary: Sysprof is a sampling CPU profiler Summary: Sysprof is a sampling CPU profiler
Group: Development/System Group: Development/System
License: GPLv2+ License: GPLv2+
@ -9,12 +9,16 @@ Source0: http://www.daimi.au.dk/~sandmann/sysprof/sysprof-%{version}.tar.
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Source1: sysprof.desktop Source1: sysprof.desktop
Source2: README.Fedora
Patch0: sysprof-1.0.9-warn-for-missing-module.patch
BuildRequires: gtk2-devel => 2.6 BuildRequires: gtk2-devel => 2.6
BuildRequires: libglade2-devel BuildRequires: libglade2-devel
BuildRequires: binutils-devel BuildRequires: binutils-devel
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
Requires: sysprof-module = %{version}
ExclusiveArch: %{ix86} x86_64 ExclusiveArch: %{ix86} x86_64
%description %description
@ -23,12 +27,41 @@ to profile the entire system, not just a single application.
Sysprof handles shared libraries and applications do not need to be Sysprof handles shared libraries and applications do not need to be
recompiled. In fact they don't even have to be restarted. recompiled. In fact they don't even have to be restarted.
%package module
Summary: Source code for the required kernel module
Group: Development/System
Requires: kernel-devel
Requires: %{name} = %{version}
# Replace old kmods - to be removed in Fedora 11
Obsoletes: kmod-sysprof <= 1.0.9-3
%description module
Sysprof needs a kernel module to be inserted before profiling could start.
This package provides the necessary source files for building sysprof-module
The full build/install procedure is described in:
%{_docdir}/%{name}-%{version}/README.Fedora
%prep %prep
%setup -q %setup -q
%patch0 -p1
# Finish up README file
cp %{SOURCE2} ./README.Fedora
echo "cd %{_docdir}/sysprof-module-%{version}/module" >> README.Fedora
echo "make modules install" >> README.Fedora
%build %build
%configure --disable-kernel-module %configure --disable-kernel-module
# Add info about README.Fedora
echo "#define PACKAGE_DOCDIR \"%{_docdir}/sysprof-module-%{version}\"" >> config.h
make %{?_smp_mflags} make %{?_smp_mflags}
@ -55,7 +88,19 @@ rm -rf ${RPM_BUILD_ROOT}
%{_datadir}/sysprof/sysprof.glade %{_datadir}/sysprof/sysprof.glade
%{_datadir}/applications/*.desktop %{_datadir}/applications/*.desktop
%files module
%defattr(-,root,root,-)
%doc README.Fedora config.h module/
%changelog %changelog
* Thu Dec 27 2007 Gianluca Sforna <giallu gmail com> - 1.0.9-3
- add subpackage with kernel module sources
- obsolete kmod-sysprof
- add patch for warning user about missing module
- add README.Fedora file with module build procedure
* Fri Dec 07 2007 Release Engineering <rel-eng at fedoraproject dot org> - 1.0.9-2 * Fri Dec 07 2007 Release Engineering <rel-eng at fedoraproject dot org> - 1.0.9-2
- Rebuild for deps - Rebuild for deps