summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /media-gfx/exiv2
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'media-gfx/exiv2')
-rw-r--r--media-gfx/exiv2/Manifest1
-rw-r--r--media-gfx/exiv2/exiv2-0.24-r1.ebuild136
-rw-r--r--media-gfx/exiv2/files/exiv2-0.23-boost-fs-contrib.patch182
-rw-r--r--media-gfx/exiv2/files/exiv2-0.24-CVE-2014-9449.patch27
-rw-r--r--media-gfx/exiv2/files/exiv2-0.24-python3.patch27
-rw-r--r--media-gfx/exiv2/metadata.xml15
6 files changed, 388 insertions, 0 deletions
diff --git a/media-gfx/exiv2/Manifest b/media-gfx/exiv2/Manifest
new file mode 100644
index 000000000000..f3ef64868d1c
--- /dev/null
+++ b/media-gfx/exiv2/Manifest
@@ -0,0 +1 @@
+DIST exiv2-0.24.tar.gz 4635028 SHA256 f4a443e6c7fb9d9f5e787732f76969a64c72c4c04af69b10ed57f949c2dfef8e SHA512 e2d5d076c09a36d88472485c9d9d99b5a50aea1ab59b1e5c9301b1ce9fe2b2af02acae2662c9ff56b4c749a224688387ba58334d31b74f04f3d2d3d3c0e387e9 WHIRLPOOL b5b7eb544975d8e14739b39fc294279b58369944172684c0f881348ebf47ef0f9ccd18e8bc41113d9da3a72f8d6c048641f547a7071a7ca6d93d1d30ea2d7aed
diff --git a/media-gfx/exiv2/exiv2-0.24-r1.ebuild b/media-gfx/exiv2/exiv2-0.24-r1.ebuild
new file mode 100644
index 000000000000..723e7dc0e69b
--- /dev/null
+++ b/media-gfx/exiv2/exiv2-0.24-r1.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+AUTOTOOLS_IN_SOURCE_BUILD=1
+PYTHON_COMPAT=( python{2_7,3_3,3_4} )
+
+inherit eutils multilib toolchain-funcs python-any-r1 autotools-multilib
+
+DESCRIPTION="EXIF and IPTC 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/13"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x64-solaris ~x86-solaris"
+IUSE_LINGUAS="de es fi fr pl ru sk"
+IUSE="contrib doc examples nls xmp zlib static-libs $(printf 'linguas_%s ' ${IUSE_LINGUAS})"
+
+RDEPEND="
+ >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
+ nls? ( >=virtual/libintl-0-r1[${MULTILIB_USEDEP}] )
+ xmp? ( >=dev-libs/expat-2.1.0-r3[${MULTILIB_USEDEP}] )
+ zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
+"
+
+DEPEND="${RDEPEND}
+ contrib? ( >=dev-libs/boost-1.44 )
+ 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}/${P}-CVE-2014-9449.patch" )
+
+pkg_setup() {
+ use doc && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ # convert docs to UTF-8
+ local i
+ for i in doc/cmd.txt; do
+ einfo "Converting "${i}" to UTF-8"
+ iconv -f LATIN1 -t UTF-8 "${i}" > "${i}~" && mv -f "${i}~" "${i}" || rm -f "${i}~"
+ done
+
+ if use doc; then
+ einfo "Updating doxygen config"
+ doxygen 2>&1 >/dev/null -u config/Doxyfile
+ fi
+
+ if use contrib; then
+ # create build environment for contrib
+ ln -snf ../../src contrib/organize/exiv2
+ sed -i -e 's:/usr/local/include/.*:'"${EPREFIX}"'/usr/include:g' \
+ -e 's:/usr/local/lib/lib:-l:g' -e 's:-gcc..-mt-._..\.a::g' \
+ contrib/organize/boost.mk || die
+ fi
+
+ epatch "${FILESDIR}/${PN}-0.24-python3.patch"
+
+ # set locale to safe value for the sed commands (bug #382731)
+ sed -i -r "s,(\s+)sed\s,\1LC_ALL="C" sed ,g" src/Makefile || die
+
+ autotools-multilib_src_prepare
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ $(use_enable nls)
+ $(use_enable xmp)
+ $(use_enable static-libs static)
+ )
+
+ # plain 'use_with' fails
+ use zlib || myeconfargs+=( --without-zlib )
+
+ # Bug #78720. amd64/gcc-3.4/-fvisibility* fail.
+ if [[ ${ABI} == amd64 && $(gcc-major-version) -lt 4 ]]; then
+ myeconfargs+=( --disable-visibility )
+ fi
+
+ autotools-utils_src_configure
+}
+
+multilib_src_compile() {
+ # Needed for Solaris because /bin/sh is not a bash, bug #245647
+ sed -i -e "s:/bin/sh:${EPREFIX}/bin/sh:" src/Makefile || die "sed failed"
+ emake
+
+ if multilib_is_native_abi; then
+ if use contrib; then
+ emake -C contrib/organize \
+ LDFLAGS="\$(BOOST_LIBS) -L../../src -lexiv2 ${LDFLAGS}" \
+ CPPFLAGS="${CPPFLAGS} -I\$(BOOST_INC_DIR) -I. -DEXV_HAVE_STDINT_H"
+ fi
+
+ if use doc; then
+ emake samples
+ emake doc
+ fi
+ fi
+}
+
+multilib_src_install() {
+ autotools-utils_src_install
+
+ if multilib_is_native_abi; then
+ if use contrib; then
+ emake DESTDIR="${D}" -C contrib/organize install
+ fi
+
+ use doc && dohtml -r doc/html/.
+ fi
+}
+
+multilib_src_install_all() {
+ einstalldocs
+ prune_libtool_files --all
+
+ use xmp && dodoc doc/{COPYING-XMPSDK,README-XMP,cmdxmp.txt}
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ docompress -x /usr/share/doc/${PF}/examples
+ doins samples/*.cpp
+ fi
+}
diff --git a/media-gfx/exiv2/files/exiv2-0.23-boost-fs-contrib.patch b/media-gfx/exiv2/files/exiv2-0.23-boost-fs-contrib.patch
new file mode 100644
index 000000000000..f5ffc473e40a
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.23-boost-fs-contrib.patch
@@ -0,0 +1,182 @@
+--- work/exiv2-0.23/contrib/organize/organize.cpp 2009-03-08 09:26:30.000000000 +0100
++++ work/exiv2-0.23/contrib/organize/organize.cpp 2009-03-08 09:26:30.000000000 +0100
+@@ -294,7 +294,7 @@
+ bool md5sum(const fs::path &path, md5digest &digest)
+ {
+ try {
+- Exiv2::FileIo io(path.file_string());
++ Exiv2::FileIo io(path.string());
+ if (io.open() != 0)
+ return false;
+ Exiv2::IoCloser closer(io);
+@@ -568,8 +568,8 @@
+
+ fs::path uniquify(const fs::path &dest)
+ {
+- std::string ext = dest.extension();
+- std::string fname = dest.stem();
++ std::string ext = dest.extension().string();
++ std::string fname = dest.stem().string();
+ fs::path parent = dest.parent_path();
+
+ unsigned number = 1;
+@@ -600,13 +600,13 @@
+ std::vector<std::string>::const_iterator x_iter = params.excludes.begin();
+ std::vector<std::string>::const_iterator x_end = params.excludes.end();
+ for( ; x_iter != x_end; ++x_iter ) {
+- if(boost::contains(directory.file_string(), *x_iter)) {
++ if(boost::contains(directory.string(), *x_iter)) {
+ exclude = true;
+ break;
+ }
+ }
+ if(exclude) {
+- info(std::string("excluding directory: ") + directory.file_string() +
++ info(std::string("excluding directory: ") + directory.string() +
+ " matched: " + *x_iter);
+ ++params.dir_ex_count;
+ return;
+@@ -621,7 +621,7 @@
+ process_directory(p_iter->path(), depth + 1, params);
+ else {
+ info(std::string("depth reached, skipping: ") +
+- p_iter->path().file_string());
++ p_iter->path().string());
+ }
+ }
+ else if( is_regular_file(*p_iter) ) {
+@@ -630,13 +630,13 @@
+ exclude = false;
+ x_iter = params.excludes.begin();
+ for( ; x_iter != x_end; ++x_iter ) {
+- if(boost::contains(p_iter->path().file_string(), *x_iter)) {
++ if(boost::contains(p_iter->path().string(), *x_iter)) {
+ exclude = true;
+ break;
+ }
+ }
+ if(exclude) {
+- info(std::string("excluding file: ") + p_iter->path().file_string() +
++ info(std::string("excluding file: ") + p_iter->path().string() +
+ " matched: " + *x_iter);
+ ++params.file_ex_count;
+ continue;
+@@ -648,45 +648,45 @@
+ if(!dest_subdir.empty())
+ dest_file = params.dest_dir / dest_subdir;
+ else if(params.ignore_unsorted) {
+- info(std::string("ignoring unsorted: ") + p_iter->path().file_string());
++ info(std::string("ignoring unsorted: ") + p_iter->path().string());
+ ++params.unsorted_ignored_count;
+ continue;
+ }
+ else {
+- info(std::string("unsorted file (missing metadata): ") + p_iter->path().file_string());
++ info(std::string("unsorted file (missing metadata): ") + p_iter->path().string());
+ dest_file = params.unsorted_dir;
+ ++params.unsorted_count;
+ }
+
+- dest_file /= p_iter->filename();
++ dest_file /= p_iter->path().filename();
+
+ if(fs::exists(dest_file)) {
+ if(params.ignore_dups) {
+- info(std::string("ignoring: ") + p_iter->path().file_string() +
+- " duplicates: " + dest_file.file_string());
++ info(std::string("ignoring: ") + p_iter->path().string() +
++ " duplicates: " + dest_file.string());
+ ++params.dups_ignored_count;
+ continue;
+ }
+ else {
+ if(params.force) {
+- info(std::string("force removing: ") + dest_file.file_string() + " for: "
+- + p_iter->path().file_string());
++ info(std::string("force removing: ") + dest_file.string() + " for: "
++ + p_iter->path().string());
+ if(!params.dry_run)
+ fs::remove(dest_file);
+ }
+ else if(params.rename) {
+- info(std::string("renaming: ") + p_iter->path().file_string() +
+- " duplicates: " + dest_file.file_string());
++ info(std::string("renaming: ") + p_iter->path().string() +
++ " duplicates: " + dest_file.string());
+ dest_file = uniquify(dest_file);
+ }
+ else {
+- info(std::string("duplicate file: ") + p_iter->path().file_string() +
+- " of: " + dest_file.file_string());
+- dest_file = params.dups_dir / dest_subdir / p_iter->filename();
++ info(std::string("duplicate file: ") + p_iter->path().string() +
++ " of: " + dest_file.string());
++ dest_file = params.dups_dir / dest_subdir / p_iter->path().filename();
+ // Ugh, more dup possibilities
+ if(fs::exists(dest_file)) {
+- info(std::string("renaming: ") + p_iter->path().file_string() +
+- " duplicates: " + dest_file.file_string());
++ info(std::string("renaming: ") + p_iter->path().string() +
++ " duplicates: " + dest_file.string());
+ dest_file = uniquify(dest_file);
+ }
+ }
+@@ -698,8 +698,8 @@
+ fs::create_directories(dest_file.parent_path());
+
+ if(params.symlink) {
+- info(std::string("linking from: ") + p_iter->path().file_string() +
+- " to: " + dest_file.file_string());
++ info(std::string("linking from: ") + p_iter->path().string() +
++ " to: " + dest_file.string());
+ if(!params.dry_run) {
+ // The target of a symlink must be either absolute (aka complete) or
+ // relative to the location of the link. Easiest solution is to make
+@@ -713,8 +713,8 @@
+ }
+ }
+ else {
+- info(std::string("copying from: ") + p_iter->path().file_string() +
+- " to: " + dest_file.file_string());
++ info(std::string("copying from: ") + p_iter->path().string() +
++ " to: " + dest_file.string());
+ if(!params.dry_run) {
+ // Copy the file and restore its write time (needed for posix)
+ std::time_t time = fs::last_write_time(*p_iter);
+@@ -730,8 +730,8 @@
+ if(!ok) {
+ // Should probably find a more appropriate exception for this
+ throw std::runtime_error(std::string("File verification failed: '")
+- + p_iter->path().file_string() + "' differs from '" +
+- dest_file.file_string() + "'");
++ + p_iter->path().string() + "' differs from '" +
++ dest_file.string() + "'");
+ }
+ else {
+ info(std::string("verification passed"));
+@@ -740,7 +740,7 @@
+ }
+ }
+ if(params.move) {
+- info(std::string("removing: ") + p_iter->path().file_string());
++ info(std::string("removing: ") + p_iter->path().string());
+ if(!params.dry_run)
+ fs::remove(*p_iter);
+ }
+@@ -752,14 +752,14 @@
+ ++params.ok_count;
+ }
+ catch(fs::filesystem_error& e) {
+- error(e, std::string("skipping file: " + p_iter->path().file_string()));
++ error(e, std::string("skipping file: " + p_iter->path().string()));
+ ++params.file_err_count;
+ }
+ }
+ }
+ }
+ catch(fs::filesystem_error& e) {
+- error(e, std::string("skipping directory: " + directory.file_string()));
++ error(e, std::string("skipping directory: " + directory.string()));
+ ++params.dir_err_count;
+ }
+ }
diff --git a/media-gfx/exiv2/files/exiv2-0.24-CVE-2014-9449.patch b/media-gfx/exiv2/files/exiv2-0.24-CVE-2014-9449.patch
new file mode 100644
index 000000000000..cf1b46fbf69c
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.24-CVE-2014-9449.patch
@@ -0,0 +1,27 @@
+diff -up exiv2-0.24/src/riffvideo.cpp.CVE-2014-9449 exiv2-0.24/src/riffvideo.cpp
+--- exiv2-0.24/src/riffvideo.cpp.CVE-2014-9449 2013-12-01 06:13:42.000000000 -0600
++++ exiv2-0.24/src/riffvideo.cpp 2015-01-05 11:21:42.306728309 -0600
+@@ -856,7 +856,7 @@ namespace Exiv2 {
+
+ void RiffVideo::infoTagsHandler()
+ {
+- const long bufMinSize = 100;
++ const long bufMinSize = 10000;
+ DataBuf buf(bufMinSize);
+ buf.pData_[4] = '\0';
+ io_->seek(-12, BasicIo::cur);
+@@ -879,10 +879,14 @@ namespace Exiv2 {
+ if(infoSize >= 0) {
+ size -= infoSize;
+ io_->read(buf.pData_, infoSize);
++ if(infoSize < 4)
++ buf.pData_[infoSize] = '\0';
+ }
+
+ if(tv)
+ xmpData_[exvGettext(tv->label_)] = buf.pData_;
++ else
++ continue;
+ }
+ io_->seek(cur_pos + size_external, BasicIo::beg);
+ } // RiffVideo::infoTagsHandler
diff --git a/media-gfx/exiv2/files/exiv2-0.24-python3.patch b/media-gfx/exiv2/files/exiv2-0.24-python3.patch
new file mode 100644
index 000000000000..405a7d303e93
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.24-python3.patch
@@ -0,0 +1,27 @@
+diff -ub -r exiv2-0.23.org/doc/templates/gen.py exiv2-0.23/doc/templates/gen.py
+--- exiv2-0.23.org/doc/templates/gen.py 2005-05-28 19:35:08.000000000 +0400
++++ exiv2-0.23/doc/templates/gen.py 2013-12-21 03:03:54.000000000 +0400
+@@ -7,9 +7,9 @@
+ # ----------------------------------------------------------------------
+ # functions
+ def usage():
+- print """Usage: gen.py file.in [...]
++ print("""Usage: gen.py file.in [...]
+ Substitute placeholders in input files with content
+- """
++ """)
+
+ def gen_html(file):
+ """Replace variables in the file with their content"""
+@@ -49,9 +49,9 @@
+ vars.sort()
+
+ # Substitute variables in all input files
+-print "Substituting variables", vars
++print("Substituting variables {0}".format(vars))
+ for file in input:
+- print "Processing", file, "..."
++ print("Processing {0}...".format(file))
+ text = gen_html(file)
+ file = file.replace(".in", "")
+ open(file, 'w').write(text)
diff --git a/media-gfx/exiv2/metadata.xml b/media-gfx/exiv2/metadata.xml
new file mode 100644
index 000000000000..0bb7de61697d
--- /dev/null
+++ b/media-gfx/exiv2/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>graphics</herd>
+ <herd>kde</herd>
+ <longdescription lang="en">
+ Exiv2 is a C++ library and a command line utility to read and
+ write EXIF and IPTC image metadata.
+ </longdescription>
+ <use>
+ <flag name='contrib'>
+ Build additional contrib components
+ </flag>
+ </use>
+</pkgmetadata>