Subject: [PATCH] gnu: libextractor: Update to 1.10.

From: Michael Rohleder <[email-masked]>
Date: Sun, 26 Jul 2020 02:25:29 +0200

Dear guix,

After reading about the exciting dkgpg pkg, I wanted to try gnunet the
other day and noticed that libextractor doesnt build, because of some
test failures in exiv2 tests:

...
=================================================
   libextractor 1.9: src/plugins/test-suite.log
==================================================

# TOTAL: 29
# PASS:  28
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: test_exiv2
================

Warning: Directory Pentax, entry 0x0004: Data area exceeds data buffer, ignoring it.
Got additional meta data of type 38 and format 1 with value `28deg 8' 18"' from plugin `exiv2'
Got additional meta data of type 40 and format 1 with value `14deg 14' 22"' from plugin `exiv2'
Did not get expected meta data of type 38 and format 1 with value `28deg 8' 17.585" ' from plugin `exiv2'
Did not get expected meta data of type 40 and format 1 with value `14deg 14' 21.713" ' from plugin `exiv2'
FAIL test_exiv2 (exit status: 1)

It seems, commit 630b75f76a did broke something here.

But because we also have exiv2-0.26, I think we could use that and drop
the patch for exiv2-0.27 (which would not only needs to be modified if
libextractor changes, but also if exiv2 changes?!).

I removed tidy-html, because its not realy recognized by configure (also
in 1.9, I think) and the configure-flag "--with-tidy" was dropped in
1.10.
giflib on the other hand seems to work in 1.10, tests are ok and the
libs for it is generated.

I am not sure if its ok to do all this in one patch, I think I could
also make 2 or 3 patches (fix build, update to 1.10, update inputs or
so), but I hope the intention is clear (and gnunet builds, which it
does) ;)

* gnu/packages/gnunet.scm (libextractor): Update to 1.10.
[inputs]: commit 630b75f76a broke exiv2 test, so build with exiv2-0.26.
[inputs]: added giflib, removed tidy-html
* gnu/packages/patches/libextractor-exiv2.patch removed.
* gnu/local.mk: remove libextractor-exiv2.patch.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/gnunet.scm                       |  17 +--
 gnu/packages/patches/libextractor-exiv2.patch | 124 ------------------
 3 files changed, 7 insertions(+), 135 deletions(-)
 delete mode 100644 gnu/packages/patches/libextractor-exiv2.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f2a7b6b984..5c92db2e05 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1207,7 +1207,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/libbonobo-activation-test-race.patch	\
   %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
   %D%/packages/patches/libdrm-realpath-virtio.patch		\
-  %D%/packages/patches/libextractor-exiv2.patch			\
   %D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch		\
   %D%/packages/patches/libgit2-mtime-0.patch			\
   %D%/packages/patches/libgnome-encoding.patch			\
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 979dadbe2e..77dc71a958 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2018 Alex Vong <[email-masked]>
 ;;; Copyright © 2019 Brett Gilio <[email-masked]>
 ;;; Copyright © 2020 Tanguy Le Carrour <[email-masked]>
+;;; Copyright © 2020 Michael Rohleder <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -73,31 +74,30 @@
 (define-public libextractor
   (package
    (name "libextractor")
-   (version "1.9")
+   (version "1.10")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libextractor/libextractor-"
                                 version ".tar.gz"))
             (sha256
              (base32
-              "1zz2zvikvfibxnk1va3kgzs7djsmiqy7bmk8y01vbsf54ryjb3zh"))
-            (patches (search-patches "libextractor-exiv2.patch"))))
+              "0mr38g7kfn3p050hd3hckbcz2yd3za6dwl1c26x2kjf7vnsi3vcy"))))
    (build-system gnu-build-system)
    ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
    ;; not to be a symbolic link to /run/shm.
    ;; FIXME:
    ;; The following dependencies are all optional, but should be
    ;; available for maximum coverage:
-   ;; * libmagic (file)
    ;; * librpm (rpm)    ; investigate failure
-   ;; * libgif (giflib) ; investigate failure
+   ;; * libtidy-html (tidy-html) ; investigate failure
    (inputs
-    `(("exiv2" ,exiv2)
+    `(("exiv2" ,exiv2-0.26)
       ("bzip2" ,bzip2)
       ("flac" ,flac)
       ("ffmpeg" ,ffmpeg)
       ("file" ,file)                           ;libmagic, for the MIME plug-in
       ("glib" ,glib)
+      ("giflib" ,giflib)
       ("gstreamer" ,gstreamer)
       ("gst-plugins-base" ,gst-plugins-base)
       ("gtk+" ,gtk+)
@@ -108,7 +108,6 @@
       ("libmpeg2" ,libmpeg2)
       ("libmp4v2" ,libmp4v2)
       ("libsmf" ,libsmf)
-      ("tidy-html" ,tidy-html)
       ("libogg" ,libogg)
       ("libtiff" ,libtiff)
       ("libvorbis" ,libvorbis)
@@ -120,9 +119,7 @@
    (arguments
     `(#:configure-flags
       (list (string-append "--with-ltdl="
-                           (assoc-ref %build-inputs "libltdl"))
-            (string-append "--with-tidy="
-                           (assoc-ref %build-inputs "tidy-html")))
+                           (assoc-ref %build-inputs "libltdl")))
       #:parallel-tests? #f
       #:phases
       (modify-phases %standard-phases
diff --git a/gnu/packages/patches/libextractor-exiv2.patch b/gnu/packages/patches/libextractor-exiv2.patch
deleted file mode 100644
index b92fef3ca1..0000000000
--- a/gnu/packages/patches/libextractor-exiv2.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-This patch allows us to build libextractor against exiv2 0.27.x.
-Adapted from this upstream commit:
-
-  commit 1ecee9a47717e36cb8a3925d011d1a6de11d631c
-  Author: Christian Grothoff <[email-masked]>
-  Date:   Mon Jul 29 17:58:18 2019 +0200
-
-      importing patch from Gentoo/AS to address exiv2 build issue (#5820)
-
-diff --git a/src/plugins/exiv2_extractor.cc b/src/plugins/exiv2_extractor.cc
-index 8741d40..ef402a8 100644
---- a/src/plugins/exiv2_extractor.cc
-+++ b/src/plugins/exiv2_extractor.cc
-@@ -27,10 +27,7 @@
- #include <cassert>
- #include <cstring>
- #include <math.h>
--#include <exiv2/exif.hpp>
--#include <exiv2/error.hpp>
--#include <exiv2/image.hpp>
--#include <exiv2/futils.hpp>
-+#include <exiv2/exiv2.hpp>
- 
- /**
-  * Enable debugging to get error messages.
-@@ -180,7 +177,7 @@ public:
-    *
-    * @return -1 on error
-    */
--#if EXIV2_VERSION >= EXIV2_MAKE_VERSION(0,26,0)
-+#if EXIV2_TEST_VERSION(0,26,0)
-   virtual size_t size (void) const;
- #else
-   virtual long int size (void) const;
-@@ -316,7 +313,11 @@ ExtractorIO::getb ()
-   const unsigned char *r;
- 
-   if (1 != ec->read (ec->cls, &data, 1))
-+#if EXIV2_TEST_VERSION(0,27,0)
-+    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
-+#else
-     throw Exiv2::BasicError<char> (42 /* error code */);
-+#endif
-   r = (const unsigned char *) data;
-   return *r;
- }
-@@ -371,7 +372,11 @@ ExtractorIO::putb (Exiv2::byte data)
- void
- ExtractorIO::transfer (Exiv2::BasicIo& src)
- {
-+#if EXIV2_TEST_VERSION(0,27,0)
-+    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
-+#else
-   throw Exiv2::BasicError<char> (42 /* error code */);
-+#endif
- }
- 
- 
-@@ -416,7 +421,11 @@ ExtractorIO::seek (long offset,
- Exiv2::byte *
- ExtractorIO::mmap (bool isWritable)
- {
-+#if EXIV2_TEST_VERSION(0,27,0)
-+    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
-+#else
-   throw Exiv2::BasicError<char> (42 /* error code */);
-+#endif
- }
- 
- 
-@@ -449,7 +458,7 @@ ExtractorIO::tell (void) const
-  *
-  * @return -1 on error
-  */
--#if EXIV2_VERSION >= EXIV2_MAKE_VERSION(0,26,0)
-+#if EXIV2_TEST_VERSION(0,26,0)
- size_t
- #else
- long int
-@@ -504,7 +513,11 @@ ExtractorIO::eof () const
- std::string
- ExtractorIO::path () const
- {
-+#if EXIV2_TEST_VERSION(0,27,0)
-+    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
-+#else
-   throw Exiv2::BasicError<char> (42 /* error code */);
-+#endif
- }
- 
- 
-@@ -517,7 +530,11 @@ ExtractorIO::path () const
- std::wstring
- ExtractorIO::wpath () const
- {
-+#if EXIV2_TEST_VERSION(0,27,0)
-+    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
-+#else
-   throw Exiv2::BasicError<char> (42 /* error code */);
-+#endif
- }
- #endif
- 
-@@ -531,7 +548,11 @@ Exiv2::BasicIo::AutoPtr
- ExtractorIO::temporary () const
- {
-   fprintf (stderr, "throwing temporary error\n");
-+#if EXIV2_TEST_VERSION(0,27,0)
-+    throw Exiv2::BasicError<char> (Exiv2::kerDecodeLangAltQualifierFailed);
-+#else
-   throw Exiv2::BasicError<char> (42 /* error code */);
-+#endif
- }
- 
- 
-@@ -697,7 +718,7 @@ EXTRACTOR_exiv2_extract_method (struct EXTRACTOR_ExtractContext *ec)
- {
-   try
-     {
--#if EXIV2_MAKE_VERSION(0,23,0) <= EXIV2_VERSION
-+#if !EXIV2_TEST_VERSION(0,24,0)
-       Exiv2::LogMsg::setLevel (Exiv2::LogMsg::mute);
- #endif
-       std::auto_ptr<Exiv2::BasicIo> eio(new ExtractorIO (ec));
-- 
2.27.0

-- 
The German opposite of 'umfahren' (running something over)
is 'umfahren' (drive around something).
Good luck mastering this language.