oprofile: move from oe-core, as it's being deprecated there

oe-core will focus on perf as a better alternative moving forward. Existing
users of oprofile are encouraged to move to perf, but for now can be unblocked
with oprofile moved to meta-oe.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Denys Dmytriyenko 2017-10-12 19:05:33 -04:00 committed by Martin Jansa
parent 095c366c29
commit 22e6e7d5a8
10 changed files with 956 additions and 0 deletions

View File

@ -0,0 +1,65 @@
SUMMARY = "System-Wide Profiler"
DESCRIPTION = "OProfile is a system-wide profiler for Linux systems, capable \
of profiling all running code at low overhead."
HOMEPAGE = "http://oprofile.sourceforge.net/news/"
BUGTRACKER = "http://sourceforge.net/tracker/?group_id=16191&atid=116191"
LICENSE = "LGPLv2.1+ & GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://libopagent/opagent.h;beginline=5;endline=26;md5=4f16f72c7a493d8a4704aa18d03d15c6 \
"
SECTION = "devel"
DEPENDS = "popt binutils"
RDEPENDS_${PN} = "binutils-symlinks"
RRECOMMENDS_${PN} = "kernel-vmlinux"
FILES_${PN} = "${bindir} ${libdir}/${BPN}/lib*${SOLIBS} ${datadir}/${BPN}"
FILES_${PN}-dev += "${libdir}/${BPN}/lib*${SOLIBSDEV} ${libdir}/${BPN}/lib*.la"
FILES_${PN}-staticdev += "${libdir}/${BPN}/lib*.a"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
file://acinclude.m4 \
file://automake-foreign.patch \
file://oprofile-cross-compile-tests.patch \
file://run-ptest \
file://root-home-dir.patch \
file://0001-Add-rmb-definition-for-NIOS2-architecture.patch \
file://0001-Fix-FTBFS-problem-with-GCC-6.patch \
"
UPSTREAM_CHECK_REGEX = "oprofile-(?P<pver>\d+(\.\d+)+)/"
UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/oprofile/files/oprofile/"
SRC_URI_append_libc-musl = " file://musl.patch"
inherit autotools pkgconfig ptest
EXTRA_OECONF = "--with-kernel=${STAGING_DIR_HOST}${prefix} --without-x ac_cv_prog_XSLTPROC="
do_configure () {
cp ${WORKDIR}/acinclude.m4 ${S}/
autotools_do_configure
}
EXTRA_OEMAKE = "SRCDIR=${PTEST_PATH}/libutil++/tests"
do_compile_ptest() {
oe_runmake check
}
do_install_ptest() {
subdirs="libdb/tests libutil++/tests libregex/tests libutil/tests libop/tests libdb/tests "
for tooltest in ${subdirs}
do
find ${tooltest} -perm /u=x -type f| cpio -pvdu ${D}${PTEST_PATH}
done
# needed by some libop tests
cp -r events ${D}${PTEST_PATH}
# needed by libregex regex_test
cp libregex/stl.pat ${D}${PTEST_PATH}/libregex
cp libregex/tests/mangled-name ${D}${PTEST_PATH}/libregex/tests
# needed by litutil++ file_manip_tests
cp ${S}/libutil++/tests/file_manip_tests.cpp \
libutil++/tests/file_manip_tests.o ${D}${PTEST_PATH}/libutil++/tests
}

View File

@ -0,0 +1,30 @@
From 34b0d9b1a32fb404a30327a7ae8931c7c75583bf Mon Sep 17 00:00:00 2001
From: Marek Vasut <marex@denx.de>
Date: Tue, 9 Feb 2016 02:00:29 +0100
Subject: [PATCH] Add rmb() definition for NIOS2 architecture
Signed-off-by: Marek Vasut <marex@denx.de>
Upstream-Status: Submitted [ http://marc.info/?l=oprofile-list&m=145501915931874&w=2 ]
---
libperf_events/operf_utils.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/libperf_events/operf_utils.h b/libperf_events/operf_utils.h
index 32954cc..8270e53 100644
--- a/libperf_events/operf_utils.h
+++ b/libperf_events/operf_utils.h
@@ -178,6 +178,11 @@ void op_release_resources(void);
#define cpu_relax() asm volatile("" ::: "memory")
#endif
+#ifdef __nios2__
+#define rmb() asm volatile("" ::: "memory")
+#define cpu_relax() asm volatile("" ::: "memory")
+#endif
+
#ifdef __tile__
#include <asm/unistd.h>
#define rmb() __insn_mf()
--
2.7.0

View File

@ -0,0 +1,51 @@
From 39d4d46a0bd504ac708ffe72df87bf74cd12ad30 Mon Sep 17 00:00:00 2001
From: William Cohen <wcohen@redhat.com>
Date: Fri, 5 Feb 2016 17:30:19 -0500
Subject: [PATCH] Fix FTBFS problem with GCC-6
GCC-6 is pickier about some of the type conversions causing the Fedora
24 mass rebuild the build of oprofile failed with:
make[3]: Entering directory '/builddir/build/BUILD/oprofile-1.1.0/libutil++'
g++ -DHAVE_CONFIG_H -I. -I.. -I ../libutil -I ../libop -I ../libpp -W -Wall -fno-common -ftemplate-depth-50 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c -o op_bfd.o op_bfd.cpp
op_bfd.cpp: In member function 'void op_bfd::get_symbol_range(symbol_index_t, long long unsigned int&, long long unsigned int&) const':
op_bfd.cpp:538:47: error: cannot convert 'std::ostream {aka std::basic_ostream<char>}' to 'const bool' in initialization
bool const verbose = cverb << (vbfd & vlevel1);
^
op_bfd.cpp:546:7: error: in argument to unary !
if (!verbose)
^~~~~~~
Avoid the intermediate bool type to make GCC-6 happy.
Signed-off-by: William Cohen <wcohen@redhat.com>
---
Upstream-Status: Backport
libutil++/op_bfd.cpp | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/libutil++/op_bfd.cpp b/libutil++/op_bfd.cpp
index 389c920..f2eb42b 100644
--- a/libutil++/op_bfd.cpp
+++ b/libutil++/op_bfd.cpp
@@ -535,15 +535,13 @@ void op_bfd::get_symbol_range(symbol_index_t sym_idx,
{
op_bfd_symbol const & sym = syms[sym_idx];
- bool const verbose = cverb << (vbfd & vlevel1);
-
if (anon_obj)
start = sym.vma();
else
start = sym.filepos();
end = start + sym.size();
- if (!verbose)
+ if (!(cverb << (vbfd & vlevel1)))
return;
io_state state(cverb << (vbfd & vlevel1));
--
1.9.1

View File

@ -0,0 +1,581 @@
dnl AX_KERNEL_OPTION(option, action-if-found, action-if-not-found)
dnl see if autoconf.h defines the option
AC_DEFUN([AX_KERNEL_OPTION], [
SAVE_CFLAGS=$CFLAGS
CFLAGS="-I$KINC -O2 -D__KERNEL__"
AC_TRY_COMPILE( [#include <linux/config.h>],
[
#ifndef $1
break_me_hard(\\\);
#endif
],[$2],[$3],)
CFLAGS=$SAVE_CFLAGS
])
dnl Handle the 2.4 module inside module/
AC_DEFUN([AX_CONFIG_MODULE],
[
if test ! -f $KINC/linux/autoconf.h; then
AC_MSG_ERROR([no suitably configured kernel include tree found])
fi
dnl --- Get Linux kernel version and compile parameters ---
AC_SUBST(KVERS)
AC_MSG_CHECKING([for kernel version])
dnl it's like this to handle mandrake's fubar version.h - bug #471448
eval KVERS=`gcc -I$KINC -E -dM $KINC/linux/version.h | grep -w UTS_RELEASE | awk '{print $[]3}'`
AC_MSG_RESULT([$KVERS])
case "$KVERS" in
2.2.*|2.4.*) ;;
*) AC_MSG_ERROR([Unsupported kernel version])
esac
dnl Check for the minimal kernel version supported
AC_MSG_CHECKING([kernel version])
AX_KERNEL_VERSION(2, 2, 10, <=, AC_MSG_RESULT([ok]), AC_MSG_ERROR([check html documentation install section]))
dnl linux/spinlock.h added at some point in past
AC_MSG_CHECKING([for $KINC/linux/spinlock.h])
if test -f $KINC/linux/spinlock.h; then
EXTRA_CFLAGS_MODULE="$EXTRA_CFLAGS_MODULE -DHAVE_LINUX_SPINLOCK_HEADER"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
AC_MSG_CHECKING([for rtc_lock])
gcc -I$KINC -E $KINC/linux/mc146818rtc.h | grep rtc_lock >/dev/null
if test "$?" -eq 0; then
EXTRA_CFLAGS_MODULE="$EXTRA_CFLAGS_MODULE -DRTC_LOCK"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
arch="unknown"
AC_MSG_CHECKING(for x86-64 architecture)
AX_KERNEL_OPTION(CONFIG_X86_64, x8664=1, x8664=0)
AX_MSG_RESULT_YN($x8664)
BUILD_HAMMER=no
if test "$x8664" -eq 1; then
arch="x86"
BUILD_HAMMER=yes
else
AC_MSG_CHECKING(for x86 architecture)
AX_KERNEL_OPTION(CONFIG_X86, x86=1, x86=0)
AX_KERNEL_OPTION(CONFIG_X86_WP_WORKS_OK, x86=1, x86=$x86)
AX_MSG_RESULT_YN($x86)
test "$x86" = 1 && arch="x86"
if test "$arch" = "unknown"; then
AC_MSG_CHECKING(for ia64 architecture)
AX_KERNEL_OPTION(CONFIG_IA64, ia64=1, ia64=0)
AX_MSG_RESULT_YN($ia64)
test "$ia64" = 1 && arch="ia64"
fi
fi
AC_SUBST(BUILD_HAMMER)
test "$arch" = "unknown" && AC_MSG_ERROR(Unsupported architecture)
dnl check to see if kernel verion appropriate for arch
AC_MSG_CHECKING(arch/kernel version combination)
case "$arch" in
ia64)
AX_KERNEL_VERSION(2, 4, 18, <, AC_MSG_RESULT([ok]),
AC_MSG_ERROR([unsupported arch/kernel])) ;;
*) AC_MSG_RESULT([ok])
esac
dnl for now we do not support PREEMPT patch
AC_MSG_CHECKING([for preempt patch])
AX_KERNEL_OPTION(CONFIG_PREEMPT,preempt=1,preempt=0)
AX_MSG_RESULT_YN([$preempt])
test "$preempt" = 0 || AC_MSG_ERROR([unsupported kernel configuration : CONFIG_PREEMPT])
AC_SUBST(KINC)
MODINSTALLDIR=/lib/modules/$KVERS
OPROFILE_MODULE_ARCH=$arch
AC_SUBST(OPROFILE_MODULE_ARCH)
]
)
dnl AX_MSG_RESULT_YN(a)
dnl results "yes" iff a==1, "no" else
AC_DEFUN([AX_MSG_RESULT_YN], [x=no
test "x$1" = "x1" && x=yes
AC_MSG_RESULT($x)])
dnl AX_MALLOC_ATTRIBUTE - see if gcc will take __attribute__((malloc))
AC_DEFUN([AX_MALLOC_ATTRIBUTE],
[
AC_MSG_CHECKING([whether malloc attribute is understood])
SAVE_CFLAGS=$CFLAGS
CFLAGS="-Werror $CFLAGS"
AC_TRY_COMPILE(,[
void monkey() __attribute__((malloc));
],AC_MSG_RESULT([yes]); AC_DEFINE(MALLOC_ATTRIBUTE_OK, 1, [whether malloc attribute is understood]), AC_MSG_RESULT([no]))
CFLAGS=$SAVE_CFLAGS
]
)
dnl builtin_expect is used in module we can't add that in config.h
AC_DEFUN([AX_BUILTIN_EXPECT],
[
AC_MSG_CHECKING([whether __builtin_expect is understood])
SAVE_CFLAGS=$CFLAGS
CFLAGS="-Werror $CFLAGS"
AC_TRY_LINK(,[
int i;
if (__builtin_expect(i, 0)) { }
],
AC_MSG_RESULT([yes]); EXTRA_CFLAGS_MODULE="$EXTRA_CFLAGS_MODULE -DEXPECT_OK",
AC_MSG_RESULT([no]);)
CFLAGS=$SAVE_CFLAGS
]
)
dnl AX_EXTRA_DIRS - Let user specify extra dirs for include/libs
AC_DEFUN([AX_EXTRA_DIRS],
[
AC_ARG_WITH(extra-includes,
[ --with-extra-includes=DIR add extra include paths],
use_extra_includes="$withval",
use_extra_includes=NO
)
if test -n "$use_extra_includes" && \
test "$use_extra_includes" != "NO"; then
ac_save_ifs=$IFS
IFS=':'
for dir in $use_extra_includes; do
extra_includes="$extra_includes -I$dir"
done
IFS=$ac_save_ifs
CPPFLAGS="$CPPFLAGS $extra_includes"
fi
AC_ARG_WITH(extra-libs,
[ --with-extra-libs=DIR add extra library paths],
use_extra_libs=$withval,
use_extra_libs=NO
)
if test -n "$use_extra_libs" && \
test "$use_extra_libs" != "NO"; then
ac_save_ifs=$IFS
IFS=':'
for dir in $use_extra_libs; do
extra_libraries="$extra_libraries -L$dir"
done
IFS=$ac_save_ifs
LDFLAGS="$LDFLAGS $extra_libraries"
fi
]
)
dnl AX_POPT_CONST - check popt prototype
AC_DEFUN([AX_POPT_CONST],
[
AC_MSG_CHECKING([popt prototype])
SAVE_CXXFLAGS=$CXXFLAGS
CXXFLAGS="-Werror $CXXFLAGS"
AC_TRY_COMPILE([#include <popt.h>],
[
int c; char **v;
poptGetContext(0, c, v, 0, 0);
],
AC_MSG_RESULT([takes char **]);,
AC_MSG_RESULT([takes const char **]); AC_DEFINE(CONST_POPT, 1, [whether popt prototype takes a const char **]))
CXXFLAGS="$SAVE_CXXFLAGS"
]
)
dnl AX_CHECK_SSTREAM - check if local sstream is needed to compile OK
AC_DEFUN([AX_CHECK_SSTREAM],
[
AC_MSG_CHECKING([whether to use included sstream])
AC_TRY_COMPILE([#include <sstream>], [],
AC_MSG_RESULT([no]);,
AC_MSG_RESULT([yes]); OP_CXXFLAGS="$OP_CXXFLAGS -I\${top_srcdir}/include")
]
)
dnl AX_CHECK_TYPEDEF(typedef_name, type, action-if-true, action-if-false)
dnl exec action-if-true if typedef_name is a typedef to type else exec
dnl action-if-false
dnl currently work only with type typedef'ed in stddef.h
AC_DEFUN([AX_CHECK_TYPEDEF], [
dnl AC_LANG_PUSH(C) not in autoconf 2.13
AC_LANG_SAVE
AC_LANG_C
SAVE_CFLAGS=$CFLAGS
CFLAGS="-Werror $CFLAGS"
AC_TRY_COMPILE(
[
#include <stddef.h>
],
[
typedef void (*fct1)($1);
typedef void (*fct2)($2);
fct1 f1 = 0;
fct2 f2 = 0;
if (f1 == f2) {}
],
[$3],[$4])
CFLAGS=$SAVE_CFLAGS
AC_LANG_RESTORE
])
dnl AX_TYPEDEFED_NAME(typedef_name, candidate_list, var_name)
dnl set var_name to the typedef name of $1 which must be in canditate_list
dnl else produce a fatal error
AC_DEFUN([AX_TYPEDEFED_NAME], [
AC_MSG_CHECKING([type of $1])
for f in $2; do
AX_CHECK_TYPEDEF($1, $f, $3="$f", $3="")
if test -n "${$3}"; then
break
fi
done
if test -n "${$3}"; then
AC_MSG_RESULT([${$3}])
else
AC_MSG_ERROR([not found])
fi
])
dnl find a binary in the path
AC_DEFUN([QT_FIND_PATH],
[
AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(qt_cv_path_$1,
[
qt_cv_path_$1="NONE"
if test -n "$$2"; then
qt_cv_path_$1="$$2";
else
dirs="$3"
qt_save_IFS=$IFS
IFS=':'
for dir in $PATH; do
dirs="$dirs $dir"
done
IFS=$qt_save_IFS
for dir in $dirs; do
if test -x "$dir/$1"; then
if test -n "$5"; then
evalstr="$dir/$1 $5 2>&1 "
if eval $evalstr; then
qt_cv_path_$1="$dir/$1"
break
fi
else
qt_cv_path_$1="$dir/$1"
break
fi
fi
done
fi
])
if test -z "$qt_cv_path_$1" || test "$qt_cv_path_$1" = "NONE"; then
AC_MSG_RESULT(not found)
$4
else
AC_MSG_RESULT($qt_cv_path_$1)
$2=$qt_cv_path_$1
fi
])
dnl Find the uic compiler on the path or in qt_cv_dir
AC_DEFUN([QT_FIND_UIC],
[
QT_FIND_PATH(uic, ac_uic, $qt_cv_dir/bin)
if test -z "$ac_uic" -a "$FATAL" = 1; then
AC_MSG_ERROR([uic binary not found in \$PATH or $qt_cv_dir/bin !])
fi
])
dnl Find the right moc in path/qt_cv_dir
AC_DEFUN([QT_FIND_MOC],
[
QT_FIND_PATH(moc2, ac_moc2, $qt_cv_dir/bin)
QT_FIND_PATH(moc, ac_moc1, $qt_cv_dir/bin)
if test -n "$ac_moc1" -a -n "$ac_moc2"; then
dnl found both. Prefer Qt3's if it exists else moc2
$ac_moc1 -v 2>&1 | grep "Qt 3" >/dev/null
if test "$?" = 0; then
ac_moc=$ac_moc1;
else
ac_moc=$ac_moc2;
fi
else
if test -n "$ac_moc1"; then
ac_moc=$ac_moc1;
else
ac_moc=$ac_moc2;
fi
fi
if test -z "$ac_moc" -a "$FATAL" = 1; then
AC_MSG_ERROR([moc binary not found in \$PATH or $qt_cv_dir/bin !])
fi
])
dnl check a particular libname
AC_DEFUN([QT_TRY_LINK],
[
SAVE_LIBS="$LIBS"
LIBS="$LIBS $1"
AC_TRY_LINK([
#include <qglobal.h>
#include <qstring.h>
],
[
QString s("mangle_failure");
#if (QT_VERSION < 221)
break_me_(\\\);
#endif
],
qt_cv_libname=$1,
)
LIBS="$SAVE_LIBS"
])
dnl check we can do a compile
AC_DEFUN([QT_CHECK_COMPILE],
[
AC_MSG_CHECKING([for Qt library name])
AC_CACHE_VAL(qt_cv_libname,
[
AC_LANG_CPLUSPLUS
SAVE_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CXXFLAGS $QT_INCLUDES $QT_LDFLAGS"
for libname in -lqt-mt -lqt3 -lqt2 -lqt;
do
QT_TRY_LINK($libname)
if test -n "$qt_cv_libname"; then
break;
fi
done
CXXFLAGS=$SAVE_CXXFLAGS
])
if test -z "$qt_cv_libname"; then
AC_MSG_RESULT([failed])
if test "$FATAL" = 1 ; then
AC_MSG_ERROR([Cannot compile a simple Qt executable. Check you have the right \$QTDIR !])
fi
else
AC_MSG_RESULT([$qt_cv_libname])
fi
])
dnl get Qt version we're using
AC_DEFUN([QT_GET_VERSION],
[
AC_CACHE_CHECK([Qt version],lyx_cv_qtversion,
[
AC_LANG_CPLUSPLUS
SAVE_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $QT_INCLUDES"
cat > conftest.$ac_ext <<EOF
#line __oline__ "configure"
#include "confdefs.h"
#include <qglobal.h>
"%%%"QT_VERSION_STR"%%%"
EOF
lyx_cv_qtversion=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 | \
grep '^"%%%"' 2>/dev/null | \
sed -e 's/"%%%"//g' -e 's/"//g'`
rm -f conftest.$ac_ext
CPPFLAGS=$SAVE_CPPFLAGS
])
QT_VERSION=$lyx_cv_qtversion
AC_SUBST(QT_VERSION)
])
dnl start here
AC_DEFUN([QT_DO_IT_ALL],
[
dnl Please leave this alone. I use this file in
dnl oprofile.
FATAL=0
AC_ARG_WITH(qt-dir, [ --with-qt-dir where the root of Qt is installed ],
[ qt_cv_dir=`eval echo "$withval"/` ])
AC_ARG_WITH(qt-includes, [ --with-qt-includes where the Qt includes are. ],
[ qt_cv_includes=`eval echo "$withval"` ])
AC_ARG_WITH(qt-libraries, [ --with-qt-libraries where the Qt library is installed.],
[ qt_cv_libraries=`eval echo "$withval"` ])
dnl pay attention to $QTDIR unless overridden
if test -z "$qt_cv_dir"; then
qt_cv_dir=$QTDIR
fi
dnl derive inc/lib if needed
if test -n "$qt_cv_dir"; then
if test -z "$qt_cv_includes"; then
qt_cv_includes=$qt_cv_dir/include
fi
if test -z "$qt_cv_libraries"; then
qt_cv_libraries=$qt_cv_dir/lib
fi
fi
dnl flags for compilation
QT_INCLUDES=
QT_LDFLAGS=
if test -n "$qt_cv_includes"; then
QT_INCLUDES="-I$qt_cv_includes"
fi
if test -n "$qt_cv_libraries"; then
QT_LDFLAGS="-L$qt_cv_libraries"
fi
AC_SUBST(QT_INCLUDES)
AC_SUBST(QT_LDFLAGS)
QT_FIND_MOC
MOC=$ac_moc
AC_SUBST(MOC)
QT_FIND_UIC
UIC=$ac_uic
AC_SUBST(UIC)
QT_CHECK_COMPILE
QT_LIB=$qt_cv_libname;
AC_SUBST(QT_LIB)
if test -n "$qt_cv_libname"; then
QT_GET_VERSION
fi
])
dnl AX_CXXFLAGS_OPTIONS(var-name, option)
dnl add option to var-name if $CXX support it.
AC_DEFUN([AX_CHECK_PRECOMPILED_HEADER], [
AC_MSG_CHECKING([whether ${CXX} support precompiled header])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
SAVE_CXXFLAGS=$CXXFLAGS
dnl we consider than if -Winvalid-pch is accepted pch will works ...
CXXFLAGS=-Winvalid-pch
dnl but we don't want -Winvalid-pch else compilation will fail due -Werror and
dnl the fact than some pch will be invalid for the given compilation option
AC_TRY_COMPILE(,[;],AC_MSG_RESULT([yes]); $1="${$1} -include bits/stdc++.h", AC_MSG_RESULT([no]))
CXXFLAGS=$SAVE_CXXFLAGS
AC_LANG_RESTORE
])
dnl AX_CHECK_DOCBOOK
AC_DEFUN([AX_CHECK_DOCBOOK], [
# It's just rude to go over the net to build
XSLTPROC_FLAGS=--nonet
DOCBOOK_ROOT=
if test ! -f /etc/xml/catalog; then
for i in /usr/share/sgml/docbook/stylesheet/xsl/nwalsh /usr/share/sgml/docbook/xsl-stylesheets/;
do
if test -d "$i"; then
DOCBOOK_ROOT=$i
fi
done
# Last resort - try net
if test -z "$DOCBOOK_ROOT"; then
XSLTPROC_FLAGS=
fi
else
XML_CATALOG=/etc/xml/catalog
CAT_ENTRY_START='<!--'
CAT_ENTRY_END='-->'
fi
AC_CHECK_PROG(XSLTPROC,xsltproc,xsltproc,)
XSLTPROC_WORKS=no
if test -n "$XSLTPROC"; then
AC_MSG_CHECKING([whether xsltproc works])
if test -n "$XML_CATALOG"; then
DB_FILE="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"
else
DB_FILE="$DOCBOOK_ROOT/docbook.xsl"
fi
$XSLTPROC $XSLTPROC_FLAGS $DB_FILE >/dev/null 2>&1 << END
<?xml version="1.0" encoding='ISO-8859-1'?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<book id="test">
</book>
END
if test "$?" = 0; then
XSLTPROC_WORKS=yes
fi
AC_MSG_RESULT($XSLTPROC_WORKS)
fi
AM_CONDITIONAL(have_xsltproc, test "$XSLTPROC_WORKS" = "yes")
AC_SUBST(XML_CATALOG)
AC_SUBST(XSLTPROC_FLAGS)
AC_SUBST(DOCBOOK_ROOT)
AC_SUBST(CAT_ENTRY_START)
AC_SUBST(CAT_ENTRY_END)
])
dnl AX_CFLAGS_OPTIONS(var-name, option)
dnl add option to var-name if $CC support it.
AC_DEFUN([AX_CFLAGS_OPTION], [
AC_MSG_CHECKING([whether ${CC} $2 is understood])
AC_LANG_SAVE
AC_LANG_C
SAVE_CFLAGS=$CFLAGS
CFLAGS=$2
AC_TRY_COMPILE(,[;],AC_MSG_RESULT([yes]); $1="${$1} $2",AC_MSG_RESULT([no]))
CFLAGS=$SAVE_CFLAGS
AC_LANG_RESTORE
])
dnl AX_CXXFLAGS_OPTIONS(var-name, option)
dnl add option to var-name if $CXX support it.
AC_DEFUN([AX_CXXFLAGS_OPTION], [
AC_MSG_CHECKING([whether ${CXX} $2 is understood])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
SAVE_CXXFLAGS=$CXXFLAGS
CXXFLAGS=$2
AC_TRY_COMPILE(,[;],AC_MSG_RESULT([yes]); $1="${$1} $2",AC_MSG_RESULT([no]))
CXXFLAGS=$SAVE_CXXFLAGS
AC_LANG_RESTORE
])
dnl AX_COPY_IF_CHANGE(source, dest)
dnl copy source to dest if they don't compare equally or if dest doesn't exist
AC_DEFUN([AX_COPY_IF_CHANGE], [
if test -r $2; then
if cmp $1 $2 > /dev/null; then
echo $2 is unchanged
else
cp -f $1 $2
fi
else
cp -f $1 $2
fi
])

View File

@ -0,0 +1,12 @@
oprofile doesn't want GNU-levels of automake strictness so tell it to be "foreign".
Upstream-Status: Pending
Signed-off-by: Ross Burton <ross.burton@intel.com>
diff --git a/configure.ac b/configure.ac
index 5740585..cf6c316 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16 +16 @@ AC_CONFIG_SRCDIR([libop/op_config.h])
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([foreign])

View File

@ -0,0 +1,46 @@
Fix glibc-isms so that oprofile builds with musl.
Patch taken from openwrt (https://github.com/openwrt-mirror/openwrt/blob/master/package/devel/oprofile/patches/100-musl.patch)
Upstream-Status: Pending
Signed-off-by: Ross Burton <ross.burton@intel.com>
--- a/pe_profiling/operf.cpp
+++ b/pe_profiling/operf.cpp
@@ -857,11 +857,14 @@ static int __delete_old_previous_sample_
int tflag __attribute__((unused)),
struct FTW *ftwbuf __attribute__((unused)))
{
+ int err;
+
if (remove(fpath)) {
+ err = errno;
perror("sample data removal error");
- return FTW_STOP;
+ return err;
} else {
- return FTW_CONTINUE;
+ return 0;
}
}
@@ -896,7 +899,7 @@ static void convert_sample_data(void)
return;
if (!operf_options::append) {
- int flags = FTW_DEPTH | FTW_ACTIONRETVAL;
+ int flags = FTW_DEPTH;
errno = 0;
if (nftw(previous_sampledir.c_str(), __delete_old_previous_sample_data, 32, flags) !=0 &&
errno != ENOENT) {
--- a/libop/op_events.c
+++ b/libop/op_events.c
@@ -83,7 +83,7 @@ static int parse_hex(char const * str)
static u64 parse_long_hex(char const * str)
{
u64 value;
- if (sscanf(str, "%Lx", &value) != 1)
+ if (sscanf(str, "0x%llx", &value) != 1)
parse_error("expected long hexadecimal value");
fflush(stderr);

View File

@ -0,0 +1,98 @@
Prevent running check tests on host if cross compiling
This patch enables running the 'make check' tests on the target
in a cross-compiled environment. If not cross-compiling, then 'make
check' builds and executes the tests; no change from this patch.
In a cross-compiling environment, the make variable CROSS_COMPILE is
set which bypasses assiging tests to the makekfile variable TESTS.
Since TESTS is empty, the 'make check' process never tries to run the
tests on the hosts. On the target, the tests must be run manually.
Also, in the libutil++ tests, a makefile variable SRCDIR is passed into
the compilation phase, pointing to the runtime location of the test
'file-manip-tests'. The mechanism used for a host test, based on
'topdir' doesn't work. Instead, if CROSS_COMPILE is set, the
makefile takes the path of SRCDIR from the build environment and not
from an expression based on the host path 'topdir'.
Upstream-Status: Pending
Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
diff --git a/configure.ac b/configure.ac
index 41ece64..ce5a16f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -392,6 +392,7 @@ AC_ARG_ENABLE(account-check,
enable_account_check=$enableval, enable_account_check=yes)
AM_CONDITIONAL(CHECK_ACCOUNT, test "x$enable_account_check" = "xyes")
+AM_CONDITIONAL(CROSS_COMPILE, test "x$cross_compiling" = "xyes")
AC_SUBST(OP_CFLAGS)
AC_SUBST(OP_CXXFLAGS)
diff --git a/libdb/tests/Makefile.am b/libdb/tests/Makefile.am
index 8a69003..d820090 100644
--- a/libdb/tests/Makefile.am
+++ b/libdb/tests/Makefile.am
@@ -13,4 +13,6 @@ check_PROGRAMS = db_test
db_test_SOURCES = db_test.c
db_test_LDADD = ../libodb.a ../../libutil/libutil.a
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif
diff --git a/libop/tests/Makefile.am b/libop/tests/Makefile.am
index 8a79eb5..6d417c4 100644
--- a/libop/tests/Makefile.am
+++ b/libop/tests/Makefile.am
@@ -33,4 +33,6 @@ load_events_files_tests_LDADD = ${COMMON_LIBS}
mangle_tests_SOURCES = mangle_tests.c
mangle_tests_LDADD = ${COMMON_LIBS}
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS} utf8_checker.sh
+endif
diff --git a/libregex/tests/Makefile.am b/libregex/tests/Makefile.am
index 6f19838..1d176f9 100644
--- a/libregex/tests/Makefile.am
+++ b/libregex/tests/Makefile.am
@@ -18,4 +18,6 @@ java_test_LDADD = \
EXTRA_DIST = mangled-name.in
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif
diff --git a/libutil++/tests/Makefile.am b/libutil++/tests/Makefile.am
index 51af031..a01ea2d 100644
--- a/libutil++/tests/Makefile.am
+++ b/libutil++/tests/Makefile.am
@@ -1,7 +1,9 @@
REALPATH= readlink -f
+if ! CROSS_COMPILE
SRCDIR := $(shell $(REALPATH) $(topdir)/libutil++/tests/ )
+endif
AM_CPPFLAGS = \
-I ${top_srcdir}/libutil++ -D SRCDIR="\"$(SRCDIR)/\"" @OP_CPPFLAGS@
@@ -46,4 +48,6 @@ cached_value_tests_LDADD = ${COMMON_LIBS}
utility_tests_SOURCES = utility_tests.cpp
utility_tests_LDADD = ${COMMON_LIBS}
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif
diff --git a/libutil/tests/Makefile.am b/libutil/tests/Makefile.am
index dfcd6ec..e8831b5 100644
--- a/libutil/tests/Makefile.am
+++ b/libutil/tests/Makefile.am
@@ -12,4 +12,6 @@ file_tests_LDADD = ../libutil.a
string_tests_SOURCES = string_tests.c
string_tests_LDADD = ../libutil.a
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif

View File

@ -0,0 +1,44 @@
oprofile: Determine the root home directory dynamically
This commit detects the root home directory dynamically with changes to
the oprofile gui app source.
The commit replaces an earlier fix that detected and adjusted a
'non-standard' root home directory at build time. The advantage of this
patch is that the oprofile tools are adjusted to the current run-time
path to ~root, not the build time path.
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
Index: oprofile-1.0.0/doc/oprofile.html
===================================================================
--- oprofile-1.0.0.orig/doc/oprofile.html 2014-11-03 17:55:31.511034857 +0000
+++ oprofile-1.0.0/doc/oprofile.html 2014-11-03 17:57:26.415037988 +0000
@@ -1563,8 +1563,8 @@
<span class="emphasis"><em>must</em></span> stop it in a controlled manner in order to process
the profile data it has collected. Use <code class="code">kill -SIGINT &lt;operf-PID&gt;</code>
for this purpose. It is recommended that when running <span class="command"><strong>operf</strong></span>
- with this option, your current working directory should be <code class="filename">/root</code> or a subdirectory
- of <code class="filename">/root</code> to avoid storing sample data files in locations accessible by regular users.
+ with this option, your current working directory should be <code class="filename">~root</code> or a subdirectory
+ of <code class="filename">~root</code> to avoid storing sample data files in locations accessible by regular users.
</p>
</dd>
<dt>
Index: oprofile-1.0.0/doc/oprofile.xml
===================================================================
--- oprofile-1.0.0.orig/doc/oprofile.xml 2014-11-03 17:55:31.515034857 +0000
+++ oprofile-1.0.0/doc/oprofile.xml 2014-11-03 17:58:03.719039005 +0000
@@ -654,8 +654,8 @@
<emphasis>must</emphasis> stop it in a controlled manner in order to process
the profile data it has collected. Use <code>kill -SIGINT &lt;operf-PID&gt;</code>
for this purpose. It is recommended that when running <command>operf</command>
- with this option, your current working directory should be <filename>/root</filename> or a subdirectory
- of <filename>/root</filename> to avoid storing sample data files in locations accessible by regular users.
+ with this option, your current working directory should be <filename>~root</filename> or a subdirectory
+ of <filename>~root</filename> to avoid storing sample data files in locations accessible by regular users.
</para></listitem>
</varlistentry>
<varlistentry>

View File

@ -0,0 +1,19 @@
#!/bin/sh
saved_dir=$PWD
for dir in */tests ; do
cd $dir
for atest in * ; do
if [ \( -x $atest \) -a \( -f $atest \) ] ; then
./$atest > ${atest}.stdout 2> ${atest}.stderr
if [ $? = 0 ] ; then
echo "PASS: $dir $atest"
rm ${atest}.stdout ${atest}.stderr
else
echo "FAIL: ${dir}/${atest}"
fi
fi
done
cd $saved_dir
done

View File

@ -0,0 +1,10 @@
require oprofile.inc
DEPENDS += "virtual/kernel"
DEPENDS_append_powerpc64 = " libpfm4"
SRC_URI[md5sum] = "248c4c069f9476f427fa7195563f9867"
SRC_URI[sha256sum] = "cf759a6de1a6033d5dfc93bda129a9f2e128aecc4238cc657feb0801d1b0366c"
S = "${WORKDIR}/oprofile-${PV}"