[java-1.7.0-openjdk/f19] reworked alternatives - jrelnk is now just lnk, everything is pointing through jredir - all alternat
jiri vanek
jvanek at fedoraproject.org
Fri Jul 19 13:27:57 UTC 2013
commit 0b206b4b46ded5bdd76c957862d1c499abb4e978
Author: Jiri Vanek <jvanek at jvanek.redhat>
Date: Fri Jul 19 15:02:25 2013 +0200
reworked alternatives
- jrelnk is now just lnk, everything is pointing through jredir
- all alternatives are celaned before new one is added
- alternatives are removed after uninstall
java-1.7.0-openjdk.spec | 180 ++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 155 insertions(+), 25 deletions(-)
---
diff --git a/java-1.7.0-openjdk.spec b/java-1.7.0-openjdk.spec
index 16b00ae..5074eed 100644
--- a/java-1.7.0-openjdk.spec
+++ b/java-1.7.0-openjdk.spec
@@ -115,9 +115,12 @@
#we can copy the javadoc to not arched dir, or made it not noarch
%global uniquejavadocdir %{fullversion}
+%global statuscheck status is auto
+%global linkcheck link currently points to
+
%ifarch %{jit_arches}
# Where to install systemtap tapset (links)
-# We would like these to be in a package specific subdir,
+# We would like these to be in a package specific subdir,
# but currently systemtap doesn't support that, so we have to
# use the root tapset dir for now. To distinquish between 64
# and 32 bit architectures we place the tapsets under the arch
@@ -851,11 +854,32 @@ find $RPM_BUILD_ROOT%{_jvmdir}/%{sdkdir}/demo \
%{jrebindir}/java -Xshare:dump >/dev/null 2>/dev/null
%endif
+# Note current status of alternatives
+MAKE_THIS_DEFAULT=0
+ID=%{_jvmdir}/\(\(jre\)\|\(java\)\)-%{javaver}-%{origin}.*bin/java
+COMMAND=java
+alternatives --display $COMMAND | head -n 1 | grep -q "%{statuscheck}"
+if [ $? -ne 0 ]; then
+ alternatives --display $COMMAND | grep -q "%{linkcheck}"".*""$ID"
+ if [ $? -eq 0 ]; then
+ MAKE_THIS_DEFAULT=1
+ fi
+fi
+
+# Remove old alternatives
+for alt in $(alternatives --display $COMMAND | grep priority | awk '{print $1}'); do
+ # Only grab what %{origin} installed
+ echo $alt | grep -q "$ID"
+ if [ $? -eq 0 ]; then
+ alternatives --remove $COMMAND $alt >& /dev/null || :
+ fi
+done
+
ext=.gz
alternatives \
--install %{_bindir}/java java %{jrebindir}/java %{priority} \
- --slave %{_jvmdir}/jre jre %{_jvmdir}/%{jrelnk} \
- --slave %{_jvmjardir}/jre jre_exports %{_jvmjardir}/%{jrelnk} \
+ --slave %{_jvmdir}/jre jre %{_jvmdir}/%{jredir} \
+ --slave %{_jvmjardir}/jre jre_exports %{_jvmjardir}/%{jredir} \
--slave %{_bindir}/keytool keytool %{jrebindir}/keytool \
--slave %{_bindir}/orbd orbd %{jrebindir}/orbd \
--slave %{_bindir}/pack200 pack200 %{jrebindir}/pack200 \
@@ -883,17 +907,44 @@ alternatives \
--slave %{_mandir}/man1/unpack200.1$ext unpack200.1$ext \
%{_mandir}/man1/unpack200-%{uniquesuffix}.1$ext
-alternatives \
- --install %{_jvmdir}/jre-%{origin} \
- jre_%{origin} %{_jvmdir}/%{jrelnk} %{priority} \
- --slave %{_jvmjardir}/jre-%{origin} \
- jre_%{origin}_exports %{_jvmjardir}/%{jrelnk}
+# Gracefully update to this one if needed
+if [ $MAKE_THIS_DEFAULT -eq 1 ]; then
+ alternatives --set $COMMAND %{jrebindir}/java
+fi
-alternatives \
- --install %{_jvmdir}/jre-%{javaver} \
- jre_%{javaver} %{_jvmdir}/%{jrelnk} %{priority} \
- --slave %{_jvmjardir}/jre-%{javaver} \
- jre_%{javaver}_exports %{_jvmjardir}/%{jrelnk}
+for X in %{origin} %{javaver} ; do
+ # Note current status of alternatives
+ MAKE_THIS_DEFAULT=0
+ ID=%{_jvmdir}/\(\(jre\)\|\(java\)\)-%{javaver}-%{origin}
+ COMMAND=jre_$X
+ alternatives --display $COMMAND | head -n 1 | grep -q "%{statuscheck}"
+ if [ $? -ne 0 ]; then
+ alternatives --display $COMMAND | grep -q "%{linkcheck}"".*""$ID"
+ if [ $? -eq 0 ]; then
+ MAKE_THIS_DEFAULT=1
+ fi
+ fi
+
+ # Remove old alternatives
+ for alt in $(alternatives --display $COMMAND | grep priority | awk '{print $1}'); do
+ # Only grab what %{origin} installed
+ echo $alt | grep -q "$ID"
+ if [ $? -eq 0 ]; then
+ alternatives --remove $COMMAND $alt >& /dev/null || :
+ fi
+ done
+
+ alternatives \
+ --install %{_jvmdir}/jre-"$X" \
+ jre_"$X" %{_jvmdir}/%{jredir} %{priority} \
+ --slave %{_jvmjardir}/jre-"$X" \
+ jre_"$X"_exports %{_jvmjardir}/%{jredir}
+
+ # Gracefully update to this one if needed
+ if [ $MAKE_THIS_DEFAULT -eq 1 ]; then
+ alternatives --set $COMMAND %{_jvmdir}/%{jredir}
+ fi
+done
update-desktop-database %{_datadir}/applications &> /dev/null || :
@@ -903,8 +954,8 @@ exit 0
%postun
alternatives --remove java %{jrebindir}/java
- alternatives --remove jre_%{origin} %{_jvmdir}/%{jrelnk}
- alternatives --remove jre_%{javaver} %{_jvmdir}/%{jrelnk}
+ alternatives --remove jre_%{origin} %{_jvmdir}/%{jredir}
+ alternatives --remove jre_%{javaver} %{_jvmdir}/%{jredir}
update-desktop-database %{_datadir}/applications &> /dev/null || :
@@ -919,6 +970,27 @@ exit 0
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%post devel
+# Note current status of alternatives
+MAKE_THIS_DEFAULT=0
+ID=%{_jvmdir}/java-%{javaver}-%{origin}.*bin/javac
+COMMAND=javac
+alternatives --display $COMMAND | head -n 1 | grep -q "%{statuscheck}"
+if [ $? -ne 0 ]; then
+ alternatives --display $COMMAND | grep -q "%{linkcheck}"".*""$ID"
+ if [ $? -eq 0 ]; then
+ MAKE_THIS_DEFAULT=1
+ fi
+fi
+
+# Remove old alternatives
+for alt in $(alternatives --display $COMMAND | grep priority | awk '{print $1}'); do
+ # Only grab what %{origin} installed
+ echo $alt | grep -q "$ID"
+ if [ $? -eq 0 ]; then
+ alternatives --remove $COMMAND $alt >& /dev/null || :
+ fi
+done
+
ext=.gz
alternatives \
--install %{_bindir}/javac javac %{sdkbindir}/javac %{priority} \
@@ -1010,17 +1082,45 @@ alternatives \
--slave %{_mandir}/man1/xjc.1$ext xjc.1$ext \
%{_mandir}/man1/xjc-%{uniquesuffix}.1$ext
-alternatives \
- --install %{_jvmdir}/java-%{origin} \
- java_sdk_%{origin} %{_jvmdir}/%{sdkdir} %{priority} \
- --slave %{_jvmjardir}/java-%{origin} \
- java_sdk_%{origin}_exports %{_jvmjardir}/%{sdkdir}
+# Gracefully update to this one if needed
+if [ $MAKE_THIS_DEFAULT -eq 1 ]; then
+ alternatives --set $COMMAND %{sdkbindir}/javac
+fi
+
+for X in %{origin} %{javaver} ; do
+ # Note current status of alternatives
+ MAKE_THIS_DEFAULT=0
+ ID=%{_jvmdir}/java-%{javaver}-%{origin}
+ COMMAND=java_sdk_$X
+ alternatives --display $COMMAND | head -n 1 | grep -q "%{statuscheck}"
+ if [ $? -ne 0 ]; then
+ alternatives --display $COMMAND | grep -q "%{linkcheck}"".*""$ID"
+ if [ $? -eq 0 ]; then
+ MAKE_THIS_DEFAULT=1
+ fi
+ fi
+
+ # Remove old alternatives
+ for alt in $(alternatives --display $COMMAND | grep priority | awk '{print $1}'); do
+ # Only grab what %{origin} installed
+ echo $alt | grep -q "$ID"
+ if [ $? -eq 0 ]; then
+ alternatives --remove $COMMAND $alt >& /dev/null || :
+ fi
+ done
+
+ alternatives \
+ --install %{_jvmdir}/java-"$X" \
+ java_sdk_"$X" %{_jvmdir}/%{sdkdir} %{priority} \
+ --slave %{_jvmjardir}/java-"$X" \
+ java_sdk_"$X"_exports %{_jvmjardir}/%{sdkdir}
+
+ # Gracefully update to this one if needed
+ if [ $MAKE_THIS_DEFAULT -eq 1 ]; then
+ alternatives --set $COMMAND %{_jvmdir}/%{sdkdir}
+ fi
+done
-alternatives \
- --install %{_jvmdir}/java-%{javaver} \
- java_sdk_%{javaver} %{_jvmdir}/%{sdkdir} %{priority} \
- --slave %{_jvmjardir}/java-%{javaver} \
- java_sdk_%{javaver}_exports %{_jvmjardir}/%{sdkdir}
exit 0
@@ -1032,10 +1132,35 @@ exit 0
exit 0
%post javadoc
+MAKE_THIS_DEFAULT=0
+ID=%{_javadocdir}/java-%{javaver}-%{origin}.*/api
+COMMAND=javadocdir
+alternatives --display $COMMAND | head -n 1 | grep -q "%{statuscheck}"
+if [ $? -ne 0 ]; then
+ alternatives --display $COMMAND | grep -q "%{linkcheck}"".*""$ID"
+ if [ $? -eq 0 ]; then
+ MAKE_THIS_DEFAULT=1
+ fi
+fi
+
+# Remove old alternatives
+for alt in $(alternatives --display $COMMAND | grep priority | awk '{print $1}'); do
+ # Only grab what %{origin} installed
+ echo $alt | grep -q "$ID"
+ if [ $? -eq 0 ]; then
+ alternatives --remove $COMMAND $alt >& /dev/null || :
+ fi
+done
+
alternatives \
--install %{_javadocdir}/java javadocdir %{_javadocdir}/%{uniquejavadocdir}/api \
%{priority}
+# Gracefully update to this one if needed
+if [ $MAKE_THIS_DEFAULT -eq 1 ]; then
+ alternatives --set $COMMAND %{_javadocdir}/%{uniquejavadocdir}/api
+fi
+
exit 0
%postun javadoc
@@ -1158,6 +1283,11 @@ exit 0
%{_jvmdir}/%{jredir}/lib/accessibility.properties
%changelog
+* Fri Jul 19 2013 Jiri Vanek <jvanek at redhat.com> - 1.7.0.25-2.3.10.8.f19
+- jrelnk is now just lnk, everything is pointing through jredir
+- all alternatives are celaned before new one is added
+- alternatives are removed after uninstall
+
* Thu Jul 18 2013 Jiri Vanek <jvanek at redhat.com> - 1.7.0.25-2.3.10.8.f19
- moved to full-version directory
- moved to add/remove alternatives process
More information about the scm-commits
mailing list