diff options
author | Andreas Sturmlechner <andreas.sturmlechner@gmail.com> | 2015-12-31 12:04:29 +0100 |
---|---|---|
committer | Michael Palimaka <kensington@gentoo.org> | 2016-01-14 01:46:30 +1100 |
commit | 36045f8ebb08d9578f62520bf6d37f26d39bad1d (patch) | |
tree | e6a07eec1f42735750bd952b4ac1b2b1bc792afb /media-gfx/exiv2 | |
parent | sys-auth/consolekit: Add at_console compat hook only on linux (diff) | |
download | gentoo-36045f8ebb08d9578f62520bf6d37f26d39bad1d.tar.gz gentoo-36045f8ebb08d9578f62520bf6d37f26d39bad1d.tar.bz2 gentoo-36045f8ebb08d9578f62520bf6d37f26d39bad1d.zip |
media-gfx/exiv2: Add upstream cmake patches to fix visibility
Prevent random segfaults in applications due to exiv2 leaking symbols.
Package-Manager: portage-2.2.24
Diffstat (limited to 'media-gfx/exiv2')
-rw-r--r-- | media-gfx/exiv2/exiv2-0.25-r2.ebuild | 128 | ||||
-rw-r--r-- | media-gfx/exiv2/files/exiv2-0.25-fvisibility-hidden.patch | 19 | ||||
-rw-r--r-- | media-gfx/exiv2/files/exiv2-0.25-hide-symbols.patch | 97 |
3 files changed, 244 insertions, 0 deletions
diff --git a/media-gfx/exiv2/exiv2-0.25-r2.ebuild b/media-gfx/exiv2/exiv2-0.25-r2.ebuild new file mode 100644 index 000000000000..90f52ed4b70f --- /dev/null +++ b/media-gfx/exiv2/exiv2-0.25-r2.ebuild @@ -0,0 +1,128 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +PYTHON_COMPAT=( python{2_7,3_3,3_4} ) + +inherit eutils cmake-multilib python-any-r1 + +DESCRIPTION="EXIF, IPTC and XMP metadata C++ library and command line utility" +HOMEPAGE="http://www.exiv2.org/" +SRC_URI="http://www.exiv2.org/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0/14" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x64-solaris ~x86-solaris" +IUSE_LINGUAS="bs de es fi fr gl ms pl pt ru sk sv ug uk vi" +IUSE="doc examples nls png webready xmp $(printf 'linguas_%s ' ${IUSE_LINGUAS})" + +RDEPEND=" + >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] + nls? ( >=virtual/libintl-0-r1[${MULTILIB_USEDEP}] ) + png? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] ) + webready? ( + net-libs/libssh[${MULTILIB_USEDEP}] + net-misc/curl[${MULTILIB_USEDEP}] + ) + xmp? ( >=dev-libs/expat-2.1.0-r3[${MULTILIB_USEDEP}] ) +" + +DEPEND="${RDEPEND} + doc? ( + app-doc/doxygen + dev-libs/libxslt + virtual/pkgconfig + media-gfx/graphviz + ${PYTHON_DEPS} + ) + nls? ( sys-devel/gettext ) +" + +DOCS=( README doc/ChangeLog doc/cmd.txt ) + +PATCHES=( + "${FILESDIR}/${PN}-0.25-fix-install-dirs.patch" + "${FILESDIR}/${PN}-0.25-fix-without-zlib.patch" + "${FILESDIR}/${PN}-0.25-hide-symbols.patch" + "${FILESDIR}/${PN}-0.25-fvisibility-hidden.patch" + # TODO: Take to upstream + "${FILESDIR}/${PN}-0.25-fix-docs.patch" + "${FILESDIR}/${PN}-0.25-tools-optional.patch" +) + +pkg_setup() { + use doc && python-any-r1_pkg_setup +} + +src_prepare() { + rm -r msvc* build || die "Failed to remove msvc dirs" + + if [[ ${PV} != *9999 ]] ; then + if [[ -d po ]] ; then + pushd po > /dev/null || die + for lang in *.po; do + if ! has ${lang%.po} ${LINGUAS} ; then + rm -rf ${lang} || die + fi + done + popd > /dev/null || die + else + die "Failed to prepare LINGUAS - po directory moved?" + fi + fi + + # convert docs to UTF-8 + local i + for i in doc/cmd.txt; do + einfo "Converting "${i}" to UTF-8" + iconv -f LATIN1 -t UTF-8 "${i}" > "${i}.tmp" || die + mv -f "${i}.tmp" "${i}" || die + done + + if use doc; then + einfo "Updating doxygen config" + doxygen &>/dev/null -u config/Doxyfile || die + fi + + cmake-utils_src_prepare +} + +multilib_src_configure() { + local mycmakeargs=( + -DEXIV2_ENABLE_BUILD_PO=YES + -DEXIV2_ENABLE_BUILD_SAMPLES=NO + -DEXIV2_ENABLE_CURL=$(usex webready) + -DEXIV2_ENABLE_NLS=$(usex nls) + -DEXIV2_ENABLE_PNG=$(usex png) + -DEXIV2_ENABLE_SSH=$(usex webready) + -DEXIV2_ENABLE_WEBREADY=$(usex webready) + -DEXIV2_ENABLE_XMP=$(usex xmp) + -DEXIV2_ENABLE_LIBXMP=NO + $(multilib_is_native_abi || \ + echo -DEXIV2_ENABLE_TOOLS=NO) + ) + + cmake-utils_src_configure +} + +multilib_src_compile() { + cmake-utils_src_compile + + if multilib_is_native_abi; then + use doc && emake -j1 doc + fi +} + +multilib_src_install_all() { + einstalldocs + prune_libtool_files --all + + use xmp && dodoc doc/{COPYING-XMPSDK,README-XMP,cmdxmp.txt} + use doc && dodoc -r "${S}"/doc/html + + if use examples; then + docinto examples + dodoc samples/*.cpp + fi +} diff --git a/media-gfx/exiv2/files/exiv2-0.25-fvisibility-hidden.patch b/media-gfx/exiv2/files/exiv2-0.25-fvisibility-hidden.patch new file mode 100644 index 000000000000..26c5c1d39d74 --- /dev/null +++ b/media-gfx/exiv2/files/exiv2-0.25-fvisibility-hidden.patch @@ -0,0 +1,19 @@ +Index: CMakeLists.txt +=================================================================== +--- a/xmpsdk/CMakeLists.txt (revision 3974) ++++ b/xmpsdk/CMakeLists.txt (revision 3975) +@@ -20,6 +20,14 @@ + ENDIF(NOT MSVC AND NOT CYGWIN AND NOT MSYS) + ENDFOREACH() + ++if(NOT MSVC) ++ # http://stackoverflow.com/questions/10046114/in-cmake-how-can-i-test-if-the-compiler-is-clang ++ if ( NOT "${CMAKE_CXX_COMPILER_ID}" MATCHES "AppleClang") ++ # 1123 - hide xmpsdk symbols ++ add_definitions( -fvisibility=hidden -fvisibility-inlines-hidden ) ++ endif() ++endif() ++ + IF( EXIV2_ENABLE_XMP AND EXIV2_ENABLE_LIBXMP ) + ADD_LIBRARY( xmp STATIC ${XMPSRC} ) + GET_TARGET_PROPERTY( XMPLIB xmp LOCATION ) diff --git a/media-gfx/exiv2/files/exiv2-0.25-hide-symbols.patch b/media-gfx/exiv2/files/exiv2-0.25-hide-symbols.patch new file mode 100644 index 000000000000..7c8613db5e82 --- /dev/null +++ b/media-gfx/exiv2/files/exiv2-0.25-hide-symbols.patch @@ -0,0 +1,97 @@ +Index: a/samples/CMakeLists.txt +=================================================================== +--- a/samples/CMakeLists.txt (revision 3972) ++++ b/samples/CMakeLists.txt (revision 3973) +@@ -52,7 +52,7 @@ + STRING( REPLACE ".cpp" "" target ${entry}) + ADD_EXECUTABLE( ${target} ${target}.cpp ) + ADD_TEST( ${target}_test ${target} ) +- TARGET_LINK_LIBRARIES( ${target} exiv2lib ) ++ TARGET_LINK_LIBRARIES( ${target} PRIVATE exiv2lib ${EXPAT_LIBRARIES}) + #INSTALL( TARGETS ${target} ${INSTALL_TARGET_STANDARD_ARGS} ) + ENDFOREACH(entry ${SAMPLES}) + +Index: a/src/CMakeLists.txt +=================================================================== +--- a/src/CMakeLists.txt (revision 3972) ++++ b/src/CMakeLists.txt (revision 3973) +@@ -240,20 +240,20 @@ + + if ( MSVC ) + source_group("Header Files" FILES ${LIBEXIV2_HDR} ) +- TARGET_LINK_LIBRARIES( exiv2lib ${EXPAT_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${EXPAT_LIBRARIES} ) + source_group("Header Files" FILES ${LIBCURL_HDR} ) +- TARGET_LINK_LIBRARIES( exiv2lib ${CURL_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${CURL_LIBRARIES} ) + source_group("Header Files" FILES ${SSH_HDR} ) +- TARGET_LINK_LIBRARIES( exiv2lib ${SSH_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${SSH_LIBRARIES} ) + else() + if ( NOT MINGW ) +- TARGET_LINK_LIBRARIES( exiv2lib dl ${EXPAT_LIBRARIES} ) +- TARGET_LINK_LIBRARIES( exiv2lib dl ${CURL_LIBRARIES} ) +- TARGET_LINK_LIBRARIES( exiv2lib dl ${SSH_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE dl ${EXPAT_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE dl ${CURL_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE dl ${SSH_LIBRARIES} ) + else() +- TARGET_LINK_LIBRARIES( exiv2lib ${EXPAT_LIBRARIES} ) +- TARGET_LINK_LIBRARIES( exiv2lib ${CURL_LIBRARIES} ) +- TARGET_LINK_LIBRARIES( exiv2lib ${SSH_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${EXPAT_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${CURL_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${SSH_LIBRARIES} ) + endif() + endif() + +@@ -262,33 +262,33 @@ + if ( MSVC ) + LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH}/$(ConfigurationName)) + endif(MSVC) +- TARGET_LINK_LIBRARIES( exiv2lib xmp ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE xmp ) + ENDIF() + + IF( EXIV2_ENABLE_PNG ) + IF( ZLIB_FOUND ) + IF( MSVC ) + if ( EXIV2_ENABLE_SHARED ) +- TARGET_LINK_LIBRARIES( exiv2lib optimized ${ZLIB_LIBRARIES} debug ${ZLIB_LIBRARIES}d ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE optimized ${ZLIB_LIBRARIES}.lib debug ${ZLIB_LIBRARIES}d.lib ) + else() +- TARGET_LINK_LIBRARIES( exiv2lib optimized zlibstatic.lib debug zlibstaticd.lib ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE optimized zlibstatic.lib debug zlibstaticd.lib ) + endif() + ELSE() +- TARGET_LINK_LIBRARIES( exiv2lib ${ZLIB_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${ZLIB_LIBRARIES} ) + ENDIF() + ENDIF() + ENDIF() + + IF( EXIV2_ENABLE_NLS ) +- TARGET_LINK_LIBRARIES( exiv2lib ${LIBINTL_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${LIBINTL_LIBRARIES} ) + ENDIF( EXIV2_ENABLE_NLS ) + + IF( ICONV_FOUND ) +- TARGET_LINK_LIBRARIES( exiv2lib ${ICONV_LIBRARIES} ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE ${ICONV_LIBRARIES} ) + ENDIF( ICONV_FOUND ) + + IF (CYGWIN OR MINGW) +- TARGET_LINK_LIBRARIES( exiv2lib psapi ) ++ TARGET_LINK_LIBRARIES( exiv2lib PRIVATE psapi ) + ENDIF(CYGWIN OR MINGW) + + +@@ -303,7 +303,7 @@ + # ****************************************************************************** + # connection test application + ADD_EXECUTABLE( conntest ${CONNTEST} ) +-TARGET_LINK_LIBRARIES( conntest exiv2lib ) ++TARGET_LINK_LIBRARIES( conntest PRIVATE exiv2lib ${CURL_LIBRARIES} ${SSH_LIBRARIES}) + + # ****************************************************************************** + # exifprint application |