Bug 325311
| Summary: | build of tetex fails with: Found '/var/tmp/tetex-root' in installed files; aborting | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Doug Chapman <dchapman> | ||||
| Component: | tetex | Assignee: | Jindrich Novy <jnovy> | ||||
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | low | Docs Contact: | |||||
| Priority: | low | ||||||
| Version: | rawhide | CC: | pknirsch, yi.zhan | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | All | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | 3.0-40.5.fc7 | Doc Type: | Bug Fix | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2008-02-16 02:06:57 UTC | Type: | --- | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Bug Depends On: | |||||||
| Bug Blocks: | 163350 | ||||||
| Attachments: |
|
||||||
|
Description
Doug Chapman
2007-10-09 18:09:24 UTC
Created attachment 221601 [details]
output of rpmbuild -bb tetex.spec
I found that I am able to compile this on a RHEL5.1 ia64 system with no problem, so for now I do have a workaround. However, I would still like to figure out what the reason for this failure when I compile under Fedora is. I am going to install F8 Test3 on one of my x86_64 systems to see if I hit the same issue there when I get a chance (in a couple of days likely). Is there any good news for this issue? I ran into the same problem when trying
to build the tetex package (cvs NOV. 13) both under Fedora IA-64 and x86_64. I
looked into this for quite a while and probably figured out the cause of the
issue but still have no idea what is the right way to fix it.
The %prep, %build and %install stages worked fine. And the build failed when
running the '/usr/lib/rpm/check-buildroot' at the 'post %install' stage. The
script is designed to make sure the installed files do not contain any
information related to the temporary build root, which means that we should not
find the string ‘/var/tmp/tetex-root’ in any installed file. But actually the
string lies in both
'/var/tmp/tetex-root/usr/share/texmf-var/fonts/map/pdftex/updmap/*.map' and
'/var/tmp/tetex-root/usr/share/texmf-var/web2c/*.fmt'. The causes of this are as
below:
1. Two variables are exported in the tetex.spec (about line 491) in the %install
section, before calling 'make install' command:
export TEXMFSYSVAR=${RPM_BUILD_ROOT}%{_datadir}/texmf-var
export TEXMFSYSCONFIG=${RPM_BUILD_ROOT}%{_datadir}/texmf-config
Now TEXMFSYSVAR is "/var/tmp/tetex-root/usr/share/texmf-var/" and
TEXMFSYSCONFIG is "/var/tmp/tetex-root/usr/share/texmf-config/"
2. Then 'make install' is called, and 'updmap-sys' and 'fmtutil-sys' are
executed (about line 70 and 78 in the Makefile). The two scripts, located at
'tetex-src-3.0/texk/tetex/', both use the variables TEXMFSYSVAR and
TEXMFSYSCONFIG to generate information. Take 'updmap-sys' for an instance, it
set the variable TEXMFVAR as TEXMFSYSVAR and then execute the updmap script.
Then the 'updmap' write the strings, beginning with '/var/tmp/tetex-root', to
the *.map files by executing the following lines:
vartexmf=`kpsewhich -var-value=TEXMFVAR` (about line 805)
dvipsoutputdir=$vartexmf/fonts/map/dvips/updmap (about line 809)
outputFiles="$dvipsoutputdir/download35.map <some other file names>" (about
line 1104)
allOutput="$outputFiles $outputLinks" (about line 1118)
for file in $allOutput; do (about line 1165)
rm -f "$file"
cat > "$file" <<-eof
% $file: maintained by the script updmap. (This line actually writes the
strings)
% Don't change this file directly. Edit texmf/web2c/$cnfFileShort
% and run updmap to recreate this file.
eof
done
Now we can see that the first line of every *.map generated by the updmap
has the format
"/var/tmp/tetex-root/usr/share/texmf-var/fonts/map/*/updmap/*.map: maintained by
the script updmap.". And this makes the check-buildroot failed.
As I don't have a RHEL installed, I can't tell why the build under RHEL can
avoid this issue. And I examined the content of
'/usr/share/texmf-var/fonts/*/updmap/*.map' in the 'prebuilt' rpm, the strings
all start just with /usr/share/, without the "/var/tmp/tetex-root" prefix. May
be I should install a RHEL to see the different.
I removed the direct paths to buildroot from the *.map files by simply sed'ding them out, because the path is noted only in the comment, so it's safe. The problem is what to do with the buildroot paths encoded in the fmt files since they are binary... I defined __arch_install_post to %{nil} in spec so that check-buildroot won't be
run after build so that tetex build passes. I found no clean way how to force
mktexfmt to not to create buildroot links in the binary fmts so that disabling
check-buildroot seems to be the least painful solution. The links in the fmt
files doesn't seem to be used anyway so that all should work fine.
tetex-3.0-40.5.fc7 has been pushed to the Fedora 7 testing repository. If problems still persist, please make note of it in this bug report. If you want to test the update, you can install it with su -c 'yum --enablerepo=updates-testing update tetex' tetex-3.0-40.5.fc7 has been pushed to the Fedora 7 stable repository. If problems still persist, please make note of it in this bug report. |