summaryrefslogtreecommitdiff
path: root/debian/rebuild-gcj-db
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rebuild-gcj-db')
-rw-r--r--debian/rebuild-gcj-db106
1 files changed, 106 insertions, 0 deletions
diff --git a/debian/rebuild-gcj-db b/debian/rebuild-gcj-db
new file mode 100644
index 0000000..297a00b
--- /dev/null
+++ b/debian/rebuild-gcj-db
@@ -0,0 +1,106 @@
+#! /bin/bash
+
+set -e
+
+if [ $# -gt 1 ]; then
+ cat 1>&2 <<-EOF
+ rebuild-gcj-db: re-build the gcj classmap database
+
+ usage: $0 [install|remove]
+ EOF
+ exit 1
+fi
+
+mode=install
+case "$1" in
+ install|remove)
+ mode=$1;;
+esac
+
+uname=$(uname -m)
+
+rebuild_db()
+{
+ dbtool=$1; shift
+ dbLocation=$1; shift
+ dirs=
+
+ for dir; do [ -d $dir ] && dirs="$dirs $dir"; done
+ if [ -z "$dirs" ]; then
+ # no more dirs with .db files on the system
+ return 0
+ fi
+ mkdir -p $(dirname $dbLocation)
+ if $dbtool -n $dbLocation.tmp 64; then
+ :
+ #case "$uname" in parisc*)
+ # echo >&2 "$dbtool succeeded unexpectedly"
+ #esac
+ else
+ case "$uname" in
+ m68k)
+ echo >&2 "ERROR: $dbtool did fail; known problem on $uname"
+ return 0;;
+ *)
+ exit 2
+ esac
+ fi
+ find $dirs -follow -name '*.db' -print0 | \
+ xargs -r -0 $dbtool -m $dbLocation.tmp $dbLocation.tmp || exit 1
+ mv $dbLocation.tmp $dbLocation
+}
+
+
+rebuild_databases()
+{
+ v=$1
+ dbtool=gcj-dbtool-$1
+ dbLocation=`$dbtool -p || true`
+
+ if [ -n "$dbLocation" ]; then
+ case "$uname" in m68k)
+ echo >&2 "$dbtool succeeded unexpectedly"
+ esac
+ else
+ case "$uname" in
+ m68k)
+ echo >&2 "ERROR: $dbtool did fail; known problem on $uname"
+ return 0;;
+ *)
+ exit 2
+ esac
+ fi
+
+ if [ "$mode" = remove ] && [ ! -f "$dbLocation" ]; then
+ # libgcj7-0 or libgcj8 are already removed; no need
+ # to rebuild anything
+ return 0
+ fi
+ rebuild_db \
+ $dbtool \
+ $dbLocation \
+ /usr/share/gcj/classmap.d \
+ /usr/share/gcj-$v/classmap.d
+}
+
+# still different databases for each gcj-4.x
+
+if which gcj-dbtool-4.9 >/dev/null 2>&1; then
+ rebuild_databases 4.9
+fi
+
+if which gcj-dbtool-4.8 >/dev/null 2>&1; then
+ rebuild_databases 4.8
+fi
+
+if which gcj-dbtool-4.7 >/dev/null 2>&1; then
+ rebuild_databases 4.7
+fi
+
+if which gcj-dbtool-4.6 >/dev/null 2>&1; then
+ rebuild_databases 4.6
+fi
+
+if which gcj-dbtool-4.4 >/dev/null 2>&1; then
+ rebuild_databases 4.4
+fi