summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <andreas.sturmlechner@gmail.com>2015-12-31 12:04:29 +0100
committerMichael Palimaka <kensington@gentoo.org>2016-01-14 01:46:30 +1100
commit36045f8ebb08d9578f62520bf6d37f26d39bad1d (patch)
treee6a07eec1f42735750bd952b4ac1b2b1bc792afb /media-gfx/exiv2
parentsys-auth/consolekit: Add at_console compat hook only on linux (diff)
downloadgentoo-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.ebuild128
-rw-r--r--media-gfx/exiv2/files/exiv2-0.25-fvisibility-hidden.patch19
-rw-r--r--media-gfx/exiv2/files/exiv2-0.25-hide-symbols.patch97
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