From c3759ec007c6cda0a7c1100247d455f33a2a1314 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Sat, 29 Jul 2017 18:34:08 +0100 Subject: dev-util/include-what-you-use: worjaround lookup failure, bug #625972 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit libclangDriver treats path to include files as stable relative to clang binary: when we run /usr/lib64/llvm/4/bin/clang it resolves the following way: "/usr/lib64/llvm/4/bin/" + "../../../../lib/clang/4.0.1/include/stddef.h" Unfortunately when someone reuses clang driver to build a new tool heared lookup breaks if final tool resides in "/usr/bin": "/usr/bin/" + "../../../../lib/clang/4.0.1/include/stddef.h" causing file open failures in case of include-what-you-use: /usr/include/wchar.h:39:11: fatal error: 'stdarg.h' file not found # include ^~~~~~~~~~ The workaround is to install executable to the same directory as clang itself. Reported-by: MichaƂ Bartoszkiewicz Bug: https://bugs.gentoo.org/625972 Package-Manager: Portage-2.3.6, Repoman-2.3.3 --- .../include-what-you-use-4.0-r1.ebuild | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 dev-util/include-what-you-use/include-what-you-use-4.0-r1.ebuild (limited to 'dev-util/include-what-you-use') diff --git a/dev-util/include-what-you-use/include-what-you-use-4.0-r1.ebuild b/dev-util/include-what-you-use/include-what-you-use-4.0-r1.ebuild new file mode 100644 index 000000000000..4876be740986 --- /dev/null +++ b/dev-util/include-what-you-use/include-what-you-use-4.0-r1.ebuild @@ -0,0 +1,56 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +PYTHON_COMPAT=( python2_7 python3_{4,5,6} ) + +inherit cmake-utils flag-o-matic llvm python-single-r1 + +DESCRIPTION="Find unused include directives in C/C++ programs" +HOMEPAGE="https://include-what-you-use.org/" +SRC_URI="https://github.com/${PN}/${PN}/archive/clang_${PV}.tar.gz -> ${P}.src.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +RDEPEND="sys-devel/llvm:4 + sys-devel/clang:4 + ${PYTHON_DEPS} +" +DEPEND="${RDEPEND}" + +REQUIRED_USE=${PYTHON_REQUIRED_USE} + +S=${WORKDIR}/${PN}-clang_${PV} + +pkg_setup() { + llvm_pkg_setup + python-single-r1_pkg_setup +} + +src_prepare() { + python_fix_shebang . + default +} + +src_configure() { + local mycmakeargs=( + -DIWYU_LLVM_INCLUDE_PATH=$(llvm-config --includedir) + -DIWYU_LLVM_LIB_PATH=$(llvm-config --libdir) + + # Note [llvm install path] + # Unfortunately all binaries using clang driver + # have to reside at the same path depth as + # 'clang' binary itself. See bug #625972 + # Thus as a hack we install it to the same directory + # as llvm/clang itself. + -DCMAKE_INSTALL_PREFIX="$(get_llvm_prefix)" + ) + cmake-utils_src_configure +} + +src_test() { + "${EPYTHON}" run_iwyu_tests.py +} -- cgit v1.2.3-65-gdbad