Blame | Last modification | View Log | RSS feed
## RPM macros for Java applications.## JPackage Project <http://www.jpackage.org/># David Walluck <david@jpackage.org># Ville Skyttä <scop at jpackage.org># Nicolas Mailhot <Nicolas.Mailhot@laPoste.net>##==============================================================================# ---- default Java directories## Root directory where all Java VMs/SDK/JREs are installed.#%_jvmdir %{_prefix}/lib/jvm## Root directory where all Java VMs/SDK/JREs expose their jars#%_jvmjardir %{_prefix}/lib/jvm-exports## Root directory for all Java VM/SDK/JRE's private things.#%_jvmprivdir %{_prefix}/lib/jvm-private## Root directory for all architecture dependent parts of Java VM/SDK/JRE's#%_jvmlibdir %{_prefix}/lib/jvm## Root directory for all architecture independent parts of Java VM/SDK/JRE's#%_jvmdatadir %{_datadir}/jvm## Root directory for all configurations parts of Java VM/SDK/JRE's#%_jvmsysconfdir %{_sysconfdir}/jvm## Root directory for all common architecture dependent parts of Java VM/SDK/JRE's#%_jvmcommonlibdir %{_prefix}/lib/jvm-commmon## Root directory for all common architecture independent parts of Java VM/SDK/JRE's#%_jvmcommondatadir %{_datadir}/jvm-commmon## Root directory for all common configurations parts of Java VM/SDK/JRE's#%_jvmcommonsysconfdir %{_sysconfdir}/jvm-commmon## Directory where arch and version independent jars are installed.# This has already been integrated in RH macros following our request.## By extension:# %{_javadir}-ext:# - version dependent jars# %{_javadir}-x.y.z:# - jars for Java standard x.y.z (usually symlinks to %{_javadir}-ext)# %{_javadir}-utils:# - Java-related scripts## To simplify things only %{_javadir} is defined.#%_javadir %{_datadir}/java## Directory where arch-specific (JNI) version-independent jars are installed.## By extension:# %{_jnidir}-ext:# - version dependent jars# %{_jnidir}-x.y.z:# - jars for Java standard x.y.z (usually symlinks to %{_jnidir}-ext)# To simplify things only %{_jnidir} is defined.#%_jnidir %{_prefix}/lib/java## Root directory where all javadoc is installed. Also already in RH macros.#%_javadocdir %{_datadir}/javadoc# Directory for maven poms%_mavenpomdir %{_datadir}/maven2/poms## Directory for maven depmaps#%_mavendepmapdir %{_sysconfdir}/maven%_mavendepmapfragdir %{_sysconfdir}/maven/fragments## Current default JVM home.#%java_home %(. %{_javadir}-utils/java-functions; set_jvm; echo $JAVA_HOME)#==============================================================================# ---- default Java commands%ant JAVA_HOME=%{java_home} ant%jar %{java_home}/bin/jar%java %(. %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD)%javac %{java_home}/bin/javac%javadoc %{java_home}/bin/javadoc#==============================================================================# ---- Java extension handling macros## add_jvm_extension should be used in %install by extension packages to declare# what extension jars they provide.## For example a package that provides foo.jar which is the bar extension# under java 1.2 and 1.3 should do a:## %install# ... # create foo.jar in %{javadir}-ext# %add_jvm_extension foo bar 1.2 1.3## %files# %{javadir}-ext/foo.jar# %{javadir}-*/bar.jar#%add_jvm_extension JAVA_LIBDIR=%{buildroot}/%{_javadir} %{_bindir}/jvmjar -l#==============================================================================## add_to_depmap adds an entry to the depmap. The arguments are:## %1 the original groupid# %2 the original artifact id# %3 the version# %4 the new groupid# %5 the new artifactid#%add_to_maven_depmap() \install -dm 755 $RPM_BUILD_ROOT/%{_mavendepmapfragdir}\cat >>$RPM_BUILD_ROOT/%{_mavendepmapfragdir}/%{name}<< EOF\<dependency>\<maven>\<groupId>%1</groupId>\<artifactId>%2</artifactId>\<version>%3</version>\</maven>\<jpp>\<groupId>%4</groupId>\<artifactId>%5</artifactId>\<version>%3</version>\</jpp>\</dependency>\\EOF\%{nil}#==============================================================================## update_maven_depmap updates the main maven depmap#%update_maven_depmap() \echo -e "<dependencies>\\n" > %{_mavendepmapdir}/maven2-depmap.xml\if [ -d %{_mavendepmapfragdir} ] && [ -n "`find %{_mavendepmapfragdir} -type f`" ]; then\cat %{_mavendepmapfragdir}/* >> %{_mavendepmapdir}/maven2-depmap.xml\fi\echo -e "</dependencies>\\n" >> %{_mavendepmapdir}/maven2-depmap.xml\%{nil}#==============================================================================# ---- GCJ support%_gcj_support 1#==============================================================================# ---- default icons directories as per the icon theme freedesktop spec%_iconstheme hicolor%_iconsbasedir %{_datadir}/icons/%{_iconstheme}## The following is a bit heavy and will be removed#%_icons16dir %{_iconsbasedir}/16x16/apps%_icons22dir %{_iconsbasedir}/22x22/apps%_icons48dir %{_iconsbasedir}/48x48/apps%_icons64dir %{_iconsbasedir}/64x64/apps%_icons96dir %{_iconsbasedir}/96x96/apps%_icons192dir %{_iconsbasedir}/192x192/apps%_iconsscaldir %{_iconsbasedir}/scalable/apps## Mandriva macros for non-Mandriva systems.#%_miconsdir %{_datadir}/icons/mini%_iconsdir %{_datadir}/icons%_liconsdir %{_datadir}/icons/large## Mandriva icons## %1 the name of the icon (typically the name of the package). Mandriva# requires 3 icons sizes (48, 32, 16), all should be present.#%mdkicons() \install -D -m 644 %1-48.png $RPM_BUILD_ROOT%{_liconsdir}/%1.png\install -D -m 644 %1-32.png $RPM_BUILD_ROOT%{_iconsdir}/%1.png\install -D -m 644 %1-16.png $RPM_BUILD_ROOT%{_miconsdir}/%1.png\%{nil}## Red Hat icons## %1 the name of the icon (typically the name of the package). RedHat# requires 3 icons sizes (48, 32, 16), all should be present.%rhicons() \install -D -m 644 %1-48.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/48x48/apps/%{name}.png\install -D -m 644 %1-32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/%{name}.png\install -D -m 644 %1-16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/%{name}.png\%{nil}#==============================================================================# ---- default .desktop directories per the desktop-entry freedesktop.org spec%_desktopdir %{_datadir}/applications## Mandriva menu dir#%_menudir %{_prefix}/lib/menu## Mandriva menu## %1 the name of the menu (ex: %{name})# %2 the command to run (ex: %{_bindir}/%{name})# %3 needs (ex: X11)# %4 menu section (ex: Applications/Editors)# %5 mime types (ex: text/html;text/plain)# %6 menu title (ex: %{name})# %7 comment or summary (ex: %{Summary})# %8 icon (ex: %{name}.png)# %9 unused#%mdkmenu() \install -d -m 755 $RPM_BUILD_ROOT%{_menudir}\cat >$RPM_BUILD_ROOT%{_menudir}/%1 <<EOF\\?package(%1):\\command="%2"\\needs="%3"\\section="%4"\\mimetypes="%5"\\title="%6"\\longtitle="%7"\\icon="%8"\\EOF\%{nil}%post_mdkmenu\%post mdkmenu\%{update_menus}%postun_mdkmenu\%postun mdkmenu\%{clean_menus}## Legacy menu## %1 the name of the menu (ex: %{name})# %2 the command to run (ex: %{_bindir}/%{name})# %3 needs (ex: 1)# %4 menu section (ex: Development)# %5 unused# %6 menu title (ex: %{name})# %7 comment or summary (ex: %{Summary})# %8 icon (ex: %{name}.png)# %9 type (ex: Application)#%rhmenu() \install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir}/X11/applnk/%4\cat >$RPM_BUILD_ROOT%{_sysconfdir}/X11/applnk/%4/%1.desktop <<EOF\[Desktop Entry]\Name=%6\Comment=%7\Exec=%2\Terminal=%3\Type=%9\Icon=%8\EOF\%{nil}## Standard JPackage script## This is kind of tasteless and should be moved to an external template## %1 main class# %2 flags# %3 options# %4 jars (separated by ':')# %5 the name of script you wish to create#%jpackage_script() \install -d -m 755 $RPM_BUILD_ROOT%{_bindir}\cat > $RPM_BUILD_ROOT%{_bindir}/%5 << EOF \#!/bin/sh\#\# %{name} script\# JPackage Project <http://www.jpackage.org/>\\# Source functions library\. %{_javadir}-utils/java-functions\\# Source system prefs\if [ -f %{_sysconfdir}/java/%{name}.conf ] ; then\. %{_sysconfdir}/java/%{name}.conf\fi\\# Source user prefs\if [ -f \\$HOME/.%{name}rc ] ; then\. \\$HOME/.%{name}rc\fi\\# Configuration\MAIN_CLASS=%1\BASE_FLAGS=%2\BASE_OPTIONS=%3\BASE_JARS="%(echo %4 | sed -e 's,:, ,g')"\\# Set parameters\set_jvm\set_classpath \\$BASE_JARS\set_flags \\$BASE_FLAGS\set_options \\$BASE_OPTIONS\\# Let's start\run "\\$@"\EOF\chmod 755 $RPM_BUILD_ROOT%{_bindir}/%5\%{nil}