[Distutils] installing man pages in bdist_rpm

Steven Knight knight@baldmt.com
Tue Dec 11 06:43:00 2001


> > In the absence of support for the commented-out "install-man" option,
> > how can I go about arranging for bdist_rpm to install and package a man
> > page properly?
> > 
> > Successfull packaging in this case should result in installing a script
> > in /usr/bin/scons, and the man page in /usr/man/man1/scons.1.gz.
> > 
> > Here's what I've tried:
> > 
> >     data_files = [('man/man1', ["scons.1"])]
> > 
> >         This fails when the INSTALLED_FILES file lists it as
> >         /usr/man/man1/scons.1, but RPM has installed the man page as
> >         scons.1.gz.
> 
> If it has installed the file in man/man1 then you shouldn't
> have a problem. man works just fine with gzip compressed
> man pages (at least on my Linux machine).

Yes, that would be fine, except that the discrepancy causes the *rpm*
kicked off by bdist_rpm to fail because rpm installs it as scons.1.gz,
but then it doesn't find the file that it expects from the MANIFEST
file.  The problem is in this section (I've appended full build output,
edited for brevity, at the end):

	running install_data
	copying scons.1 -> /var/tmp/scons-buildroot/usr/man/man1
	writing list of installed files to 'INSTALLED_FILES'
	+ /usr/lib/rpm/brp-compress
	+ /usr/lib/rpm/brp-strip
	+ /usr/lib/rpm/brp-strip-comment-note
	Processing files: scons-0.01-1
	error: File not found: /var/tmp/scons-buildroot/usr/man/man1/scons.1
	Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.33776
	+ umask 022
	+ cd /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm/BUILD
	+ cd scons-0.01
	+ DOCDIR=/var/tmp/scons-buildroot/usr/share/doc/scons-0.01
	+ export DOCDIR
	+ rm -rf /var/tmp/scons-buildroot/usr/share/doc/scons-0.01
	+ /bin/mkdir -p /var/tmp/scons-buildroot/usr/share/doc/scons-0.01
	+ cp -pr README.txt /var/tmp/scons-buildroot/usr/share/doc/scons-0.01
	+ exit 0
	
	
	RPM build errors:
	    File not found: /var/tmp/scons-buildroot/usr/man/man1/scons.1
	
	
	RPM build errors:
	    File not found: /var/tmp/scons-buildroot/usr/man/man1/scons.1
	ing manifest file 'MANIFEST'
	creating scons-0.01

If I had to guess, it looks like brp-compress turns the scons.1 into
scons.1.gz, but this is out of my RPM+distutils depth.  I ultimately
don't care whether scons.1 or scons.1.gz get installed, so long as both
RPM and distutils are happy with it...

	--SK



rm -rf build/scons/build build/scons/dist/* build/scons/dist/scons-0.01
python build/scons/setup.py bdist sdist bdist_rpm
running bdist
bdist.run: format=gztar, command=bdist_dumb, rest=[]
running bdist_dumb
running build
running build_py
creating build
	[snip]
copying engine/SCons/Sig/TimeStamp.py -> build/lib/SCons/Sig
running build_scripts
creating build/scripts
copying script/scons -> build/scripts
installing to build/bdist.linux-i686/dumb
running install
running install_lib
creating build/bdist.linux-i686
	[snip]
copying build/lib/SCons/Sig/TimeStamp.py -> build/bdist.linux-i686/dumb/usr/lib/scons/SCons/Sig
byte-compiling build/bdist.linux-i686/dumb/usr/lib/scons/SCons/__init__.py to __init__.pyc
	[snip]
byte-compiling build/bdist.linux-i686/dumb/usr/lib/scons/SCons/Sig/TimeStamp.py to TimeStamp.pyc
running install_scripts
creating build/bdist.linux-i686/dumb/usr/bin
copying build/scripts/scons -> build/bdist.linux-i686/dumb/usr/bin
changing mode of build/bdist.linux-i686/dumb/usr/bin/scons to 100755
running install_data
creating build/bdist.linux-i686/dumb/usr/man
creating build/bdist.linux-i686/dumb/usr/man/man1
copying scons.1 -> build/bdist.linux-i686/dumb/usr/man/man1
changing into 'build/bdist.linux-i686/dumb'
tar -cf /home/knight/scons.0.1.C258/build/scons/dist/scons-0.01.linux-i686.tar .
gzip -f9 /home/knight/scons.0.1.C258/build/scons/dist/scons-0.01.linux-i686.tar
changing back to '/home/knight/scons.0.1.C258/build/scons'
removing 'build/bdist.linux-i686/dumb' (and everything under it)
running sdist
reading manifest file 'MANIFEST'
creating scons-0.01
	[snip]
creating scons-0.01/script
making hard links in scons-0.01...
hard linking LICENSE.txt -> scons-0.01
	[snip]
hard linking setup.py -> scons-0.01
tar -cf dist/scons-0.01.tar scons-0.01
gzip -f9 dist/scons-0.01.tar
removing 'scons-0.01' (and everything under it)
running bdist_rpm
creating build/bdist.linux-i686/rpm
creating build/bdist.linux-i686/rpm/SOURCES
creating build/bdist.linux-i686/rpm/SPECS
creating build/bdist.linux-i686/rpm/BUILD
creating build/bdist.linux-i686/rpm/RPMS
creating build/bdist.linux-i686/rpm/SRPMS
writing 'build/bdist.linux-i686/rpm/SPECS/scons.spec'
running sdist
readExecuting(%prep): /bin/sh -e /var/tmp/rpm-tmp.17043
+ umask 022
+ cd /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm/BUILD
+ cd /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm/BUILD
+ rm -rf scons-0.01
+ /bin/gzip -dc /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm/SOURCES/scons-0.01.tar.gz
+ tar -xvvf -
drwxr-sr-x knight/software   0 2001-12-11 05:23:17 scons-0.01/
	[snip]
-rw-r--r-- knight/software   503 2001-12-11 05:23:17 scons-0.01/PKG-INFO
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd scons-0.01
++ /usr/bin/id -u
+ '[' 1000 = 0 ']'
++ /usr/bin/id -u
+ '[' 1000 = 0 ']'
+ /bin/chmod -Rf a+rX,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.17043
+ umask 022
+ cd /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm/BUILD
+ cd scons-0.01
+ python setup.py build
running build
running build_py
creating build
creating build/lib
creating build/lib/SCons
copying engine/SCons/Builder.py -> build/lib/SCons
	[snip]
copying engine/SCons/Sig/__init__.py -> build/lib/SCons/Sig
running build_scripts
creating build/scripts
copying script/scons -> build/scripts
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.44627
+ umask 022
+ cd /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm/BUILD
+ cd scons-0.01
+ python setup.py install --root=/var/tmp/scons-buildroot --record=INSTALLED_FILES
running install
running build
running build_py
not copying engine/SCons/Builder.py (output up-to-date)
	[snip]
not copying engine/SCons/Sig/__init__.py (output up-to-date)
running build_scripts
not copying script/scons (up-to-date)
running install_lib
not copying build/lib/SCons/Builder.py (output up-to-date)
	[snip]
not copying build/lib/SCons/Sig/__init__.py (output up-to-date)
skipping byte-compilation of /var/tmp/scons-buildroot/usr/lib/scons/SCons/Builder.py to Builder.pyc
	[snip]
skipping byte-compilation of /var/tmp/scons-buildroot/usr/lib/scons/SCons/Sig/__init__.py to __init__.pyc
runniwarning: install: modules installed to '/var/tmp/scons-buildroot/usr/lib/python1.5/site-packages/', which is not in Python's module search path (sys.path) -- you'll have to change the search path yourself
ng install_scripts
not copying build/scripts/scons (output up-to-date)
changing mode of /var/tmp/scons-buildroot/usr/bin/scons to 100755
running install_data
copying scons.1 -> /var/tmp/scons-buildroot/usr/man/man1
writing list of installed files to 'INSTALLED_FILES'
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip
+ /usr/lib/rpm/brp-strip-comment-note
Processing files: scons-0.01-1
error: File not found: /var/tmp/scons-buildroot/usr/man/man1/scons.1
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.33776
+ umask 022
+ cd /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm/BUILD
+ cd scons-0.01
+ DOCDIR=/var/tmp/scons-buildroot/usr/share/doc/scons-0.01
+ export DOCDIR
+ rm -rf /var/tmp/scons-buildroot/usr/share/doc/scons-0.01
+ /bin/mkdir -p /var/tmp/scons-buildroot/usr/share/doc/scons-0.01
+ cp -pr README.txt /var/tmp/scons-buildroot/usr/share/doc/scons-0.01
+ exit 0


RPM build errors:
    File not found: /var/tmp/scons-buildroot/usr/man/man1/scons.1


RPM build errors:
    File not found: /var/tmp/scons-buildroot/usr/man/man1/scons.1
ing manifest file 'MANIFEST'
creating scons-0.01
creating scons-0.01/engine
creating scons-0.01/engine/SCons
creating scons-0.01/engine/SCons/Node
creating scons-0.01/engine/SCons/Scanner
creating scons-0.01/engine/SCons/Sig
creating scons-0.01/script
making hard links in scons-0.01...
hard linking LICENSE.txt -> scons-0.01
	[snip]
hard linking setup.py -> scons-0.01
tar -cf dist/scons-0.01.tar scons-0.01
gzip -f9 dist/scons-0.01.tar
removing 'scons-0.01' (and everything under it)
copying dist/scons-0.01.tar.gz -> build/bdist.linux-i686/rpm/SOURCES
building RPMs
rpm -ba --define _topdir /home/knight/scons.0.1.C258/build/scons/build/bdist.linux-i686/rpm --clean build/bdist.linux-i686/rpm/SPECS/scons.spec
error: command 'rpm' failed with exit status 1