Rex Dieter | 12 Dec 2002 16:53
Favicon
Gravatar

Re: sun-j2se1.4 font issues

Attached are sun-j2se1.4 specfiles that include some reworking of the font 
handling (to address the concerns raised on the list) as well as updates 
to jsdk-1.4.0_03 and jsdk-1.4.1_01, modifications since 
sun-j2se1.4-1.4.0.01-1jpp include:

- rename Group:'s in RedHat style(1)
- remove extraneous uses of $RPM_BUILD_DIR
- %%clean: cleanup $RPM_BUILD_DIR when done.
- fonts: relax Require's (can be installed standalone), though
  most users won't want/need the fonts.
- fonts: try harder to dynamically generate fonts.{dir,scale}, and
  keep/use sun's supplied fonts.dir if we can't generate it dynamically.
- fonts: don't use xftcache.  It wasn't a good idea then,
  and certainly isn't now that it is deprecated (fc-cache).
- fonts: %%config(noreplace) font.properties, provide better (aka working)
  default.
- fonts: move %postun fonts to %preun fonts to avoid race: system
  accessing a font that is currently being uninstalled.
- plugin: make link for mozilla (punt on netscape for now).

(1) was just for me, so the software Group's on our rh machines look more 
consistent... feel free to ignore these mods... (-:

Enjoy.

-- 
Rex A. Dieter			rdieter@... 
Computer System Administrator 	http://www.math.unl.edu/~rdieter/
Mathematics and Statistics  		 
University of Nebraska Lincoln
%define	origin		sun
%define	major		1.4
%define minor		0	
%define build		03
%define version		%{major}.%{minor}%{?build:.%{build}}
%define cvs_version	1_4_0_03
%define release		0
%define name		%{origin}-j2se%{major}
%define	jdklnk		%{_libdir}/%{origin}-jdk%{major}
%define	jrelnk		%{_libdir}/%{origin}-jre%{major}
%define	jdkdir		%{_libdir}/%{name}
%define	jredir		%{jdkdir}/jre
%define jdkbindir	%{jdkdir}/bin
%define jrebindir	%{jredir}/bin
%define fontdir		%{jredir}/lib/fonts
%define priority	40	
%define section		non-free
%define archive_name	j2sdk-%{cvs_version}-linux-i586.bin
%define toplevel_dir	j2sdk%{major}.%{minor}%{?build:_%{build}}

Name:		%{name}
Version:	%{version}
Release:	%{release}
Summary:	Java Runtime Environment for %{name} 
License:	Sun Binary Code License
Group:		Development/Languages
Vendor:		JPackage Project
Distribution:	JPackage
URL:		http://java.sun.com/j2se/1.4/
Source0:	%{archive_name}
# NoSource:	0
Source1:        %{name}-mkalias.pl
Source2:        %{name}-font.properties
Provides:	j2se = %{version}
Requires:	/usr/sbin/update-alternatives
Conflicts:	kaffe
BuildArch:	i586
BuildRoot:	%{_tmppath}/%{name}-%{version}-buildroot
Obsoletes:	%{origin}-jre%{major}
Provides:	%{origin}-jre%{major}

%description
This package contains the Java Runtime Environment for %{name}

%package devel
Summary:	Java Development Kit for %{name}
Group:		Development/Languages
Provides:	j2se-devel = %{version}
Requires:	/usr/sbin/update-alternatives
Requires:	%{name} = %{version}-%{release}
Obsoletes:	%{origin}-jsdk%{major}
Provides:	%{origin}-jsdk%{major}
%description devel
The JavaTM Development Kit (JDKTM) contains the software and tools that
developers need to compile, debug, and run applets and applications
written using the Java programming language.

%package demo
Summary:	Demonstration files for %{name}
Group:		Development/Languages
Requires:	%{name} = %{version}-%{release}
%description demo
This package contains demonstrations files for %{name}

%package plugin
Summary:	Browser plugin files for %{name}
Group:		Applications/Internet
Requires:	%{name} = %{version}-%{release}
%description plugin
This package contains browser plugin files for %{name}

%package jdbc
Summary:	JDBC files for %{name}
Group:		Development/Languages
Requires:	%{name} = %{version}-%{release}
AutoReqProv:    no
Requires:	libodbc.so.1
Requires:	libodbcinst.so.1
%description jdbc
This package contains JDBC files for %{name}

%package fonts
Summary:        TrueType fonts for %{name}
Group:         	User Interface/X 
#Requires:	%{name} = %{version}-%{release}
#Requires:	/usr/sbin/chkfontpath
#Requires:	/usr/X11R6/bin/mkfontdir
#Requires:	/usr/bin/ttmkfdir
%description fonts
This package contains the TrueType fonts for %{name}.

%prep
rm -rf $RPM_BUILD_DIR/%{toplevel_dir}
# crappy archive won't stop us
export MORE=10000
cp %{SOURCE0} $RPM_BUILD_DIR
sh $RPM_BUILD_DIR/%{archive_name} <<EOF
yes
EOF
rm -f $RPM_BUILD_DIR/%{archive_name}
%setup -q -D -T -n %{toplevel_dir}
# fix perms
chmod -R go=u-w *
chmod -R u+w *

%install
rm -rf $RPM_BUILD_ROOT
# main files
install -d -m 755 $RPM_BUILD_ROOT%{jdkdir}
cp -a bin include lib $RPM_BUILD_ROOT%{jdkdir}
install -d -m 755 $RPM_BUILD_ROOT%{jredir}
cp -a jre/bin jre/lib jre/plugin $RPM_BUILD_ROOT%{jredir}
(cd $RPM_BUILD_ROOT%{_libdir} && ln -s `basename %{jdkdir}` `basename %{jdklnk}`)
(cd $RPM_BUILD_ROOT%{_libdir} && ln -s `basename %{jdkdir}`/jre `basename %{jrelnk}`)
# man pages
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
for manpage in man/man1/*; do
  install -m 644 $manpage $RPM_BUILD_ROOT%{_mandir}/man1/`basename $manpage .1`-%{name}.1
done
# demo
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name}
cp -a demo $RPM_BUILD_ROOT%{_datadir}/%{name}
cp -a src.zip $RPM_BUILD_ROOT%{_datadir}/%{name}

# font-handling:
# move given fonts.dir out of the way -- Rex
( cd $RPM_BUILD_ROOT%{fontdir}
  mv fonts.dir ..
)
# rename supplied font.properties -- Rex
mv      $RPM_BUILD_ROOT%{jredir}/lib/font.properties \
        $RPM_BUILD_ROOT%{jredir}/lib/font.properties.orig

# Most of this shamelessly stolen from redhat's kdebase-2.2.2 specfile
find $RPM_BUILD_ROOT%{jredir} -type d | sed 's|'$RPM_BUILD_ROOT'|%dir |' >  %{name}-all.files
find $RPM_BUILD_ROOT%{jredir} -type f | sed 's|'$RPM_BUILD_ROOT'||'      >> %{name}-all.files
find $RPM_BUILD_ROOT%{jredir} -type l | sed 's|'$RPM_BUILD_ROOT'||'      >> %{name}-all.files

# font-handling:
# These files ought to get created properly in %post  -- Rex
# We do these after the find, so they are not listed above.
touch $RPM_BUILD_ROOT%{fontdir}/{fonts.{alias,dir,scale}}
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{jredir}/bin/mkalias.pl
# Good font.properties file
install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{jredir}/lib/font.properties

cat %{name}-all.files | grep plugin      | sort	> %{name}-plugin.files
cat %{name}-all.files | grep Jdbc        | sort	> %{name}-jdbc.files
cat %{name}-all.files | grep "lib/fonts" | sort	> %{name}-fonts.files
cat %{name}-*.files | sort | uniq -u     	> %{name}.files

## link plugins appropriately -- Rex
# punt on netscape4 (for now), it requires modification of NPX_PLUGIN_PATH env var
install -d ${RPM_BUILD_ROOT}/usr/lib/mozilla/plugins
ln -s   %{jredir}/plugin/i386/ns610/libjavaplugin_oji.so \
        ${RPM_BUILD_ROOT}/usr/lib/mozilla/plugins/libjavaplugin_oji.so

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_DIR/%{toplevel_dir}

%post
[ -f %{_mandir}/man1/java-%{name}.1.bz2 ] && ext="bz2"
[ -f %{_mandir}/man1/java-%{name}.1.gz ] && ext="gz"
update-alternatives --install %{_bindir}/java java %{jrebindir}/java %{priority} \
--slave %{_bindir}/keytool	keytool		%{jrebindir}/keytool \
--slave %{_bindir}/orbd		orbd		%{jrebindir}/orbd \
--slave %{_bindir}/policytool	policytool	%{jrebindir}/policytool \
--slave %{_bindir}/rmid		rmid		%{jrebindir}/rmid \
--slave %{_bindir}/rmiregistry	rmiregistry	%{jrebindir}/rmiregistry \
--slave %{_bindir}/servertool	servertool	%{jrebindir}/servertool \
--slave %{_bindir}/tnameserv	tnameserv	%{jrebindir}/tnameserv \
--slave %{_mandir}/man1/java.1.$ext		java.1.$ext		%{_mandir}/man1/java-%{name}.1.$ext \
--slave
%{_mandir}/man1/keytool.1.$ext		keytool.1.$ext		%{_mandir}/man1/keytool-%{name}.1.$ext \
--slave %{_mandir}/man1/orbd.1.$ext		orbd.1.$ext		%{_mandir}/man1/orbd-%{name}.1.$ext \
--slave %{_mandir}/man1/policytool.1.$ext 	policytool.1.$ext
	%{_mandir}/man1/policytool-%{name}.1.$ext \
--slave %{_mandir}/man1/rmid.1.$ext		rmid.1.$ext		%{_mandir}/man1/rmid-%{name}.1.$ext \
--slave
%{_mandir}/man1/rmiregistry.1.$ext	rmiregistry.1.$ext	%{_mandir}/man1/rmiregistry-%{name}.1.$ext \
--slave %{_mandir}/man1/servertool.1.$ext 	servertool.1.$ext
	%{_mandir}/man1/servertool-%{name}.1.$ext \
--slave %{_mandir}/man1/tnameserv.1.$ext	tnameserv.1.$ext	%{_mandir}/man1/tnameserv-%{name}.1.$ext

%post devel
[ -f %{_mandir}/man1/javac-%{name}.1.bz2 ] && ext="bz2"
[ -f %{_mandir}/man1/javac-%{name}.1.gz ] && ext="gz"
update-alternatives --install %{_bindir}/javac javac %{jdkbindir}/javac %{priority} \
--slave %{_bindir}/appletviewer	appletviewer 	%{jdkbindir}/appletviewer \
--slave %{_bindir}/extcheck	extcheck 	%{jdkbindir}/extcheck \
--slave %{_bindir}/idlj		idlj		%{jdkbindir}/idlj \
--slave %{_bindir}/jar		jar		%{jdkbindir}/jar \
--slave %{_bindir}/jarsigner	jarsigner	%{jdkbindir}/jarsigner \
--slave %{_bindir}/javadoc	javadoc		%{jdkbindir}/javadoc \
--slave %{_bindir}/javah	javah		%{jdkbindir}/javah \
--slave %{_bindir}/javap	javap		%{jdkbindir}/javap \
--slave %{_bindir}/jdb		jdb		%{jdkbindir}/jdb \
--slave %{_bindir}/native2ascii	native2ascii	%{jdkbindir}/native2ascii \
--slave %{_bindir}/rmic		rmic		%{jdkbindir}/rmic \
--slave %{_bindir}/serialver	serialver	%{jdkbindir}/serialver \
--slave
%{_mandir}/man1/appletviewer.1.$ext	appletviewer.1.$ext	%{_mandir}/man1/appletviewer-%{name}.1.$ext \
--slave
%{_mandir}/man1/extcheck.1.$ext		extcheck.1.$ext		%{_mandir}/man1/extcheck-%{name}.1.$ext \
--slave %{_mandir}/man1/idlj.1.$ext		idlj.1.$ext		%{_mandir}/man1/idlj-%{name}.1.$ext \
--slave %{_mandir}/man1/jar.1.$ext		jar.1.$ext		%{_mandir}/man1/jar-%{name}.1.$ext \
--slave
%{_mandir}/man1/jarsigner.1.$ext	jarsigner.1.$ext	%{_mandir}/man1/jarsigner-%{name}.1.$ext \
--slave %{_mandir}/man1/javac.1.$ext		javac.1.$ext		%{_mandir}/man1/javac-%{name}.1.$ext \
--slave
%{_mandir}/man1/javadoc.1.$ext		javadoc.1.$ext		%{_mandir}/man1/javadoc-%{name}.1.$ext \
--slave %{_mandir}/man1/javah.1.$ext		javah.1.$ext		%{_mandir}/man1/javah-%{name}.1.$ext \
--slave %{_mandir}/man1/javap.1.$ext		javap.1.$ext		%{_mandir}/man1/javap-%{name}.1.$ext \
--slave %{_mandir}/man1/jdb.1.$ext		jdb.1.$ext		%{_mandir}/man1/jdb-%{name}.1.$ext \
--slave
%{_mandir}/man1/native2ascii.1.$ext	native2ascii.1.$ext	%{_mandir}/man1/native2ascii-%{name}.1.$ext \
--slave %{_mandir}/man1/rmic.1.$ext		rmic.1.$ext		%{_mandir}/man1/rmic-%{name}.1.$ext \
--slave %{_mandir}/man1/serialver.1.$ext	serialver.1.$ext	%{_mandir}/man1/serialver-%{name}.1.$ext

%post fonts
cd %{fontdir}
# Generate fonts.scale, if possible
if [ -x /usr/X11R6/bin/mkfontscale ]; then
	mkfontscale > fonts.scale ||:
elif [ -x /usr/bin/ttmkfdir -o -x /usr/sbin/ttmkfdir ]; then
	# Some versions of ttmkfdir coredump, so cleanup if needed -- Rex
	ttmkfdir >fonts.scale 2>/dev/null  || rm -f core ||:
	# Fixup lame/broken 0-c-0 entries in fonts.scale -- Rex
	[ -f fonts.scale ] && perl -pi -e 's <at> 0-c-0 <at> 0-p-0 <at> g' fonts.scale
fi
# Generate fonts.dir
mkfontdir 2>/dev/null	||:
if [ ! -f fonts.dir ]; then
  if [ -f fonts.scale ]; then
    cp fonts.scale fonts.dir
  else
    cp ../fonts.dir .
  fi
fi
# Generate fonts.alias
%{jredir}/bin/mkalias.pl fonts.dir > fonts.alias ||:
# Add to fontpath
chkfontpath -q -a %{fontdir} 2>/dev/null	||:

%postun
if [ "$1" = "0" ]; then
	update-alternatives --remove java %{jrebindir}/java
fi

%postun devel
if [ "$1" = "0" ]; then
	update-alternatives --remove javac %{jdkbindir}/javac
fi

%preun fonts
if [ "$1" = "0" ]; then
	cd %{fontdir}
	rm -f encodings.dir XftCache fonts.cache-?
	chkfontpath -q -r %{fontdir} 2>/dev/null ||:
fi

%files -f %{name}.files
%defattr(-,root,root)
%doc jre/CHANGES jre/COPYRIGHT jre/LICENSE jre/README jre/Welcome.html jre/ControlPanel.html
%dir %{jdkdir}
%{jrelnk}
%config(noreplace) %{jredir}/lib/font.properties
%{_mandir}/man1/java-%{name}.1*
%{_mandir}/man1/keytool-%{name}.1*
%{_mandir}/man1/orbd-%{name}.1*
%{_mandir}/man1/policytool-%{name}.1*
%{_mandir}/man1/rmid-%{name}.1*
%{_mandir}/man1/rmiregistry-%{name}.1*
%{_mandir}/man1/servertool-%{name}.1*
%{_mandir}/man1/tnameserv-%{name}.1*

%files devel
%defattr(-,root,root)
%doc COPYRIGHT LICENSE README README.html
%{jdkdir}/bin
%{jdkdir}/include
%{jdkdir}/lib
%{jdklnk}
%{_mandir}/man1/appletviewer-%{name}.1*
%{_mandir}/man1/extcheck-%{name}.1*
%{_mandir}/man1/idlj-%{name}.1*
%{_mandir}/man1/jar-%{name}.1*
%{_mandir}/man1/jarsigner-%{name}.1*
%{_mandir}/man1/javac-%{name}.1*
%{_mandir}/man1/javadoc-%{name}.1*
%{_mandir}/man1/javah-%{name}.1*
%{_mandir}/man1/javap-%{name}.1*
%{_mandir}/man1/jdb-%{name}.1*
%{_mandir}/man1/native2ascii-%{name}.1*
%{_mandir}/man1/rmic-%{name}.1*
%{_mandir}/man1/serialver-%{name}.1*

%files demo
%defattr(-,root,root)
%{_datadir}/%{name}

%files jdbc -f %{name}-jdbc.files
%defattr(-,root,root)

%files plugin -f %{name}-plugin.files
%defattr(-,root,root)
/usr/lib/mozilla/plugins/*

%files fonts -f %{name}-fonts.files
%defattr(-,root,root)
%dir %{jdkdir}
%dir %{jredir}
%dir %{jredir}/bin
%{jredir}/bin/mkalias.pl
%dir %{jredir}/lib
%ghost %{fontdir}/fonts.dir
%ghost %{fontdir}/fonts.scale
%ghost %{fontdir}/fonts.alias

%changelog
* Thu Dec 12 2002 Rex Dieter <rdieter@...> 1.4.0.03-0
- 1.4.0.03
- rename Group:'s in RedHat style.
- remove extraneous uses of $RPM_BUILD_DIR
- %%clean: cleanup $RPM_BUILD_DIR when done.
- fonts: relax Require's (can be installed standalone), though
  most users won't want/need the fonts.
- fonts: try harder to dynamically generate fonts.{dir,scale}, and
  keep/use sun's supplied fonts.dir if we can't generate it dynamically.
- fonts: don't use xftcache.  It wasn't a good idea then,
  and certainly isn't now that it is deprecated (fc-cache).
- fonts: %%config(noreplace) font.properties, provide better (aka working) 
  default.
- fonts: move %postun fonts to %preun fonts to avoid race: system
  accessing a font that is currently being uninstalled.
- plugin: make link for mozilla (punt on netscape for now).

* Sun Sep 08 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0.01-1jpp 
- upgrades from Rex Dieter <rdieter@...>:
 - 1.4.0_01
 - %%postun: do not remove alternatives on upgrades.
 - %%post: fix extchek->extcheck typo.
 - %%files: add orbd.1*,policytool.1*,servertool.1*
 - %%files devel: add idlj.1*
 - fonts subpkg
- distribution tag for real

* Sat Jun 08 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-4jpp
- upgrades from Rex Dieter <rdieter@...>:
 - naming: jre -> j2se, jsdk -> j2se-devel
 - plugin, jdbc subpkgs
- spec cleanup
- changed virtual provides to j2se and j2se-devel
- fixed man page alternative setup
- used versioned files for jdbc package requires
- group tags again
- provides and obsoletes jre and jsdk

* Sat May 11 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-3jpp
- vendor, distribution, group tags

* Fri Apr 05 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-2jpp 
- non-free section

* Sat Feb 16 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-1jpp 
- 1.4.0 final

* Sun Feb 10 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-0.rc.1jpp 
- first jpp release
%define	origin		sun
%define	major		1.4
%define minor		1	
%define build		01
%define version		%{major}.%{minor}%{?build:.%{build}}
%define cvs_version	1_4_1_01
%define release		0
%define name		%{origin}-j2se%{major}
%define	jdklnk		%{_libdir}/%{origin}-jdk%{major}
%define	jrelnk		%{_libdir}/%{origin}-jre%{major}
%define	jdkdir		%{_libdir}/%{name}
%define	jredir		%{jdkdir}/jre
%define jdkbindir	%{jdkdir}/bin
%define jrebindir	%{jredir}/bin
%define fontdir		%{jredir}/lib/fonts
%define priority	40	
%define section		non-free
%define archive_name	j2sdk-%{cvs_version}-linux-i586.bin
%define toplevel_dir	j2sdk%{major}.%{minor}%{?build:_%{build}}

Name:		%{name}
Version:	%{version}
Release:	%{release}
Summary:	Java Runtime Environment for %{name} 
License:	Sun Binary Code License
Group:		Development/Languages
Vendor:		JPackage Project
Distribution:	JPackage
URL:		http://java.sun.com/j2se/1.4/
Source0:	%{archive_name}
# NoSource:	0
Source1:        %{name}-mkalias.pl
Source2:        %{name}-font.properties
Provides:	j2se = %{version}
Requires:	/usr/sbin/update-alternatives
Conflicts:	kaffe
BuildArch:	i586
BuildRoot:	%{_tmppath}/%{name}-%{version}-buildroot
Obsoletes:	%{origin}-jre%{major}
Provides:	%{origin}-jre%{major}

%description
This package contains the Java Runtime Environment for %{name}

%package devel
Summary:	Java Development Kit for %{name}
Group:		Development/Languages
Provides:	j2se-devel = %{version}
Requires:	/usr/sbin/update-alternatives
Requires:	%{name} = %{version}-%{release}
Obsoletes:	%{origin}-jsdk%{major}
Provides:	%{origin}-jsdk%{major}
%description devel
The JavaTM Development Kit (JDKTM) contains the software and tools that
developers need to compile, debug, and run applets and applications
written using the Java programming language.

%package demo
Summary:	Demonstration files for %{name}
Group:		Development/Languages
Requires:	%{name} = %{version}-%{release}
%description demo
This package contains demonstrations files for %{name}

%package plugin
Summary:	Browser plugin files for %{name}
Group:		Applications/Internet
Requires:	%{name} = %{version}-%{release}
%description plugin
This package contains browser plugin files for %{name}

%package jdbc
Summary:	JDBC files for %{name}
Group:		Development/Languages
Requires:	%{name} = %{version}-%{release}
AutoReqProv:    no
Requires:	libodbc.so.1
Requires:	libodbcinst.so.1
%description jdbc
This package contains JDBC files for %{name}

%package fonts
Summary:        TrueType fonts for %{name}
Group:         	User Interface/X 
#Requires:	%{name} = %{version}-%{release}
#Requires:	/usr/sbin/chkfontpath
#Requires:	/usr/X11R6/bin/mkfontdir
#Requires:	/usr/bin/ttmkfdir
%description fonts
This package contains the TrueType fonts for %{name}.

%prep
rm -rf $RPM_BUILD_DIR/%{toplevel_dir}
# crappy archive won't stop us
export MORE=10000
cp %{SOURCE0} $RPM_BUILD_DIR
sh $RPM_BUILD_DIR/%{archive_name} <<EOF
yes
EOF
rm -f $RPM_BUILD_DIR/%{archive_name}
%setup -q -D -T -n %{toplevel_dir}
# fix perms
chmod -R go=u-w *
chmod -R u+w *

%install
rm -rf $RPM_BUILD_ROOT
# main files
install -d -m 755 $RPM_BUILD_ROOT%{jdkdir}
cp -a bin include lib $RPM_BUILD_ROOT%{jdkdir}
install -d -m 755 $RPM_BUILD_ROOT%{jredir}
cp -a jre/bin jre/lib jre/plugin $RPM_BUILD_ROOT%{jredir}
(cd $RPM_BUILD_ROOT%{_libdir} && ln -s `basename %{jdkdir}` `basename %{jdklnk}`)
(cd $RPM_BUILD_ROOT%{_libdir} && ln -s `basename %{jdkdir}`/jre `basename %{jrelnk}`)
# man pages
install -d -m 755 $RPM_BUILD_ROOT%{_mandir}/man1
for manpage in man/man1/*; do
  install -m 644 $manpage $RPM_BUILD_ROOT%{_mandir}/man1/`basename $manpage .1`-%{name}.1
done
# demo
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name}
cp -a demo $RPM_BUILD_ROOT%{_datadir}/%{name}
cp -a src.zip $RPM_BUILD_ROOT%{_datadir}/%{name}

# font-handling:
# move given fonts.dir out of the way -- Rex
( cd $RPM_BUILD_ROOT%{fontdir}
  mv fonts.dir ..
)
# rename supplied font.properties -- Rex
mv      $RPM_BUILD_ROOT%{jredir}/lib/font.properties \
        $RPM_BUILD_ROOT%{jredir}/lib/font.properties.orig

# Most of this shamelessly stolen from redhat's kdebase-2.2.2 specfile
find $RPM_BUILD_ROOT%{jredir} -type d | sed 's|'$RPM_BUILD_ROOT'|%dir |' >  %{name}-all.files
find $RPM_BUILD_ROOT%{jredir} -type f | sed 's|'$RPM_BUILD_ROOT'||'      >> %{name}-all.files
find $RPM_BUILD_ROOT%{jredir} -type l | sed 's|'$RPM_BUILD_ROOT'||'      >> %{name}-all.files

# font-handling:
# These files ought to get created properly in %post  -- Rex
# We do these after the find, so they are not listed above.
touch $RPM_BUILD_ROOT%{fontdir}/{fonts.{alias,dir,scale}}
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{jredir}/bin/mkalias.pl
# Good font.properties file
install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{jredir}/lib/font.properties

cat %{name}-all.files | grep plugin      | sort	> %{name}-plugin.files
cat %{name}-all.files | grep Jdbc        | sort	> %{name}-jdbc.files
cat %{name}-all.files | grep "lib/fonts" | sort	> %{name}-fonts.files
cat %{name}-*.files | sort | uniq -u     	> %{name}.files

## link plugins appropriately -- Rex
# punt on netscape4 (for now), it requires modification of NPX_PLUGIN_PATH env var
install -d ${RPM_BUILD_ROOT}/usr/lib/mozilla/plugins
ln -s   %{jredir}/plugin/i386/ns610/libjavaplugin_oji.so \
        ${RPM_BUILD_ROOT}/usr/lib/mozilla/plugins/libjavaplugin_oji.so

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_DIR/%{toplevel_dir}

%post
[ -f %{_mandir}/man1/java-%{name}.1.bz2 ] && ext="bz2"
[ -f %{_mandir}/man1/java-%{name}.1.gz ] && ext="gz"
update-alternatives --install %{_bindir}/java java %{jrebindir}/java %{priority} \
--slave %{_bindir}/keytool	keytool		%{jrebindir}/keytool \
--slave %{_bindir}/orbd		orbd		%{jrebindir}/orbd \
--slave %{_bindir}/policytool	policytool	%{jrebindir}/policytool \
--slave %{_bindir}/rmid		rmid		%{jrebindir}/rmid \
--slave %{_bindir}/rmiregistry	rmiregistry	%{jrebindir}/rmiregistry \
--slave %{_bindir}/servertool	servertool	%{jrebindir}/servertool \
--slave %{_bindir}/tnameserv	tnameserv	%{jrebindir}/tnameserv \
--slave %{_mandir}/man1/java.1.$ext		java.1.$ext		%{_mandir}/man1/java-%{name}.1.$ext \
--slave
%{_mandir}/man1/keytool.1.$ext		keytool.1.$ext		%{_mandir}/man1/keytool-%{name}.1.$ext \
--slave %{_mandir}/man1/orbd.1.$ext		orbd.1.$ext		%{_mandir}/man1/orbd-%{name}.1.$ext \
--slave %{_mandir}/man1/policytool.1.$ext 	policytool.1.$ext
	%{_mandir}/man1/policytool-%{name}.1.$ext \
--slave %{_mandir}/man1/rmid.1.$ext		rmid.1.$ext		%{_mandir}/man1/rmid-%{name}.1.$ext \
--slave
%{_mandir}/man1/rmiregistry.1.$ext	rmiregistry.1.$ext	%{_mandir}/man1/rmiregistry-%{name}.1.$ext \
--slave %{_mandir}/man1/servertool.1.$ext 	servertool.1.$ext
	%{_mandir}/man1/servertool-%{name}.1.$ext \
--slave %{_mandir}/man1/tnameserv.1.$ext	tnameserv.1.$ext	%{_mandir}/man1/tnameserv-%{name}.1.$ext

%post devel
[ -f %{_mandir}/man1/javac-%{name}.1.bz2 ] && ext="bz2"
[ -f %{_mandir}/man1/javac-%{name}.1.gz ] && ext="gz"
update-alternatives --install %{_bindir}/javac javac %{jdkbindir}/javac %{priority} \
--slave %{_bindir}/appletviewer	appletviewer 	%{jdkbindir}/appletviewer \
--slave %{_bindir}/extcheck	extcheck 	%{jdkbindir}/extcheck \
--slave %{_bindir}/idlj		idlj		%{jdkbindir}/idlj \
--slave %{_bindir}/jar		jar		%{jdkbindir}/jar \
--slave %{_bindir}/jarsigner	jarsigner	%{jdkbindir}/jarsigner \
--slave %{_bindir}/javadoc	javadoc		%{jdkbindir}/javadoc \
--slave %{_bindir}/javah	javah		%{jdkbindir}/javah \
--slave %{_bindir}/javap	javap		%{jdkbindir}/javap \
--slave %{_bindir}/jdb		jdb		%{jdkbindir}/jdb \
--slave %{_bindir}/native2ascii	native2ascii	%{jdkbindir}/native2ascii \
--slave %{_bindir}/rmic		rmic		%{jdkbindir}/rmic \
--slave %{_bindir}/serialver	serialver	%{jdkbindir}/serialver \
--slave
%{_mandir}/man1/appletviewer.1.$ext	appletviewer.1.$ext	%{_mandir}/man1/appletviewer-%{name}.1.$ext \
--slave
%{_mandir}/man1/extcheck.1.$ext		extcheck.1.$ext		%{_mandir}/man1/extcheck-%{name}.1.$ext \
--slave %{_mandir}/man1/idlj.1.$ext		idlj.1.$ext		%{_mandir}/man1/idlj-%{name}.1.$ext \
--slave %{_mandir}/man1/jar.1.$ext		jar.1.$ext		%{_mandir}/man1/jar-%{name}.1.$ext \
--slave
%{_mandir}/man1/jarsigner.1.$ext	jarsigner.1.$ext	%{_mandir}/man1/jarsigner-%{name}.1.$ext \
--slave %{_mandir}/man1/javac.1.$ext		javac.1.$ext		%{_mandir}/man1/javac-%{name}.1.$ext \
--slave
%{_mandir}/man1/javadoc.1.$ext		javadoc.1.$ext		%{_mandir}/man1/javadoc-%{name}.1.$ext \
--slave %{_mandir}/man1/javah.1.$ext		javah.1.$ext		%{_mandir}/man1/javah-%{name}.1.$ext \
--slave %{_mandir}/man1/javap.1.$ext		javap.1.$ext		%{_mandir}/man1/javap-%{name}.1.$ext \
--slave %{_mandir}/man1/jdb.1.$ext		jdb.1.$ext		%{_mandir}/man1/jdb-%{name}.1.$ext \
--slave
%{_mandir}/man1/native2ascii.1.$ext	native2ascii.1.$ext	%{_mandir}/man1/native2ascii-%{name}.1.$ext \
--slave %{_mandir}/man1/rmic.1.$ext		rmic.1.$ext		%{_mandir}/man1/rmic-%{name}.1.$ext \
--slave %{_mandir}/man1/serialver.1.$ext	serialver.1.$ext	%{_mandir}/man1/serialver-%{name}.1.$ext

%post fonts
cd %{fontdir}
# Generate fonts.scale, if possible
if [ -x /usr/X11R6/bin/mkfontscale ]; then
	mkfontscale > fonts.scale ||:
elif [ -x /usr/bin/ttmkfdir -o -x /usr/sbin/ttmkfdir ]; then
	# Some versions of ttmkfdir coredump, so cleanup if needed -- Rex
	ttmkfdir >fonts.scale 2>/dev/null  || rm -f core ||:
	# Fixup lame/broken 0-c-0 entries in fonts.scale -- Rex
	[ -f fonts.scale ] && perl -pi -e 's <at> 0-c-0 <at> 0-p-0 <at> g' fonts.scale
fi
# Generate fonts.dir
mkfontdir 2>/dev/null	||:
if [ ! -f fonts.dir ]; then
  if [ -f fonts.scale ]; then
    cp fonts.scale fonts.dir
  else
    cp ../fonts.dir .
  fi
fi
# Generate fonts.alias
%{jredir}/bin/mkalias.pl fonts.dir > fonts.alias ||:
# Add to fontpath
chkfontpath -q -a %{fontdir} 2>/dev/null	||:

%postun
if [ "$1" = "0" ]; then
	update-alternatives --remove java %{jrebindir}/java
fi

%postun devel
if [ "$1" = "0" ]; then
	update-alternatives --remove javac %{jdkbindir}/javac
fi

%preun fonts
if [ "$1" = "0" ]; then
	cd %{fontdir}
	rm -f encodings.dir XftCache fonts.cache-?
	chkfontpath -q -r %{fontdir} 2>/dev/null ||:
fi

%files -f %{name}.files
%defattr(-,root,root)
%doc jre/CHANGES jre/COPYRIGHT jre/LICENSE jre/README jre/Welcome.html jre/ControlPanel.html
%dir %{jdkdir}
%{jrelnk}
%config(noreplace) %{jredir}/lib/font.properties
%{_mandir}/man1/java-%{name}.1*
%{_mandir}/man1/keytool-%{name}.1*
%{_mandir}/man1/orbd-%{name}.1*
%{_mandir}/man1/policytool-%{name}.1*
%{_mandir}/man1/rmid-%{name}.1*
%{_mandir}/man1/rmiregistry-%{name}.1*
%{_mandir}/man1/servertool-%{name}.1*
%{_mandir}/man1/tnameserv-%{name}.1*

%files devel
%defattr(-,root,root)
%doc COPYRIGHT LICENSE README README.html
%{jdkdir}/bin
%{jdkdir}/include
%{jdkdir}/lib
%{jdklnk}
%{_mandir}/man1/appletviewer-%{name}.1*
%{_mandir}/man1/extcheck-%{name}.1*
%{_mandir}/man1/idlj-%{name}.1*
%{_mandir}/man1/jar-%{name}.1*
%{_mandir}/man1/jarsigner-%{name}.1*
%{_mandir}/man1/javac-%{name}.1*
%{_mandir}/man1/javadoc-%{name}.1*
%{_mandir}/man1/javah-%{name}.1*
%{_mandir}/man1/javap-%{name}.1*
%{_mandir}/man1/jdb-%{name}.1*
%{_mandir}/man1/native2ascii-%{name}.1*
%{_mandir}/man1/rmic-%{name}.1*
%{_mandir}/man1/serialver-%{name}.1*

%files demo
%defattr(-,root,root)
%{_datadir}/%{name}

%files jdbc -f %{name}-jdbc.files
%defattr(-,root,root)

%files plugin -f %{name}-plugin.files
%defattr(-,root,root)
/usr/lib/mozilla/plugins/*

%files fonts -f %{name}-fonts.files
%defattr(-,root,root)
%dir %{jdkdir}
%dir %{jredir}
%dir %{jredir}/bin
%{jredir}/bin/mkalias.pl
%dir %{jredir}/lib
%ghost %{fontdir}/fonts.dir
%ghost %{fontdir}/fonts.scale
%ghost %{fontdir}/fonts.alias

%changelog
* Thu Dec 12 2002 Rex Dieter <rdieter@...> 1.4.1.01-0
- 1.4.l.01
- rename Group:'s in RedHat style.
- remove extraneous uses of $RPM_BUILD_DIR
- %%clean: cleanup $RPM_BUILD_DIR when done.
- fonts: relax Require's (can be installed standalone), though
  most users won't want/need the fonts.
- fonts: try harder to dynamically generate fonts.{dir,scale}, and
  keep/use sun's supplied fonts.dir if we can't generate it dynamically.
- fonts: don't use xftcache.  It wasn't a good idea then,
  and certainly isn't now that it is deprecated (fc-cache).
- fonts: %%config(noreplace) font.properties, provide better (aka working) 
  default.
- fonts: move %postun fonts to %preun fonts to avoid race: system
  accessing a font that is currently being uninstalled.
- plugin: make link for mozilla (punt on netscape for now).

* Sun Sep 08 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0.01-1jpp 
- upgrades from Rex Dieter <rdieter@...>:
 - 1.4.0_01
 - %%postun: do not remove alternatives on upgrades.
 - %%post: fix extchek->extcheck typo.
 - %%files: add orbd.1*,policytool.1*,servertool.1*
 - %%files devel: add idlj.1*
 - fonts subpkg
- distribution tag for real

* Sat Jun 08 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-4jpp
- upgrades from Rex Dieter <rdieter@...>:
 - naming: jre -> j2se, jsdk -> j2se-devel
 - plugin, jdbc subpkgs
- spec cleanup
- changed virtual provides to j2se and j2se-devel
- fixed man page alternative setup
- used versioned files for jdbc package requires
- group tags again
- provides and obsoletes jre and jsdk

* Sat May 11 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-3jpp
- vendor, distribution, group tags

* Fri Apr 05 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-2jpp 
- non-free section

* Sat Feb 16 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-1jpp 
- 1.4.0 final

* Sun Feb 10 2002 Guillaume Rousse
<guillomovitch@...> 1.4.0-0.rc.1jpp 
- first jpp release

Gmane