Bug 573855

Summary: mk4ht oolatex fails: texmf-dist/tex4ht/xtpipes/ is not found in ${SELFAUTOPARENT}
Product: [openSUSE] openSUSE 11.2 Reporter: Michael Wagner <opensuse-wagnerm>
Component: OtherAssignee: Dr. Werner Fink <werner>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: opensuse-wagnerm
Version: Final   
Target Milestone: ---   
Hardware: All   
OS: openSUSE 11.2   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Michael Wagner 2010-01-26 11:26:18 UTC
User-Agent:       Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.1.6) Gecko/20091201 SUSE/3.5.6-1.1.1 Firefox/3.5.6

The perl script mk4ht takes its variables from tex4ht.env. According to tex4ht.env, xtpipes is located in %%~/texmf-dist/tex4ht/xtpipes/. %%~ stands for ${SELFAUTOPARENT} of KPATHSEA and expands to:

kpsewhich -var-value=SELFAUTOPARENT
/usr/lib/texmf

On the other hand, texlive-tex4ht puts it in /usr/share/texmf/tex4ht/xtpipes and produces the following error:

Exception in thread "main" java.lang.NoClassDefFoundError: xtpipes

Reproducible: Always

Steps to Reproduce:
1. run mk4ht oolatex foo.tex
Actual Results:  
Exception in thread "main" java.lang.NoClassDefFoundError: xtpipes
Comment 1 Dr. Werner Fink 2010-01-27 08:36:07 UTC
Please run as root

   sed -ri 's@%%~/texmf-dist@/usr/share/texmf@g' \
      /usr/share/texmf/tex4ht/base/unix/tex4ht.env

this should reflect the actual locations for TeXLive on openSuSE

 Publishing/texlive> kpsewhich -var-value=TEXMFMAIN
 /usr/lib/texmf
 Publishing/texlive> kpsewhich -var-value=TEXMFDIST
 /usr/share/texmf

does this help
Comment 2 Michael Wagner 2010-01-27 16:06:12 UTC
The above command works as expected. Is there a better way to define the path to TEXMFDIST? Like fedora's texlive rpm macros (in case the actual locations change).
Comment 3 Dr. Werner Fink 2010-01-28 12:29:55 UTC
this is what I alredy do

 %global _varlib         %{_localstatedir}/lib
 %global _libexecdir     %{_prefix}/lib

 %define _texmf_doc      %{_datadir}/texmf
 %define _texmf_dist     %{_datadir}/texmf
 %define _texmf_main     %{_libexecdir}/texmf
 %define _texmf          \{%{_texmf_dist},%{_texmf_main}\}

 %define _texbindir      %{_libexecdir}/texmf/bin
 %define _texscrdir      %{_texmf_dist}/bin/noarch
 %define _texinfodir     %{_texmf_main}/doc/info
 %define _texmandir      %{_texmf_main}/doc/man
 %define _texcnfdir      %{_sysconfdir}/texmf
 %define _texvardir      %{_varlib}/texmf
 %define _texcache       %{_localstatedir}/cache/texmf
 %define _fontcache      %{_texcache}/fonts

but such macros do not fix files but only the locations used
in the spec file.

Beside this I've fixed this, see
 http://download.opensuse.org/repositories/Publishing/