#!/bin/bash # This script runs the eclipse can do the following: # - backup configuration files # - restore configuration files from backup loation # - run the eclipse reconciler # - delete the backup files. # A list of the files of directory that are to be backed up config_files=("artifacts.xml" "eclipse.ini" "p2" "configuration") run_reconciler=/var/lib/rpm-state/eclipse/run-reconciler # If the reconciler was run with the -clean options rerun the initializer. if [[ "$@" == *-clean* ]] then echo "Do not run the reconciler with -clean option use -vmargs -Dosgi.checkConfiguration=true instead" exit 0; fi if [ ! -e $run_reconciler ] && [[ "$@" != *-Dosgi.checkConfiguration=true* ]] then echo "run-reconciler file not present. No need to run the reconciler" exit 0 fi tmp_dir=$(mktemp -d) echo "Tmpdir: $tmp_dir" if [ -e /usr/lib64/eclipse ] then eclipse_dir=/usr/lib64/eclipse else eclipse_dir=/usr/lib/eclipse fi echo "Removing run-reconciler file" rm -f $run_reconciler # if we are running the reconciler with -Dosgi.checkConfiguration=true # probably doing an upgrade remove time stamp file(s). if [[ "$@" == *-Dosgi.checkConfiguration=true* ]] then find $eclipse_dir -name cache.timestamps -delete find $eclipse_dir -name .bundledata* -delete fi echo "backing up configuration files" for file in ${config_files[@]} do echo $file cp -rp $eclipse_dir/$file $tmp_dir/$file done echo "Running eclipse reconciler" pushd $eclipse_dir ./eclipse --launcher.suppressErrors -nosplash -consolelog -application org.eclipse.equinox.p2.reconciler.application "$@" r_exit_value=$? # Check exit value if [ ! $r_exit_value -eq 0 ] then # Restore files echo "Reconciler failed. Restoring files" for file in ${config_files[@]} do echo $file cp --remove-destination -Trp $tmp_dir/$file $eclipse_dir/$file done fi popd # delete the backup files for file in ${config_files[@]} do rm -rf $tmp_dir/$file done exit $r_exit_value