summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media-gfx/exiv2/ChangeLog8
-rw-r--r--media-gfx/exiv2/exiv2-0.21.1-r1.ebuild126
-rw-r--r--media-gfx/exiv2/files/exiv2-0.21.1-time-fix.patch62
3 files changed, 195 insertions, 1 deletions
diff --git a/media-gfx/exiv2/ChangeLog b/media-gfx/exiv2/ChangeLog
index 59c51d056a5f..c0c14dd3f167 100644
--- a/media-gfx/exiv2/ChangeLog
+++ b/media-gfx/exiv2/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for media-gfx/exiv2
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-gfx/exiv2/ChangeLog,v 1.92 2011/04/02 23:46:37 sbriesen Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-gfx/exiv2/ChangeLog,v 1.93 2011/07/09 23:46:14 sbriesen Exp $
+
+*exiv2-0.21.1-r1 (09 Jul 2011)
+
+ 09 Jul 2011; Stefan Briesenick <sbriesen@gentoo.org> +exiv2-0.21.1-r1.ebuild,
+ +files/exiv2-0.21.1-time-fix.patch:
+ added patch for off by 1 hour date error (bug #368419).
*exiv2-0.21.1 (02 Apr 2011)
diff --git a/media-gfx/exiv2/exiv2-0.21.1-r1.ebuild b/media-gfx/exiv2/exiv2-0.21.1-r1.ebuild
new file mode 100644
index 000000000000..cf66af5d9797
--- /dev/null
+++ b/media-gfx/exiv2/exiv2-0.21.1-r1.ebuild
@@ -0,0 +1,126 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-gfx/exiv2/exiv2-0.21.1-r1.ebuild,v 1.1 2011/07/09 23:46:14 sbriesen Exp $
+
+EAPI="2"
+PYTHON_DEPEND="2"
+
+inherit eutils multilib toolchain-funcs python
+
+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"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
+IUSE="contrib doc examples nls xmp zlib"
+IUSE_LINGUAS="de es fi fr pl ru sk"
+IUSE="${IUSE} $(printf 'linguas_%s ' ${IUSE_LINGUAS})"
+
+RDEPEND="
+ virtual/libiconv
+ nls? ( virtual/libintl )
+ xmp? ( dev-libs/expat )
+ zlib? ( sys-libs/zlib )
+"
+DEPEND="${RDEPEND}
+ contrib? ( >=dev-libs/boost-1.37 )
+ doc? (
+ app-doc/doxygen
+ dev-libs/libxslt
+ dev-util/pkgconfig
+ media-gfx/graphviz
+ )
+ nls? ( sys-devel/gettext )
+"
+
+src_prepare() {
+ # exiv2 fails to build with boost-1.46 due to boost filesystem
+ # API v3 becoming the default. This is easily fixed by adding a
+ # #define BOOST_FILESYSTEM_VERSION 2
+ # to source files that include boost/filesystem.hpp
+ #
+ # Implemented via sed to avoid patch-file (bug #357605)
+ sed -i -e \
+ 's|^\(#include <boost/filesystem.hpp>.*\)|#define BOOST_FILESYSTEM_VERSION 2\n\1|g' \
+ contrib/organize/helpers.hpp
+
+ # fix for off by 1 hour date error for -T option (bug #368419)
+ epatch "${FILESDIR}/${P}-time-fix.patch"
+
+ # convert docs to UTF-8
+ 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/.*:/usr/include:g' \
+ -e 's:/usr/local/lib/lib:-l:g' -e 's:-gcc..-mt-._..\.a::g' \
+ contrib/organize/boost.mk
+ fi
+
+ # fix python shebang
+ python_convert_shebangs -r 2 doc/templates
+}
+
+src_configure() {
+ local myconf="$(use_enable nls) $(use_enable xmp)"
+ use zlib || myconf="${myconf} --without-zlib" # plain 'use_with' fails
+
+ # Bug #78720. amd64/gcc-3.4/-fvisibility* fail.
+ if [[ $(gcc-major-version) -lt 4 ]]; then
+ use amd64 && myconf="${myconf} --disable-visibility"
+ fi
+
+ econf ${myconf}
+}
+
+src_compile() {
+ emake || die "emake failed"
+
+ 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" \
+ || die "emake organize failed"
+ fi
+
+ if use doc; then
+ emake doc || die "emake doc failed"
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install failed"
+
+ if use contrib; then
+ emake DESTDIR="${D}" -C contrib/organize install || die "emake install organize failed"
+ fi
+
+ dodoc README doc/{ChangeLog,cmd.txt}
+ use xmp && dodoc doc/{COPYING-XMPSDK,README-XMP,cmdxmp.txt}
+ use doc && dohtml -r doc/html/.
+ if use examples; then
+ insinto /usr/share/doc/${PF}/examples
+ doins samples/*.cpp
+ fi
+}
+
+pkg_postinst() {
+ ewarn
+ ewarn "PLEASE PLEASE take note of this:"
+ ewarn "Please make *sure* to run revdep-rebuild now"
+ ewarn "Certain things on your system may have linked against a"
+ ewarn "different version of exiv2 -- those things need to be"
+ ewarn "recompiled. Sorry for the inconvenience!"
+ ewarn
+}
diff --git a/media-gfx/exiv2/files/exiv2-0.21.1-time-fix.patch b/media-gfx/exiv2/files/exiv2-0.21.1-time-fix.patch
new file mode 100644
index 000000000000..f15fe4c318e8
--- /dev/null
+++ b/media-gfx/exiv2/files/exiv2-0.21.1-time-fix.patch
@@ -0,0 +1,62 @@
+--- exiv2-0.21.1/src/actions.cpp (revision 2474)
++++ exiv2-0.21.1/src/actions.cpp (revision 2475)
+@@ -104,11 +104,11 @@
+ */
+ int str2Tm(const std::string& timeStr, struct tm* tm);
+
+- //! Convert a UTC time to a string "YYYY:MM:DD HH:MI:SS", "" on error
++ //! Convert a localtime to a string "YYYY:MM:DD HH:MI:SS", "" on error
+ std::string time2Str(time_t time);
+
+ //! Convert a tm structure to a string "YYYY:MM:DD HH:MI:SS", "" on error
+- std::string tm2Str(struct tm* tm);
++ std::string tm2Str(const struct tm* tm);
+
+ /*!
+ @brief Copy metadata from source to target according to Params::copyXyz
+@@ -1565,7 +1565,7 @@
+ << " " << _("years") << "\n";
+ return 1;
+ }
+- time_t time = timegm(&tm);
++ time_t time = mktime(&tm);
+ time += adjustment_ + dayAdjustment_ * 86400;
+ timeStr = time2Str(time);
+ if (Params::instance().verbose_) {
+@@ -1739,7 +1739,7 @@
+ int Timestamp::read(struct tm* tm)
+ {
+ int rc = 1;
+- time_t t = mktime(tm);
++ time_t t = mktime(tm); // interpret tm according to current timezone settings
+ if (t != (time_t)-1) {
+ rc = 0;
+ actime_ = t;
+@@ -1783,22 +1783,18 @@
+ tm->tm_sec = tmp;
+
+ // Conversions to set remaining fields of the tm structure
+- time_t time = timegm(tm);
+-#ifdef EXV_HAVE_GMTIME_R
+- if (time == (time_t)-1 || gmtime_r(&time, tm) == 0) return 11;
+-#else
+- if (time == (time_t)-1 || std::gmtime(&time) == 0) return 11;
+-#endif
++ if (mktime(tm) == (time_t)-1) return 11;
++
+ return 0;
+ } // str2Tm
+
+ std::string time2Str(time_t time)
+ {
+- struct tm* tm = gmtime(&time);
++ struct tm* tm = localtime(&time);
+ return tm2Str(tm);
+ } // time2Str
+
+- std::string tm2Str(struct tm* tm)
++ std::string tm2Str(const struct tm* tm)
+ {
+ if (0 == tm) return "";
+
+