public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michael Palimaka" <kensington@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: media-gfx/exiv2/files/, media-gfx/exiv2/
Date: Wed, 13 Jan 2016 14:47:01 +0000 (UTC)	[thread overview]
Message-ID: <1452696390.36045f8ebb08d9578f62520bf6d37f26d39bad1d.kensington@gentoo> (raw)

commit:     36045f8ebb08d9578f62520bf6d37f26d39bad1d
Author:     Andreas Sturmlechner <andreas.sturmlechner <AT> gmail <DOT> com>
AuthorDate: Thu Dec 31 11:04:29 2015 +0000
Commit:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
CommitDate: Wed Jan 13 14:46:30 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=36045f8e

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

 media-gfx/exiv2/exiv2-0.25-r2.ebuild               | 128 +++++++++++++++++++++
 .../files/exiv2-0.25-fvisibility-hidden.patch      |  19 +++
 .../exiv2/files/exiv2-0.25-hide-symbols.patch      |  97 ++++++++++++++++
 3 files changed, 244 insertions(+)

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 0000000..90f52ed
--- /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 0000000..26c5c1d
--- /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 0000000..7c8613d
--- /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


             reply	other threads:[~2016-01-13 14:47 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-13 14:47 Michael Palimaka [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-04-09 20:02 [gentoo-commits] repo/gentoo:master commit in: media-gfx/exiv2/files/, media-gfx/exiv2/ Andreas Sturmlechner
2023-06-12 17:45 Andreas Sturmlechner
2023-02-27 18:43 Andreas Sturmlechner
2023-01-25 19:07 Andreas Sturmlechner
2022-08-18 18:43 Sam James
2021-06-20 20:53 Sam James
2019-01-12 22:06 Andreas Sturmlechner
2018-12-25 21:23 Andreas Sturmlechner
2018-08-07  7:06 Andreas Sturmlechner
2017-11-19 15:23 Andreas Sturmlechner
2017-10-18  0:35 Andreas Sturmlechner
2017-10-15  7:46 Andreas Sturmlechner
2017-06-07  6:10 Andreas Sturmlechner
2015-10-04 21:07 Michał Górny
2015-10-04 14:51 Michał Górny

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1452696390.36045f8ebb08d9578f62520bf6d37f26d39bad1d.kensington@gentoo \
    --to=kensington@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox