From 56bd759df1d0c750a065b8c845e93d5dfa6b549d Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 8 Aug 2015 13:49:04 -0700 Subject: proj/gentoo: Initial commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 X-Thanks: Alec Warner - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring - wrote much python to improve cvs2svn X-Thanks: Rich Freeman - validation scripts X-Thanks: Patrick Lauer - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed --- media-gfx/exiv2/Manifest | 1 + media-gfx/exiv2/exiv2-0.24-r1.ebuild | 136 +++++++++++++++ .../exiv2/files/exiv2-0.23-boost-fs-contrib.patch | 182 +++++++++++++++++++++ .../exiv2/files/exiv2-0.24-CVE-2014-9449.patch | 27 +++ media-gfx/exiv2/files/exiv2-0.24-python3.patch | 27 +++ media-gfx/exiv2/metadata.xml | 15 ++ 6 files changed, 388 insertions(+) create mode 100644 media-gfx/exiv2/Manifest create mode 100644 media-gfx/exiv2/exiv2-0.24-r1.ebuild create mode 100644 media-gfx/exiv2/files/exiv2-0.23-boost-fs-contrib.patch create mode 100644 media-gfx/exiv2/files/exiv2-0.24-CVE-2014-9449.patch create mode 100644 media-gfx/exiv2/files/exiv2-0.24-python3.patch create mode 100644 media-gfx/exiv2/metadata.xml (limited to 'media-gfx/exiv2') 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::const_iterator x_iter = params.excludes.begin(); + std::vector::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 @@ + + + + graphics + kde + + Exiv2 is a C++ library and a command line utility to read and + write EXIF and IPTC image metadata. + + + + Build additional contrib components + + + -- cgit v1.2.3-65-gdbad