diff options
author | Sam James <sam@gentoo.org> | 2022-10-28 07:15:48 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2022-10-28 07:36:29 +0100 |
commit | b68130a395dda5d00c8d558349a5a3f85ff738b0 (patch) | |
tree | 23887ef1805ab2c0196e9a12efa6bab63e97dcbb /sys-process/latencytop | |
parent | sys-kernel/raspberrypi-sources: add 5.15.61_p20220830 (diff) | |
download | gentoo-b68130a395dda5d00c8d558349a5a3f85ff738b0.tar.gz gentoo-b68130a395dda5d00c8d558349a5a3f85ff738b0.tar.bz2 gentoo-b68130a395dda5d00c8d558349a5a3f85ff738b0.zip |
sys-process/latencytop: fix build with Clang
- Fix build with Clang 16 (-Wimplicit-int)
- EAPI 8
- Respect CC, PKG_CONFIG
- Respect CPPFLAGS
Closes: https://bugs.gentoo.org/742419
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'sys-process/latencytop')
-rw-r--r-- | sys-process/latencytop/files/latencytop-0.5-Fix-Wimplicit-int.patch | 16 | ||||
-rw-r--r-- | sys-process/latencytop/files/latencytop-0.5-fsync-drop.patch | 460 | ||||
-rw-r--r-- | sys-process/latencytop/files/latencytop-0.5-fsync-fix-implicit-decl.patch | 28 | ||||
-rw-r--r-- | sys-process/latencytop/latencytop-0.5-r3.ebuild (renamed from sys-process/latencytop/latencytop-0.5-r2.ebuild) | 31 |
4 files changed, 493 insertions, 42 deletions
diff --git a/sys-process/latencytop/files/latencytop-0.5-Fix-Wimplicit-int.patch b/sys-process/latencytop/files/latencytop-0.5-Fix-Wimplicit-int.patch new file mode 100644 index 000000000000..de57cdf7d42e --- /dev/null +++ b/sys-process/latencytop/files/latencytop-0.5-Fix-Wimplicit-int.patch @@ -0,0 +1,16 @@ +From 709d3927d54d7f379aa663f6be1ca1dc507d5346 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Fri, 28 Oct 2022 07:11:10 +0100 +Subject: [PATCH] Fix -Wimplicit-int + +--- a/gtk_display.c ++++ b/gtk_display.c +@@ -594,7 +594,7 @@ static void create_targets_window(void) + G_CALLBACK(freeze_toggled), NULL); + } + +-static load_icons(void) ++static void load_icons(void) + { + GError *err; + diff --git a/sys-process/latencytop/files/latencytop-0.5-fsync-drop.patch b/sys-process/latencytop/files/latencytop-0.5-fsync-drop.patch new file mode 100644 index 000000000000..ad7bda8f949d --- /dev/null +++ b/sys-process/latencytop/files/latencytop-0.5-fsync-drop.patch @@ -0,0 +1,460 @@ +https://src.fedoraproject.org/rpms/latencytop/blob/rawhide/f/latencytop-remove-the-fsync-view.patch +https://bugs.gentoo.org/742419 + +From a4a1eb20492773d48bd83087157149c5fb9a257a Mon Sep 17 00:00:00 2001 +From: Michal Schmidt <mschmidt@redhat.com> +Date: Wed, 15 Feb 2012 23:44:18 +0100 +Subject: [PATCH 1/2] remove the fsync view + +The fsync tracer it depends on was never merged in the kernel. +It also uses 'tracing_enable' which triggers deprecation warnings in the +kernel. +--- a/Makefile ++++ b/Makefile +@@ -6,7 +6,7 @@ SBINDIR = /usr/sbin + XCFLAGS = -W -g `pkg-config --cflags glib-2.0` -D_FORTIFY_SOURCE=2 -Wno-sign-compare + LDF = -Wl,--as-needed `pkg-config --libs glib-2.0` -lncursesw + +-OBJS= latencytop.o text_display.o translate.o fsync.o ++OBJS= latencytop.o text_display.o translate.o + + ifdef HAS_GTK_GUI + XCFLAGS += `pkg-config --cflags gtk+-2.0` -DHAS_GTK_GUI +--- a/fsync.c ++++ /dev/null +@@ -1,369 +0,0 @@ +-/* +- * Copyright 2008, Intel Corporation +- * +- * This file is part of LatencyTOP +- * +- * This program file is free software; you can redistribute it and/or modify it +- * under the terms of the GNU General Public License as published by the +- * Free Software Foundation; version 2 of the License. +- * +- * This program is distributed in the hope that it will be useful, but WITHOUT +- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +- * for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program in a file named COPYING; if not, write to the +- * Free Software Foundation, Inc., +- * 51 Franklin Street, Fifth Floor, +- * Boston, MA 02110-1301 USA +- * +- * Authors: +- * Arjan van de Ven <arjan@linux.intel.com> +- */ +- +-#define _GNU_SOURCE +- +-#include <stdio.h> +-#include <stdlib.h> +-#include <unistd.h> +-#include <string.h> +-#include <ncurses.h> +-#include <time.h> +-#include <wchar.h> +-#include <ctype.h> +- +-#include <glib.h> +- +-#include "latencytop.h" +- +-struct fsync_process { +- char name[PATH_MAX]; +- int fsync_count; +- GList *files; +-}; +- +-struct fsync_files { +- char name[PATH_MAX]; +- int fsync_count; +-}; +- +-static GList *fsync_data; +- +- +-static chain_file(struct fsync_process *proc, char *filename) +-{ +- struct fsync_files *file; +- GList *item; +- +- proc->fsync_count++; +- item = proc->files; +- while (item) { +- file = item->data; +- item = g_list_next(item); +- if (strcmp(file->name, filename)==0) { +- file->fsync_count++; +- return; +- } +- } +- file = malloc(sizeof(struct fsync_files)); +- if (!file) +- return; +- memset(file, 0, sizeof(struct fsync_files)); +- strncpy(file->name, filename, PATH_MAX-1); +- file->fsync_count = 1; +- proc->files = g_list_append(proc->files, file); +-} +- +-static report_file(char *process, char *file) +-{ +- struct fsync_process *proc; +- GList *item; +- +- item = fsync_data; +- while (item) { +- proc = item->data; +- item = g_list_next(item); +- if (strcmp(proc->name, process) == 0) { +- chain_file(proc, file); +- return; +- } +- } +- +- proc = malloc(sizeof(struct fsync_process)); +- if (!proc) +- return; +- memset(proc, 0, sizeof(struct fsync_process)); +- strncpy(proc->name, process, PATH_MAX-1); +- chain_file(proc, file); +- fsync_data = g_list_append(fsync_data, proc); +-} +- +-static gint sort_files(gconstpointer A, gconstpointer B) +-{ +- struct fsync_files *a = (struct fsync_files *)A; +- struct fsync_files *b = (struct fsync_files *)B; +- return a->fsync_count < b->fsync_count; +-} +- +-static gint sort_process(gconstpointer A, gconstpointer B) +-{ +- struct fsync_process *a = (struct fsync_process *)A; +- struct fsync_process *b = (struct fsync_process *)B; +- return a->fsync_count < b->fsync_count; +-} +- +-static void sort_the_lot(void) +-{ +- GList *item; +- struct fsync_process *proc; +- +- item = fsync_data = g_list_sort(fsync_data, sort_process); +- while (item) { +- proc = item->data; +- item = g_list_next(item); +- proc->files = g_list_sort(proc->files, sort_files); +- } +-} +- +- +- +-static void write_to_file(char *filename, char *value) +-{ +- FILE *file; +- file = fopen(filename, "w"); +- if (!file) +- return; +- fprintf(file,"%s\n", value); +- fclose(file); +-} +- +- +-int enable_fsync_tracer(void) +-{ +- int ret; +-/* +- * Steps to do: +- * +- * mount -t debugfs none /sys/kernel/debug/ +- * cd /sys/kernel/debug/tracing +- * echo fsync > current_tracer +- * echo ftrace_printk > iter_ctrl +- * echo 1 > tracing_enabled +- */ +- ret = system("/bin/mount -t debugfs none /sys/kernel/debug/"); +- if (!ret) +- return -1; +- write_to_file("/sys/kernel/debug/tracing/current_tracer", "fsync"); +- write_to_file("/sys/kernel/debug/tracing/iter_ctrl", "ftrace_printk"); +- write_to_file("/sys/kernel/debug/tracing/tracing_enabled", "1"); +-} +- +-int disable_fsync_tracer(void) +-{ +- write_to_file("/sys/kernel/debug/tracing/tracing_enabled", "0"); +-} +- +- +-static WINDOW *title_bar_window; +-static WINDOW *global_window; +- +- +-static void fsync_cleanup_curses(void) +-{ +- endwin(); +-} +- +- +-static void zap_windows(void) +-{ +- if (title_bar_window) { +- delwin(title_bar_window); +- title_bar_window = NULL; +- } +- if (global_window) { +- delwin(global_window); +- global_window = NULL; +- } +-} +- +- +-static int maxx, maxy; +- +-static void fsync_setup_windows(void) +-{ +- int midy; +- getmaxyx(stdscr, maxy, maxx); +- +- zap_windows(); +- +- title_bar_window = subwin(stdscr, 1, maxx, 0, 0); +- global_window = subwin(stdscr, maxy-3 , maxx, 2, 0); +- +- werase(stdscr); +- refresh(); +-} +- +-#if 0 /* Dead code */ +-static void fsync_initialize_curses(void) +-{ +- if (noui) +- return; +- initscr(); +- start_color(); +- keypad(stdscr, TRUE); /* enable keyboard mapping */ +- nonl(); /* tell curses not to do NL->CR/NL on output */ +- cbreak(); /* take input chars one at a time, no wait for \n */ +- noecho(); /* dont echo input */ +- curs_set(0); /* turn off cursor */ +- use_default_colors(); +- +- init_pair(PT_COLOR_DEFAULT, COLOR_WHITE, COLOR_BLACK); +- init_pair(PT_COLOR_HEADER_BAR, COLOR_BLACK, COLOR_WHITE); +- init_pair(PT_COLOR_ERROR, COLOR_BLACK, COLOR_RED); +- init_pair(PT_COLOR_RED, COLOR_WHITE, COLOR_RED); +- init_pair(PT_COLOR_YELLOW, COLOR_WHITE, COLOR_YELLOW); +- init_pair(PT_COLOR_GREEN, COLOR_WHITE, COLOR_GREEN); +- init_pair(PT_COLOR_BRIGHT, COLOR_WHITE, COLOR_BLACK); +- +- atexit(cleanup_curses); +-} +-#endif +- +-static void show_title_bar(void) +-{ +- wattrset(title_bar_window, COLOR_PAIR(PT_COLOR_HEADER_BAR)); +- wbkgd(title_bar_window, COLOR_PAIR(PT_COLOR_HEADER_BAR)); +- werase(title_bar_window); +- +- mvwprintw(title_bar_window, 0, 0, " LatencyTOP -- fsync() view... type 'F' to exit"); +- +- wrefresh(title_bar_window); +-} +- +- +- +-static void print_global_list(void) +-{ +- GList *item, *item2; +- struct fsync_process *proc; +- struct fsync_files *file; +- int i = 1, i2 = 0; +- int y = 1; +- +- werase(global_window); +- +- +- mvwprintw(global_window, 0, 0, "Process File"); +- item = g_list_first(fsync_data); +- while (item && i < maxy-6) { +- proc = item->data; +- item = g_list_next(item); +- +- mvwprintw(global_window, y, 0, "%s (%i)", proc->name, proc->fsync_count); +- y++; +- item2 = proc->files; +- while (item2 && i2 < 5) { +- file = item2->data; +- item2 = g_list_next(item2); +- mvwprintw(global_window, y, 10, "%s (%i)", file->name, file->fsync_count); +- y++; +- i2++; +- } +- i++; +- y++; +- } +- wrefresh(global_window); +- +-} +- +-static void parse_ftrace(void) +-{ +- FILE *file; +- char line[PATH_MAX]; +- file = fopen("/sys/kernel/debug/tracing/trace", "r"); +- if (!file) +- return; +- while (!feof(file)) { +- char *c, *c2; +- memset(line, 0, PATH_MAX); +- fgets(line, PATH_MAX-1, file); +- c = strchr(line, '\n'); +- if (c) *c = 0; +- c = strstr(line, "probe_do_fsync: Process "); +- if (!c) +- continue; +- c += 24; +- c2 = strchr(c, ' '); +- if (!c2) +- continue; +- *c2 = 0; +- c2++; +- c2 = strstr(c2, "fsync on "); +- if (!c2) +- continue; +- c2 += 9; +- report_file(c, c2); +- } +- fclose(file); +- sort_the_lot(); +-} +- +- +-int fsync_display(int duration) +-{ +- struct timeval start,end,now; +- int key; +- fd_set rfds; +- int curduration; +- +- fsync_setup_windows(); +- show_title_bar(); +- curduration = 3; +- if (curduration > duration) +- curduration = duration; +- parse_ftrace(); +- print_global_list(); +- while (1) { +- FD_ZERO(&rfds); +- FD_SET(0, &rfds); +- gettimeofday(&start, NULL); +- gettimeofday(&now, NULL); +- end.tv_sec = start.tv_sec + curduration - now.tv_sec; +- end.tv_usec = start.tv_usec - now.tv_usec; +- while (end.tv_usec < 0) { +- end.tv_sec --; +- end.tv_usec += 1000000; +- }; +- curduration = duration; +- if (curduration > 5) +- curduration = 5; +- /* clear the ftrace buffer */ +- write_to_file("/sys/kernel/debug/tracing/tracing_enabled", "0"); +- write_to_file("/sys/kernel/debug/tracing/tracing_enabled", "1"); +- key = select(1, &rfds, NULL, NULL, &end); +- parse_ftrace(); +- print_global_list(); +- +- if (key) { +- char keychar; +- keychar = fgetc(stdin); +- if (keychar == 27) { +- keychar = fgetc(stdin); +- if (keychar==79) +- keychar = fgetc(stdin); +- } +- keychar = toupper(keychar); +- if (keychar == 'F') { +- fsync_cleanup_curses(); +- return 1; +- } +- if (keychar == 'Q') { +- fsync_cleanup_curses(); +- return 0; +- } +- } +- } +- +- return 1; +-} +--- a/latencytop.8 ++++ b/latencytop.8 +@@ -42,10 +42,6 @@ followed by a letter, then only active processes starting with that lettter + are displayed and walked. If you press \fBs\fP followed by \fB0\fP then + that filter is reset. + +-If you press \fBf\fP then \fBLatencyTop\fP displays a list of all processes +-currently waiting for an \fBfsync\fP to finish. Pressing \fBf\fP again +-returns you to the normal operating mode of \fBLatencyTop\fP. +- + .SH SEE ALSO + .BR powertop (1) + .br +--- a/latencytop.c ++++ b/latencytop.c +@@ -532,7 +532,6 @@ void update_list(void) + static void cleanup_sysctl(void) + { + disable_sysctl(); +- disable_fsync_tracer(); + } + + int main(int argc, char **argv) +@@ -540,7 +539,6 @@ int main(int argc, char **argv) + int i, use_gtk = 0; + + enable_sysctl(); +- enable_fsync_tracer(); + atexit(cleanup_sysctl); + + #ifdef HAS_GTK_GUI +--- a/latencytop.h ++++ b/latencytop.h +@@ -53,7 +53,4 @@ extern void start_text_ui(void); + + extern char *translate(char *line); + extern void init_translations(char *filename); +-extern int fsync_display(int duration); +-extern int enable_fsync_tracer(void); +-extern int disable_fsync_tracer(void); + extern void update_list(void); +--- a/latencytop.trans ++++ b/latencytop.trans +@@ -142,5 +142,5 @@ + 5 sys_nanosleep Application requested delay + 5 sys_pause Application requested delay + 5 evdev_read Reading keyboard/mouse input +-5 do_fsync fsync() on a file (type 'F' for details) ++5 do_fsync fsync() on a file + 5 __log_wait_for_space Waiting for EXT3 journal space +--- a/text_display.c ++++ b/text_display.c +@@ -378,13 +378,6 @@ static int update_display(int duration, char *filterchar) + else if (keychar == '0') + *filterchar = '\0'; + } +- if (keychar == 'F') { +- endwin(); +- if (!fsync_display(duration)) +- return 0; +- setup_windows(); +- show_title_bar(); +- } + if (keychar < 32) + repaint = 0; + } diff --git a/sys-process/latencytop/files/latencytop-0.5-fsync-fix-implicit-decl.patch b/sys-process/latencytop/files/latencytop-0.5-fsync-fix-implicit-decl.patch deleted file mode 100644 index 33f2bc278600..000000000000 --- a/sys-process/latencytop/files/latencytop-0.5-fsync-fix-implicit-decl.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 60427a259ba76b8238198e1f17a0c3b06491be3c Mon Sep 17 00:00:00 2001 -From: Mike Frysinger <vapier@gentoo.org> -Date: Fri, 18 Dec 2009 10:48:39 -0500 -Subject: [PATCH] fsync: fix implicit decl - -fsync.c: In function 'fsync_display': -fsync.c:330: warning: implicit declaration of function 'gettimeofday' - -Signed-off-by: Mike Frysinger <vapier@gentoo.org> ---- - src/fsync.c | 1 + - 1 files changed, 1 insertions(+), 0 deletions(-) - -diff --git a/src/fsync.c b/src/fsync.c -index 1706571..3bec719 100644 ---- a/fsync.c -+++ b/fsync.c -@@ -30,6 +30,7 @@ - #include <string.h> - #include <ncurses.h> - #include <time.h> -+#include <sys/time.h> - #include <wchar.h> - #include <ctype.h> - --- -1.6.5.4 - diff --git a/sys-process/latencytop/latencytop-0.5-r2.ebuild b/sys-process/latencytop/latencytop-0.5-r3.ebuild index fa5403254583..3e4091f5598d 100644 --- a/sys-process/latencytop/latencytop-0.5-r2.ebuild +++ b/sys-process/latencytop/latencytop-0.5-r3.ebuild @@ -1,25 +1,23 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 -inherit linux-info +inherit linux-info toolchain-funcs -DESCRIPTION="tool for identifying where in the system latency is happening" +DESCRIPTION="Tool for identifying where in the system latency is happening" HOMEPAGE="http://git.infradead.org/latencytop.git" - # Upstream is long gone, so we explicitly use our mirrors for the tarball SRC_URI="mirror://gentoo/${P}.tar.gz" -CONFIG_CHECK="~LATENCYTOP" - LICENSE="GPL-2" SLOT="0" KEYWORDS="amd64 ~arm x86" IUSE="gtk" -RDEPEND="dev-libs/glib:2 - sys-libs/ncurses:0= +RDEPEND=" + dev-libs/glib:2 + sys-libs/ncurses:= gtk? ( x11-libs/gtk+:2 ) " DEPEND="${RDEPEND}" @@ -30,14 +28,13 @@ BDEPEND="virtual/pkgconfig" PATCHES=( "${FILESDIR}/${P}-01-mkdir-usr-sbin-as-well.patch" "${FILESDIR}/${P}-03-clean-up-build-system.patch" - "${FILESDIR}/${P}-fsync-fix-implicit-decl.patch" + "${FILESDIR}/${P}-fsync-drop.patch" + "${FILESDIR}/${P}-Fix-Wimplicit-int.patch" ) -pkg_pretend() { - linux-info_pkg_setup -} +CONFIG_CHECK="~LATENCYTOP" -pkg_setup() { +pkg_pretend() { linux-info_pkg_setup } @@ -51,3 +48,9 @@ src_prepare() { sed -i -e "/HAS_GTK_GUI = 1/d" Makefile || die fi } + +src_compile() { + tc-export CC PKG_CONFIG + + emake CPPFLAGS="${CPPFLAGS}" +} |