commit:     48688d49de7264603504f4c3807d40ee09e5428a
Author:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed Aug 25 01:38:54 2021 +0000
Commit:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
CommitDate: Wed Aug 25 01:51:18 2021 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=48688d49

sys-apps/intel-cmt-cat: initial import

Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>

 sys-apps/intel-cmt-cat/Manifest                    |   1 +
 .../files/intel-cmt-cat-perl-makefile.patch        |  22 +++++
 sys-apps/intel-cmt-cat/intel-cmt-cat-4.2.0.ebuild  | 108 +++++++++++++++++++++
 sys-apps/intel-cmt-cat/metadata.xml                |  51 ++++++++++
 4 files changed, 182 insertions(+)

diff --git a/sys-apps/intel-cmt-cat/Manifest b/sys-apps/intel-cmt-cat/Manifest
new file mode 100644
index 000000000..59cfff0d6
--- /dev/null
+++ b/sys-apps/intel-cmt-cat/Manifest
@@ -0,0 +1 @@
+DIST intel-cmt-cat-4.2.0.tar.gz 470596 BLAKE2B 
781e69a7019a27e87b6b6c8d2c914305a837d019cadf8d1b6221942c631e0e46531a292379d7979ae88e7a590b155bc4e5a62777bdd9ebfb2881471ef64bfa32
 SHA512 
ccfae2e3fa5bb8b7dfe5ed39ab20a8526eb759378aeb14fb7ed79f4f94820cd69e497c9e7d411f1d9ec40c07ca4c7c4f2db6ff1e034a8517c01c06bd8a70d4b6

diff --git a/sys-apps/intel-cmt-cat/files/intel-cmt-cat-perl-makefile.patch 
b/sys-apps/intel-cmt-cat/files/intel-cmt-cat-perl-makefile.patch
new file mode 100644
index 000000000..39b9a553e
--- /dev/null
+++ b/sys-apps/intel-cmt-cat/files/intel-cmt-cat-perl-makefile.patch
@@ -0,0 +1,22 @@
+--- a/lib/perl/Makefile.PL
++++ b/lib/perl/Makefile.PL
+@@ -42,8 +42,8 @@
+ WriteMakefile(
+       'NAME'    => 'pqos',
+       'VERSION' => "0.1",
+-      'CCFLAGS' => "$Config{ccflags} -Wno-unused-variable -Wno-unused-value",
+-      'LIBS'    => ['-lpqos', '-L/usr/local/lib -lpqos'],
++      'CCFLAGS' => "$Config{ccflags} -Wno-unused-variable -Wno-unused-value 
-I..",
++      'LIBS'    => ['-lpqos', '-L.. -lpqos'],
+       'OBJECT'  => 'pqos_wrap.o',
+       'clean'   => {FILES => "pqos_wrap.c"},
+ );
+@@ -56,7 +56,7 @@
+ 
+       my $swig_target = <<"SWIG_MAKEFILE";
+ pqos_wrap.c:
+-      $swig -perl -outdir \$(INST_LIB) -I/usr/local/include 
\$(EXTRA_SWIGFLAGS) pqos.i
++      $swig -perl -outdir \$(INST_LIB) -I.. \$(EXTRA_SWIGFLAGS) pqos.i
+ SWIG_MAKEFILE
+ 
+       my $perltidy_targets = <<'PERLTIDY_MAKEFILE';

diff --git a/sys-apps/intel-cmt-cat/intel-cmt-cat-4.2.0.ebuild 
b/sys-apps/intel-cmt-cat/intel-cmt-cat-4.2.0.ebuild
new file mode 100644
index 000000000..e65818eef
--- /dev/null
+++ b/sys-apps/intel-cmt-cat/intel-cmt-cat-4.2.0.ebuild
@@ -0,0 +1,108 @@
+# Copyright 2020-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..10} pypy3 )
+
+inherit distutils-r1 perl-module
+
+DESCRIPTION="User space software for Intel(R) Resource Director Technology"
+HOMEPAGE="
+       
http://www.intel.com/content/www/us/en/architecture-and-technology/resource-director-technology.html
+       https://github.com/intel/intel-cmt-cat
+"
+SRC_URI="https://github.com/intel/intel-cmt-cat/archive/refs/tags/v${PV}.tar.gz
 -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="perl"
+
+RDEPEND="
+       ${PYTHON_DEPS}
+       perl? ( dev-lang/perl:= )
+"
+DEPEND="${RDEPEND}"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+PATCHES=( "${FILESDIR}/${PN}-perl-makefile.patch" )
+
+distutils_enable_tests unittest
+
+src_prepare() {
+       mkdir -p "${T}/prefix" || die
+
+       distutils-r1_python_prepare_all
+}
+
+src_compile() {
+       emake all PREFIX="${T}/prefix"
+
+       if use perl; then
+               pushd "lib/perl" || die
+               perl-module_src_configure
+               perl-module_src_compile
+               popd || die
+       fi
+       pushd "lib/python" || die
+       python_foreach_impl distutils-r1_python_compile
+       popd || die
+#      pushd "appqos" || die
+#      python_foreach_impl distutils-r1_python_compile
+#      popd || die
+}
+
+src_install() {
+       emake install PREFIX="${T}/prefix"
+
+       dobin "${T}"/prefix/bin/*
+       doheader "${T}"/prefix/include/*
+       doman "${T}"/prefix/man/man*/*
+       dolib.so "${T}"/prefix/lib/*
+
+       dobin tools/membw/membw
+       dobin snmp/rdt-agentx.pl
+
+       dodoc ChangeLog README
+       docinto membw
+       dodoc tools/membw/README
+       docinto pqos
+       dodoc -r pqos/README pqos/configs
+       docinto lib
+       dodoc lib/README
+       docinto lib/python
+       dodoc lib/python/README.txt
+       docinto snmp
+       dodoc snmp/README
+       docinto rdtset
+       dodoc rdtset/README
+       docinto appqos
+       dodoc appqos/README.md
+
+       if use perl ; then
+               pushd "lib/perl" || die
+               unset DOCS
+               myinst=( DESTDIR="${D}" )
+               perl-module_src_install
+               popd || die
+               docinto lib/perl
+               dodoc lib/perl/README
+       fi
+       unset DOCS
+       pushd "lib/python" || die
+       python_foreach_impl distutils-r1_python_install
+       popd || die
+#      pushd "appqos" || die
+#      python_foreach_impl distutils-r1_python_install
+#      popd || die
+}
+
+src_test() {
+       pushd "lib/python" || die
+       python_foreach_impl python_test
+       popd || die
+#      pushd "appqos" || die
+#      python_foreach_impl python_test
+#      popd || die
+}

diff --git a/sys-apps/intel-cmt-cat/metadata.xml 
b/sys-apps/intel-cmt-cat/metadata.xml
new file mode 100644
index 000000000..fd18b3532
--- /dev/null
+++ b/sys-apps/intel-cmt-cat/metadata.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <upstream>
+               <bugs-to>https://github.com/intel/intel-cmt-cat/issues</bugs-to>
+               <remote-id type="github">intel/intel-cmt-cat</remote-id>
+       </upstream>
+       <maintainer type="person">
+               <email>[email protected]</email>
+               <name>Alessandro Barbieri</name>
+       </maintainer>
+       <longdescription lang="en">
+Overview
+========
+
+This software package provides basic support for
+Intel(R) Resource Director Technology (Intel(R) RDT) including:
+Cache Monitoring Technology (CMT), Memory Bandwidth Monitoring (MBM),
+Cache Allocation Technology (CAT), Code and Data Prioritization (CDP)
+and Memory Bandwidth Allocation (MBA).
+
+In principle, the software programs the technologies via
+Model Specific Registers (MSR) on a hardware thread basis.
+MSR access is arranged via a standard operating system driver:
+msr on Linux and cpuctl on FreeBSD. In the most common architectural
+implementations, presence of the technologies is detected via the
+CPUID instruction.
+
+In a limited number of special cases where CAT is not architecturally
+supported on a particular SKU (but instead a non-architectural
+(model-specific) implementation exists) it can be detected via brand
+string. This brand string is read from CPUID and compared to a table
+of known-supported SKUs. If needed, a final check is to probe the
+specific MSR’s to discover hardware capabilities, however it is
+recommended that CPUID enumeration should be used wherever possible.
+
+From software version v1.0.0 the library adds option to use Intel(R) RDT via
+available OS interfaces (perf and resctrl on Linux). The library detects
+presence of these interfaces and allows to select the preferred one through
+a configuration option.
+As the result, existing tools like 'pqos' or 'rdtset' can also be used
+to manage Intel(R) RDT in an OS compatible way. MSR interface remains
+the default option for now. 'pqos' tool wrappers have been added to help with
+the interface selection. 'pqos-os' and 'pqos-msr' for OS and MSR interface
+operations respectively.
+
+PID API compile time option has been removed and the APIs are always available.
+Note that proper operation of these APIs depends on availability and
+selection of OS interface.
+       </longdescription>
+</pkgmetadata>

Reply via email to