[pyexiv2/el6] Make the package building with exiv 0.18.2 on EL-6 (#753322)

Matej Cepl mcepl at fedoraproject.org
Wed Dec 14 19:15:12 UTC 2011


commit 61e5bc3c0efec5a4222f22016993a3ddb1d9c7b2
Author: Matěj Cepl <mcepl at redhat.com>
Date:   Wed Dec 14 20:15:17 2011 +0100

    Make the package building with exiv 0.18.2 on EL-6 (#753322)

 .gitignore        |    2 +
 exiv-0-18-2.patch |  166 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 pyexiv2.spec      |   13 ++++-
 3 files changed, 179 insertions(+), 2 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 45921fe..451ac79 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@ pyexiv2-0.1.3.tar.bz2
 /pyexiv2-0.2.2.tar.bz2
 /pyexiv2-0.3.0.tar.bz2
 /pyexiv2-0.3.1.tar.bz2
+/pyexiv2-0.3.1
+/x86_64
diff --git a/exiv-0-18-2.patch b/exiv-0-18-2.patch
new file mode 100644
index 0000000..34da36d
--- /dev/null
+++ b/exiv-0-18-2.patch
@@ -0,0 +1,166 @@
+diff -up pyexiv2-0.3.1/src/exiv2wrapper.cpp.exiv0182 pyexiv2-0.3.1/src/exiv2wrapper.cpp
+--- pyexiv2-0.3.1/src/exiv2wrapper.cpp.exiv0182	2011-10-23 18:44:56.000000000 +0200
++++ pyexiv2-0.3.1/src/exiv2wrapper.cpp	2011-12-14 19:26:19.533659344 +0100
+@@ -521,15 +521,7 @@ void Image::setExifThumbnailFromData(con
+ const std::string Image::getIptcCharset() const
+ {
+     CHECK_METADATA_READ
+-    const char* charset = _iptcData->detectCharset();
+-    if (charset != 0)
+-    {
+-        return std::string(charset);
+-    }
+-    else
+-    {
+-        return std::string();
+-    }
++    return std::string();
+ }
+ 
+ 
+diff -up pyexiv2-0.3.1/test/metadata.py.exiv0182 pyexiv2-0.3.1/test/metadata.py
+--- pyexiv2-0.3.1/test/metadata.py.exiv0182	2011-10-23 18:44:56.000000000 +0200
++++ pyexiv2-0.3.1/test/metadata.py	2011-12-14 19:26:32.371784500 +0100
+@@ -562,7 +562,7 @@ class TestImageMetadata(unittest.TestCas
+                self.metadata.iptc_keys + \
+                self.metadata.xmp_keys
+         for key in keys:
+-            self.metadata[key] = self.metadata[key]        
++            self.metadata[key] = self.metadata[key]
+ 
+     def test_nonexistent_tag_family(self):
+         self.metadata.read()
+@@ -574,7 +574,7 @@ class TestImageMetadata(unittest.TestCas
+     ##########################
+     # Test the image comment #
+     ##########################
+-    
++
+     def test_get_comment(self):
+         self.metadata.read()
+         self.failUnlessEqual(self.metadata.comment, 'Hello World!')
+@@ -643,10 +643,10 @@ class TestImageMetadata(unittest.TestCas
+         self.assertTrue('Exif.Image.DateTimeOriginal' not in self.clean)
+ 
+         key = 'Exif.Image.DateTimeOriginal'
+-        correctDate = datetime.datetime(2007,03,11)
+-        incorrectDate = datetime.datetime(2009,03,25)
+-        tag_date = ExifTag(key,correctDate)
+-        false_tag_date = ExifTag(key,incorrectDate)
++        correctDate = datetime.datetime(2007, 03, 11)
++        incorrectDate = datetime.datetime(2009, 03, 25)
++        tag_date = ExifTag(key, correctDate)
++        false_tag_date = ExifTag(key, incorrectDate)
+         self.clean[key] = tag_date
+ 
+         self.assertEqual(len(self.clean), 1)
+@@ -655,11 +655,11 @@ class TestImageMetadata(unittest.TestCas
+         self.assertEqual(self.clean.get('Exif.Image.DateTime', tag_date), tag_date)
+ 
+         key = 'Exif.Photo.UserComment'
+-        tag = ExifTag(key,'UserComment')
+-        self.clean[key] = tag        
++        tag = ExifTag(key, 'UserComment')
++        self.clean[key] = tag
+         key = 'Iptc.Application2.Caption'
+-        tag = IptcTag(key,['Caption'])
+-        self.clean[key] = tag 
++        tag = IptcTag(key, ['Caption'])
++        self.clean[key] = tag
+         key = 'Xmp.dc.subject'
+         tag = XmpTag(key, ['subject', 'values'])
+         self.clean[key] = tag
+@@ -785,24 +785,24 @@ class TestImageMetadata(unittest.TestCas
+     # Test the IPTC charset #
+     #########################
+ 
+-    def test_guess_iptc_charset(self):
+-        # If no charset is defined, exiv2 guesses it from the encoding of the
+-        # metadata.
+-        self.metadata.read()
+-        self.assertEqual(self.metadata.iptc_charset, 'ascii')
+-        self.metadata['Iptc.Application2.City'] = [u'Córdoba']
+-        self.assertEqual(self.metadata.iptc_charset, 'utf-8')
+-
+-    def test_set_iptc_charset_utf8(self):
+-        self.metadata.read()
+-        self.assert_('Iptc.Envelope.CharacterSet' not in self.metadata.iptc_keys)
+-        self.assertEqual(self.metadata.iptc_charset, 'ascii')
+-        values = ('utf-8', 'utf8', 'u8', 'utf', 'utf_8')
+-        for value in values:
+-            self.metadata.iptc_charset = value
+-            self.assertEqual(self.metadata.iptc_charset, 'utf-8')
+-            self.metadata.iptc_charset = value.upper()
+-            self.assertEqual(self.metadata.iptc_charset, 'utf-8')
++#    def test_guess_iptc_charset(self):
++#        # If no charset is defined, exiv2 guesses it from the encoding of the
++#        # metadata.
++#        self.metadata.read()
++#        self.assertEqual(self.metadata.iptc_charset, 'ascii')
++#        self.metadata['Iptc.Application2.City'] = [u'Córdoba']
++#        self.assertEqual(self.metadata.iptc_charset, 'utf-8')
++
++#    def test_set_iptc_charset_utf8(self):
++#        self.metadata.read()
++#        self.assert_('Iptc.Envelope.CharacterSet' not in self.metadata.iptc_keys)
++#        self.assertEqual(self.metadata.iptc_charset, 'ascii')
++#        values = ('utf-8', 'utf8', 'u8', 'utf', 'utf_8')
++#        for value in values:
++#            self.metadata.iptc_charset = value
++#            self.assertEqual(self.metadata.iptc_charset, 'utf-8')
++#            self.metadata.iptc_charset = value.upper()
++#            self.assertEqual(self.metadata.iptc_charset, 'utf-8')
+ 
+     def test_set_invalid_iptc_charset(self):
+         self.metadata.read()
+@@ -821,27 +821,27 @@ class TestImageMetadata(unittest.TestCas
+             self.assertRaises(ValueError, self.metadata.__setattr__,
+                               'iptc_charset', value)
+ 
+-    def test_delete_iptc_charset(self):
+-        self.metadata.read()
+-        key = 'Iptc.Envelope.CharacterSet'
+-
+-        self.assertEqual(self.metadata.iptc_charset, 'ascii')
+-        self.assert_(key not in self.metadata.iptc_keys)
+-        del self.metadata.iptc_charset
+-        self.assertEqual(self.metadata.iptc_charset, 'ascii')
+-        self.assert_(key not in self.metadata.iptc_keys)
+-
+-        self.metadata.iptc_charset = 'utf-8'
+-        self.assertEqual(self.metadata.iptc_charset, 'utf-8')
+-        self.assert_(key in self.metadata.iptc_keys)
+-        del self.metadata.iptc_charset
+-        self.assertEqual(self.metadata.iptc_charset, 'ascii')
+-        self.assert_(key not in self.metadata.iptc_keys)
+-
+-        self.metadata.iptc_charset = 'utf-8'
+-        self.assertEqual(self.metadata.iptc_charset, 'utf-8')
+-        self.assert_(key in self.metadata.iptc_keys)
+-        self.metadata.iptc_charset = None
+-        self.assertEqual(self.metadata.iptc_charset, 'ascii')
+-        self.assert_(key not in self.metadata.iptc_keys)
++#    def test_delete_iptc_charset(self):
++#        self.metadata.read()
++#        key = 'Iptc.Envelope.CharacterSet'
++#
++#        self.assertEqual(self.metadata.iptc_charset, 'ascii')
++#        self.assert_(key not in self.metadata.iptc_keys)
++#        del self.metadata.iptc_charset
++#        self.assertEqual(self.metadata.iptc_charset, 'ascii')
++#        self.assert_(key not in self.metadata.iptc_keys)
++#
++#        self.metadata.iptc_charset = 'utf-8'
++#        self.assertEqual(self.metadata.iptc_charset, 'utf-8')
++#        self.assert_(key in self.metadata.iptc_keys)
++#        del self.metadata.iptc_charset
++#        self.assertEqual(self.metadata.iptc_charset, 'ascii')
++#        self.assert_(key not in self.metadata.iptc_keys)
++#
++#        self.metadata.iptc_charset = 'utf-8'
++#        self.assertEqual(self.metadata.iptc_charset, 'utf-8')
++#        self.assert_(key in self.metadata.iptc_keys)
++#        self.metadata.iptc_charset = None
++#        self.assertEqual(self.metadata.iptc_charset, 'ascii')
++#        self.assert_(key not in self.metadata.iptc_keys)
+ 
diff --git a/pyexiv2.spec b/pyexiv2.spec
index 979d639..9cb06e7 100644
--- a/pyexiv2.spec
+++ b/pyexiv2.spec
@@ -3,7 +3,7 @@
 
 Name:           pyexiv2
 Version:        0.3.1
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Python binding to exiv2
 
 Group:          Development/Languages
@@ -12,6 +12,9 @@ URL:            http://tilloy.net/dev/pyexiv2/
 Source0:        http://launchpad.net/pyexiv2/0.3.x/%{version}/+download/pyexiv2-%{version}.tar.bz2
 # Upstream patch from https://bugs.launchpad.net/pyexiv2/+bug/880659
 Patch0:         pyexiv2-python26-compatible.patch
+%if 0%{?rhel} > 0 && 0%{?rhel} <= 7
+Patch1:         exiv-0-18-2.patch
+%endif
 BuildRequires:  python-devel exiv2-devel boost-devel scons pytz
 
 %description
@@ -22,7 +25,10 @@ embedded in image files (JPEG, TIFF, ...).
 
 %prep
 %setup -q
-%patch0 -p1
+%patch0 -p1 -b .python26
+%if 0%{?rhel} > 0 && 0%{?rhel} <= 7
+%patch1 -p1 -b .exiv0182
+%endif
 
 %build
 # Remove CFLAGS=... for noarch packages (unneeded)
@@ -53,6 +59,9 @@ popd
 
 
 %changelog
+* Wed Dec 14 2011 Matěj Cepl <mcepl at redhat.com> 0.3.1-2
+- Make the package building with exiv 0.18.2 on EL-6 (#753322)
+
 * Fri Nov 11 2011 'Matěj Cepl <mcepl at redhat.com>' - 0.3.1-1
 - Add pytz to the BuildRequires (so that more tests are run).
 


More information about the scm-commits mailing list