public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/musl:master commit in: media-gfx/exiv2/, media-gfx/exiv2/files/
@ 2016-06-02  5:22 Anthony G. Basile
  0 siblings, 0 replies; 4+ messages in thread
From: Anthony G. Basile @ 2016-06-02  5:22 UTC (permalink / raw
  To: gentoo-commits

commit:     51f22520006e88a96e279b557919b698ad7998ba
Author:     Laine Gholson <laine.gholson <AT> gmail <DOT> com>
AuthorDate: Thu Jun  2 01:05:34 2016 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Thu Jun  2 05:20:24 2016 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=51f22520

media-gfx/exiv2: fix build

This patch adds a dependency on dev-libs/icu for uconv.

 media-gfx/exiv2/Manifest                           |  10 ++
 media-gfx/exiv2/exiv2-0.25-r2.ebuild               | 130 +++++++++++++++++++++
 media-gfx/exiv2/files/exiv2-0.25-fix-docs.patch    |  71 +++++++++++
 .../exiv2/files/exiv2-0.25-fix-install-dirs.patch  |  64 ++++++++++
 .../exiv2/files/exiv2-0.25-fix-without-zlib.patch  |  22 ++++
 .../files/exiv2-0.25-fvisibility-hidden.patch      |  19 +++
 .../exiv2/files/exiv2-0.25-hide-symbols.patch      |  97 +++++++++++++++
 media-gfx/exiv2/files/exiv2-0.25-musl.patch        |  12 ++
 .../exiv2/files/exiv2-0.25-tools-optional.patch    |  27 +++++
 media-gfx/exiv2/metadata.xml                       |  20 ++++
 10 files changed, 472 insertions(+)

diff --git a/media-gfx/exiv2/Manifest b/media-gfx/exiv2/Manifest
new file mode 100644
index 0000000..8cb47a4
--- /dev/null
+++ b/media-gfx/exiv2/Manifest
@@ -0,0 +1,10 @@
+AUX exiv2-0.25-fix-docs.patch 2164 SHA256 8d50b058fcaefc15455cae9c5e5edb2a5217acfe1c8de7f4d572bc3cfa2f17cd SHA512 be4e2077a52f54384ef6660e045c6eedda06bdacc3ca804cc6b9554b47be717bf50c4ac1ca42fa452f204e784a2f863ffba7276b17342bde67f9a53db5749d8b WHIRLPOOL 60f86dddcbe67f63ddb7d0332be05505024878c5cbbee99c8a4c9567906e9da94b95b64a7655f913f5e86a4e0917c849840f8d9e91eb1864cdfb095d7c844412
+AUX exiv2-0.25-fix-install-dirs.patch 2415 SHA256 a627484a3960071f01eb6f656f9af0f9a0b2771d9d9f6cd8a3429f378823a48a SHA512 402f9aacb8b6af95e94ea3d31f0c438da4407fc037004a3e99408ba5cce8cde5dd1d0c98d1e619fff56b0051516e20610a98899e5ff22d00b3827384f82e7493 WHIRLPOOL f58aa8122e207f0271a7f3a0fb6ff0297b630e187a65622ea55b0159d03acbbf09132f8a6c836485730ec5a4d085ad55e53dfe86fe08e47b449f44b68bb28a5f
+AUX exiv2-0.25-fix-without-zlib.patch 662 SHA256 66618de00ba07ec660675e2dff99138ba56fb0a8cbdab6a8a024b4f3ca93db3c SHA512 c15173bc687c2008a1e3cd04623167dd085f3e9f7655107fc75880df3d5bb51688572d2d3fc7a722763eaa5ff45bcb769f4090c615f8b3ffbf6d0417dccab8d0 WHIRLPOOL d2842c00569f578b41f543f944757b72963ac4d521017701db75c630ead80295bbb8fc39091f6ac34661e21b6910ef78d12db6f35659d79e1c25ec437d0ef7d7
+AUX exiv2-0.25-fvisibility-hidden.patch 700 SHA256 2d0eb374e3df7dd58a513b616786e9421f63e575c2812d0b3980e0af29d03d96 SHA512 7dd251fa6e09ecc0493899fdc24431f636e56bf86d33fd4cf4b46fc27b14ce7a68cb4021a3799260398f48b256f403e00b86d143a012d3871e0de5bf57db9205 WHIRLPOOL af10468fad08e51f16141e70409e5ec718d5d669db8203df6a09de2fd824eb46376f87195cf1e744c60c567943c24d54afe388d54eeb5c240f876ebbcbd59514
+AUX exiv2-0.25-hide-symbols.patch 4098 SHA256 b6fe63951717360caad547275c3810c42803ef2d8dea25c75e02b45b9d7add9e SHA512 aed6746329b12769d8084ca79a99eccd6b52449b80c0b3d1c1d6b22294c2b62398366f0715efa207e2ace0ed52740a8eb81af58d17322d42a4674336fd24e725 WHIRLPOOL ac8e900303ac0b19f24b5eff13791dd42459395763d4c8795ff978c1f2c05431b3f3586dedd2b7df375452d3826d7356fc190c4ba3bc8fc4713792bc9d31d033
+AUX exiv2-0.25-musl.patch 464 SHA256 c32333fa1d157bd2b14aaf18e19c2a67511baad89a9b526d6f984bb955dbf9ee SHA512 25e7d53fd2840d1166795a0a27c07de9370f493b1c8a047a020b73fe9330303d97a48414937c25e5aa5961fa7d416b10e4e3ea6b35008e4d9705ed19d71bb85d WHIRLPOOL 0e71a59b5fa87633c98e46385260835077e3a93c7a9aad9022c58060efbfecba295c37726d248580b9a79ee7cecdc8f0e23f24cfcaa1085ab33e44f33bbc5d49
+AUX exiv2-0.25-tools-optional.patch 1332 SHA256 6c9a3ed5c2b9acff10c3b2f2dd2ca639936beaf6263526b9d85ede579a1d67e1 SHA512 14a8703b86dc4a7a1f210e26bd6532c529f850dd1b25ef116c703a576c389a120e3f8b1087e289cd8b44073071ac88a97503dc2c0cf72f21d32094b2cabbc58c WHIRLPOOL dc7efa7ddcaf1be665cd79aff0b36a0f2b135a87a3a93f9cb6091105b965b4b009e569c447d54d602482410ec59d674d99a71bee2699e8007575b8e2cc727998
+DIST exiv2-0.25.tar.gz 5434325 SHA256 c80bfc778a15fdb06f71265db2c3d49d8493c382e516cb99b8c9f9cbde36efa4 SHA512 08d4e655ffdde715e0214f4bef01d55aba9b8ba517456a60e254a0f8541c20479e407545db28ca90a69dee8def6941fdd88f9a557fb382ebebe49e363aca8e8e WHIRLPOOL f9e7a6947dac5870e0574253b8c1cb1e7d31a916a9e1c4417c73168046c0b4bed90b9c77253444604163bcf6dca204dab92a52cb03bdcb0f85c807327623f8ac
+EBUILD exiv2-0.25-r2.ebuild 3155 SHA256 b3569ae890ba2384377c8bc2ec221803ccf20ca78e3abf77214c41f69ef9bc55 SHA512 239e31fe5fb441be56ad222fb780fae13a05b9cd6a09f5807f05a3c5879c5b2f28292389b225fa37e63053be8c3093befaf0f7a854038be4f2d37600c9a0ef06 WHIRLPOOL f17501613b331d99001c0e36d565d261d432946cde5d030d8cb82dcfb585c3aa3965bd470f03997f82f1c8df81de4cfe5212fd92ee635fb1499dd860fd79d8fe
+MISC metadata.xml 678 SHA256 08fd0d664529713f492576de434fa7e9927918229013eb4ec7c88b195ca0e9eb SHA512 7c5d5e3f23671d316d8deb97d5d3b8e012ff14fb340a71c6cb5fb9e0b76c5c4e6e3b9ce86a613c7bfc6326828bcf0a14d3bd13182aad2a7e51bb0cf4dab26497 WHIRLPOOL c8606b9365f06230c7effdb719bbcbd84e5bfdfdce85b0d57b000434db9426fdc6cee9c7b77f7d1bd44057d177494f1456ac5158e37397e47598c6fb5048e3bc

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..cef5555
--- /dev/null
+++ b/media-gfx/exiv2/exiv2-0.25-r2.ebuild
@@ -0,0 +1,130 @@
+# 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="amd64 arm ~mips ppc x86"
+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}]
+	dev-libs/icu[${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"
+	"${FILESDIR}/${PN}-0.25-musl.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"
+		uconv -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-fix-docs.patch b/media-gfx/exiv2/files/exiv2-0.25-fix-docs.patch
new file mode 100644
index 0000000..e2bf677
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.25-fix-docs.patch
@@ -0,0 +1,71 @@
+--- a/CMakeLists.txt	2015-07-19 16:04:35.363628707 +0200
++++ b/CMakeLists.txt	2015-07-19 16:28:31.051680136 +0200
+@@ -216,9 +216,7 @@
+ ADD_SUBDIRECTORY( xmpsdk )
+ ADD_SUBDIRECTORY( src )
+ 
+-IF( EXIV2_ENABLE_BUILD_SAMPLES )
+-    ADD_SUBDIRECTORY( samples )
+-ENDIF( EXIV2_ENABLE_BUILD_SAMPLES )
++ADD_SUBDIRECTORY( samples )
+ 
+ IF( EXIV2_ENABLE_BUILD_PO )
+     ADD_SUBDIRECTORY( po )
+--- a/samples/CMakeLists.txt	2015-07-19 16:04:35.360628744 +0200
++++ b/samples/CMakeLists.txt	2015-07-19 16:30:46.415987850 +0200
+@@ -20,7 +20,11 @@
+ endif()
+ include_directories("${CMAKE_SOURCE_DIR}/include" "${CMAKE_SOURCE_DIR}/src")
+ 
+-SET( SAMPLES addmoddel.cpp
++SET( SAMPLES taglist.cpp )
++
++IF( EXIV2_ENABLE_BUILD_SAMPLES )
++    SET( SAMPLES ${SAMPLES}
++             addmoddel.cpp
+              convert-test.cpp
+              easyaccess-test.cpp
+              exifcomment.cpp
+@@ -38,7 +42,6 @@
+              mmap-test.cpp
+              prevtest.cpp
+              stringto-test.cpp
+-             taglist.cpp
+              tiff-test.cpp
+              werror-test.cpp
+              write-test.cpp
+@@ -47,6 +50,7 @@
+              xmpparser-test.cpp
+              xmpsample.cpp
+    )
++ENDIF()
+ 
+ FOREACH(entry ${SAMPLES})
+     STRING( REPLACE ".cpp" "" target ${entry})
+@@ -63,6 +67,7 @@
+     SET( MC_SRC            ${MC_SRC}       ../src/getopt_win32.c )
+ ENDIF( MSVC )
+ 
++IF( EXIV2_ENABLE_BUILD_SAMPLES )
+ SET( MC_SRC ${MC_SRC} metacopy.cpp ../src/utils.cpp )
+ ADD_EXECUTABLE( metacopy ${MC_SRC} )
+ TARGET_LINK_LIBRARIES( metacopy exiv2lib )
+@@ -79,6 +84,7 @@
+ SET_TARGET_PROPERTIES( exiv2json PROPERTIES OUTPUT_NAME exiv2json )
+ TARGET_LINK_LIBRARIES( exiv2json exiv2lib )
+ INSTALL( TARGETS exiv2json ${INSTALL_TARGET_STANDARD_ARGS} )
++ENDIF()
+ 
+ # That's all Folks!
+ ##
+--- a/doc/templates/Makefile	2015-07-19 16:50:50.589933604 +0200
++++ b/doc/templates/Makefile	2015-07-19 16:51:07.686719864 +0200
+@@ -143,7 +143,7 @@
+          xmp_mwg-rs \
+          xmp_mwg-kw
+ 
+-TAGLIST = ../../bin/taglist
++TAGLIST = ../../src/bin/taglist
+ 
+ # **********************************************************************
+ # ======================================================================

diff --git a/media-gfx/exiv2/files/exiv2-0.25-fix-install-dirs.patch b/media-gfx/exiv2/files/exiv2-0.25-fix-install-dirs.patch
new file mode 100644
index 0000000..bca79dd
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.25-fix-install-dirs.patch
@@ -0,0 +1,64 @@
+USE GNUInstallDirs to fix man page and multilib install
+
+See also: http://dev.exiv2.org/issues/1125
+Patch based on: http://pkgs.fedoraproject.org/cgit/exiv2.git/tree/exiv2-0.25-cmake_LIB_SUFFIX.patch
+
+--- b/config/CMakeChecks.txt	2015-07-19 14:23:11.606686135 +0200
++++ b/config/CMakeChecks.txt	2015-06-22 08:41:22.913094633 -0500
+@@ -37,6 +37,8 @@
+ INCLUDE( CheckCSourceCompiles )
+ INCLUDE( CheckCXXSourceCompiles )
+ 
++INCLUDE( GNUInstallDirs )
++
+ INCLUDE( FindIconv )
+ 
+ SET( STDC_HEADERS ON )
+@@ -289,9 +291,9 @@
+ 
+ IF( NOT MSVC )
+     CONFIGURE_FILE( config/exiv2.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/exiv2.pc @ONLY )
+-    INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/exiv2.pc DESTINATION lib/pkgconfig )
++    INSTALL( FILES ${CMAKE_CURRENT_BINARY_DIR}/exiv2.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig )
+     CONFIGURE_FILE( config/exiv2.lsm.cmake ${CMAKE_CURRENT_BINARY_DIR}/exiv2.lsm)
+-    INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/exiv2.lsm DESTINATION lib/pkgconfig )
++    INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/exiv2.lsm DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig )
+ ENDIF( NOT MSVC )
+ 
+ # ******************************************************************************
+--- a/src/CMakeLists.txt	2015-07-19 14:06:54.104906589 +0200
++++ b/src/CMakeLists.txt	2015-07-19 14:12:37.982607526 +0200
+@@ -321,7 +321,7 @@
+ 
+ # ******************************************************************************
+ # Man page
+-INSTALL( FILES exiv2.1 DESTINATION man/man1 )
++INSTALL( FILES exiv2.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
+ 
+ # That's all Folks!
+ ##
+--- a/CMakeLists.txt	2015-06-15 10:32:21.000000000 -0500
++++ b/CMakeLists.txt	2015-06-22 08:48:19.486245765 -0500
+@@ -25,7 +25,7 @@ if( POLICY CMP0042 )
+ else()
+     SET(CMAKE_MACOSX_RPATH 1)
+ endif()
+-SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
++#SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ 
+ 
+ SET( PACKAGE_COPYRIGHT      "Andreas Huggel" )
+@@ -156,10 +156,10 @@ INCLUDE( config/CMakeChecks.txt )
+ 
+ SET( INSTALL_TARGET_STANDARD_ARGS
+      RUNTIME DESTINATION bin
+-     LIBRARY DESTINATION lib
+-     ARCHIVE DESTINATION lib
++     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
++     ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ )
+-SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
++#SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ 
+ ##
+ # add sources from XMPSDK directory

diff --git a/media-gfx/exiv2/files/exiv2-0.25-fix-without-zlib.patch b/media-gfx/exiv2/files/exiv2-0.25-fix-without-zlib.patch
new file mode 100644
index 0000000..c6d435d
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.25-fix-without-zlib.patch
@@ -0,0 +1,22 @@
+Fix exiv2.hpp if built with PNG support disabled (--without-zlib)
+
+Fixed upstream in >=0.26
+
+See also: http://dev.exiv2.org/issues/1103
+Gentoo bug 1: https://bugs.gentoo.org/show_bug.cgi?id=552046
+Gentoo bug 2: https://bugs.gentoo.org/show_bug.cgi?id=535836
+
+Index: exiv2.hpp
+===================================================================
+--- a/include/exiv2/exiv2.hpp	(revision 3887)
++++ b/include/exiv2/exiv2.hpp	(revision 3888)
+@@ -52,7 +52,9 @@
+ #include "mrwimage.hpp"
+ #include "orfimage.hpp"
+ #include "pgfimage.hpp"
++#ifdef   EXV_HAVE_LIBZ
+ #include "pngimage.hpp"
++#endif
+ #include "preview.hpp"
+ #include "properties.hpp"
+ #include "psdimage.hpp"

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

diff --git a/media-gfx/exiv2/files/exiv2-0.25-musl.patch b/media-gfx/exiv2/files/exiv2-0.25-musl.patch
new file mode 100644
index 0000000..a44e255
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.25-musl.patch
@@ -0,0 +1,12 @@
+--- a/src/futils.cpp	2016-06-01 18:29:06.629998810 -0500
++++ b/src/futils.cpp	2016-06-01 18:29:22.209998806 -0500
+@@ -332,8 +332,7 @@
+         std::ostringstream os;
+ #ifdef EXV_HAVE_STRERROR_R
+         const size_t n = 1024;
+-// _GNU_SOURCE: See Debian bug #485135
+-# if defined EXV_STRERROR_R_CHAR_P && defined _GNU_SOURCE
++# if defined EXV_STRERROR_R_CHAR_P && defined __GLIBC__
+         char *buf = 0;
+         char buf2[n];
+         std::memset(buf2, 0x0, n)

diff --git a/media-gfx/exiv2/files/exiv2-0.25-tools-optional.patch b/media-gfx/exiv2/files/exiv2-0.25-tools-optional.patch
new file mode 100644
index 0000000..2bb030a
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.25-tools-optional.patch
@@ -0,0 +1,27 @@
+--- a/CMakeLists.txt	2015-06-15 17:32:21.000000000 +0200
++++ b/CMakeLists.txt	2015-10-04 14:37:05.319679836 +0200
+@@ -55,6 +55,7 @@
+ OPTION( EXIV2_ENABLE_WEBREADY      "Build webready support into library"                   OFF )
+ OPTION( EXIV2_ENABLE_CURL          "USE Libcurl for HttpIo"                                ON  )
+ OPTION( EXIV2_ENABLE_SSH           "USE Libssh for SshIo"                                  ON  )
++OPTION( EXIV2_ENABLE_TOOLS         "Build exiv2 executable"                                ON  )
+ 
+ IF( MINGW OR UNIX )
+     IF ( CMAKE_CXX_COMPILER STREQUAL "g++" OR CMAKE_C_COMPILER STREQUAL "gcc" )
+--- a/src/CMakeLists.txt	2015-06-14 11:12:19.000000000 +0200
++++ b/src/CMakeLists.txt	2015-10-04 14:33:27.784399402 +0200
+@@ -296,9 +296,11 @@
+ 
+ # ******************************************************************************
+ # exiv2 application
+-ADD_EXECUTABLE( exiv2 ${EXIV2_SRC} )
+-TARGET_LINK_LIBRARIES( exiv2 exiv2lib )
+-INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} )
++IF( EXIV2_ENABLE_TOOLS )
++    ADD_EXECUTABLE( exiv2 ${EXIV2_SRC} )
++    TARGET_LINK_LIBRARIES( exiv2 exiv2lib )
++    INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} )
++ENDIF( EXIV2_ENABLE_TOOLS )
+ 
+ # ******************************************************************************
+ # connection test application

diff --git a/media-gfx/exiv2/metadata.xml b/media-gfx/exiv2/metadata.xml
new file mode 100644
index 0000000..3d5537f
--- /dev/null
+++ b/media-gfx/exiv2/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="project">
+		<email>graphics@gentoo.org</email>
+		<name>Gentoo Graphics Project</name>
+	</maintainer>
+	<maintainer type="project">
+		<email>kde@gentoo.org</email>
+		<name>Gentoo KDE Project</name>
+	</maintainer>
+	<longdescription lang="en">
+		Exiv2 is a C++ library and command line utility to read and
+		write EXIF, IPTC and XMP image metadata.
+	</longdescription>
+	<use>
+		<flag name="contrib">Build additional contrib components</flag>
+		<flag name="webready">Support reading metadata over the internet</flag>
+	</use>
+</pkgmetadata>


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/musl:master commit in: media-gfx/exiv2/, media-gfx/exiv2/files/
@ 2017-10-13 19:05 Aric Belsito
  0 siblings, 0 replies; 4+ messages in thread
From: Aric Belsito @ 2017-10-13 19:05 UTC (permalink / raw
  To: gentoo-commits

commit:     05678d1ba2496b9692b4df34b7dffc75220a678b
Author:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
AuthorDate: Fri Oct 13 19:04:24 2017 +0000
Commit:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
CommitDate: Fri Oct 13 19:04:24 2017 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=05678d1b

media-gfx/exiv2: remove 0.26

Close #51

 media-gfx/exiv2/Manifest                           |  12 --
 media-gfx/exiv2/exiv2-0.26.ebuild                  | 134 ---------------------
 .../exiv2/files/exiv2-0.26-CVE-2017-9239.patch     |  22 ----
 media-gfx/exiv2/files/exiv2-0.26-cmake1.patch      |  22 ----
 media-gfx/exiv2/files/exiv2-0.26-cmake2.patch      |  65 ----------
 media-gfx/exiv2/files/exiv2-0.26-cmake3.patch      |  53 --------
 media-gfx/exiv2/files/exiv2-0.26-cmake4.patch      |  24 ----
 media-gfx/exiv2/files/exiv2-0.26-cmake5.patch      |  33 -----
 media-gfx/exiv2/files/exiv2-0.26-cmake6.patch      |  27 -----
 media-gfx/exiv2/files/exiv2-0.26-cmake7.patch      |  38 ------
 media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch    |  70 -----------
 .../exiv2/files/exiv2-0.26-tools-optional.patch    |  27 -----
 12 files changed, 527 deletions(-)

diff --git a/media-gfx/exiv2/Manifest b/media-gfx/exiv2/Manifest
index 0920aea..54fa081 100644
--- a/media-gfx/exiv2/Manifest
+++ b/media-gfx/exiv2/Manifest
@@ -5,18 +5,6 @@ AUX exiv2-0.25-fvisibility-hidden.patch 700 SHA256 2d0eb374e3df7dd58a513b616786e
 AUX exiv2-0.25-hide-symbols.patch 4098 SHA256 b6fe63951717360caad547275c3810c42803ef2d8dea25c75e02b45b9d7add9e SHA512 aed6746329b12769d8084ca79a99eccd6b52449b80c0b3d1c1d6b22294c2b62398366f0715efa207e2ace0ed52740a8eb81af58d17322d42a4674336fd24e725 WHIRLPOOL ac8e900303ac0b19f24b5eff13791dd42459395763d4c8795ff978c1f2c05431b3f3586dedd2b7df375452d3826d7356fc190c4ba3bc8fc4713792bc9d31d033
 AUX exiv2-0.25-musl.patch 464 SHA256 c32333fa1d157bd2b14aaf18e19c2a67511baad89a9b526d6f984bb955dbf9ee SHA512 25e7d53fd2840d1166795a0a27c07de9370f493b1c8a047a020b73fe9330303d97a48414937c25e5aa5961fa7d416b10e4e3ea6b35008e4d9705ed19d71bb85d WHIRLPOOL 0e71a59b5fa87633c98e46385260835077e3a93c7a9aad9022c58060efbfecba295c37726d248580b9a79ee7cecdc8f0e23f24cfcaa1085ab33e44f33bbc5d49
 AUX exiv2-0.25-tools-optional.patch 1332 SHA256 6c9a3ed5c2b9acff10c3b2f2dd2ca639936beaf6263526b9d85ede579a1d67e1 SHA512 14a8703b86dc4a7a1f210e26bd6532c529f850dd1b25ef116c703a576c389a120e3f8b1087e289cd8b44073071ac88a97503dc2c0cf72f21d32094b2cabbc58c WHIRLPOOL dc7efa7ddcaf1be665cd79aff0b36a0f2b135a87a3a93f9cb6091105b965b4b009e569c447d54d602482410ec59d674d99a71bee2699e8007575b8e2cc727998
-AUX exiv2-0.26-CVE-2017-9239.patch 738 SHA256 014407dc03154c12675d66368b9e5674bc761bd77102665bb4ccbbc1561b8098 SHA512 f6d3c081ca145bc9614fff83d59512329bb30b19010be16484c0d341c6c7167195c98131458b9427ef0afd9cf0bd1f1cdd10b0cfd689322327bd685759bd125f WHIRLPOOL 724b65d05228677d6d9493489d0e9882308e1a5fdef502528c80676767c582fe9ff828d50b67b447ba57b0c114926143c5ca9864e04e3b4dcfd6118a2e06daf9
-AUX exiv2-0.26-cmake1.patch 805 SHA256 ce6797ef659aad6ad0687ea7236d193a22552c4c91855f486216371de0608f2e SHA512 5b99674cdf01ab712df2f743487be1afd5a5751133222d13eaab36ce9e0b86c9c89eb8a09244eb521a60bce12081dbefb6b867aab75158df193d80965a0f0681 WHIRLPOOL 734fcdb96037486a7ec834ecf1f90d3e63e35ef22efd832e787e2e6efa8a9d59923311e46ff6486acd96668c0245f2ac0de620ea35e75665fce9a34c9caa401e
-AUX exiv2-0.26-cmake2.patch 2781 SHA256 f5b4404a124e2fb11e2c363973c25bbc91c1da9787822f9f1a3252ef2bf0224b SHA512 2ff6baad558ff79ec514a9bd78adb01d1c894d51713a5f98573c7e60356b90ed5f9ad462c43f6454874e2e775f61edf38a5881eb9526c5c9cd5543af0777e543 WHIRLPOOL 297cb349e63e9fb9a696c3e60de6e8d1c547b7f163abff6aeabe7687d6bc1c643b0a0166438f544ba33c02b285029244b339b0963afe894cd736175c9b7c1f87
-AUX exiv2-0.26-cmake3.patch 2040 SHA256 14c67fe154053c72d41696546b998c320129190dc3b43471b25731d71c9e7c19 SHA512 98c63cbe51126090835b2422433af625cea683d89d3d4e822191bfa19633ff1e4b98b41356dd9f2326c4e30c34faa80b9408ed488644575ab5cbf8f5477f6d8f WHIRLPOOL 9065ff20231c6dc36a8314e0cbf36237d2b6acaceea69cfe16ec616a3e53b99fd756305e1fd771c4e2c1349a051ea2d875374f8bea67ef9049e677803fcc390d
-AUX exiv2-0.26-cmake4.patch 783 SHA256 fee765278dc3bdc11b0d140e2e082ef29209aa78d591808ecf608434be87deda SHA512 e2a197fcf1255e02d1ce35a3d9428f40533fad8dcbac39f17b8b5d3f2b365479e202c9fca3b969b6f16ab3e58ff2d8654b85308536e5acec3ba8d7af38fc17a0 WHIRLPOOL 8b28f0bd49bd4af64a8638bffbe977aa9feb257f9cf8c2075493b4e56aa6065c8e475ce33f988575e1b2b90030abd179902682537f00576cddb7069f0aa32607
-AUX exiv2-0.26-cmake5.patch 1066 SHA256 aa7fcff3eace01ac2faf9a901fa2ebd3949d1ae4836bcfc884a119b394c083b5 SHA512 6ac55cd0d73b484357b84b07f0e059f239e717a32d0cb4acec23522ac23546374f13edbb5306fe1acf7d75049ee642f4c6e851fb1dc0b38bec5feecfd4efbb0f WHIRLPOOL 11118cc7bc6a753700b6a1dd381c67ef883fab4c64ee1f5248b641bf265081994b99d88147d4fdaf208ebe4dab91f8488e4fa105919d3f0ab984ead146cdc3f7
-AUX exiv2-0.26-cmake6.patch 973 SHA256 4a167f386a87f261481b5544844aa26c61386bb77e702407f21490b052b866aa SHA512 d32b2d8856651ec168732367c5d7c65131e9301fb899bf7ce018b68d783d66120b99fff624ce3c37b36c5aa1682d5cdde74adf232c11807f496cff987bf478a7 WHIRLPOOL 6060e8c85a6f953a4853bbdedfd85c2dbd3c9943c972d9b0612239017886d78bf2db50fc1a2474aad949d03079e9adc8254307598e3dd734af015b7133d2c004
-AUX exiv2-0.26-cmake7.patch 1328 SHA256 a882283ea89183c4a415b9816cf03daa80683ea5a85c5a78c7b430f1b602f293 SHA512 f500dd7cf0520d5cdb177a33554329d7da0f9895a1d04e1fd2d91e37814df61901b13f7e9c33b245fa4ad9cd6b7361cf289af868363187f9917691366a6672a3 WHIRLPOOL 661b44e517138b93c2633f13507c3ec67ac1308b7b794731996bde75cf83fce3ef315287fdff4dc2a418253c94ecfb38f73ea96e9599bc124e80a7a0e89d15c7
-AUX exiv2-0.26-fix-docs.patch 2147 SHA256 6cdab606c6fb6ddc7913fd311d9051946f97c1de5dabac614e934e704ea4c7ca SHA512 fa2f35d00df2fd1d958e1139e7b8fe0dd0c0f7f6fe5295b2ac5b0a156ae68af9e275e23c943929c90315a99e3116376a4e21e384c1bb219b3d5b657ac12165ec WHIRLPOOL 5e70a648303cab83e6265c064e94144d65421bc9cf514744b624a6af466cce1827c983664ee71f78431919d47370f2f9d17931aa96941c2079826232687ab78c
-AUX exiv2-0.26-tools-optional.patch 1276 SHA256 5df66e4cbf15b911b4c05bb9240452f64f9e4c84bd04e7e516ef34bd43c3e849 SHA512 23e797e76cedf6c4a2025e0d6d2f7301d8e13adcbb836660fe2568eeb94348c6cac649284789551f97a69790271936b6412ff7d1416ee95a87851624b317e4c9 WHIRLPOOL c7f32aa72c9051c69cb54176335ab05258aca72f9cd658fd323873bd7d3f8db5fd0b10f9940b5ee5bb3d1c84902a59a73087f510db37542b100c5fd9d8f755fb
 DIST exiv2-0.25.tar.gz 5434325 SHA256 c80bfc778a15fdb06f71265db2c3d49d8493c382e516cb99b8c9f9cbde36efa4 SHA512 08d4e655ffdde715e0214f4bef01d55aba9b8ba517456a60e254a0f8541c20479e407545db28ca90a69dee8def6941fdd88f9a557fb382ebebe49e363aca8e8e WHIRLPOOL f9e7a6947dac5870e0574253b8c1cb1e7d31a916a9e1c4417c73168046c0b4bed90b9c77253444604163bcf6dca204dab92a52cb03bdcb0f85c807327623f8ac
-DIST exiv2-0.26-trunk.tar.gz 5699163 SHA256 0c625cbeb494aa1b9221280a5b053b54d0c9720d48fa9120cef7c6f93efd4dc3 SHA512 d9f354f8458d7803140b442b2a8de3c8904b1e20916cf62d7176f51524e6ff7def26d3b6fa016abc49f8140295eea624151c54dbae0676a61529c2cf33335b0c WHIRLPOOL 0d36063ee659d0a798957e9a2478337f5e8061b467df8fb86b194830ac6ec751a75e1492ad7cbf4ed31c836b9c320f037af3708920b28b07c8970840e255d711
 EBUILD exiv2-0.25-r2.ebuild 3104 SHA256 790f4ad93ca7799eba393f76a30e3dcdf5148834ce85b2a2e8f095da8ca9c0b9 SHA512 7ef6da58f714555f7065891a984e83e19e14c22e71a45d4ec4f1aff7a49404628b07f8b371efb26ad06f53e452a8ee61cb556df20c8c0706be3990716a823402 WHIRLPOOL cf3f43c404d456bfd989fb0bb620db4fc12d7297adf68f6e90b10fd1b59a43b34dc8fe14483e03a2983bc9df704e6963505ce693bbdb42b3b1b111bd81d6961e
-EBUILD exiv2-0.26.ebuild 3393 SHA256 f47eeee789c29be290a6b1e203098a9a3c4f6de68897a1ae916066fe38aa7115 SHA512 0e1d1e5266b0399d61ce2e8640bab6f41a049e5de3f16a232df3a5ad811e56f3b659722f459ca2a8d5aa217c58bb5edd340d88db4603a837f16b97ed2fb6bfa5 WHIRLPOOL c9e99dfc5949c02305ccaf0292c086324c9b32d611ab0cd10bbc1f89560049560a715c1a618fa3d36ba59a6fe27c1b4fa73e66223834ef462f5db35d1149483b
 MISC metadata.xml 612 SHA256 2700f3a6eb0fea03635790e9e55611f58a19dace74c70d0e0106bd70ef825c60 SHA512 9b4926ba8420a125dc4cefd351ee1ec10a4df2fc4306a56720f6e8de7c5fd9f36a8646c8583958fca9a45ebe1b65b19c053c7da37176546bc19ae64afa87e4f5 WHIRLPOOL 0996d01f595fe4ab40a65fcc19d2eced4dc31a1c8efddddca353828447ff3ca974499dcc81482d47a3470d9530a1886abde9acfaa2ac75df0e845f1a70402056

diff --git a/media-gfx/exiv2/exiv2-0.26.ebuild b/media-gfx/exiv2/exiv2-0.26.ebuild
deleted file mode 100644
index 3926c66..0000000
--- a/media-gfx/exiv2/exiv2-0.26.ebuild
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
-
-inherit 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/builds/${P}-trunk.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0/26"
-KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~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
-		media-gfx/graphviz
-		virtual/pkgconfig
-		${PYTHON_DEPS}
-	)
-	nls? ( sys-devel/gettext )
-"
-
-DOCS=( README doc/ChangeLog doc/cmd.txt )
-
-PATCHES=(
-	"${FILESDIR}"/${P}-cmake{1,2,3,4,5,6,7}.patch
-	"${FILESDIR}"/${P}-CVE-2017-9239.patch
-	"${FILESDIR}"/${PN}-0.25-musl.patch
-	# TODO: Take to upstream
-	"${FILESDIR}"/${P}-fix-docs.patch
-	"${FILESDIR}"/${P}-tools-optional.patch
-)
-
-pkg_setup() {
-	use doc && python-any-r1_pkg_setup
-}
-
-src_unpack() {
-	# FIXME @upstream: MacOS cruft is breaking the buildsystem, so don't let it in...
-	tar -C "${WORKDIR}" --exclude=.* -xpf "${DISTDIR}/${A}" --gz 2> /dev/null ||
-		elog "${my_tar}: tar extract command failed at least partially - continuing"
-	mv "${PN}-trunk" "${S}" || die "Failed to create source dir ${S}"
-}
-
-src_prepare() {
-	if [[ ${PV} != *9999 ]] ; then
-		if [[ -d po ]] ; then
-			pushd po > /dev/null || die
-			local lang
-			for lang in *.po; do
-				if [[ -e ${lang} ]] && ! has ${lang/.po/} ${LINGUAS} ; then
-					case ${lang} in
-						CMakeLists.txt | \
-						${PN}.pot)      ;;
-						*) rm -r ${lang} || die ;;
-					esac
-				fi
-			done
-			popd > /dev/null || die
-		else
-			die "Failed to prepare LINGUAS - po directory moved?"
-		fi
-	fi
-
-	# FIXME @upstream:
-	einfo "Converting doc/cmd.txt to UTF-8"
-	iconv -f LATIN1 -t UTF-8 doc/cmd.txt > doc/cmd.txt.tmp || die
-	mv -f doc/cmd.txt.tmp doc/cmd.txt || die
-
-	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_NLS=$(usex nls)
-		-DEXIV2_ENABLE_PNG=$(usex png)
-		-DEXIV2_ENABLE_CURL=$(usex webready)
-		-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() {
-	use xmp && DOCS+=( doc/{COPYING-XMPSDK,README-XMP,cmdxmp.txt} )
-	use doc && HTML_DOCS=( "${S}"/doc/html/. )
-
-	einstalldocs
-	find "${D}" -name '*.la' -delete || die
-
-	if use examples; then
-		docinto examples
-		dodoc samples/*.cpp
-	fi
-}

diff --git a/media-gfx/exiv2/files/exiv2-0.26-CVE-2017-9239.patch b/media-gfx/exiv2/files/exiv2-0.26-CVE-2017-9239.patch
deleted file mode 100644
index 2a3e20c..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-CVE-2017-9239.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 2f8681e120d277e418941c4361c83b5028f67fd8 Mon Sep 17 00:00:00 2001
-From: clanmills <robin@clanmills.com>
-Date: Sat, 27 May 2017 10:18:17 +0100
-Subject: [PATCH] #1296 Fix submitted.
-
----
- src/tiffcomposite.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/tiffcomposite.cpp b/src/tiffcomposite.cpp
-index c6b860d8..0c9b9c4a 100644
---- a/src/tiffcomposite.cpp
-+++ b/src/tiffcomposite.cpp
-@@ -1611,6 +1611,8 @@ namespace Exiv2 {
-     uint32_t TiffImageEntry::doWriteImage(IoWrapper& ioWrapper,
-                                           ByteOrder  /*byteOrder*/) const
-     {
-+        if ( !pValue() ) throw Error(21); // #1296
-+        
-         uint32_t len = pValue()->sizeDataArea();
-         if (len > 0) {
- #ifdef DEBUG

diff --git a/media-gfx/exiv2/files/exiv2-0.26-cmake1.patch b/media-gfx/exiv2/files/exiv2-0.26-cmake1.patch
deleted file mode 100644
index 672017e..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-cmake1.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From d5ae1a7502cc3a19f2ca45f5f17f1ee8fc6ad979 Mon Sep 17 00:00:00 2001
-From: Timo Gurr <timo.gurr@gmail.com>
-Date: Tue, 30 May 2017 20:25:28 +0200
-Subject: [PATCH] Use CMAKE_INSTALL_LOCALEDIR
-
----
- config/CMakeChecks.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt
-index 77922930..b3a888f2 100644
---- a/config/CMakeChecks.txt
-+++ b/config/CMakeChecks.txt
-@@ -98,7 +98,7 @@ IF( EXIV2_ENABLE_NLS )
-     #FIND_PACKAGE(Intl REQUIRED)
-     #INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
-     IF( NOT LOCALEDIR )
--        SET( LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale" )
-+        SET( LOCALEDIR "${CMAKE_INSTALL_LOCALEDIR}" )
-         IF( WIN32 )
-             STRING( REPLACE "/" "\\\\" LOCALEDIR ${LOCALEDIR} )
-         ENDIF( WIN32 )

diff --git a/media-gfx/exiv2/files/exiv2-0.26-cmake2.patch b/media-gfx/exiv2/files/exiv2-0.26-cmake2.patch
deleted file mode 100644
index 76a1944..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-cmake2.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 3af0d1a6b2c12b7f62a293d19bdf235db75d6b07 Mon Sep 17 00:00:00 2001
-From: Bernd Kuhls <bernd.kuhls@t-online.de>
-Date: Sat, 3 Jun 2017 17:18:24 +0200
-Subject: [PATCH] cmake: fix gettext support
-
-Building exiv2 with uclibc and gettext fails currently as detected
-by the buildroot autobuilders:
-http://autobuild.buildroot.net/results/def/defcdd3dd57b031c31bb16c0075f079a482bf52d/build-end.log
----
- config/CMakeChecks.txt | 12 ++++++++++--
- src/CMakeLists.txt     |  6 +++---
- 2 files changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt
-index b3a888f2..f7621a92 100644
---- a/config/CMakeChecks.txt
-+++ b/config/CMakeChecks.txt
-@@ -95,8 +95,16 @@ ELSE( EXIV2_ENABLE_SHARED )
- ENDIF( EXIV2_ENABLE_SHARED )
- 
- IF( EXIV2_ENABLE_NLS )
--    #FIND_PACKAGE(Intl REQUIRED)
--    #INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
-+    FIND_PACKAGE(Intl)
-+    if(Intl_FOUND)
-+        INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
-+        find_library(LIBINTL_LIBRARY NAMES intl libintl)
-+        if(libintl_FOUND)
-+            SET(LIBINTL_LIBRARIES ${LIBINTL_LIBRARY})
-+        else(libintl_FOUND)
-+            SET(LIBINTL_LIBRARIES)
-+        endif()
-+    endif()
-     IF( NOT LOCALEDIR )
-         SET( LOCALEDIR "${CMAKE_INSTALL_LOCALEDIR}" )
-         IF( WIN32 )
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index aecd6215..e2904c6f 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -316,13 +316,13 @@ msvc_runtime_configure(${EXIV2_ENABLE_SHARED} ${EXIV2_ENABLE_DYNAMIC_RUNTIME})
- # ******************************************************************************
- # exiv2 application
- ADD_EXECUTABLE( exiv2 ${EXIV2_SRC}  ${EXIV2_HDR} )
--TARGET_LINK_LIBRARIES( exiv2 exiv2lib )
-+TARGET_LINK_LIBRARIES( exiv2 exiv2lib ${LIBINTL_LIBRARIES} )
- INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} )
- 
- # ******************************************************************************
- # connection test application
- ADD_EXECUTABLE( conntest ${CONNTEST} )
--TARGET_LINK_LIBRARIES( conntest ${PRIVATE_VAR}  exiv2lib ${CURL_LIBRARIES} ${SSH_LIBRARIES})
-+TARGET_LINK_LIBRARIES( conntest ${PRIVATE_VAR}  exiv2lib ${CURL_LIBRARIES} ${SSH_LIBRARIES} ${LIBINTL_LIBRARIES} )
- 
- # ******************************************************************************
- # exifprint application
-@@ -332,7 +332,7 @@ TARGET_LINK_LIBRARIES( conntest ${PRIVATE_VAR}  exiv2lib ${CURL_LIBRARIES} ${SSH
- # ******************************************************************************
- # remotetest application
- ADD_EXECUTABLE( remotetest ${REMOTETEST} )
--TARGET_LINK_LIBRARIES( remotetest exiv2lib )
-+TARGET_LINK_LIBRARIES( remotetest exiv2lib ${LIBINTL_LIBRARIES} )
- 
- # ******************************************************************************
- # Headers

diff --git a/media-gfx/exiv2/files/exiv2-0.26-cmake3.patch b/media-gfx/exiv2/files/exiv2-0.26-cmake3.patch
deleted file mode 100644
index 7a78d1c..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-cmake3.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8af901ce05aeeaa4f5033da99670091f857d5931 Mon Sep 17 00:00:00 2001
-From: Bernd Kuhls <bernd.kuhls@t-online.de>
-Date: Sat, 3 Jun 2017 18:25:05 +0200
-Subject: [PATCH] cmake: always depend on threads, not only in the xmp case
-
----
- CMakeLists.txt         | 1 -
- config/CMakeChecks.txt | 2 ++
- src/CMakeLists.txt     | 2 ++
- 3 files changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7034bb67..64604c6f 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -120,7 +120,6 @@ IF( EXIV2_ENABLE_XMP )
-     IF (NOT MINGW)
-         set(THREADS_PREFER_PTHREAD_FLAG ON)
-     ENDIF()
--    find_package(Threads REQUIRED)
- ENDIF( EXIV2_ENABLE_XMP )
- 
- INCLUDE( config/CMakeChecks.txt )
-diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt
-index f7621a92..0dfe96b7 100644
---- a/config/CMakeChecks.txt
-+++ b/config/CMakeChecks.txt
-@@ -51,6 +51,8 @@ INCLUDE_DIRECTORIES( ${CMAKE_INCLUDE_PATH} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_C
- LINK_DIRECTORIES( ${CMAKE_LIBRARY_PATH} )
- SET( CMAKE_REQUIRED_INCLUDES ${CMAKE_INCLUDE_PATH} )
- 
-+find_package(Threads REQUIRED)
-+
- IF( EXIV2_ENABLE_PNG )
-     FIND_PACKAGE( ZLIB REQUIRED )
-     INCLUDE_DIRECTORIES( ${ZLIB_INCLUDE_DIR} )
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index e2904c6f..dcfb37e1 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -268,10 +268,12 @@ else()
-         TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${EXPAT_LIBRARIES} )
-         TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${CURL_LIBRARIES} )
-         TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${SSH_LIBRARIES} )
-+        TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} dl ${CMAKE_THREAD_LIBS_INIT} )
-     else()
-         TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${EXPAT_LIBRARIES} )
-         TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${CURL_LIBRARIES} )
-         TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${SSH_LIBRARIES} )
-+        TARGET_LINK_LIBRARIES( exiv2lib ${PRIVATE_VAR} ${CMAKE_THREAD_LIBS_INIT} )
-     endif()
- endif()
- 

diff --git a/media-gfx/exiv2/files/exiv2-0.26-cmake4.patch b/media-gfx/exiv2/files/exiv2-0.26-cmake4.patch
deleted file mode 100644
index 3824a57..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-cmake4.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 23ac3eeced6a4de0d34ae162ac7784ab9b7e4310 Mon Sep 17 00:00:00 2001
-From: clanmills <robin@clanmills.com>
-Date: Sat, 3 Jun 2017 20:58:08 +0100
-Subject: [PATCH] #7 Fix for libintl
-
----
- config/CMakeChecks.txt | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt
-index 0dfe96b7..8c88aa27 100644
---- a/config/CMakeChecks.txt
-+++ b/config/CMakeChecks.txt
-@@ -103,8 +103,8 @@ IF( EXIV2_ENABLE_NLS )
-         find_library(LIBINTL_LIBRARY NAMES intl libintl)
-         if(libintl_FOUND)
-             SET(LIBINTL_LIBRARIES ${LIBINTL_LIBRARY})
--        else(libintl_FOUND)
--            SET(LIBINTL_LIBRARIES)
-+        else()
-+            SET(LIBINTL_LIBRARIES -lintl)
-         endif()
-     endif()
-     IF( NOT LOCALEDIR )

diff --git a/media-gfx/exiv2/files/exiv2-0.26-cmake5.patch b/media-gfx/exiv2/files/exiv2-0.26-cmake5.patch
deleted file mode 100644
index 0df4a19..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-cmake5.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 4e86c1d61c4b8ab2cbbb31db0031b8e1d1872231 Mon Sep 17 00:00:00 2001
-From: clanmills <robin@clanmills.com>
-Date: Sun, 4 Jun 2017 07:41:03 +0100
-Subject: [PATCH] Fix https://github.com/Exiv2/exiv2/pull/6 for
- Linux/Cygwin/MacOSX
-
----
- config/CMakeChecks.txt | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt
-index 8c88aa27..e6100c0f 100644
---- a/config/CMakeChecks.txt
-+++ b/config/CMakeChecks.txt
-@@ -98,13 +98,16 @@ ENDIF( EXIV2_ENABLE_SHARED )
- 
- IF( EXIV2_ENABLE_NLS )
-     FIND_PACKAGE(Intl)
--    if(Intl_FOUND)
-+    if(Intl_FOUND AND NOT MSVC)
-         INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
-         find_library(LIBINTL_LIBRARY NAMES intl libintl)
-         if(libintl_FOUND)
-             SET(LIBINTL_LIBRARIES ${LIBINTL_LIBRARY})
-         else()
--            SET(LIBINTL_LIBRARIES -lintl)
-+            SET(LIBINTL_LIBRARIES)
-+            if ( APPLE OR CYGWIN )
-+            	SET(LIBINTL_LIBRARIES -lintl)
-+            endif()
-         endif()
-     endif()
-     IF( NOT LOCALEDIR )

diff --git a/media-gfx/exiv2/files/exiv2-0.26-cmake6.patch b/media-gfx/exiv2/files/exiv2-0.26-cmake6.patch
deleted file mode 100644
index 105b588..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-cmake6.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 88cf58613ffde4c907011bea82f61daae6006c3c Mon Sep 17 00:00:00 2001
-From: clanmills <robin@clanmills.com>
-Date: Sun, 4 Jun 2017 09:07:14 +0100
-Subject: [PATCH] #8 Adding INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
-
----
- config/CMakeChecks.txt | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt
-index e6100c0f..b90d4fde 100644
---- a/config/CMakeChecks.txt
-+++ b/config/CMakeChecks.txt
-@@ -102,11 +102,12 @@ IF( EXIV2_ENABLE_NLS )
-         INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
-         find_library(LIBINTL_LIBRARY NAMES intl libintl)
-         if(libintl_FOUND)
-+            INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
-             SET(LIBINTL_LIBRARIES ${LIBINTL_LIBRARY})
-         else()
-             SET(LIBINTL_LIBRARIES)
-             if ( APPLE OR CYGWIN )
--            	SET(LIBINTL_LIBRARIES -lintl)
-+                SET(LIBINTL_LIBRARIES -lintl)
-             endif()
-         endif()
-     endif()

diff --git a/media-gfx/exiv2/files/exiv2-0.26-cmake7.patch b/media-gfx/exiv2/files/exiv2-0.26-cmake7.patch
deleted file mode 100644
index 0eff32a..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-cmake7.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 15e0b9052eacd3438c8b39bf3fdda5da69ec068a Mon Sep 17 00:00:00 2001
-From: Bernd Kuhls <bernd.kuhls@t-online.de>
-Date: Sun, 4 Jun 2017 10:13:14 +0200
-Subject: [PATCH] cmake: simplify libintl check
-
-According to https://cmake.org/cmake/help/v3.4/module/FindIntl.html
-the FindIntl module already checks for libintl.so.
----
- config/CMakeChecks.txt | 15 ++++-----------
- 1 file changed, 4 insertions(+), 11 deletions(-)
-
-diff --git a/config/CMakeChecks.txt b/config/CMakeChecks.txt
-index b90d4fde..0cd28ec7 100644
---- a/config/CMakeChecks.txt
-+++ b/config/CMakeChecks.txt
-@@ -98,18 +98,11 @@ ENDIF( EXIV2_ENABLE_SHARED )
- 
- IF( EXIV2_ENABLE_NLS )
-     FIND_PACKAGE(Intl)
--    if(Intl_FOUND AND NOT MSVC)
-+    if(Intl_FOUND)
-         INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
--        find_library(LIBINTL_LIBRARY NAMES intl libintl)
--        if(libintl_FOUND)
--            INCLUDE_DIRECTORIES(${Intl_INCLUDE_DIRS})
--            SET(LIBINTL_LIBRARIES ${LIBINTL_LIBRARY})
--        else()
--            SET(LIBINTL_LIBRARIES)
--            if ( APPLE OR CYGWIN )
--                SET(LIBINTL_LIBRARIES -lintl)
--            endif()
--        endif()
-+        SET(LIBINTL_LIBRARIES ${Intl_LIBRARIES})
-+    else()
-+        SET(LIBINTL_LIBRARIES)
-     endif()
-     IF( NOT LOCALEDIR )
-         SET( LOCALEDIR "${CMAKE_INSTALL_LOCALEDIR}" )

diff --git a/media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch b/media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch
deleted file mode 100644
index a888671..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch
+++ /dev/null
@@ -1,70 +0,0 @@
---- a/CMakeLists.txt	2015-07-19 16:04:35.363628707 +0200
-+++ b/CMakeLists.txt	2015-07-19 16:28:31.051680136 +0200
-@@ -216,9 +216,7 @@
- ADD_SUBDIRECTORY( xmpsdk )
- ADD_SUBDIRECTORY( src )
- 
--IF( EXIV2_ENABLE_BUILD_SAMPLES )
--    ADD_SUBDIRECTORY( samples )
--ENDIF( EXIV2_ENABLE_BUILD_SAMPLES )
-+ADD_SUBDIRECTORY( samples )
- 
- IF( EXIV2_ENABLE_BUILD_PO )
-     ADD_SUBDIRECTORY( po )
---- a/samples/CMakeLists.txt	2015-07-19 16:04:35.360628744 +0200
-+++ b/samples/CMakeLists.txt	2015-07-19 16:30:46.415987850 +0200
-@@ -21,6 +21,10 @@
- include_directories("${CMAKE_SOURCE_DIR}/include" "${CMAKE_SOURCE_DIR}/src")
- 
--SET( SAMPLES addmoddel.cpp
-+SET( SAMPLES taglist.cpp )
-+
-+IF( EXIV2_ENABLE_BUILD_SAMPLES )
-+    SET( SAMPLES ${SAMPLES}
-+             addmoddel.cpp
-              convert-test.cpp
-              easyaccess-test.cpp
-              exifcomment.cpp
-@@ -38,7 +42,6 @@
-              mmap-test.cpp
-              prevtest.cpp
-              stringto-test.cpp
--             taglist.cpp
-              tiff-test.cpp
-              werror-test.cpp
-              write-test.cpp
-@@ -47,6 +50,7 @@
-              xmpparser-test.cpp
-              xmpsample.cpp
-    )
-+ENDIF()
- 
- FOREACH(entry ${SAMPLES})
-     STRING( REPLACE ".cpp" "" target ${entry})
-@@ -63,6 +67,7 @@
-     SET( MC_SRC            ${MC_SRC}       ../src/getopt_win32.c )
- ENDIF( MSVC )
- 
-+IF( EXIV2_ENABLE_BUILD_SAMPLES )
- SET( MC_SRC ${MC_SRC} metacopy.cpp ../src/utils.cpp )
- ADD_EXECUTABLE( metacopy ${MC_SRC} )
- TARGET_LINK_LIBRARIES( metacopy exiv2lib )
-@@ -79,6 +84,7 @@
- # ******************************************************************************
- # Man page
- INSTALL( FILES exiv2samples.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
-+ENDIF()
- 
- # That's all Folks!
- ##
---- a/doc/templates/Makefile	2015-07-19 16:50:50.589933604 +0200
-+++ b/doc/templates/Makefile	2015-07-19 16:51:07.686719864 +0200
-@@ -143,7 +143,7 @@
-          xmp_mwg-rs \
-          xmp_mwg-kw
- 
--TAGLIST = ../../bin/taglist
-+TAGLIST = ../../src/bin/taglist
- 
- # **********************************************************************
- # ======================================================================

diff --git a/media-gfx/exiv2/files/exiv2-0.26-tools-optional.patch b/media-gfx/exiv2/files/exiv2-0.26-tools-optional.patch
deleted file mode 100644
index 045e9dc..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-tools-optional.patch
+++ /dev/null
@@ -1,27 +0,0 @@
---- a/CMakeLists.txt	2017-06-07 00:14:25.374608170 +0200
-+++ b/CMakeLists.txt	2017-06-07 00:17:00.680483299 +0200
-@@ -60,6 +60,7 @@
-     OPTION( EXIV2_ENABLE_SSH           "USE Libssh for SshIo"                              ON  )
-     SET ( EXIV2_ENABLE_DYNAMIC_RUNTIME OFF )
- ENDIF()
-+OPTION( EXIV2_ENABLE_TOOLS         "Build exiv2 executable"                                ON  )
- 
- # set include path for FindXXX.cmake files
- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/config/")
---- a/src/CMakeLists.txt	2017-06-07 00:14:25.368608098 +0200
-+++ b/src/CMakeLists.txt	2017-06-07 00:16:06.710831682 +0200
-@@ -317,9 +317,11 @@
- 
- # ******************************************************************************
- # exiv2 application
--ADD_EXECUTABLE( exiv2 ${EXIV2_SRC}  ${EXIV2_HDR} )
--TARGET_LINK_LIBRARIES( exiv2 exiv2lib ${LIBINTL_LIBRARIES} )
--INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} )
-+IF(EXIV2_ENABLE_TOOLS)
-+    ADD_EXECUTABLE( exiv2 ${EXIV2_SRC}  ${EXIV2_HDR} )
-+    TARGET_LINK_LIBRARIES( exiv2 exiv2lib ${LIBINTL_LIBRARIES} )
-+    INSTALL( TARGETS exiv2 ${INSTALL_TARGET_STANDARD_ARGS} )
-+ENDIF( EXIV2_ENABLE_TOOLS )
- 
- # ******************************************************************************
- # connection test application


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/musl:master commit in: media-gfx/exiv2/, media-gfx/exiv2/files/
@ 2018-04-26 18:06 Aric Belsito
  0 siblings, 0 replies; 4+ messages in thread
From: Aric Belsito @ 2018-04-26 18:06 UTC (permalink / raw
  To: gentoo-commits

commit:     e7b9b83f0688f9e5a07d0bd55427c197807beab1
Author:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
AuthorDate: Thu Apr 26 18:05:50 2018 +0000
Commit:     Aric Belsito <lluixhi <AT> gmail <DOT> com>
CommitDate: Thu Apr 26 18:05:50 2018 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=e7b9b83f

media-gfx/exiv2: version bump to 0.27_p20180319

 media-gfx/exiv2/Manifest                           |   1 +
 media-gfx/exiv2/exiv2-0.26_p20171104.ebuild        |   2 +-
 ...71104-r1.ebuild => exiv2-0.26_p20180319.ebuild} |  12 +-
 .../exiv2-0.26_p20180319-CVE-2017-18005.patch      | 484 +++++++++++++++++++++
 .../files/exiv2-0.26_p20180319-CVE-2018-4868.patch |  39 ++
 5 files changed, 534 insertions(+), 4 deletions(-)

diff --git a/media-gfx/exiv2/Manifest b/media-gfx/exiv2/Manifest
index a9b1bd7..ff80754 100644
--- a/media-gfx/exiv2/Manifest
+++ b/media-gfx/exiv2/Manifest
@@ -1 +1,2 @@
 DIST exiv2-0.26_p20171104.tar.gz 28368697 BLAKE2B 50013cf0bf30a2a476b02d5db4027fca268a4b38733762eb4c08e5f3bdfaf737038e9a62f7ef471fecb10250d8ae686ef683f9b0ea4ccc5d109440ba534371e4 SHA512 6f6a884d7978e54dceb9ce45248cd0425ff469887c85ef52b0e38cb755970f69fce96b4b5317c8e8070b833f72ca214696042aac71292a6f9c3440f6a369d474
+DIST exiv2-0.26_p20180319.tar.gz 28383543 BLAKE2B 753a2ebdb2033490c0f66cb1fb2574f02125f17813f6cbaf5eca66e053af9a2cdbc1266f0a033f0706ec22b31acd6e87271e426a335a58ee947757b52d283489 SHA512 852ce2cffcc0a2d902a939933127fdf5fa0b50020e1faf3ab0a375b129b9f61c7b97b76d4f39e376e7288d7cc045867bd1a96ae15dd0b7c0bcd1ba15259628e1

diff --git a/media-gfx/exiv2/exiv2-0.26_p20171104.ebuild b/media-gfx/exiv2/exiv2-0.26_p20171104.ebuild
index f8d19fb..996728b 100644
--- a/media-gfx/exiv2/exiv2-0.26_p20171104.ebuild
+++ b/media-gfx/exiv2/exiv2-0.26_p20171104.ebuild
@@ -11,7 +11,7 @@ if [[ ${PV} = *9999 ]]; then
 else
 	COMMIT=900d2417dbeb46e14cbf65fc2798ed1d043ab76d
 	SRC_URI="https://github.com/Exiv2/${PN}/tarball/${COMMIT} -> ${P}.tar.gz"
-	KEYWORDS="amd64 arm ia64 ~mips ppc ~sh ~sparc x86"
+	KEYWORDS="amd64 arm ia64 ~mips ppc ~sh sparc x86"
 fi
 inherit cmake-multilib python-any-r1 vcs-snapshot
 

diff --git a/media-gfx/exiv2/exiv2-0.26_p20171104-r1.ebuild b/media-gfx/exiv2/exiv2-0.26_p20180319.ebuild
similarity index 90%
rename from media-gfx/exiv2/exiv2-0.26_p20171104-r1.ebuild
rename to media-gfx/exiv2/exiv2-0.26_p20180319.ebuild
index e24fed4..a188f3a 100644
--- a/media-gfx/exiv2/exiv2-0.26_p20171104-r1.ebuild
+++ b/media-gfx/exiv2/exiv2-0.26_p20180319.ebuild
@@ -9,11 +9,11 @@ if [[ ${PV} = *9999 ]]; then
 	EGIT_BRANCH="0.26"
 	GIT_ECLASS=git-r3
 else
-	COMMIT=900d2417dbeb46e14cbf65fc2798ed1d043ab76d
+	COMMIT=876b1314ab892cbfa6672b6b94adbeb90db4211f
 	SRC_URI="https://github.com/Exiv2/${PN}/tarball/${COMMIT} -> ${P}.tar.gz"
 	KEYWORDS="~amd64 ~arm ~ia64 ~mips ~ppc ~sh ~sparc ~x86"
 fi
-inherit cmake-multilib python-any-r1 vcs-snapshot
+inherit cmake-multilib python-any-r1
 
 DESCRIPTION="EXIF, IPTC and XMP metadata C++ library and command line utility"
 HOMEPAGE="http://www.exiv2.org/"
@@ -45,11 +45,15 @@ DEPEND="${RDEPEND}
 
 DOCS=( README doc/ChangeLog doc/cmd.txt )
 
+S="${WORKDIR}/${PN^}-${PN}-${COMMIT:0:7}"
+
 PATCHES=(
+	# master, pending backports for 0.26
+	"${FILESDIR}"/${P}-CVE-2018-4868.patch
+	"${FILESDIR}"/${P}-CVE-2017-18005.patch
 	# TODO: Take to upstream
 	"${FILESDIR}"/${PN}-0.26-fix-docs.patch
 	"${FILESDIR}"/${PN}-0.26-tools-optional.patch
-	"${FILESDIR}"/${PN}-0.26-pentaxnikon-crash.patch
 	"${FILESDIR}"/${PN}-0.26-musl.patch
 )
 
@@ -88,6 +92,8 @@ src_prepare() {
 		doxygen &>/dev/null -u config/Doxyfile || die
 	fi
 
+	edos2unix samples/exiv2json.cpp # workaround for CVE-2017-18005 patch
+
 	cmake-utils_src_prepare
 }
 

diff --git a/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2017-18005.patch b/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2017-18005.patch
new file mode 100644
index 0000000..d74ca59
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2017-18005.patch
@@ -0,0 +1,484 @@
+From 8e31dd8c14fdc83f387f35dda7b1b70fbdbd70db Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
+Date: Tue, 19 Dec 2017 19:52:41 +0100
+Subject: [PATCH 3/8] Only print items (Params::prValue) when size > 0
+
+---
+ src/actions.cpp | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/actions.cpp b/src/actions.cpp
+index 9f850097..3963cb67 100644
+--- a/src/actions.cpp
++++ b/src/actions.cpp
+@@ -713,8 +713,9 @@ namespace Action {
+                       << std::setfill(' ') << std::right
+                       << md.size();
+         }
+-        if (Params::instance().printItems_ & Params::prValue) {
+-            if (!first) std::cout << "  ";
++        if (Params::instance().printItems_ & Params::prValue && md.size() > 0) {
++            if (!first)
++                std::cout << "  ";
+             first = false;
+             if (   Params::instance().binary_
+                 && (   md.typeId() == Exiv2::undefined
+-- 
+2.17.0
+
+
+From 463485e5c1cc716108880f75b9c573715bf402b1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
+Date: Tue, 19 Dec 2017 19:54:17 +0100
+Subject: [PATCH 4/8] Move condition in if statement to discard work earlier
+
+---
+ src/actions.cpp | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/src/actions.cpp b/src/actions.cpp
+index 3963cb67..f51cb488 100644
+--- a/src/actions.cpp
++++ b/src/actions.cpp
+@@ -717,11 +717,10 @@ namespace Action {
+             if (!first)
+                 std::cout << "  ";
+             first = false;
+-            if (   Params::instance().binary_
+-                && (   md.typeId() == Exiv2::undefined
++            if (md.size() > 128 && Params::instance().binary_ && (
++                       md.typeId() == Exiv2::undefined
+                     || md.typeId() == Exiv2::unsignedByte
+-                    || md.typeId() == Exiv2::signedByte)
+-                && md.size() > 128) {
++                    || md.typeId() == Exiv2::signedByte)) {
+                 std::cout << _("(Binary value suppressed)") << std::endl;
+                 return true;
+             }
+-- 
+2.17.0
+
+
+From 7fe7501c01e5d1eec16a736062dd0c34d6408833 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
+Date: Tue, 19 Dec 2017 19:55:50 +0100
+Subject: [PATCH 5/8] Apply clang-format to Print::printMetadatum
+
+---
+ src/actions.cpp | 110 ++++++++++++++++++++++++------------------------
+ 1 file changed, 55 insertions(+), 55 deletions(-)
+
+diff --git a/src/actions.cpp b/src/actions.cpp
+index f51cb488..b31d6ec6 100644
+--- a/src/actions.cpp
++++ b/src/actions.cpp
+@@ -636,91 +636,90 @@ namespace Action {
+ 
+     bool Print::printMetadatum(const Exiv2::Metadatum& md, const Exiv2::Image* pImage)
+     {
+-        if (!grepTag(md.key())) return false;
+-        if (!keyTag (md.key())) return false;
++        if (!grepTag(md.key()))
++            return false;
++        if (!keyTag(md.key()))
++            return false;
+ 
+-        if (   Params::instance().unknown_
+-            && md.tagName().substr(0, 2) == "0x") {
++        if (Params::instance().unknown_ && md.tagName().substr(0, 2) == "0x") {
+             return false;
+         }
++
+         bool const manyFiles = Params::instance().files_.size() > 1;
+         if (manyFiles) {
+-            std::cout << std::setfill(' ') << std::left << std::setw(20)
+-                      << path_ << "  ";
++            std::cout << std::setfill(' ') << std::left << std::setw(20) << path_ << "  ";
+         }
++
+         bool first = true;
+         if (Params::instance().printItems_ & Params::prTag) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << "0x" << std::setw(4) << std::setfill('0')
+-                      << std::right << std::hex
+-                      << md.tag();
++            std::cout << "0x" << std::setw(4) << std::setfill('0') << std::right << std::hex << md.tag();
+         }
+         if (Params::instance().printItems_ & Params::prSet) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << "set" ;
++            std::cout << "set";
+         }
+         if (Params::instance().printItems_ & Params::prGroup) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << std::setw(12) << std::setfill(' ') << std::left
+-                      << md.groupName();
++            std::cout << std::setw(12) << std::setfill(' ') << std::left << md.groupName();
+         }
+         if (Params::instance().printItems_ & Params::prKey) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << std::setfill(' ') << std::left << std::setw(44)
+-                      << md.key();
++            std::cout << std::setfill(' ') << std::left << std::setw(44) << md.key();
+         }
+         if (Params::instance().printItems_ & Params::prName) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << std::setw(27) << std::setfill(' ') << std::left
+-                      << md.tagName();
++            std::cout << std::setw(27) << std::setfill(' ') << std::left << md.tagName();
+         }
+         if (Params::instance().printItems_ & Params::prLabel) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << std::setw(30) << std::setfill(' ') << std::left
+-                      << md.tagLabel();
++            std::cout << std::setw(30) << std::setfill(' ') << std::left << md.tagLabel();
+         }
+         if (Params::instance().printItems_ & Params::prType) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+             std::cout << std::setw(9) << std::setfill(' ') << std::left;
+             const char* tn = md.typeName();
+             if (tn) {
+                 std::cout << tn;
+-            }
+-            else {
++            } else {
+                 std::ostringstream os;
+                 os << "0x" << std::setw(4) << std::setfill('0') << std::hex << md.typeId();
+                 std::cout << os.str();
+             }
+         }
+         if (Params::instance().printItems_ & Params::prCount) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << std::dec << std::setw(3)
+-                      << std::setfill(' ') << std::right
+-                      << md.count();
++            std::cout << std::dec << std::setw(3) << std::setfill(' ') << std::right << md.count();
+         }
+         if (Params::instance().printItems_ & Params::prSize) {
+-            if (!first) std::cout << " ";
++            if (!first)
++                std::cout << " ";
+             first = false;
+-            std::cout << std::dec << std::setw(3)
+-                      << std::setfill(' ') << std::right
+-                      << md.size();
++            std::cout << std::dec << std::setw(3) << std::setfill(' ') << std::right << md.size();
+         }
+         if (Params::instance().printItems_ & Params::prValue && md.size() > 0) {
+             if (!first)
+                 std::cout << "  ";
+             first = false;
+-            if (md.size() > 128 && Params::instance().binary_ && (
+-                       md.typeId() == Exiv2::undefined
+-                    || md.typeId() == Exiv2::unsignedByte
+-                    || md.typeId() == Exiv2::signedByte)) {
++            if (md.size() > 128 && Params::instance().binary_ &&
++                (md.typeId() == Exiv2::undefined || md.typeId() == Exiv2::unsignedByte ||
++                 md.typeId() == Exiv2::signedByte)) {
+                 std::cout << _("(Binary value suppressed)") << std::endl;
+                 return true;
+             }
+@@ -738,22 +737,22 @@ namespace Action {
+             }
+             if (!done) {
+                 // #1114 - show negative values for SByte
+-                if (md.typeId() != Exiv2::signedByte){
++                if (md.typeId() != Exiv2::signedByte) {
+                     std::cout << std::dec << md.value();
+                 } else {
+                     int value = md.value().toLong();
+-                    std::cout << std::dec << (value<128?value:value-256);
++                    std::cout << std::dec << (value < 128 ? value : value - 256);
+                 }
+             }
+         }
+         if (Params::instance().printItems_ & Params::prTrans) {
+-            if (!first) std::cout << "  ";
++            if (!first)
++                std::cout << "  ";
+             first = false;
+-            if (   Params::instance().binary_
+-                && (   md.typeId() == Exiv2::undefined
+-                    || md.typeId() == Exiv2::unsignedByte
+-                    || md.typeId() == Exiv2::signedByte)
+-                && md.size() > 128) {
++            if (Params::instance().binary_ &&
++                (md.typeId() == Exiv2::undefined || md.typeId() == Exiv2::unsignedByte ||
++                 md.typeId() == Exiv2::signedByte) &&
++                md.size() > 128) {
+                 std::cout << _("(Binary value suppressed)") << std::endl;
+                 return true;
+             }
+@@ -765,16 +764,17 @@ namespace Action {
+                     done = true;
+                 }
+             }
+-            if (!done) std::cout << std::dec << md.print(&pImage->exifData());
++            if (!done)
++                std::cout << std::dec << md.print(&pImage->exifData());
+         }
+         if (Params::instance().printItems_ & Params::prHex) {
+-            if (!first) std::cout << std::endl;
++            if (!first)
++                std::cout << std::endl;
+             first = false;
+-            if (   Params::instance().binary_
+-                && (   md.typeId() == Exiv2::undefined
+-                    || md.typeId() == Exiv2::unsignedByte
+-                    || md.typeId() == Exiv2::signedByte)
+-                && md.size() > 128) {
++            if (Params::instance().binary_ &&
++                (md.typeId() == Exiv2::undefined || md.typeId() == Exiv2::unsignedByte ||
++                 md.typeId() == Exiv2::signedByte) &&
++                md.size() > 128) {
+                 std::cout << _("(Binary value suppressed)") << std::endl;
+                 return true;
+             }
+@@ -784,7 +784,7 @@ namespace Action {
+         }
+         std::cout << std::endl;
+         return true;
+-    } // Print::printMetadatum
++    }  // Print::printMetadatum
+ 
+     int Print::printComment()
+     {
+-- 
+2.17.0
+
+
+From 78ddc7a92afaaf58b78d5c49b5c2ad7b60a4e25f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
+Date: Thu, 21 Dec 2017 16:39:43 +0100
+Subject: [PATCH 6/8] Do not deference value when it does not exist (Thanks
+ D4N)
+
+---
+ samples/exiv2json.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/samples/exiv2json.cpp b/samples/exiv2json.cpp
+index 505268d9..a81268f0 100644
+--- a/samples/exiv2json.cpp
++++ b/samples/exiv2json.cpp
+@@ -148,6 +148,11 @@ bool isArray(std::string& value)
+ template <class T>
+ void push(Jzon::Node& node,const std::string& key,T i)
+ {
++#define ABORT_IF_I_EMTPY          \
++    if (i->value().size() == 0) { \
++        return;                   \
++    }
++
+     std::string value = i->value().toString();
+ 
+     switch ( i->typeId() ) {
+@@ -179,6 +184,7 @@ void push(Jzon::Node& node,const std::string& key,T i)
+ 
+         case Exiv2::unsignedRational:
+         case Exiv2::signedRational: {
++             ABORT_IF_I_EMTPY
+              Jzon::Array     arr;
+              Exiv2::Rational rat = i->value().toRational();
+              arr.Add(rat.first );
+@@ -187,6 +193,7 @@ void push(Jzon::Node& node,const std::string& key,T i)
+         } break;
+ 
+         case Exiv2::langAlt: {
++             ABORT_IF_I_EMTPY
+              Jzon::Object l ;
+              const Exiv2::LangAltValue& langs = dynamic_cast<const Exiv2::LangAltValue&>(i->value());
+              for ( Exiv2::LangAltValue::ValueType::const_iterator lang = langs.value_.begin()
+-- 
+2.17.0
+
+
+From 871e6e3ced1cdec7e43bf8cb94e269a7f5c09d92 Mon Sep 17 00:00:00 2001
+From: Robin Mills <robin@clanmills.com>
+Date: Thu, 15 Mar 2018 10:43:18 +0000
+Subject: [PATCH 8/8] Fix for getopt(), #199. Use src/getopt_win32 code instead
+ of libc/getopt()
+
+---
+ config/config.mk.in |  2 +-
+ src/CMakeLists.txt  |  6 ++----
+ src/Makefile        | 13 +++++--------
+ src/getopt_win32.c  |  9 +++++++++
+ src/getopt_win32.h  |  7 +++++++
+ src/utils.cpp       |  9 +++------
+ 6 files changed, 27 insertions(+), 19 deletions(-)
+
+diff --git a/config/config.mk.in b/config/config.mk.in
+index 8d920647..4754c722 100644
+--- a/config/config.mk.in
++++ b/config/config.mk.in
+@@ -165,7 +165,7 @@ endif
+ # **********************************************************************
+ # Compilation shortcuts
+ COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
+-COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
++COMPILE.c  = $(CC) $(CFLAGS) -c
+ # LINK.cc does not need $(LIBS), libtool's dark magic takes care of that
+ # when linking a binary with a libtool library.
+ LINK.cc = $(CXX) $(LDFLAGS)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index d4dc6375..dceee236 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -218,10 +218,8 @@ IF(NOT HAVE_TIMEGM )
+     SET( PATHTEST_SRC     ${PATHTEST_SRC} localtime.c    )
+ ENDIF( NOT HAVE_TIMEGM )
+ 
+-IF( MSVC )
+-    SET( EXIV2_SRC        ${EXIV2_SRC}    getopt_win32.c )
+-    SET( LIBEXIV2_SRC     ${LIBEXIV2_SRC} getopt_win32.c )
+-ENDIF( MSVC )
++SET( EXIV2_SRC        ${EXIV2_SRC}    getopt_win32.c )
++SET( LIBEXIV2_SRC     ${LIBEXIV2_SRC} getopt_win32.c )
+ 
+ ##
+ # msvn tuning
+diff --git a/src/Makefile b/src/Makefile
+index 8a8366fe..d046e331 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -131,8 +131,7 @@ CCSRC += asfvideo.cpp      \
+ 	 utilsvideo.cpp
+ endif
+ 
+-# Add library C source files to this list
+-EXIVCSRC  =
++# C source files
+ ifndef HAVE_TIMEGM
+ CSRC =   localtime.c
+ endif
+@@ -141,9 +140,7 @@ endif
+ EXIV2MAIN = exiv2.cpp
+ EXIV2SRC  = actions.cpp \
+             utils.cpp
+-
+-# C source files for the Exiv2 application
+-EXIVCSRC  =
++EXIVCSRC  = getopt_win32.c
+ 
+ # ******************************************************************************
+ # Library
+@@ -176,7 +173,7 @@ OBJ    = $(CCOBJ) $(COBJ)
+ LOBJ   = $(CCLOBJ) $(CLOBJ)
+ 
+ EXIV2OBJ  = $(EXIV2MAIN:.cpp=.o) $(EXIV2SRC:.cpp=.o)
+-EXIV2COBJ = $(EXIVCSRC:.c=.o)
++EXIVCOBJ  = $(EXIVCSRC:.c=.o)
+ EXIV2EXE  = $(EXIV2MAIN:.cpp=$(EXEEXT))
+ 
+ ifdef DEP_TRACKING
+@@ -251,9 +248,9 @@ lib: $(OBJ)
+ $(BINARY): %: %.o lib
+ 	@$(LIBTOOL) --mode=link $(LINK.cc) -o $@ $(LIBRARY) $@.o -rpath $(libdir)
+ 
+-$(EXIV2EXE): lib $(EXIV2OBJ) $(EXIV2COBJ)
++$(EXIV2EXE): lib $(EXIV2OBJ) $(EXIVCOBJ)
+ 	mkdir -pv ../bin 2>&1 > /dev/null
+-	@$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIV2COBJ) -rpath $(libdir)
++	@$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIVCOBJ) -rpath $(libdir)
+ 
+ install-header:
+ 	$(INSTALL_DIRS) $(DESTDIR)$(incdir)
+diff --git a/src/getopt_win32.c b/src/getopt_win32.c
+index fca29924..18dfcfbf 100644
+--- a/src/getopt_win32.c
++++ b/src/getopt_win32.c
+@@ -194,6 +194,10 @@ permute_args(panonopt_start, panonopt_end, opt_end, nargv)
+ 	}
+ }
+ 
++#ifdef __GETOPT_DEFINE_ARGV__
++char * const *__argv;
++#endif
++
+ /*
+  * getopt_internal --
+  *	Parse argc/argv argument vector.  Called by user level routines.
+@@ -205,6 +209,11 @@ getopt_internal(nargc, nargv, options)
+ 	char * const *nargv;
+ 	const char *options;
+ {
++
++#ifdef __GETOPT_DEFINE_ARGV__
++    __argv=nargv;
++#endif
++
+ 	char *oli;				/* option letter list index */
+ 	int optchar;
+ 
+diff --git a/src/getopt_win32.h b/src/getopt_win32.h
+index 6b6f643b..cd5760a3 100644
+--- a/src/getopt_win32.h
++++ b/src/getopt_win32.h
+@@ -38,6 +38,13 @@
+ extern "C" {
+ #endif
+ 
++#if !defined(_WIN32) &&  !defined(__CYGWIN__) && !defined(__MINGW__) && !defined(_MSC_VER)
++// the symbol __argv (and __argc and __progname and __env) are defined in Windows environments
++// for *ix environments, __argv is declared here, defined: getopt_win32.c, init'd: getopt_internal()
++#define __GETOPT_DEFINE_ARGV__
++extern char * const *__argv;
++#endif
++
+ extern int   opterr;      /* if error message should be printed */
+ extern int   optind;      /* index into parent argv vector */
+ extern int   optopt;      /* character checked for validity */
+diff --git a/src/utils.cpp b/src/utils.cpp
+index a3d36497..2a092330 100644
+--- a/src/utils.cpp
++++ b/src/utils.cpp
+@@ -32,18 +32,15 @@ EXIV2_RCSID("@(#) $Id$")
+ #include "config.h"
+ 
+ #include "utils.hpp"
+-
+-// + standard includes
+-#if defined(_MSC_VER) || defined(__MINGW__)
+-# include "getopt_win32.h"
+-#endif
++#include "getopt_win32.h"
+ 
+ #if defined(_MSC_VER)
+ # define S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)
+ #endif
+ 
++// + standard includes
+ #ifdef EXV_HAVE_UNISTD_H
+-# include <unistd.h>                     // for getopt(), stat()
++# include <unistd.h>                     // for stat()
+ #endif
+ 
+ #include <sys/types.h>
+-- 
+2.17.0
+

diff --git a/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2018-4868.patch b/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2018-4868.patch
new file mode 100644
index 0000000..a594a2b
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2018-4868.patch
@@ -0,0 +1,39 @@
+From ce4f575e106697c0e513091e95a7cd12ed6a488b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dan.cermak@cgc-instruments.com>
+Date: Tue, 9 Jan 2018 21:18:36 +0100
+Subject: [PATCH 1/8] Add check for DataBuf.size_ in Jp2Image::readMetadata()
+
+When parsing a subBox that is a ColorHeader, a length is extracted
+from the input file and fed directly into DataBuf() (which calls
+malloc). A crafted input file can provide arbitrarily (up to
+max(uint32_t)-8) large values and result in excessive memory
+allocation.
+
+This commit adds a check for the new size of DataBuf so that it is not
+larger than the remaining size of the file.
+
+This fixes #202 aka CVE-2018-4868
+---
+ src/jp2image.cpp | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/jp2image.cpp b/src/jp2image.cpp
+index a308bfd9..3cebc2a8 100644
+--- a/src/jp2image.cpp
++++ b/src/jp2image.cpp
+@@ -272,7 +272,12 @@ namespace Exiv2
+ #endif
+ 
+                             const long pad = 3 ; // 3 padding bytes 2 0 0
+-                            DataBuf data(Safe::add(subBox.length, static_cast<uint32_t>(8)));
++			    const size_t data_length = Safe::add(subBox.length, static_cast<uint32_t>(8));
++			    // data_length makes no sense if it is larger than the rest of the file
++			    if (data_length > io_->size() - io_->tell()) {
++				throw Error(58);
++			    }
++                            DataBuf data(data_length);
+                             io_->read(data.pData_,data.size_);
+                             const long    iccLength = getULong(data.pData_+pad, bigEndian);
+                             // subtracting pad from data.size_ is safe:
+-- 
+2.17.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [gentoo-commits] proj/musl:master commit in: media-gfx/exiv2/, media-gfx/exiv2/files/
@ 2020-04-22 22:15 Anthony G. Basile
  0 siblings, 0 replies; 4+ messages in thread
From: Anthony G. Basile @ 2020-04-22 22:15 UTC (permalink / raw
  To: gentoo-commits

commit:     8d9dede28f474c6796c9df677bbb286a45e673b8
Author:     Michael Everitt <gentoo <AT> veremit <DOT> xyz>
AuthorDate: Wed Apr 22 22:14:47 2020 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Wed Apr 22 22:15:19 2020 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=8d9dede2

Fixed upstream in commit d775683 and release 0.27.

Gentoo ebuild for 0.27.2 WFM:
>>> Completed installing media-gfx/exiv2-0.27.2 into /var/tmp/portage/media-gfx/exiv2-0.27.2/image
>>> media-gfx/exiv2-0.27.2 merged.

Signed-off-by: Michael Everitt <gentoo <AT> veremit.xyz>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>

 media-gfx/exiv2/Manifest                           |   2 -
 media-gfx/exiv2/exiv2-0.26_p20171104.ebuild        | 129 ------
 media-gfx/exiv2/exiv2-0.26_p20180319.ebuild        | 136 ------
 media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch    |  83 ----
 media-gfx/exiv2/files/exiv2-0.26-musl.patch        |  33 --
 .../exiv2/files/exiv2-0.26-pentaxnikon-crash.patch |  52 ---
 .../exiv2/files/exiv2-0.26-tools-optional.patch    |  28 --
 .../exiv2-0.26_p20180319-CVE-2017-18005.patch      | 484 ---------------------
 .../files/exiv2-0.26_p20180319-CVE-2018-4868.patch |  39 --
 media-gfx/exiv2/metadata.xml                       |  19 -
 10 files changed, 1005 deletions(-)

diff --git a/media-gfx/exiv2/Manifest b/media-gfx/exiv2/Manifest
deleted file mode 100644
index ff80754..0000000
--- a/media-gfx/exiv2/Manifest
+++ /dev/null
@@ -1,2 +0,0 @@
-DIST exiv2-0.26_p20171104.tar.gz 28368697 BLAKE2B 50013cf0bf30a2a476b02d5db4027fca268a4b38733762eb4c08e5f3bdfaf737038e9a62f7ef471fecb10250d8ae686ef683f9b0ea4ccc5d109440ba534371e4 SHA512 6f6a884d7978e54dceb9ce45248cd0425ff469887c85ef52b0e38cb755970f69fce96b4b5317c8e8070b833f72ca214696042aac71292a6f9c3440f6a369d474
-DIST exiv2-0.26_p20180319.tar.gz 28383543 BLAKE2B 753a2ebdb2033490c0f66cb1fb2574f02125f17813f6cbaf5eca66e053af9a2cdbc1266f0a033f0706ec22b31acd6e87271e426a335a58ee947757b52d283489 SHA512 852ce2cffcc0a2d902a939933127fdf5fa0b50020e1faf3ab0a375b129b9f61c7b97b76d4f39e376e7288d7cc045867bd1a96ae15dd0b7c0bcd1ba15259628e1

diff --git a/media-gfx/exiv2/exiv2-0.26_p20171104.ebuild b/media-gfx/exiv2/exiv2-0.26_p20171104.ebuild
deleted file mode 100644
index edb2409..0000000
--- a/media-gfx/exiv2/exiv2-0.26_p20171104.ebuild
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
-if [[ ${PV} = *9999 ]]; then
-	EGIT_REPO_URI="https://github.com/Exiv2/exiv2.git"
-	EGIT_BRANCH="0.26"
-	GIT_ECLASS=git-r3
-else
-	COMMIT=900d2417dbeb46e14cbf65fc2798ed1d043ab76d
-	SRC_URI="https://github.com/Exiv2/${PN}/tarball/${COMMIT} -> ${P}.tar.gz"
-	KEYWORDS="amd64 arm arm64 ~mips ppc x86"
-fi
-inherit cmake-multilib python-any-r1 vcs-snapshot
-
-DESCRIPTION="EXIF, IPTC and XMP metadata C++ library and command line utility"
-HOMEPAGE="http://www.exiv2.org/"
-
-LICENSE="GPL-2"
-SLOT="0/26"
-IUSE="doc examples nls png webready xmp"
-
-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? (
-		${PYTHON_DEPS}
-		app-doc/doxygen
-		dev-libs/libxslt
-		media-gfx/graphviz
-		virtual/pkgconfig
-	)
-	nls? ( sys-devel/gettext )
-"
-
-DOCS=( README doc/ChangeLog doc/cmd.txt )
-
-PATCHES=(
-	# TODO: Take to upstream
-	"${FILESDIR}"/${PN}-0.26-fix-docs.patch
-	"${FILESDIR}"/${PN}-0.26-tools-optional.patch
-	"${FILESDIR}"/${PN}-0.26-musl.patch
-)
-
-pkg_setup() {
-	use doc && python-any-r1_pkg_setup
-}
-
-src_prepare() {
-	if [[ ${PV} != *9999 ]] ; then
-		if [[ -d po ]] ; then
-			pushd po > /dev/null || die
-			local lang
-			for lang in *.po; do
-				if [[ -e ${lang} ]] \
-						&& ! has ${lang/.po/} ${LINGUAS-${lang/.po/}} ; then
-					case ${lang} in
-						CMakeLists.txt | \
-						${PN}.pot)      ;;
-						*) rm -r ${lang} || die ;;
-					esac
-				fi
-			done
-			popd > /dev/null || die
-		else
-			die "Failed to prepare LINGUAS - po directory moved?"
-		fi
-	fi
-
-	# FIXME @upstream:
-	einfo "Converting doc/cmd.txt to UTF-8"
-	iconv -f LATIN1 -t UTF-8 doc/cmd.txt > doc/cmd.txt.tmp || die
-	mv -f doc/cmd.txt.tmp doc/cmd.txt || die
-
-	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_SAMPLES=NO
-		-DEXIV2_ENABLE_BUILD_PO=$(usex nls)
-		-DEXIV2_ENABLE_NLS=$(usex nls)
-		-DEXIV2_ENABLE_PNG=$(usex png)
-		-DEXIV2_ENABLE_CURL=$(usex webready)
-		-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() {
-	use xmp && DOCS+=( doc/{COPYING-XMPSDK,README-XMP,cmdxmp.txt} )
-	use doc && HTML_DOCS=( "${S}"/doc/html/. )
-
-	einstalldocs
-	find "${D}" -name '*.la' -delete || die
-
-	if use examples; then
-		docinto examples
-		dodoc samples/*.cpp
-	fi
-}

diff --git a/media-gfx/exiv2/exiv2-0.26_p20180319.ebuild b/media-gfx/exiv2/exiv2-0.26_p20180319.ebuild
deleted file mode 100644
index 41c6e6f..0000000
--- a/media-gfx/exiv2/exiv2-0.26_p20180319.ebuild
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
-if [[ ${PV} = *9999 ]]; then
-	EGIT_REPO_URI="https://github.com/Exiv2/exiv2.git"
-	EGIT_BRANCH="0.26"
-	GIT_ECLASS=git-r3
-else
-	COMMIT=876b1314ab892cbfa6672b6b94adbeb90db4211f
-	SRC_URI="https://github.com/Exiv2/${PN}/tarball/${COMMIT} -> ${P}.tar.gz"
-	KEYWORDS="~amd64 ~arm ~arm64 ~mips ~ppc ~x86"
-fi
-inherit cmake-multilib python-any-r1
-
-DESCRIPTION="EXIF, IPTC and XMP metadata C++ library and command line utility"
-HOMEPAGE="http://www.exiv2.org/"
-
-LICENSE="GPL-2"
-SLOT="0/26"
-IUSE="doc examples nls png webready xmp"
-
-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? (
-		${PYTHON_DEPS}
-		app-doc/doxygen
-		dev-libs/libxslt
-		media-gfx/graphviz
-		virtual/pkgconfig
-	)
-	nls? ( sys-devel/gettext )
-"
-
-DOCS=( README doc/ChangeLog doc/cmd.txt )
-
-S="${WORKDIR}/${PN^}-${PN}-${COMMIT:0:7}"
-
-PATCHES=(
-	# master, pending backports for 0.26
-	"${FILESDIR}"/${P}-CVE-2018-4868.patch
-	"${FILESDIR}"/${P}-CVE-2017-18005.patch
-	# TODO: Take to upstream
-	"${FILESDIR}"/${PN}-0.26-fix-docs.patch
-	"${FILESDIR}"/${PN}-0.26-tools-optional.patch
-	"${FILESDIR}"/${PN}-0.26-musl.patch
-)
-
-pkg_setup() {
-	use doc && python-any-r1_pkg_setup
-}
-
-src_prepare() {
-	if [[ ${PV} != *9999 ]] ; then
-		if [[ -d po ]] ; then
-			pushd po > /dev/null || die
-			local lang
-			for lang in *.po; do
-				if [[ -e ${lang} ]] \
-						&& ! has ${lang/.po/} ${LINGUAS-${lang/.po/}} ; then
-					case ${lang} in
-						CMakeLists.txt | \
-						${PN}.pot)      ;;
-						*) rm -r ${lang} || die ;;
-					esac
-				fi
-			done
-			popd > /dev/null || die
-		else
-			die "Failed to prepare LINGUAS - po directory moved?"
-		fi
-	fi
-
-	# FIXME @upstream:
-	einfo "Converting doc/cmd.txt to UTF-8"
-	iconv -f LATIN1 -t UTF-8 doc/cmd.txt > doc/cmd.txt.tmp || die
-	mv -f doc/cmd.txt.tmp doc/cmd.txt || die
-
-	if use doc; then
-		einfo "Updating doxygen config"
-		doxygen &>/dev/null -u config/Doxyfile || die
-	fi
-
-	edos2unix samples/exiv2json.cpp # workaround for CVE-2017-18005 patch
-
-	cmake-utils_src_prepare
-}
-
-multilib_src_configure() {
-	local mycmakeargs=(
-		-DEXIV2_ENABLE_BUILD_SAMPLES=NO
-		-DEXIV2_ENABLE_BUILD_PO=$(usex nls)
-		-DEXIV2_ENABLE_NLS=$(usex nls)
-		-DEXIV2_ENABLE_PNG=$(usex png)
-		-DEXIV2_ENABLE_CURL=$(usex webready)
-		-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() {
-	use xmp && DOCS+=( doc/{COPYING-XMPSDK,README-XMP,cmdxmp.txt} )
-	use doc && HTML_DOCS=( "${S}"/doc/html/. )
-
-	einstalldocs
-	find "${D}" -name '*.la' -delete || die
-
-	if use examples; then
-		docinto examples
-		dodoc samples/*.cpp
-	fi
-}

diff --git a/media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch b/media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch
deleted file mode 100644
index 05ea18d..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-fix-docs.patch
+++ /dev/null
@@ -1,83 +0,0 @@
---- a/CMakeLists.txt	2015-07-19 16:04:35.363628707 +0200
-+++ b/CMakeLists.txt	2015-07-19 16:28:31.051680136 +0200
-@@ -216,9 +216,7 @@
- ADD_SUBDIRECTORY( xmpsdk )
- ADD_SUBDIRECTORY( src )
- 
--IF( EXIV2_ENABLE_BUILD_SAMPLES )
--    ADD_SUBDIRECTORY( samples )
--ENDIF( EXIV2_ENABLE_BUILD_SAMPLES )
-+ADD_SUBDIRECTORY( samples )
- 
- IF( EXIV2_ENABLE_BUILD_PO )
-     ADD_SUBDIRECTORY( po )
---- a/samples/CMakeLists.txt	2015-07-19 16:04:35.360628744 +0200
-+++ b/samples/CMakeLists.txt	2015-07-19 16:30:46.415987850 +0200
-@@ -21,6 +21,10 @@
- include_directories("${CMAKE_SOURCE_DIR}/include" "${CMAKE_SOURCE_DIR}/src")
- 
--SET( SAMPLES addmoddel.cpp
-+SET( SAMPLES taglist.cpp )
-+
-+IF( EXIV2_ENABLE_BUILD_SAMPLES )
-+    SET( SAMPLES ${SAMPLES}
-+             addmoddel.cpp
-              convert-test.cpp
-              easyaccess-test.cpp
-              exifcomment.cpp
-@@ -38,7 +42,6 @@
-              mmap-test.cpp
-              prevtest.cpp
-              stringto-test.cpp
--             taglist.cpp
-              tiff-test.cpp
-              werror-test.cpp
-              write-test.cpp
-@@ -47,6 +50,7 @@
-              xmpparser-test.cpp
-              xmpsample.cpp
-    )
-+ENDIF()
- 
- FOREACH(entry ${SAMPLES})
-     STRING( REPLACE ".cpp" "" target ${entry})
-@@ -63,6 +67,7 @@
-     SET( MC_SRC            ${MC_SRC}       ../src/getopt_win32.c )
- ENDIF( MSVC )
- 
-+IF( EXIV2_ENABLE_BUILD_SAMPLES )
- SET( MC_SRC ${MC_SRC} metacopy.cpp ../src/utils.cpp )
- ADD_EXECUTABLE( metacopy ${MC_SRC} )
- TARGET_LINK_LIBRARIES( metacopy exiv2lib )
-@@ -79,6 +84,7 @@
- # ******************************************************************************
- # Man page
- INSTALL( FILES exiv2samples.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
-+ENDIF()
- 
- # That's all Folks!
- ##
---- a/doc/templates/Makefile	2015-07-19 16:50:50.589933604 +0200
-+++ b/doc/templates/Makefile	2015-07-19 16:51:07.686719864 +0200
-@@ -143,7 +143,7 @@
-          xmp_mwg-rs \
-          xmp_mwg-kw
- 
--TAGLIST = ../../bin/taglist
-+TAGLIST = ../../src/bin/taglist
- 
- # **********************************************************************
- # ======================================================================
-diff --git a/doc/cmake_doc.sh b/doc/cmake_doc.sh
-index 44dd6760..5910a86d 100755
---- a/doc/cmake_doc.sh
-+++ b/doc/cmake_doc.sh
-@@ -16,7 +16,7 @@ if [ $# == 1 ]; then
-         mv src/exv_conf.h.keep src/exv_conf.h
-     fi
-     mkdir -p  src/bin/
--    cp    -f  "${CMAKE_BINARY_DIR}/bin/taglist" src/bin/
-+    cp    -f  "${CMAKE_BINARY_DIR}/samples/taglist" src/bin/
-     make doc
- fi
- 

diff --git a/media-gfx/exiv2/files/exiv2-0.26-musl.patch b/media-gfx/exiv2/files/exiv2-0.26-musl.patch
deleted file mode 100644
index ed4f010..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-musl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From d775683f579543c35463ab2a8d9425da10d2f016 Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Wed, 4 Oct 2017 00:15:30 -0500
-Subject: [PATCH] Amend fix for #9 to apply to other Unix systems
-
-At least the musl libc on Linux has the same issue as Mac OS X: the
-PTHREAD_RECURSIVE_* static initialiser does not exist.  This is a
-documented and purposeful omission:
-
-http://www.openwall.com/lists/musl/2017/02/20/3
-
-This commit uses similar logic to the Apple test on other Unixes.
----
- src/actions.cpp | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/actions.cpp b/src/actions.cpp
-index fe14de40..aa15ec7d 100644
---- a/src/actions.cpp
-+++ b/src/actions.cpp
-@@ -2051,7 +2051,11 @@ namespace {
-     static pthread_mutex_t cs =  PTHREAD_MUTEX_INITIALIZER;
-   #endif
-  #else
--  static pthread_mutex_t cs =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-+  #if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
-+    static pthread_mutex_t cs =  PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-+   #else
-+    static pthread_mutex_t cs =  PTHREAD_MUTEX_INITIALIZER;
-+  #endif
-  #endif
- #endif
- 

diff --git a/media-gfx/exiv2/files/exiv2-0.26-pentaxnikon-crash.patch b/media-gfx/exiv2/files/exiv2-0.26-pentaxnikon-crash.patch
deleted file mode 100644
index a66af8d..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-pentaxnikon-crash.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 2dc166b04ca6152d01bff6627a332e89ddef24d1 Mon Sep 17 00:00:00 2001
-From: clanmills <robin@clanmills.com>
-Date: Tue, 12 Sep 2017 09:14:42 +0100
-Subject: [PATCH 1/2] Fix http://dev.exiv2.org/issues/1305
-
----
- src/pentaxmn.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/pentaxmn.cpp b/src/pentaxmn.cpp
-index 4fc38be0..b22cb43b 100644
---- a/src/pentaxmn.cpp
-+++ b/src/pentaxmn.cpp
-@@ -1167,6 +1167,8 @@ namespace Exiv2 {
- 
-     std::ostream& PentaxMakerNote::printShutterCount(std::ostream& os, const Value& value, const ExifData* metadata)
-     {
-+        if ( ! metadata ) return os << "undefined" ;
-+
-         ExifData::const_iterator dateIt = metadata->findKey(
-                 ExifKey("Exif.PentaxDng.Date"));
-         if (dateIt == metadata->end()) {
--- 
-2.13.6
-
-
-From 3bc0b91bcecefdad531129b1a934be1251021c95 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C4=81ris=20Narti=C5=A1s?= <mn@sungis.lv>
-Date: Mon, 18 Sep 2017 23:37:40 +0300
-Subject: [PATCH 2/2] Fix crash on undefined metadata on some Nikon images.
- Identical to commit:5405d61623e82896e498c5c8342dd6f42e689115
-
----
- src/nikonmn.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/nikonmn.cpp b/src/nikonmn.cpp
-index 571ab806..34bf601c 100644
---- a/src/nikonmn.cpp
-+++ b/src/nikonmn.cpp
-@@ -299,6 +299,8 @@ namespace Exiv2 {
-                                                const Value& value,
-                                                const ExifData* exifData)
-     {
-+        if ( ! exifData ) return os << "undefined" ;
-+
-         if ( value.count() >= 9 ) {
-             ByteOrder bo = getKeyString("Exif.MakerNote.ByteOrder",exifData) == "MM" ? bigEndian : littleEndian;
-             byte      p[4];
--- 
-2.13.6
-

diff --git a/media-gfx/exiv2/files/exiv2-0.26-tools-optional.patch b/media-gfx/exiv2/files/exiv2-0.26-tools-optional.patch
deleted file mode 100644
index 686b37f..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26-tools-optional.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- a/CMakeLists.txt	2017-06-07 00:14:25.374608170 +0200
-+++ b/CMakeLists.txt	2017-06-07 00:17:00.680483299 +0200
-@@ -60,6 +60,7 @@
-     OPTION( EXIV2_ENABLE_SSH           "USE Libssh for SshIo"                              ON  )
-     SET ( EXIV2_ENABLE_DYNAMIC_RUNTIME OFF )
- ENDIF()
-+OPTION( EXIV2_ENABLE_TOOLS         "Build exiv2 executable"                                ON  )
- 
- # set include path for FindXXX.cmake files
- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/config/")
---- a/src/CMakeLists.txt	2017-06-07 00:14:25.368608098 +0200
-+++ b/src/CMakeLists.txt	2017-06-07 00:16:06.710831682 +0200
-@@ -317,10 +317,12 @@
- 
- # ******************************************************************************
- # exiv2 application
--ADD_EXECUTABLE( exiv2 ${EXIV2_SRC}  ${EXIV2_HDR} )
-+IF(EXIV2_ENABLE_TOOLS)
-+    ADD_EXECUTABLE( exiv2 ${EXIV2_SRC}  ${EXIV2_HDR} )
- target_compile_definitions(exiv2 PRIVATE EXV_LOCALEDIR="${CMAKE_INSTALL_LOCALEDIR}" )
--TARGET_LINK_LIBRARIES( exiv2 exiv2lib ${LIBINTL_LIBRARIES} )
--INSTALL( TARGETS exiv2 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-+    TARGET_LINK_LIBRARIES( exiv2 exiv2lib ${LIBINTL_LIBRARIES} )
-+    INSTALL( TARGETS exiv2 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-+ENDIF( EXIV2_ENABLE_TOOLS )
- 
- # ******************************************************************************
- # connection test application

diff --git a/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2017-18005.patch b/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2017-18005.patch
deleted file mode 100644
index d74ca59..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2017-18005.patch
+++ /dev/null
@@ -1,484 +0,0 @@
-From 8e31dd8c14fdc83f387f35dda7b1b70fbdbd70db Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
-Date: Tue, 19 Dec 2017 19:52:41 +0100
-Subject: [PATCH 3/8] Only print items (Params::prValue) when size > 0
-
----
- src/actions.cpp | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/actions.cpp b/src/actions.cpp
-index 9f850097..3963cb67 100644
---- a/src/actions.cpp
-+++ b/src/actions.cpp
-@@ -713,8 +713,9 @@ namespace Action {
-                       << std::setfill(' ') << std::right
-                       << md.size();
-         }
--        if (Params::instance().printItems_ & Params::prValue) {
--            if (!first) std::cout << "  ";
-+        if (Params::instance().printItems_ & Params::prValue && md.size() > 0) {
-+            if (!first)
-+                std::cout << "  ";
-             first = false;
-             if (   Params::instance().binary_
-                 && (   md.typeId() == Exiv2::undefined
--- 
-2.17.0
-
-
-From 463485e5c1cc716108880f75b9c573715bf402b1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
-Date: Tue, 19 Dec 2017 19:54:17 +0100
-Subject: [PATCH 4/8] Move condition in if statement to discard work earlier
-
----
- src/actions.cpp | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/src/actions.cpp b/src/actions.cpp
-index 3963cb67..f51cb488 100644
---- a/src/actions.cpp
-+++ b/src/actions.cpp
-@@ -717,11 +717,10 @@ namespace Action {
-             if (!first)
-                 std::cout << "  ";
-             first = false;
--            if (   Params::instance().binary_
--                && (   md.typeId() == Exiv2::undefined
-+            if (md.size() > 128 && Params::instance().binary_ && (
-+                       md.typeId() == Exiv2::undefined
-                     || md.typeId() == Exiv2::unsignedByte
--                    || md.typeId() == Exiv2::signedByte)
--                && md.size() > 128) {
-+                    || md.typeId() == Exiv2::signedByte)) {
-                 std::cout << _("(Binary value suppressed)") << std::endl;
-                 return true;
-             }
--- 
-2.17.0
-
-
-From 7fe7501c01e5d1eec16a736062dd0c34d6408833 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
-Date: Tue, 19 Dec 2017 19:55:50 +0100
-Subject: [PATCH 5/8] Apply clang-format to Print::printMetadatum
-
----
- src/actions.cpp | 110 ++++++++++++++++++++++++------------------------
- 1 file changed, 55 insertions(+), 55 deletions(-)
-
-diff --git a/src/actions.cpp b/src/actions.cpp
-index f51cb488..b31d6ec6 100644
---- a/src/actions.cpp
-+++ b/src/actions.cpp
-@@ -636,91 +636,90 @@ namespace Action {
- 
-     bool Print::printMetadatum(const Exiv2::Metadatum& md, const Exiv2::Image* pImage)
-     {
--        if (!grepTag(md.key())) return false;
--        if (!keyTag (md.key())) return false;
-+        if (!grepTag(md.key()))
-+            return false;
-+        if (!keyTag(md.key()))
-+            return false;
- 
--        if (   Params::instance().unknown_
--            && md.tagName().substr(0, 2) == "0x") {
-+        if (Params::instance().unknown_ && md.tagName().substr(0, 2) == "0x") {
-             return false;
-         }
-+
-         bool const manyFiles = Params::instance().files_.size() > 1;
-         if (manyFiles) {
--            std::cout << std::setfill(' ') << std::left << std::setw(20)
--                      << path_ << "  ";
-+            std::cout << std::setfill(' ') << std::left << std::setw(20) << path_ << "  ";
-         }
-+
-         bool first = true;
-         if (Params::instance().printItems_ & Params::prTag) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << "0x" << std::setw(4) << std::setfill('0')
--                      << std::right << std::hex
--                      << md.tag();
-+            std::cout << "0x" << std::setw(4) << std::setfill('0') << std::right << std::hex << md.tag();
-         }
-         if (Params::instance().printItems_ & Params::prSet) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << "set" ;
-+            std::cout << "set";
-         }
-         if (Params::instance().printItems_ & Params::prGroup) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << std::setw(12) << std::setfill(' ') << std::left
--                      << md.groupName();
-+            std::cout << std::setw(12) << std::setfill(' ') << std::left << md.groupName();
-         }
-         if (Params::instance().printItems_ & Params::prKey) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << std::setfill(' ') << std::left << std::setw(44)
--                      << md.key();
-+            std::cout << std::setfill(' ') << std::left << std::setw(44) << md.key();
-         }
-         if (Params::instance().printItems_ & Params::prName) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << std::setw(27) << std::setfill(' ') << std::left
--                      << md.tagName();
-+            std::cout << std::setw(27) << std::setfill(' ') << std::left << md.tagName();
-         }
-         if (Params::instance().printItems_ & Params::prLabel) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << std::setw(30) << std::setfill(' ') << std::left
--                      << md.tagLabel();
-+            std::cout << std::setw(30) << std::setfill(' ') << std::left << md.tagLabel();
-         }
-         if (Params::instance().printItems_ & Params::prType) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
-             std::cout << std::setw(9) << std::setfill(' ') << std::left;
-             const char* tn = md.typeName();
-             if (tn) {
-                 std::cout << tn;
--            }
--            else {
-+            } else {
-                 std::ostringstream os;
-                 os << "0x" << std::setw(4) << std::setfill('0') << std::hex << md.typeId();
-                 std::cout << os.str();
-             }
-         }
-         if (Params::instance().printItems_ & Params::prCount) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << std::dec << std::setw(3)
--                      << std::setfill(' ') << std::right
--                      << md.count();
-+            std::cout << std::dec << std::setw(3) << std::setfill(' ') << std::right << md.count();
-         }
-         if (Params::instance().printItems_ & Params::prSize) {
--            if (!first) std::cout << " ";
-+            if (!first)
-+                std::cout << " ";
-             first = false;
--            std::cout << std::dec << std::setw(3)
--                      << std::setfill(' ') << std::right
--                      << md.size();
-+            std::cout << std::dec << std::setw(3) << std::setfill(' ') << std::right << md.size();
-         }
-         if (Params::instance().printItems_ & Params::prValue && md.size() > 0) {
-             if (!first)
-                 std::cout << "  ";
-             first = false;
--            if (md.size() > 128 && Params::instance().binary_ && (
--                       md.typeId() == Exiv2::undefined
--                    || md.typeId() == Exiv2::unsignedByte
--                    || md.typeId() == Exiv2::signedByte)) {
-+            if (md.size() > 128 && Params::instance().binary_ &&
-+                (md.typeId() == Exiv2::undefined || md.typeId() == Exiv2::unsignedByte ||
-+                 md.typeId() == Exiv2::signedByte)) {
-                 std::cout << _("(Binary value suppressed)") << std::endl;
-                 return true;
-             }
-@@ -738,22 +737,22 @@ namespace Action {
-             }
-             if (!done) {
-                 // #1114 - show negative values for SByte
--                if (md.typeId() != Exiv2::signedByte){
-+                if (md.typeId() != Exiv2::signedByte) {
-                     std::cout << std::dec << md.value();
-                 } else {
-                     int value = md.value().toLong();
--                    std::cout << std::dec << (value<128?value:value-256);
-+                    std::cout << std::dec << (value < 128 ? value : value - 256);
-                 }
-             }
-         }
-         if (Params::instance().printItems_ & Params::prTrans) {
--            if (!first) std::cout << "  ";
-+            if (!first)
-+                std::cout << "  ";
-             first = false;
--            if (   Params::instance().binary_
--                && (   md.typeId() == Exiv2::undefined
--                    || md.typeId() == Exiv2::unsignedByte
--                    || md.typeId() == Exiv2::signedByte)
--                && md.size() > 128) {
-+            if (Params::instance().binary_ &&
-+                (md.typeId() == Exiv2::undefined || md.typeId() == Exiv2::unsignedByte ||
-+                 md.typeId() == Exiv2::signedByte) &&
-+                md.size() > 128) {
-                 std::cout << _("(Binary value suppressed)") << std::endl;
-                 return true;
-             }
-@@ -765,16 +764,17 @@ namespace Action {
-                     done = true;
-                 }
-             }
--            if (!done) std::cout << std::dec << md.print(&pImage->exifData());
-+            if (!done)
-+                std::cout << std::dec << md.print(&pImage->exifData());
-         }
-         if (Params::instance().printItems_ & Params::prHex) {
--            if (!first) std::cout << std::endl;
-+            if (!first)
-+                std::cout << std::endl;
-             first = false;
--            if (   Params::instance().binary_
--                && (   md.typeId() == Exiv2::undefined
--                    || md.typeId() == Exiv2::unsignedByte
--                    || md.typeId() == Exiv2::signedByte)
--                && md.size() > 128) {
-+            if (Params::instance().binary_ &&
-+                (md.typeId() == Exiv2::undefined || md.typeId() == Exiv2::unsignedByte ||
-+                 md.typeId() == Exiv2::signedByte) &&
-+                md.size() > 128) {
-                 std::cout << _("(Binary value suppressed)") << std::endl;
-                 return true;
-             }
-@@ -784,7 +784,7 @@ namespace Action {
-         }
-         std::cout << std::endl;
-         return true;
--    } // Print::printMetadatum
-+    }  // Print::printMetadatum
- 
-     int Print::printComment()
-     {
--- 
-2.17.0
-
-
-From 78ddc7a92afaaf58b78d5c49b5c2ad7b60a4e25f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
-Date: Thu, 21 Dec 2017 16:39:43 +0100
-Subject: [PATCH 6/8] Do not deference value when it does not exist (Thanks
- D4N)
-
----
- samples/exiv2json.cpp | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/samples/exiv2json.cpp b/samples/exiv2json.cpp
-index 505268d9..a81268f0 100644
---- a/samples/exiv2json.cpp
-+++ b/samples/exiv2json.cpp
-@@ -148,6 +148,11 @@ bool isArray(std::string& value)
- template <class T>
- void push(Jzon::Node& node,const std::string& key,T i)
- {
-+#define ABORT_IF_I_EMTPY          \
-+    if (i->value().size() == 0) { \
-+        return;                   \
-+    }
-+
-     std::string value = i->value().toString();
- 
-     switch ( i->typeId() ) {
-@@ -179,6 +184,7 @@ void push(Jzon::Node& node,const std::string& key,T i)
- 
-         case Exiv2::unsignedRational:
-         case Exiv2::signedRational: {
-+             ABORT_IF_I_EMTPY
-              Jzon::Array     arr;
-              Exiv2::Rational rat = i->value().toRational();
-              arr.Add(rat.first );
-@@ -187,6 +193,7 @@ void push(Jzon::Node& node,const std::string& key,T i)
-         } break;
- 
-         case Exiv2::langAlt: {
-+             ABORT_IF_I_EMTPY
-              Jzon::Object l ;
-              const Exiv2::LangAltValue& langs = dynamic_cast<const Exiv2::LangAltValue&>(i->value());
-              for ( Exiv2::LangAltValue::ValueType::const_iterator lang = langs.value_.begin()
--- 
-2.17.0
-
-
-From 871e6e3ced1cdec7e43bf8cb94e269a7f5c09d92 Mon Sep 17 00:00:00 2001
-From: Robin Mills <robin@clanmills.com>
-Date: Thu, 15 Mar 2018 10:43:18 +0000
-Subject: [PATCH 8/8] Fix for getopt(), #199. Use src/getopt_win32 code instead
- of libc/getopt()
-
----
- config/config.mk.in |  2 +-
- src/CMakeLists.txt  |  6 ++----
- src/Makefile        | 13 +++++--------
- src/getopt_win32.c  |  9 +++++++++
- src/getopt_win32.h  |  7 +++++++
- src/utils.cpp       |  9 +++------
- 6 files changed, 27 insertions(+), 19 deletions(-)
-
-diff --git a/config/config.mk.in b/config/config.mk.in
-index 8d920647..4754c722 100644
---- a/config/config.mk.in
-+++ b/config/config.mk.in
-@@ -165,7 +165,7 @@ endif
- # **********************************************************************
- # Compilation shortcuts
- COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
--COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
-+COMPILE.c  = $(CC) $(CFLAGS) -c
- # LINK.cc does not need $(LIBS), libtool's dark magic takes care of that
- # when linking a binary with a libtool library.
- LINK.cc = $(CXX) $(LDFLAGS)
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index d4dc6375..dceee236 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -218,10 +218,8 @@ IF(NOT HAVE_TIMEGM )
-     SET( PATHTEST_SRC     ${PATHTEST_SRC} localtime.c    )
- ENDIF( NOT HAVE_TIMEGM )
- 
--IF( MSVC )
--    SET( EXIV2_SRC        ${EXIV2_SRC}    getopt_win32.c )
--    SET( LIBEXIV2_SRC     ${LIBEXIV2_SRC} getopt_win32.c )
--ENDIF( MSVC )
-+SET( EXIV2_SRC        ${EXIV2_SRC}    getopt_win32.c )
-+SET( LIBEXIV2_SRC     ${LIBEXIV2_SRC} getopt_win32.c )
- 
- ##
- # msvn tuning
-diff --git a/src/Makefile b/src/Makefile
-index 8a8366fe..d046e331 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -131,8 +131,7 @@ CCSRC += asfvideo.cpp      \
- 	 utilsvideo.cpp
- endif
- 
--# Add library C source files to this list
--EXIVCSRC  =
-+# C source files
- ifndef HAVE_TIMEGM
- CSRC =   localtime.c
- endif
-@@ -141,9 +140,7 @@ endif
- EXIV2MAIN = exiv2.cpp
- EXIV2SRC  = actions.cpp \
-             utils.cpp
--
--# C source files for the Exiv2 application
--EXIVCSRC  =
-+EXIVCSRC  = getopt_win32.c
- 
- # ******************************************************************************
- # Library
-@@ -176,7 +173,7 @@ OBJ    = $(CCOBJ) $(COBJ)
- LOBJ   = $(CCLOBJ) $(CLOBJ)
- 
- EXIV2OBJ  = $(EXIV2MAIN:.cpp=.o) $(EXIV2SRC:.cpp=.o)
--EXIV2COBJ = $(EXIVCSRC:.c=.o)
-+EXIVCOBJ  = $(EXIVCSRC:.c=.o)
- EXIV2EXE  = $(EXIV2MAIN:.cpp=$(EXEEXT))
- 
- ifdef DEP_TRACKING
-@@ -251,9 +248,9 @@ lib: $(OBJ)
- $(BINARY): %: %.o lib
- 	@$(LIBTOOL) --mode=link $(LINK.cc) -o $@ $(LIBRARY) $@.o -rpath $(libdir)
- 
--$(EXIV2EXE): lib $(EXIV2OBJ) $(EXIV2COBJ)
-+$(EXIV2EXE): lib $(EXIV2OBJ) $(EXIVCOBJ)
- 	mkdir -pv ../bin 2>&1 > /dev/null
--	@$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIV2COBJ) -rpath $(libdir)
-+	@$(LIBTOOL) --mode=link $(LINK.cc) -o ../bin/$@ $(LIBRARY) $(EXIV2OBJ) $(EXIVCOBJ) -rpath $(libdir)
- 
- install-header:
- 	$(INSTALL_DIRS) $(DESTDIR)$(incdir)
-diff --git a/src/getopt_win32.c b/src/getopt_win32.c
-index fca29924..18dfcfbf 100644
---- a/src/getopt_win32.c
-+++ b/src/getopt_win32.c
-@@ -194,6 +194,10 @@ permute_args(panonopt_start, panonopt_end, opt_end, nargv)
- 	}
- }
- 
-+#ifdef __GETOPT_DEFINE_ARGV__
-+char * const *__argv;
-+#endif
-+
- /*
-  * getopt_internal --
-  *	Parse argc/argv argument vector.  Called by user level routines.
-@@ -205,6 +209,11 @@ getopt_internal(nargc, nargv, options)
- 	char * const *nargv;
- 	const char *options;
- {
-+
-+#ifdef __GETOPT_DEFINE_ARGV__
-+    __argv=nargv;
-+#endif
-+
- 	char *oli;				/* option letter list index */
- 	int optchar;
- 
-diff --git a/src/getopt_win32.h b/src/getopt_win32.h
-index 6b6f643b..cd5760a3 100644
---- a/src/getopt_win32.h
-+++ b/src/getopt_win32.h
-@@ -38,6 +38,13 @@
- extern "C" {
- #endif
- 
-+#if !defined(_WIN32) &&  !defined(__CYGWIN__) && !defined(__MINGW__) && !defined(_MSC_VER)
-+// the symbol __argv (and __argc and __progname and __env) are defined in Windows environments
-+// for *ix environments, __argv is declared here, defined: getopt_win32.c, init'd: getopt_internal()
-+#define __GETOPT_DEFINE_ARGV__
-+extern char * const *__argv;
-+#endif
-+
- extern int   opterr;      /* if error message should be printed */
- extern int   optind;      /* index into parent argv vector */
- extern int   optopt;      /* character checked for validity */
-diff --git a/src/utils.cpp b/src/utils.cpp
-index a3d36497..2a092330 100644
---- a/src/utils.cpp
-+++ b/src/utils.cpp
-@@ -32,18 +32,15 @@ EXIV2_RCSID("@(#) $Id$")
- #include "config.h"
- 
- #include "utils.hpp"
--
--// + standard includes
--#if defined(_MSC_VER) || defined(__MINGW__)
--# include "getopt_win32.h"
--#endif
-+#include "getopt_win32.h"
- 
- #if defined(_MSC_VER)
- # define S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)
- #endif
- 
-+// + standard includes
- #ifdef EXV_HAVE_UNISTD_H
--# include <unistd.h>                     // for getopt(), stat()
-+# include <unistd.h>                     // for stat()
- #endif
- 
- #include <sys/types.h>
--- 
-2.17.0
-

diff --git a/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2018-4868.patch b/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2018-4868.patch
deleted file mode 100644
index a594a2b..0000000
--- a/media-gfx/exiv2/files/exiv2-0.26_p20180319-CVE-2018-4868.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From ce4f575e106697c0e513091e95a7cd12ed6a488b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dan.cermak@cgc-instruments.com>
-Date: Tue, 9 Jan 2018 21:18:36 +0100
-Subject: [PATCH 1/8] Add check for DataBuf.size_ in Jp2Image::readMetadata()
-
-When parsing a subBox that is a ColorHeader, a length is extracted
-from the input file and fed directly into DataBuf() (which calls
-malloc). A crafted input file can provide arbitrarily (up to
-max(uint32_t)-8) large values and result in excessive memory
-allocation.
-
-This commit adds a check for the new size of DataBuf so that it is not
-larger than the remaining size of the file.
-
-This fixes #202 aka CVE-2018-4868
----
- src/jp2image.cpp | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/jp2image.cpp b/src/jp2image.cpp
-index a308bfd9..3cebc2a8 100644
---- a/src/jp2image.cpp
-+++ b/src/jp2image.cpp
-@@ -272,7 +272,12 @@ namespace Exiv2
- #endif
- 
-                             const long pad = 3 ; // 3 padding bytes 2 0 0
--                            DataBuf data(Safe::add(subBox.length, static_cast<uint32_t>(8)));
-+			    const size_t data_length = Safe::add(subBox.length, static_cast<uint32_t>(8));
-+			    // data_length makes no sense if it is larger than the rest of the file
-+			    if (data_length > io_->size() - io_->tell()) {
-+				throw Error(58);
-+			    }
-+                            DataBuf data(data_length);
-                             io_->read(data.pData_,data.size_);
-                             const long    iccLength = getULong(data.pData_+pad, bigEndian);
-                             // subtracting pad from data.size_ is safe:
--- 
-2.17.0

diff --git a/media-gfx/exiv2/metadata.xml b/media-gfx/exiv2/metadata.xml
deleted file mode 100644
index 934a5a6..0000000
--- a/media-gfx/exiv2/metadata.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-	<maintainer type="project">
-		<email>graphics@gentoo.org</email>
-		<name>Gentoo Graphics Project</name>
-	</maintainer>
-	<maintainer type="project">
-		<email>kde@gentoo.org</email>
-		<name>Gentoo KDE Project</name>
-	</maintainer>
-	<longdescription lang="en">
-		Exiv2 is a C++ library and command line utility to read and
-		write EXIF, IPTC and XMP image metadata.
-	</longdescription>
-	<use>
-		<flag name="webready">Support reading metadata over the internet</flag>
-	</use>
-</pkgmetadata>


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-04-22 22:15 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-26 18:06 [gentoo-commits] proj/musl:master commit in: media-gfx/exiv2/, media-gfx/exiv2/files/ Aric Belsito
  -- strict thread matches above, loose matches on Subject: below --
2020-04-22 22:15 Anthony G. Basile
2017-10-13 19:05 Aric Belsito
2016-06-02  5:22 Anthony G. Basile

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox