summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2017-05-31 11:32:31 +0200
committerPacho Ramos <pacho@gentoo.org>2017-05-31 11:32:31 +0200
commite41771703356e344dd98066f85834e345bcd675f (patch)
tree773dfa6161d1c7e72d234a4c812e6a5d2d8b9140 /app-benchmarks/i7z
parentapp-benchmarks/i7z: Take package as agreed with chewi (diff)
downloadgentoo-e41771703356e344dd98066f85834e345bcd675f.tar.gz
gentoo-e41771703356e344dd98066f85834e345bcd675f.tar.bz2
gentoo-e41771703356e344dd98066f85834e345bcd675f.zip
app-benchmarks/i7z: Apply Debian patches fixing multiple bugs, drop deprecated 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
Diffstat (limited to 'app-benchmarks/i7z')
-rw-r--r--app-benchmarks/i7z/files/fix-insecure-tempfile.patch76
-rw-r--r--app-benchmarks/i7z/files/fix_cpuid_asm.patch21
-rw-r--r--app-benchmarks/i7z/files/hyphen-used-as-minus-sign.patch26
-rw-r--r--app-benchmarks/i7z/files/install-i7z_rw_registers.patch26
-rw-r--r--app-benchmarks/i7z/files/use_stdbool.patch40
-rw-r--r--app-benchmarks/i7z/i7z-93_p20131012-r1.ebuild69
6 files changed, 258 insertions, 0 deletions
diff --git a/app-benchmarks/i7z/files/fix-insecure-tempfile.patch b/app-benchmarks/i7z/files/fix-insecure-tempfile.patch
new file mode 100644
index 000000000000..fb027158434b
--- /dev/null
+++ b/app-benchmarks/i7z/files/fix-insecure-tempfile.patch
@@ -0,0 +1,76 @@
+Author: Andreas Beckmann <anbe@debian.org>
+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
diff --git a/app-benchmarks/i7z/files/fix_cpuid_asm.patch b/app-benchmarks/i7z/files/fix_cpuid_asm.patch
new file mode 100644
index 000000000000..27739a64523e
--- /dev/null
+++ b/app-benchmarks/i7z/files/fix_cpuid_asm.patch
@@ -0,0 +1,21 @@
+Author: Andreas Beckmann <anbe@debian.org>
+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;
diff --git a/app-benchmarks/i7z/files/hyphen-used-as-minus-sign.patch b/app-benchmarks/i7z/files/hyphen-used-as-minus-sign.patch
new file mode 100644
index 000000000000..f908b934621e
--- /dev/null
+++ b/app-benchmarks/i7z/files/hyphen-used-as-minus-sign.patch
@@ -0,0 +1,26 @@
+Author: Andreas Beckmann <anbe@debian.org>
+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)
+
diff --git a/app-benchmarks/i7z/files/install-i7z_rw_registers.patch b/app-benchmarks/i7z/files/install-i7z_rw_registers.patch
new file mode 100644
index 000000000000..65c36e9a26f6
--- /dev/null
+++ b/app-benchmarks/i7z/files/install-i7z_rw_registers.patch
@@ -0,0 +1,26 @@
+Author: Andreas Beckmann <anbe@debian.org>
+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
diff --git a/app-benchmarks/i7z/files/use_stdbool.patch b/app-benchmarks/i7z/files/use_stdbool.patch
new file mode 100644
index 000000000000..4aa84ac091c9
--- /dev/null
+++ b/app-benchmarks/i7z/files/use_stdbool.patch
@@ -0,0 +1,40 @@
+Author: Andreas Beckmann <anbe@debian.org>
+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
+
diff --git a/app-benchmarks/i7z/i7z-93_p20131012-r1.ebuild b/app-benchmarks/i7z/i7z-93_p20131012-r1.ebuild
new file mode 100644
index 000000000000..4e7ab8619aa2
--- /dev/null
+++ b/app-benchmarks/i7z/i7z-93_p20131012-r1.ebuild
@@ -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
+}