dev-util/dwarves: revbump to -r1 to use newer elfutils
authorJason A. Donenfeld <zx2c4@gentoo.org>
Mon, 16 Dec 2019 20:55:20 +0000 (21:55 +0100)
committerJason A. Donenfeld <zx2c4@gentoo.org>
Mon, 16 Dec 2019 21:03:10 +0000 (22:03 +0100)
Currently dwarves is holding back elfutils in the tree, due to a library
reorganization, so we patch dwarves in order to support the latest
elfutils.

Package-Manager: Portage-2.3.82, Repoman-2.3.20
Signed-off-by: Jason A. Donenfeld <zx2c4@gentoo.org>
dev-util/dwarves/dwarves-1.16-r1.ebuild [new file with mode: 0644]
dev-util/dwarves/files/dwarves-1.16-no-libebl.patch [new file with mode: 0644]

diff --git a/dev-util/dwarves/dwarves-1.16-r1.ebuild b/dev-util/dwarves/dwarves-1.16-r1.ebuild
new file mode 100644 (file)
index 0000000..c58ef0f
--- /dev/null
@@ -0,0 +1,46 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python3_6 )
+inherit multilib cmake-utils python-single-r1
+
+DESCRIPTION="pahole (Poke-a-Hole) and other DWARF2 utilities"
+HOMEPAGE="https://git.kernel.org/cgit/devel/pahole/pahole.git/"
+
+LICENSE="GPL-2" # only
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="debug"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+       >=dev-libs/elfutils-0.178
+       sys-libs/zlib"
+DEPEND="${RDEPEND}"
+
+if [[ ${PV//_p} == ${PV} ]]; then
+       SRC_URI="http://fedorapeople.org/~acme/dwarves/${P}.tar.xz"
+       S=${WORKDIR}
+else
+       SRC_URI="https://dev.gentoo.org/~zzam/${PN}/${P}.tar.xz"
+fi
+
+DOCS=( README README.ctracer NEWS )
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-1.10-python-import.patch
+       "${FILESDIR}"/${PN}-1.16-no-libebl.patch
+)
+
+src_configure() {
+       local mycmakeargs=( "-D__LIB=$(get_libdir)" )
+       cmake-utils_src_configure
+}
+
+src_test() { :; }
+
+src_install() {
+       cmake-utils_src_install
+}
diff --git a/dev-util/dwarves/files/dwarves-1.16-no-libebl.patch b/dev-util/dwarves/files/dwarves-1.16-no-libebl.patch
new file mode 100644 (file)
index 0000000..78c6a4e
--- /dev/null
@@ -0,0 +1,89 @@
+From fb56a460e23f44a4225d4f507b9ec7cf0790c75b Mon Sep 17 00:00:00 2001
+From: "Jason A. Donenfeld" <Jason@zx2c4.com>
+Date: Mon, 16 Dec 2019 21:51:45 +0100
+Subject: [PATCH] cmake: libebl was merged into libdw
+
+Since elfutils 178, libebl is now part of libdw, so searching for libebl
+always fails. Simply remove it from the search.
+
+Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
+---
+ cmake/modules/FindDWARF.cmake | 23 +++++++----------------
+ 1 file changed, 7 insertions(+), 16 deletions(-)
+
+diff --git a/cmake/modules/FindDWARF.cmake b/cmake/modules/FindDWARF.cmake
+index f4feec4..027d06e 100644
+--- a/cmake/modules/FindDWARF.cmake
++++ b/cmake/modules/FindDWARF.cmake
+@@ -37,14 +37,9 @@ find_library(ELF_LIBRARY
+       PATHS /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64 ~/usr/local/lib ~/usr/local/lib64
+ )
+-find_library(EBL_LIBRARY
+-      NAMES ebl
+-      PATHS /usr/lib /usr/local/lib /usr/lib64 /usr/local/lib64 ~/usr/local/lib ~/usr/local/lib64
+-)
+-
+-if (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY AND EBL_LIBRARY)
++if (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY)
+       set(DWARF_FOUND TRUE)
+-      set(DWARF_LIBRARIES ${DWARF_LIBRARY} ${ELF_LIBRARY} ${EBL_LIBRARY})
++      set(DWARF_LIBRARIES ${DWARF_LIBRARY} ${ELF_LIBRARY})
+       set(CMAKE_REQUIRED_LIBRARIES ${DWARF_LIBRARIES})
+       # check if libdw have the dwfl_module_build_id routine, i.e. if it supports the buildid
+@@ -52,10 +47,10 @@ if (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY AN
+       # in distributions such as fedora). We do it against libelf because, IIRC, some distros
+       # include libdw linked statically into libelf.
+       check_library_exists(elf dwfl_module_build_id "" HAVE_DWFL_MODULE_BUILD_ID)
+-else (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY AND EBL_LIBRARY)
++else (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY)
+       set(DWARF_FOUND FALSE)
+       set(DWARF_LIBRARIES)
+-endif (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY AND EBL_LIBRARY)
++endif (DWARF_INCLUDE_DIR AND LIBDW_INCLUDE_DIR AND DWARF_LIBRARY AND ELF_LIBRARY)
+ if (DWARF_FOUND)
+       if (NOT DWARF_FIND_QUIETLY)
+@@ -63,7 +58,6 @@ if (DWARF_FOUND)
+               message(STATUS "Found elfutils/libdw.h header: ${LIBDW_INCLUDE_DIR}")
+               message(STATUS "Found libdw library: ${DWARF_LIBRARY}")
+               message(STATUS "Found libelf library: ${ELF_LIBRARY}")
+-              message(STATUS "Found libebl library: ${EBL_LIBRARY}")
+       endif (NOT DWARF_FIND_QUIETLY)
+ else (DWARF_FOUND)
+       if (DWARF_FIND_REQUIRED)
+@@ -73,9 +67,9 @@ else (DWARF_FOUND)
+               find_path(FEDORA fedora-release /etc)
+               find_path(REDHAT redhat-release /etc)
+               if (FEDORA OR REDHAT)
+-                      if (NOT DWARF_INCLUDE_DIR OR NOT LIBDW_INCLUDE_DIR OR NOT EBL_LIBRARY)
++                      if (NOT DWARF_INCLUDE_DIR OR NOT LIBDW_INCLUDE_DIR)
+                               message(STATUS "Please install the elfutils-devel package")
+-                      endif (NOT DWARF_INCLUDE_DIR OR NOT LIBDW_INCLUDE_DIR OR NOT EBL_LIBRARY)
++                      endif (NOT DWARF_INCLUDE_DIR OR NOT LIBDW_INCLUDE_DIR)
+                       if (NOT DWARF_LIBRARY)
+                               message(STATUS "Please install the elfutils-libs package")
+                       endif (NOT DWARF_LIBRARY)
+@@ -89,9 +83,6 @@ else (DWARF_FOUND)
+                       if (NOT LIBDW_INCLUDE_DIR)
+                               message(STATUS "Could NOT find libdw include dir")
+                       endif (NOT LIBDW_INCLUDE_DIR)
+-                      if (NOT EBL_LIBRARY)
+-                              message(STATUS "Could NOT find libebl library")
+-                      endif (NOT EBL_LIBRARY)
+                       if (NOT DWARF_LIBRARY)
+                               message(STATUS "Could NOT find libdw library")
+                       endif (NOT DWARF_LIBRARY)
+@@ -103,7 +94,7 @@ else (DWARF_FOUND)
+       endif (DWARF_FIND_REQUIRED)
+ endif (DWARF_FOUND)
+-mark_as_advanced(DWARF_INCLUDE_DIR LIBDW_INCLUDE_DIR DWARF_LIBRARY ELF_LIBRARY EBL_LIBRARY)
++mark_as_advanced(DWARF_INCLUDE_DIR LIBDW_INCLUDE_DIR DWARF_LIBRARY ELF_LIBRARY)
+ include_directories(${DWARF_INCLUDE_DIR} ${LIBDW_INCLUDE_DIR})
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
+-- 
+2.24.1
+