Summary: Bochs Project x86 PC Emulator
Name: bochs
Version: @SEDVERSION@
Release: 1
License: LGPL
Group: Applications/Emulators
URL:http://bochs.sourceforge.net
Packager:Volker Ruppert <info@vruppert.de>
Source:bochs-@SEDVERSION@.tar.gz
BuildRoot: /var/tmp/%{name}-buildroot

%description
Bochs is a highly portable open source IA-32 (x86) PC emulator written
in C++, that runs on most popular platforms. It includes emulation of
the Intel x86 CPU, common I/O devices, and a custom BIOS. Currently,
Bochs can be compiled to emulate a 386, 486, Pentium, Pentium Pro or
AMD64 CPU, including optional MMX, SSEx and 3DNow! instructions.
Bochs is capable of running most Operating Systems inside the emulation
including Linux, DOS, Windows 9X/NT/2000/XP or Windows 7.

%define pkg_name bochs

%prep
	rm -rf $RPM_BUILD_DIR/bochs-@SEDVERSION@
	tar xzvf $RPM_SOURCE_DIR/bochs-@SEDVERSION@.tar.gz
	if test "/" != $RPM_BUILD_ROOT; then
	  rm -rf $RPM_BUILD_ROOT
	fi
%build
	cd $RPM_BUILD_DIR/bochs-@SEDVERSION@
	CONFIGURE_ARGS="--prefix=/usr --mandir=$RPM_BUILD_ROOT/%{_mandir}"
	export CONFIGURE_ARGS
	sh .conf.linux
	make
	make unpack_dlx   # must use prefix=/usr since this step sets up
                          # the paths in dlx bochsrc file.
%install
	pwd
	cd $RPM_BUILD_DIR/bochs-@SEDVERSION@
	for i in "" usr usr/bin usr/lib usr/share usr/share/doc %{_mandir}; do 
	  if ! test -d $RPM_BUILD_ROOT/$i; then mkdir $RPM_BUILD_ROOT/$i; fi
	done
	make install install_dlx prefix=$RPM_BUILD_ROOT/usr
	# Build list of plugins on the fly (if any).  This allows the
	# spec file to support RPM building with or without plugins.
	cd $RPM_BUILD_ROOT
	find ./usr/lib -type d | sed '1,2d;s,^\.,\%attr(-\,root\,root) \%dir ,' > \
	  $RPM_BUILD_DIR/file.list.%{pkg_name}
	find ./usr/lib -type f | sed -e 's,^\.,\%attr(-\,root\,root) ,' \
	  -e '/\/etc\//s|^|%config|' >> \
	  $RPM_BUILD_DIR/file.list.%{pkg_name}
	find ./usr/lib -type l | sed 's,^\.,\%attr(-\,root\,root) ,' >> \
	  $RPM_BUILD_DIR/file.list.%{pkg_name}
	# We could use the same technique to produce the complete file list,
	# with only one very minor problem: it lists directories that are
	# used by other programs, so when you remove the package you get
	# errors like
	#   error: cannot remove /usr/share/doc - directory not empty

%files -f file.list.%{pkg_name}
%defattr(-, root, root)
	/usr/bin/bochs
	/usr/bin/bochs-dlx
	/usr/bin/bxcommit
	/usr/bin/bximage
	/usr/share/bochs/*
	/usr/share/doc/*
	%{_mandir}/*

%clean
	rm -rf $RPM_BUILD_DIR/bochs-@SEDVERSION@
	rm -rf $RPM_BUILD_DIR/file.list.%{pkg_name}
	if test "/" != $RPM_BUILD_ROOT; then
	  rm -rf $RPM_BUILD_ROOT
	fi
%preun
	# clean up the bochsout.txt that is always produced if you 
	# run bochs-dlx.
	rm -rf /usr/share/bochs/dlxlinux/bochsout.txt
%postun
	rmdir /usr/share/bochs > /dev/null 2>&1
