Subject: [PATCH] gnu: Add libabigail.
From: Marius Bakke <[email-masked]>
To: [email-masked]
Date: Sun, 9 Sep 2018 14:09:00 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/linux.scm (libabigail): New public variable.
---

Notes:
    Guix,
    
    Look at this tool I found:
    
    $ abidiff /gnu/store/qx0hmn4scjd31w1nj4dr7hzr566gcls4-ghostscript-9.23/lib/libgs.so /gnu/store/l60v1b0xs8h9blzzf7b2m4ry55k76bhb-ghostscript-9.24/lib/libgs.so
    
    Functions changes summary: 0 Removed, 0 Changed, 0 Added function
    Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
    Function symbols changes summary: 2 Removed, 20 Added function symbols not referenced by debug info
    Variable symbols changes summary: 0 Removed, 2 Added variable symbols not referenced by debug info
    
    2 Removed function symbols not referenced by debug info:
    
      cmsChangeBuffersFormat
      gsicc_profile_reference
    
    20 Added function symbols not referenced by debug info:
    
      _cmsAdjustReferenceCount
      cmsCloneTransformChangingFormats
      default_subclass_finalize
      dorestore
      epo_check_and_install
      epo_disable
      gsicc_adjust_profile_rc
      gsicc_getprofilevers
      gx_change_color_model
      gx_get_cmapper
      opj_j2k_set_decoded_components
      opj_jp2_set_decoded_components
      opj_sparse_array_int32_create
      opj_sparse_array_int32_free
      opj_sparse_array_int32_read
      opj_sparse_array_int32_write
      opj_sparse_array_is_region_valid
      opj_tcd_is_subband_area_of_interest
      restore_check_save
      tiff_open_s
    
    2 Added variable symbols not referenced by debug info:
    
      gs_epo_device
      st_epo_device

 gnu/packages/linux.scm | 45 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 02d723316..f7aa2eb65 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1439,6 +1439,51 @@ a router).  Since forwarding is done at Layer 2, all protocols can go
 transparently through a bridge.")
     (license license:gpl2+)))
 
+(define-public libabigail
+  (package
+    (name "libabigail")
+    (home-page "https://sourceware.org/libabigail/")
+    (version "1.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://sourceware.org/pub/" name
+                                  "/" name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "17r8i60lxykvdd9pdidmnvkzgf9k8zman0c1czl3zbx0znhlx497"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--disable-static")
+       #:make-flags '("V=1")
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-source
+                    (lambda _
+                      (substitute* "build-aux/ltmain.sh"
+                        ;; Don't add -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
+                        ;; to the GCC command line.
+                        (("compiler_flags=\"-specs=.*")
+                         "compiler-flags=\n"))
+                      #t))
+                  (add-before 'check 'set-test-environment
+                    (lambda _
+                      ;; Some tests need a writeable $HOME.
+                      (setenv "HOME" "/tmp")
+                      #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python)))             ;for tests
+    (propagated-inputs
+     `(("elfutils" ,elfutils)           ;libabigail.la says -lelf
+       ("libxml2" ,libxml2)))           ;in Requires.private of libabigail.pc
+    (synopsis "Analyze Application Binary Interfaces")
+    (description
+     "@dfn{ABIGAIL} stands for the Application Binary Interface Generic
+Analysis and Instrumentation Library.  It is a framework which aims at
+helping developers and software distributors to spot ABI-related issues
+like interface incompatibility in ELF shared libraries by performing a
+static analysis of the ELF binaries at hand.")
+    (license license:lgpl3+)))
+
 (define-public libnl
   (package
     (name "libnl")
-- 
2.18.0