Subject: [bug#55538] [PATCH] gnu: virtuoso-ose: Update to 7.2.7.

From: Roel Janssen <[email-masked]>
Date: Sun, 29 May 2022 23:55:06 +0200

Hi Efraim,

Thank you for reviewing this patch.
I attached a new version of the patch.  I'll address your comments inline.

On Sun, 2022-05-29 at 15:44 +0300, Efraim Flashner wrote:
> ...
> On Fri, May 27, 2022 at 12:47:18PM +0200, Roel Janssen wrote:
> > From 1f3b9db55cac790711ece613f5ebeb51474764a7 Mon Sep 17 00:00:00 2001
> > From: Roel Janssen <[email-masked]>
> > Date: Fri, 27 May 2022 12:40:46 +0200
> > Subject: [PATCH] gnu: virtuoso-ose: Update to 7.2.7.
> > 
> > * gnu/packages/databases.scm (virtuoso-ose): Update to 7.2.7; Run autogen
> >   after applying the patch below.
> > * gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch:
> >   New file.
> > ---
> >  gnu/packages/databases.scm                    |  26 +++-
> >  ...tuoso-ose-remove-pre-built-jar-files.patch | 117 ++++++++++++++++++
> >  2 files changed, 141 insertions(+), 2 deletions(-)
> >  create mode 100644 gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch
> > 
> > diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
> > index 2161340ef9..58b6dd088c 100644
> > --- a/gnu/packages/databases.scm
> > +++ b/gnu/packages/databases.scm
> > @@ -100,6 +100,7 @@ (define-module (gnu packages databases)
> >    #:use-module (gnu packages gnome)
> >    #:use-module (gnu packages gnupg)
> >    #:use-module (gnu packages golang)
> > +  #:use-module (gnu packages gperf)
> >    #:use-module (gnu packages gtk)
> >    #:use-module (gnu packages guile)
> >    #:use-module (gnu packages icu4c)
> > @@ -3229,14 +3230,30 @@ (define-public python-lmdb
> >  (define-public virtuoso-ose
> >    (package
> >      (name "virtuoso-ose")
> > -    (version "7.2.6")
> > +    (version "7.2.7")
> >      (source
> >       (origin
> >         (method url-fetch)
> >         (uri (string-append "mirror://sourceforge/virtuoso/virtuoso/" version "/"
> >                             "virtuoso-opensource-" version ".tar.gz"))
> >         (sha256
> > -        (base32 "0ly7s7a3w2a2zhhi9rq9k2qlnzapqbbc1rcdqb3zqqpgg81krz9q"))))
> > +        (base32 "1853ln0smiilf3pni70gq6nmi9ps039cy44g6b5i9d2z1n9hnj02"))
> > +       (patches (search-patches "virtuoso-ose-remove-pre-built-jar-files.patch"))
> > +       (modules '((guix build utils)))
> > +       ;; This snippet removes pre-built Java archives.
> > +       (snippet
> > +        '(begin
> > +           (delete-file-recursively "libsrc/JDBCDriverType4")
> > +           (delete-file-recursively "binsrc/hibernate")
> > +           (delete-file-recursively "binsrc/jena")
> > +           (delete-file-recursively "binsrc/jena2")
> > +           (delete-file-recursively "binsrc/jena3")
> > +           (delete-file-recursively "binsrc/jena4")
> > +           (delete-file-recursively "binsrc/rdf4j")
> > +           (delete-file-recursively "binsrc/sesame")
> > +           (delete-file-recursively "binsrc/sesame2")
> > +           (delete-file-recursively "binsrc/sesame3")
> > +           (delete-file-recursively "binsrc/sesame4")))))
> 
> how about
> (for-each delete-file-recursively
>   (list "libsrc/JDBCDriverType4"
>         "binsrc/hibernate"
>         ...))
> 

I adapted this in the new patch.

> >      (build-system gnu-build-system)
> >      (arguments
> >       `(#:tests? #f ; Tests require a network connection.
> > @@ -3247,6 +3264,9 @@ (define-public virtuoso-ose
> >                             "--enable-static=no")
> >         #:phases
> >         (modify-phases %standard-phases
> > +         (add-before 'configure 'autogen
> > +           (lambda _
> > +             (invoke "./autogen.sh")))
> 
> This would probably be better as (replace 'bootstrap
> 

I adapted this in the new patch.

> >           ;; Even with "--enable-static=no", "libvirtuoso-t.a" is left in
> >           ;; the build output.  The following phase removes it.
> >           (add-after 'install 'remove-static-libs
> > @@ -3256,6 +3276,8 @@ (define-public virtuoso-ose
> >                             (delete-file (string-append lib "/" file)))
> >                           '("libvirtuoso-t.a"
> >                             "libvirtuoso-t.la"))))))))
> > +    (native-inputs
> > +     (list autoconf automake libtool bison flex gperf))
> 
> That's more than I expected!

Yes, it's unfortunate that we apply changes to the build system code. :)
Without any of these, the build fails.

> > ...

Kind regards,
Roel Janssen
From c10b02ab9b962433eadc9022f77aec74cce6836c Mon Sep 17 00:00:00 2001
From: Roel Janssen <[email-masked]>
Date: Sun, 29 May 2022 23:53:05 +0200
Subject: [PATCH] gnu: virtuoso-ose: Update to 7.2.7.

* gnu/packages/databases.scm (virtuoso-ose): Update to 7.2.7; Run autogen
  after applying the patch below.
* gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch:
  New file.
---
 gnu/packages/databases.scm                    |  26 +++-
 ...tuoso-ose-remove-pre-built-jar-files.patch | 117 ++++++++++++++++++
 2 files changed, 141 insertions(+), 2 deletions(-)
 create mode 100644 gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch

diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 2d72c78233..e1b4fcf78e 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -100,6 +100,7 @@ (define-module (gnu packages databases)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages golang)
+  #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages icu4c)
@@ -3229,14 +3230,30 @@ (define-public python-lmdb
 (define-public virtuoso-ose
   (package
     (name "virtuoso-ose")
-    (version "7.2.6")
+    (version "7.2.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/virtuoso/virtuoso/" version "/"
                            "virtuoso-opensource-" version ".tar.gz"))
        (sha256
-        (base32 "0ly7s7a3w2a2zhhi9rq9k2qlnzapqbbc1rcdqb3zqqpgg81krz9q"))))
+        (base32 "1853ln0smiilf3pni70gq6nmi9ps039cy44g6b5i9d2z1n9hnj02"))
+       (patches (search-patches "virtuoso-ose-remove-pre-built-jar-files.patch"))
+       (modules '((guix build utils)))
+       ;; This snippet removes pre-built Java archives.
+       (snippet
+        '(for-each delete-file-recursively
+                   (list "binsrc/hibernate"
+                         "binsrc/jena"
+                         "binsrc/jena2"
+                         "binsrc/jena3"
+                         "binsrc/jena4"
+                         "binsrc/rdf4j"
+                         "binsrc/sesame"
+                         "binsrc/sesame2"
+                         "binsrc/sesame3"
+                         "binsrc/sesame4"
+                         "libsrc/JDBCDriverType4")))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; Tests require a network connection.
@@ -3247,6 +3264,9 @@ (define-public virtuoso-ose
                            "--enable-static=no")
        #:phases
        (modify-phases %standard-phases
+         (replace 'bootstrap
+           (lambda _
+             (invoke "sh" "autogen.sh")))
          ;; Even with "--enable-static=no", "libvirtuoso-t.a" is left in
          ;; the build output.  The following phase removes it.
          (add-after 'install 'remove-static-libs
@@ -3256,6 +3276,8 @@ (define-public virtuoso-ose
                            (delete-file (string-append lib "/" file)))
                          '("libvirtuoso-t.a"
                            "libvirtuoso-t.la"))))))))
+    (native-inputs
+     (list autoconf automake libtool bison flex gperf))
     (inputs
      (list openssl net-tools readline zlib))
     (home-page "http://vos.openlinksw.com/owiki/wiki/VOS/")
diff --git a/gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch b/gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch
new file mode 100644
index 0000000000..17413c71ae
--- /dev/null
+++ b/gnu/packages/patches/virtuoso-ose-remove-pre-built-jar-files.patch
@@ -0,0 +1,117 @@
+This patch disables build targets that contain pre-built Java archives that
+would be copied to the build's output.
+
+Patch by Roel Janssen <[email-masked]>
+*** a-virtuoso-opensource-7.2.7/binsrc/Makefile.am	1970-01-01 01:00:01.000000000 +0100
+--- b-virtuoso-opensource-7.2.7/binsrc/Makefile.am	2022-05-27 12:20:52.909135774 +0200
+***************
+*** 19,25 ****
+  #  
+  #  
+  
+! SUBDIRS = dav mono virtuoso tests rdf_mappers driver maildrop sqldoc hosting bpel fct tutorial conductor samples vsp ws sync vspx vad cached_resources virtodbc virtoledb virtuoso_sink xddl VirtuosoClient.Net oat isparql jena jena2 jena3 jena4 sesame sesame2 sesame3 sesame4 redland hibernate dbpedia rdb2rdf rdf4j
+  
+  
+  # ----------------------------------------------------------------------
+--- 19,25 ----
+  #  
+  #  
+  
+! SUBDIRS = dav mono virtuoso tests rdf_mappers driver maildrop sqldoc hosting bpel fct tutorial conductor samples vsp ws sync vspx vad cached_resources virtodbc virtoledb virtuoso_sink xddl VirtuosoClient.Net oat isparql redland dbpedia rdb2rdf
+  
+  
+  # ----------------------------------------------------------------------
+*** a-virtuoso-opensource-7.2.7/configure.ac	1970-01-01 01:00:01.000000000 +0100
+--- b-virtuoso-opensource-7.2.7/configure.ac	2022-05-27 12:27:51.879208018 +0200
+***************
+*** 57,64 ****
+  dnl	AM_INIT_AUTOMAKE([1.8])
+  dnl	AM_INIT_AUTOMAKE([1.9 tar-ustar])
+  dnl
+! AM_INIT_AUTOMAKE([1.9 tar-ustar])
+! 
+  AM_MAINTAINER_MODE
+  
+  
+--- 57,63 ----
+  dnl	AM_INIT_AUTOMAKE([1.8])
+  dnl	AM_INIT_AUTOMAKE([1.9 tar-ustar])
+  dnl
+! AM_INIT_AUTOMAKE([1.9 tar-ustar subdir-objects])
+  AM_MAINTAINER_MODE
+  
+  
+***************
+*** 3157,3163 ****
+  	binsrc/dbpedia/Makefile
+  	binsrc/driver/Makefile
+  	binsrc/fct/Makefile
+- 	binsrc/hibernate/Makefile
+  	binsrc/hosting/Makefile
+  	binsrc/hosting/mono/Makefile
+  	binsrc/hosting/mono/tests/Makefile
+--- 3156,3161 ----
+***************
+*** 3169,3184 ****
+  	binsrc/hosting/ruby/Makefile
+  	binsrc/hosting/shapefileio/Makefile
+  	binsrc/isparql/Makefile
+- 	binsrc/jena/Makefile
+- 	binsrc/jena2/Makefile
+- 	binsrc/jena3/Makefile
+- 	binsrc/jena4/Makefile
+  	binsrc/maildrop/Makefile
+  	binsrc/mono/Makefile
+  	binsrc/oat/Makefile
+  	binsrc/rdf_mappers/Makefile
+  	binsrc/rdb2rdf/Makefile
+- 	binsrc/rdf4j/Makefile
+  	binsrc/redland/Makefile
+  	binsrc/samples/demo/Makefile
+  	binsrc/samples/hslookup/Makefile
+--- 3167,3177 ----
+***************
+*** 3191,3200 ****
+  	binsrc/samples/webapp/Makefile
+  	binsrc/samples/xpath/Makefile
+  	binsrc/samples/xquery/Makefile
+- 	binsrc/sesame/Makefile
+- 	binsrc/sesame2/Makefile
+- 	binsrc/sesame3/Makefile
+- 	binsrc/sesame4/Makefile
+  	binsrc/sqldoc/Makefile
+  	binsrc/sync/Makefile
+  	binsrc/tests/biftest/Makefile
+--- 3184,3189 ----
+***************
+*** 3236,3245 ****
+  	docsrc/stylesheets/Makefile
+  	docsrc/xmlsource/Makefile
+  	libsrc/Dk/Makefile
+- 	libsrc/JDBCDriverType4/Makefile
+- 	libsrc/JDBCDriverType4/testsuite_4.0/Makefile
+- 	libsrc/JDBCDriverType4/virtuoso/jdbc/Makefile
+- 	libsrc/JDBCDriverType4/virtuoso/Makefile
+  	libsrc/langfunc/Makefile
+  	libsrc/odbcsdk/Makefile
+  	libsrc/plugin/Makefile
+--- 3225,3230 ----
+*** a-virtuoso-opensource-7.2.7/libsrc/Makefile.am	1970-01-01 01:00:01.000000000 +0100
+--- b-virtuoso-opensource-7.2.7/libsrc/Makefile.am	2022-05-27 12:30:12.658593011 +0200
+***************
+*** 19,25 ****
+  #  
+  #  
+  
+! SUBDIRS = util zlib odbcsdk Dk Thread langfunc Wi plugin Tidy Xml.new JDBCDriverType4
+  
+  noinst_HEADERS = Dk.h libutil.h
+  
+--- 19,25 ----
+  #  
+  #  
+  
+! SUBDIRS = util zlib odbcsdk Dk Thread langfunc Wi plugin Tidy Xml.new
+  
+  noinst_HEADERS = Dk.h libutil.h
+  
-- 
2.36.1