forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information
Showing
3 changed files
with
244 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |