forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
app-benchmarks/i7z: Apply Debian patches fixing multiple bugs, drop d…
…eprecated qt4 support (https://wiki.gentoo.org/wiki/Project:Qt/Policies#Handling_different_versions_of_Qt), allow -Ox for now as it looks to work ok for me with this version. Package-Manager: Portage-2.3.6, Repoman-2.3.2
- Loading branch information
Showing
6 changed files
with
258 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
Author: Andreas Beckmann <[email protected]> | ||
Description: fix insecure temfile usage: /tmp/cpufreq.txt | ||
switch from system() + fopen() to popen() | ||
disable other insecure tempfiles that may be generated but not used | ||
Bug-Debian: http://bugs.debian.org/718418 | ||
|
||
diff --git a/GUI/i7z_GUI.cpp b/GUI/i7z_GUI.cpp | ||
index 2705e84..60eaeb2 100644 | ||
--- a/GUI/i7z_GUI.cpp | ||
+++ b/GUI/i7z_GUI.cpp | ||
@@ -171,18 +171,17 @@ MyThread::run () | ||
//CPUINFO is wrong for i7 but correct for the number of physical and logical cores present | ||
//If Hyperthreading is enabled then, multiple logical processors will share a common CORE ID | ||
//http://www.redhat.com/magazine/022aug06/departments/tips_tricks/ | ||
- system ("cat /proc/cpuinfo |grep MHz|sed 's/cpu\\sMHz\\s*:\\s//'|tail -n 1 > /tmp/cpufreq.txt"); | ||
- system ("grep \"core id\" /proc/cpuinfo |sort -|uniq -|wc -l > /tmp/numPhysical.txt"); | ||
- system ("grep \"processor\" /proc/cpuinfo |sort -|uniq -|wc -l > /tmp/numLogical.txt"); | ||
+ //system ("grep \"core id\" /proc/cpuinfo |sort -|uniq -|wc -l > /tmp/numPhysical.txt"); | ||
+ //system ("grep \"processor\" /proc/cpuinfo |sort -|uniq -|wc -l > /tmp/numLogical.txt"); | ||
|
||
|
||
- //Open the parsed cpufreq file and obtain the cpufreq from /proc/cpuinfo | ||
+ // obtain the cpufreq from /proc/cpuinfo | ||
FILE *tmp_file; | ||
- tmp_file = fopen ("/tmp/cpufreq.txt", "r"); | ||
+ tmp_file = popen ("sed -n '/MHz/ { s/cpu\\sMHz\\s*:\\s//p; q }' /proc/cpuinfo", "r"); | ||
char tmp_str[30]; | ||
fgets (tmp_str, 30, tmp_file); | ||
+ pclose (tmp_file); | ||
double cpu_freq_cpuinfo = atof (tmp_str); | ||
- fclose (tmp_file); | ||
|
||
unsigned int numPhysicalCores, numLogicalCores; | ||
numPhysicalCores = socket_0.num_physical_cores + socket_1.num_physical_cores; | ||
diff --git a/helper_functions.c b/helper_functions.c | ||
index 2f8da87..906c298 100644 | ||
--- a/helper_functions.c | ||
+++ b/helper_functions.c | ||
@@ -531,16 +531,13 @@ double cpufreq_info() | ||
//CPUINFO is wrong for i7 but correct for the number of physical and logical cores present | ||
//If Hyperthreading is enabled then, multiple logical processors will share a common CORE ID | ||
//http://www.redhat.com/magazine/022aug06/departments/tips_tricks/ | ||
- system | ||
- ("cat /proc/cpuinfo |grep MHz|sed 's/cpu\\sMHz\\s*:\\s//'|tail -n 1 > /tmp/cpufreq.txt"); | ||
|
||
- | ||
- //Open the parsed cpufreq file and obtain the cpufreq from /proc/cpuinfo | ||
+ // obtain the cpufreq from /proc/cpuinfo | ||
FILE *tmp_file; | ||
- tmp_file = fopen ("/tmp/cpufreq.txt", "r"); | ||
+ tmp_file = popen ("sed -n '/MHz/ { s/cpu\\sMHz\\s*:\\s//p; q }' /proc/cpuinfo", "r"); | ||
char tmp_str[30]; | ||
fgets (tmp_str, 30, tmp_file); | ||
- fclose (tmp_file); | ||
+ pclose (tmp_file); | ||
return atof(tmp_str); | ||
} | ||
|
||
diff --git a/i7z_Single_Socket.c b/i7z_Single_Socket.c | ||
index 015f154..d0afee0 100644 | ||
--- a/i7z_Single_Socket.c | ||
+++ b/i7z_Single_Socket.c | ||
@@ -823,10 +823,13 @@ void print_i7z_single () | ||
//CPUINFO is wrong for i7 but correct for the number of physical and logical cores present | ||
//If Hyperthreading is enabled then, multiple logical processors will share a common CORE ID | ||
//http://www.redhat.com/magazine/022aug06/departments/tips_tricks/ | ||
+ERROR INSECURE TMPFILE | ||
system | ||
("cat /proc/cpuinfo |grep MHz|sed 's/cpu\\sMHz\\s*:\\s//'|tail -n 1 > /tmp/cpufreq.txt"); | ||
+ERROR INSECURE TMPFILE | ||
system | ||
("grep \"core id\" /proc/cpuinfo |sort -|uniq -|wc -l > /tmp/numPhysical.txt"); | ||
+ERROR INSECURE TMPFILE | ||
system | ||
("grep \"processor\" /proc/cpuinfo |sort -|uniq -|wc -l > /tmp/numLogical.txt"); | ||
//At this step, /tmp/numPhysical contains number of physical cores in machine and |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
Author: Andreas Beckmann <[email protected]> | ||
Description: fix cpuid inline assembly | ||
the old code zeroed the upper half of %rbx | ||
|
||
--- a/helper_functions.c | ||
+++ b/helper_functions.c | ||
@@ -101,13 +101,7 @@ static inline void cpuid (unsigned int i | ||
unsigned int *ecx, unsigned int *edx) | ||
{ | ||
unsigned int _eax = info, _ebx, _ecx, _edx; | ||
- asm volatile ("mov %%ebx, %%edi;" // save ebx (for PIC) | ||
- "cpuid;" | ||
- "mov %%ebx, %%esi;" // pass to caller | ||
- "mov %%edi, %%ebx;" // restore ebx | ||
- :"+a" (_eax), "=S" (_ebx), "=c" (_ecx), "=d" (_edx) | ||
- : /* inputs: eax is handled above */ | ||
- :"edi" /* clobbers: we hit edi directly */); | ||
+ asm volatile ("cpuid\n\t" : "+a" (_eax), "=b" (_ebx), "=c" (_ecx), "=d" (_edx) : : ); | ||
if (eax) *eax = _eax; | ||
if (ebx) *ebx = _ebx; | ||
if (ecx) *ecx = _ecx; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
Author: Andreas Beckmann <[email protected]> | ||
Description: fix hyphen abuse | ||
|
||
--- a/doc/i7z.man | ||
+++ b/doc/i7z.man | ||
@@ -7,15 +7,15 @@ | ||
i7z runs the i7z, ncurses based, program without any options. i7z will print out the C-states and temperature for i3, i5 and i7 based Core processors from Intel (including Nehalems, Sandy Bridge and Ivy Bridge). | ||
.SH OPTIONS | ||
.TP | ||
-\fB-h, --help \fPshow the list of options available with the i7z tool. | ||
+\fB\-h, \-\-help \fPshow the list of options available with the i7z tool. | ||
.TP | ||
-\fB-w [a|l], --write [a,l] \fPLogging of the frequencies can be turned on with this options. Option "-w a" or "--write a" will append to the log file. Option "-w l" or "--write l" will replace the log file. | ||
+\fB\-w [a|l], \-\-write [a,l] \fPLogging of the frequencies can be turned on with this options. Option "\-w a" or "\-\-write a" will append to the log file. Option "\-w l" or "\-\-write l" will replace the log file. | ||
.TP | ||
-\fB-l, --logfile [FILENAME] \fPChange the log file name to the specified FILENAME. Default logging file is cpu_freq_log.txt (single socket) or cpu_freq_log_dual%d.txt (dual socket, %d is either 0, 1). | ||
+\fB\-l, \-\-logfile [FILENAME] \fPChange the log file name to the specified FILENAME. Default logging file is cpu_freq_log.txt (single socket) or cpu_freq_log_dual%d.txt (dual socket, %d is either 0, 1). | ||
.TP | ||
-\fB--socket0 [SOCKETNUM], --socket1 [SOCKETNUM] \fPThe tool can print information for about 2 sockets at once at the most. The top view will be, by default, of the first socket (controlled by --socket0) and the bottom view will be of the second socket (controlled by --socket1). Supply the appropriate value of 0 or 1 or more for SOCKETNUM (if there are more sockets on the machine) to show in the top and bottom view. | ||
+\fB\-\-socket0 [SOCKETNUM], \-\-socket1 [SOCKETNUM] \fPThe tool can print information for about 2 sockets at once at the most. The top view will be, by default, of the first socket (controlled by \-\-socket0) and the bottom view will be of the second socket (controlled by \-\-socket1). Supply the appropriate value of 0 or 1 or more for SOCKETNUM (if there are more sockets on the machine) to show in the top and bottom view. | ||
.TP | ||
-\fB--nogui \fPDisable the GUI. Useful when the only need is logging. | ||
+\fB\-\-nogui \fPDisable the GUI. Useful when the only need is logging. | ||
.SH Example | ||
To print for two sockets and also change the log file (log to /tmp/logfilei7z) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
Author: Andreas Beckmann <[email protected]> | ||
Description: install the i7z_rw_registers script and fix the hashbang | ||
|
||
--- a/i7z_rw_registers.rb | ||
+++ b/i7z_rw_registers.rb | ||
@@ -1,3 +1,5 @@ | ||
+#!/usr/bin/ruby | ||
+ | ||
#* ----------------------------------------------------------------------- * | ||
# * | ||
# * Under GPL v3 | ||
@@ -7,7 +9,6 @@ | ||
# * | ||
# * ----------------------------------------------------------------------- */ | ||
|
||
-#!/usr/bin/ruby | ||
|
||
def print_command_list() | ||
print "Do you need help? \n" | ||
--- a/Makefile | ||
+++ b/Makefile | ||
@@ -61,3 +61,4 @@ | ||
install -D -m 755 $(BIN) $(DESTDIR)$(sbindir)$(BIN) | ||
install -d $(DESTDIR)$(docdir) | ||
install -m 0644 README.txt put_cores_offline.sh put_cores_online.sh MAKEDEV-cpuid-msr $(DESTDIR)$(docdir) | ||
+ install -m 0755 i7z_rw_registers.rb $(DESTDIR)$(sbindir)/i7z_rw_registers |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
Author: Andreas Beckmann <[email protected]> | ||
Description: use a consistent bool type | ||
Bug-Debian: #749724 | ||
|
||
--- a/i7z.h | ||
+++ b/i7z.h | ||
@@ -11,18 +11,13 @@ | ||
* ----------------------------------------------------------------------- */ | ||
|
||
#include <sys/time.h> | ||
+#include <stdbool.h> | ||
|
||
#define i7z_VERSION_INFO "svn-r93-(27-MAY-2013)" | ||
|
||
//structure to store the information about the processor | ||
#define proccpuinfo "/proc/cpuinfo" | ||
|
||
-#ifndef bool | ||
-#define bool int | ||
-#endif | ||
-#define false 0 | ||
-#define true 1 | ||
- | ||
#define MAX_PROCESSORS 128 | ||
#define MAX_HI_PROCESSORS MAX_PROCESSORS | ||
#define MAX_SK_PROCESSORS (MAX_PROCESSORS/4) | ||
--- a/cpuinfo.c | ||
+++ b/cpuinfo.c | ||
@@ -2,10 +2,8 @@ | ||
#include "string.h" | ||
#include "stdlib.h" | ||
#include "assert.h" | ||
+#include <stdbool.h> | ||
#define MAX_PROCESSORS 32 | ||
-#define bool int | ||
-#define false 0 | ||
-#define true 1 | ||
|
||
#define MAX_HI_PROCESSORS MAX_PROCESSORS | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# Copyright 1999-2017 Gentoo Foundation | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=6 | ||
|
||
inherit flag-o-matic qmake-utils toolchain-funcs | ||
|
||
COMMIT="5023138d7c35c4667c938b853e5ea89737334e92" | ||
DESCRIPTION="A better i7 (and now i3, i5) reporting tool for Linux" | ||
HOMEPAGE="https://github.com/ajaiantilal/i7z" | ||
SRC_URI="https://github.com/ajaiantilal/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" | ||
SLOT="0" | ||
LICENSE="GPL-2" | ||
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" | ||
IUSE="qt5" | ||
|
||
RDEPEND=" | ||
sys-libs/ncurses:0= | ||
qt5? ( | ||
dev-qt/qtcore:5= | ||
dev-qt/qtgui:5= | ||
dev-qt/qtwidgets:5= | ||
) | ||
" | ||
DEPEND="${RDEPEND}" | ||
|
||
PATCHES=( | ||
"${FILESDIR}"/i7z-0.27.2-ncurses.patch | ||
"${FILESDIR}"/qt5.patch | ||
"${FILESDIR}"/gcc5.patch | ||
|
||
# From Debian | ||
"${FILESDIR}"/fix-insecure-tempfile.patch | ||
"${FILESDIR}"/fix_cpuid_asm.patch | ||
"${FILESDIR}"/hyphen-used-as-minus-sign.patch | ||
"${FILESDIR}"/install-i7z_rw_registers.patch | ||
"${FILESDIR}"/use_stdbool.patch | ||
) | ||
|
||
S="${WORKDIR}/${PN}-${COMMIT}" | ||
|
||
src_configure() { | ||
# The GUI segfaults with -O1. None of the documented flags make a | ||
# difference. There may not be a specific flag for the culprit. | ||
# Looks to work fine for me with -O2 (pacho - 20170530) | ||
# filter-flags "-O*" | ||
|
||
tc-export CC | ||
cd GUI || die | ||
|
||
use qt5 && eqmake5 ${PN}_GUI.pro | ||
} | ||
|
||
src_compile() { | ||
default | ||
|
||
if use qt5; then | ||
emake -C GUI clean | ||
emake -C GUI | ||
fi | ||
} | ||
|
||
src_install() { | ||
emake DESTDIR="${ED}" docdir=/usr/share/doc/${PF} install | ||
|
||
if use qt5; then | ||
dosbin GUI/i7z_GUI | ||
fi | ||
} |