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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 [email protected] https://lists.gnu.org/mailman/listinfo/lilypond-devel
