Hi Werner!
But building of lilypond-test fails.

./target/linux-64/build/lilypond-git.sv.gnu.org--lilypond.git-master/input/regression/lilypond-book/suffix-tely.texi2pdf.log:

    /home/gub/NewGub/gub/target/tools/root/usr/bin/texi2dvi: texinfo.tex
    appears to be broken.
    This may be due to the environment variable TEX set to something
    other than (plain) tex, a corrupt texinfo.tex file, or
    to tex itself simply not working.
    etex:
    /home/gub/NewGub/gub/target/linux-64/root/usr/lib/libstdc++.so.6:
    version `CXXABI_1.3.9' not found (required by etex)
Obviously another linking path issue: While executing the external TeX
binaries, DLL stuff from `target/...' must not be used.

The problem here is that our texi2* stuff needs LD_LIBRARY_PATH to find our 
DLLs in target/..., but the system's etex binary, executed by texi2*, fails on 
openSuSE Tumbleweed because it is incompatible to those libs in target/....

I think the easiest solution is a simple etex wrapper script in tools/root that 
clears LD_LIBRARY_PATH and then executes the system's etex.

With the three patches attached on top of the waiting gub pull requests

   rm -rf target
   make lilypond
   make LILYPOND_BRANCH=stable/2.20 lilypond
   make LILYPOND_BRANCH=release/unstable lilypond

all succeed on openSuSE Tumbleweed.

ubuntu 18 is still broken, and the 0001-Fix... patch ignores that it breaks gub 
on all systems that don't have a gcc-7. Obviously some polishing is needed, but 
first I will spend some time on fixing the issues on ubuntu 18.

Knut


>From 336cc22535eea2450a0af19db4d8c8035f215a09 Mon Sep 17 00:00:00 2001
From: Knut Petersen <knut_peter...@t-online.de>
Date: Sun, 13 Jan 2019 17:01:46 +0100
Subject: [PATCH 1/3] Fix building python on openSuSE tumbleweed

Use gcc-7 as our ancient python seems to be incompatible
to the gcc v8.2.1 found on openSuSE Tumbleweed.
---
 gub/specs/python.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/gub/specs/python.py b/gub/specs/python.py
index 049b26f2..631d260f 100644
--- a/gub/specs/python.py
+++ b/gub/specs/python.py
@@ -191,6 +191,8 @@ class Python__tools (tools.AutoBuild, Python):
         ]
     force_autoupdate = True
     parallel_build_broken = True
+    configure_command = ('LDFLAGS=-L%(system_prefix)s/lib CC=gcc-7 '
+                         + tools.AutoBuild.configure_command)
     make_flags = Python.make_flags + ' LIBC="-lcrypt -ldb"'
     def patch (self):
         Python.patch (self)
-- 
2.20.1

>From 91e080e2c1cefbc15abd1eb93bea85a9a0295140 Mon Sep 17 00:00:00 2001
From: Knut Petersen <knut_peter...@t-online.de>
Date: Wed, 16 Jan 2019 14:22:13 +0100
Subject: [PATCH 2/3] Install db libs in usr/lib as well as usr/lib64

On some build systems our libdb is expected in usr/lib,
on others it is expected to be found in usr/lib64.

Don't try to be smart, simply store libdb in usr/lib
and create symbolic links in usr/lib64.
---
 gub/specs/db.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/gub/specs/db.py b/gub/specs/db.py
index 09abebfb..c7d7c0ae 100644
--- a/gub/specs/db.py
+++ b/gub/specs/db.py
@@ -88,3 +88,11 @@ class Db__tools (tools.AutoBuild, Db):
         # FIXME: /usr/docs/ is full of invalid symlinks
         self.system ('rm -rf %(install_prefix)s/docs')
         self.system ('cd %(install_prefix)s/lib && ln -s libdb-*.la libdb.la')
+        self.system ('mkdir -p %(install_prefix)s/lib64')
+        self.system ('cd %(install_prefix)s/lib64 && ln -s ../lib/libdb.la libdb.la')
+        self.system ('cd %(install_prefix)s/lib64 && ln -s ../lib/libdb.so libdb.so')
+        self.system ('cd %(install_prefix)s/lib64 && ln -s ../lib/libdb-4.7.so libdb-4.7.so')
+        self.system ('cd %(install_prefix)s/lib64 && ln -s ../lib/libdb-4.so libdb-4.so')
+        self.system ('cd %(install_prefix)s/lib64 && ln -s ../lib/libdb.a libdb.a')
+        self.system ('cd %(install_prefix)s/lib64 && ln -s ../lib/libdb-4.7.la libdb-4.7.la')
+        self.system ('cd %(install_prefix)s/lib64 && ln -s ../lib/libdb-4.7.a libdb-4.7.a')
-- 
2.20.1

>From 6cb2f2eb369fa6267b71cf4b94cdcb5ec83d15e7 Mon Sep 17 00:00:00 2001
From: Knut Petersen <knut_peter...@t-online.de>
Date: Thu, 17 Jan 2019 01:35:42 +0100
Subject: [PATCH 3/3] Fix lilypond-test

lilypond-test uses our texi2dvi, and texi2dvi uses etex.
As we don't have an own etex, the system's etex binary
is used.

Our texi2dvi needs a proper LD_LIBRARY_PATH, but etex
might fail (and it does so on openSuSE tumbleweed)
if LD_LIBRARY_PATH is not empty.

To solve this problem a script etex is created in
./target/tools/root/usr/bin. This script simply clears
LD_LIBRARY_PATH and then executes the system's
etex binary.
---
 gub/specs/lilypond-test.py | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gub/specs/lilypond-test.py b/gub/specs/lilypond-test.py
index a07b3f4b..14c8db7a 100644
--- a/gub/specs/lilypond-test.py
+++ b/gub/specs/lilypond-test.py
@@ -1,4 +1,5 @@
 #
+import os
 from gub import context
 from gub import misc
 from gub import target
@@ -45,6 +46,14 @@ LD_PRELOAD= tar -C %(builddir)s -cjf %(test_ball)s input/regression/out-test
         self.file_sub ([('^EXTRACTPDFMARK = ([^L].*)$',
                          'EXTRACTPDFMARK = LD_LIBRARY_PATH=%(tools_prefix)s/lib \\1')],
                        '%(builddir)s/config.make')
+        # our texi2pdf uses system's etex, so create a script etex
+        # that calls /usr/bin/etex with empty LD_LIBRARY_PATH
+        foutname = './target/tools/root/usr/bin/etex'
+        fout = open (foutname, 'w+')
+        fout.write ('#!/bin/sh\n')
+        fout.write ('LD_LIBRARY_PATH= /usr/bin/etex $@\n')
+        fout.close
+        os.chmod(foutname,0700)
         # The timestamp of these scripts should not be older than config.make.
         # Otherwise, they will be regenerated from the source directory
         # and the above substitutes will be lost.
-- 
2.20.1

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to