lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gub: I can now completely build lilypond


From: Masamichi Hosoda
Subject: Re: gub: I can now completely build lilypond
Date: Sat, 19 Jan 2019 13:59:40 +0900 (JST)

>>>> 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.
> 
> texi2dvi / texi2pdf can be specified external program name.
> Previously, there was a similar error in XeTeX with texi2pdf.
> 
> For XeTeX, we use wrapper scripts.
> http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=blob;f=scripts/build/xetex-with-options.sh
> http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=blob;f=scripts/build/xelatex-with-options.sh
> 
> In the LilyPond's makefiles, it is specified as follows.
> 
> ```
> PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX)  ... $(LILYPOND_BOOK)
> ```
> 
> The valiables, PDFTEX and PDFLATEX are set to be
> xetex-with-options.sh and xelatex-with-options.sh at configure script.
> 
> To avoid the error,
> I've added a line to clear LD_LIBRARY_PATH to the scripts in GUB.
> https://github.com/gperciva/gub/commit/57d66d1262551c062a3edc85e27ac69748f2f136#diff-94f19c1786c0853ef47371aa55ba2b21
> 
> If I understand correctly,
> it may be resolved simply by changing LilyPond's makefiles as follows.
> 
> ```
> TEX=$(PDFTEX) PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX)  ... $(LILYPOND_BOOK)
> ```

I noticed I was wrong...
texi2dvi / texi2pdf should not invoke etex in GUB.
xetex should be invoked.

Does your openSuSE system have both xetex and xelatex?
LilyPond's configure script sets PDFTEX=/path/to/xetex-with-option.sh
if your openSuSE system has both xetex and xelatex.
Then, texi2pdf invokes xetex-with-option.sh instead of etex.
In this case, etex does not be invoked.
The test succeeds because GUB makes
xetex-with-option.sh clears LD_LIBRARY_PATH.

On the other hand,
LilyPond's configure script sets PDFTEX=etex
if your openSuSE system does not have xelatex, pdfetex, and pdftex.
In this case, texi2pdf invokes etex. LD_LIBRARY_PATH is not cleared.
GUB has older libc and older libstdc++.
LD_LIBRARY_PATH makes etex uses the old libc and the old libstdc++.
But, openSuSE system's etex requires newer libc and newer libstdc++.
This is the cause of the error.

Again, if I understand correctly,
etex is not invoked if your openSuSE system have both xetex and xelatex.
If your openSuSE system has both xetex and xelatex,
GUB clears LD_LIBRARY_PATH and the test will succeed.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]