diff options
-rw-r--r-- | media-gfx/exiv2/ChangeLog | 8 | ||||
-rw-r--r-- | media-gfx/exiv2/exiv2-0.21.1-r1.ebuild | 126 | ||||
-rw-r--r-- | media-gfx/exiv2/files/exiv2-0.21.1-time-fix.patch | 62 |
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 ""; + + |