universalisos/src/uninstall
Fábio Coutada 7855eab092 feat(import): Complete PikeOS 5.0 ecosystem import from devvm-arch
MAJOR MILESTONE: Successfully imported complete PikeOS 5.0 ecosystem
from Virtual Machine 100 (devvm-arch) on gigabyte Proxmox server.

Import Summary:
- Source Code: 4.3GB, 63,441 files, 14,829 C/C++/H files
- Documentation: 78MB, 37+ PDF manuals covering all PikeOS aspects
- XSD Schemas: 1.8MB, 158 schema files for configuration/code generation
- Test Framework: Complete TFW infrastructure in src/tfw/

Key Components:
 Multi-architecture kernels (ARM v7/v8, PowerPC e500/e500mc/e5500, x86_64)
 Core source libraries (libstand, ssw, p4ext)
 Complete test framework with executables, includes, libraries
 37+ comprehensive PDF documentation (installation, development, platform manuals)
 158 XSD schemas for Eclipse-based code generation and configuration
 AUTOSAR/MISRA safety-critical compliance foundation
 Hardware virtualization support
 Eclipse IDE project configuration (.project, .cproject)

Documentation Categories:
- Installation & User Guides (pikeos-installation-guide.pdf, user manuals)
- Development References (kernel, driver, test framework manuals)
- API & Programming (C/C++ environments, native API extensions)
- Platform Manuals (ARM, PowerPC, x86 specific guides)
- CDK Documentation (gcc, binutils, ld, cpp internals)
- Release Notes (all components for 5.0.3)
- Specialized Topics (hardware virtualization, POSIX compliance)

Technical Achievements:
 Complete PikeOS 5.0 codebase across multiple processor architectures
 Safety-critical foundation with AUTOSAR/MISRA compliance
 Eclipse IDE integration with XSD-driven code generation pipeline
 Comprehensive test framework for validation and verification
 Complete documentation covering development, deployment, and optimization

Extraction Method:
- Source: VM 100 (devvm-arch) on gigabyte server (192.168.0.104)
- Method: Direct LVM disk mount via losetup, rsync transfer
- Size: Total 4.4GB extracted and organized

Next Phases:
- Phase 3: XSD Workflow Analysis (Day 8-10)
- Phase 4: Safety Standards Compliance Documentation (Day 11-12)
- Phase 5: Component Categorization (Day 13-14)
- Phase 6: Aurelio Brain Test (Day 15)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-06 21:01:41 +01:00

488 lines
13 KiB
Bash
Executable file

#!/bin/sh
# Uncomment the following line to override the JVM search sequence
# INSTALL4J_JAVA_HOME_OVERRIDE=
# Uncomment the following line to add additional VM parameters
# INSTALL4J_ADD_VM_PARAMS=
INSTALL4J_JAVA_PREFIX=""
GREP_OPTIONS=""
fill_version_numbers() {
if [ "$ver_major" = "" ]; then
ver_major=0
fi
if [ "$ver_minor" = "" ]; then
ver_minor=0
fi
if [ "$ver_micro" = "" ]; then
ver_micro=0
fi
if [ "$ver_patch" = "" ]; then
ver_patch=0
fi
}
read_db_entry() {
if [ -n "$INSTALL4J_NO_DB" ]; then
return 1
fi
if [ ! -f "$db_file" ]; then
return 1
fi
if [ ! -x "$java_exc" ]; then
return 1
fi
found=1
exec 7< $db_file
while read r_type r_dir r_ver_major r_ver_minor r_ver_micro r_ver_patch r_ver_vendor<&7; do
if [ "$r_type" = "JRE_VERSION" ]; then
if [ "$r_dir" = "$test_dir" ]; then
ver_major=$r_ver_major
ver_minor=$r_ver_minor
ver_micro=$r_ver_micro
ver_patch=$r_ver_patch
fill_version_numbers
fi
elif [ "$r_type" = "JRE_INFO" ]; then
if [ "$r_dir" = "$test_dir" ]; then
is_openjdk=$r_ver_major
if [ "W$r_ver_minor" = "W$modification_date" ]; then
found=0
break
fi
fi
fi
done
exec 7<&-
return $found
}
create_db_entry() {
tested_jvm=true
version_output=`"$bin_dir/java" $1 -version 2>&1`
is_gcj=`expr "$version_output" : '.*gcj'`
is_openjdk=`expr "$version_output" : '.*OpenJDK'`
if [ "$is_gcj" = "0" ]; then
java_version=`expr "$version_output" : '.*"\(.*\)".*'`
ver_major=`expr "$java_version" : '\([0-9][0-9]*\).*'`
ver_minor=`expr "$java_version" : '[0-9][0-9]*\.\([0-9][0-9]*\).*'`
ver_micro=`expr "$java_version" : '[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*'`
ver_patch=`expr "$java_version" : '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*[\._]\([0-9][0-9]*\).*'`
fi
fill_version_numbers
if [ -n "$INSTALL4J_NO_DB" ]; then
return
fi
db_new_file=${db_file}_new
if [ -f "$db_file" ]; then
awk '$2 != "'"$test_dir"'" {print $0}' $db_file > $db_new_file
rm "$db_file"
mv "$db_new_file" "$db_file"
fi
dir_escaped=`echo "$test_dir" | sed -e 's/ /\\\\ /g'`
echo "JRE_VERSION $dir_escaped $ver_major $ver_minor $ver_micro $ver_patch" >> $db_file
echo "JRE_INFO $dir_escaped $is_openjdk $modification_date" >> $db_file
chmod g+w $db_file
}
check_date_output() {
if [ -n "$date_output" -a $date_output -eq $date_output 2> /dev/null ]; then
modification_date=$date_output
fi
}
test_jvm() {
tested_jvm=na
test_dir=$1
bin_dir=$test_dir/bin
java_exc=$bin_dir/java
if [ -z "$test_dir" ] || [ ! -d "$bin_dir" ] || [ ! -f "$java_exc" ] || [ ! -x "$java_exc" ]; then
return
fi
modification_date=0
date_output=`date -r "$java_exc" "+%s" 2>/dev/null`
if [ $? -eq 0 ]; then
check_date_output
fi
if [ $modification_date -eq 0 ]; then
stat_path=`command -v stat 2> /dev/null`
if [ "$?" -ne "0" ] || [ "W$stat_path" = "W" ]; then
stat_path=`which stat 2> /dev/null`
if [ "$?" -ne "0" ]; then
stat_path=""
fi
fi
if [ -f "$stat_path" ]; then
date_output=`stat -f "%m" "$java_exc" 2>/dev/null`
if [ $? -eq 0 ]; then
check_date_output
fi
if [ $modification_date -eq 0 ]; then
date_output=`stat -c "%Y" "$java_exc" 2>/dev/null`
if [ $? -eq 0 ]; then
check_date_output
fi
fi
fi
fi
tested_jvm=false
read_db_entry || create_db_entry $2
if [ "$ver_major" = "" ]; then
return;
fi
if [ "$ver_major" -lt "1" ]; then
return;
elif [ "$ver_major" -eq "1" ]; then
if [ "$ver_minor" -lt "8" ]; then
return;
fi
fi
if [ "$ver_major" = "" ]; then
return;
fi
app_java_home=$test_dir
}
add_class_path() {
if [ -n "$1" ] && [ `expr "$1" : '.*\*'` -eq "0" ]; then
local_classpath="$local_classpath${local_classpath:+:}$1"
fi
}
read_vmoptions() {
vmoptions_file=`eval echo "$1" 2>/dev/null`
if [ ! -r "$vmoptions_file" ]; then
vmoptions_file="$prg_dir/$vmoptions_file"
fi
if [ -r "$vmoptions_file" ] && [ -f "$vmoptions_file" ]; then
exec 8< "$vmoptions_file"
while read cur_option<&8; do
is_comment=`expr "W$cur_option" : 'W *#.*'`
if [ "$is_comment" = "0" ]; then
vmo_classpath=`expr "W$cur_option" : 'W *-classpath \(.*\)'`
vmo_classpath_a=`expr "W$cur_option" : 'W *-classpath/a \(.*\)'`
vmo_classpath_p=`expr "W$cur_option" : 'W *-classpath/p \(.*\)'`
vmo_include=`expr "W$cur_option" : 'W *-include-options \(.*\)'`
if [ ! "W$vmo_include" = "W" ]; then
if [ "W$vmo_include_1" = "W" ]; then
vmo_include_1="$vmo_include"
elif [ "W$vmo_include_2" = "W" ]; then
vmo_include_2="$vmo_include"
elif [ "W$vmo_include_3" = "W" ]; then
vmo_include_3="$vmo_include"
fi
fi
if [ ! "$vmo_classpath" = "" ]; then
local_classpath="$i4j_classpath:$vmo_classpath"
elif [ ! "$vmo_classpath_a" = "" ]; then
local_classpath="${local_classpath}:${vmo_classpath_a}"
elif [ ! "$vmo_classpath_p" = "" ]; then
local_classpath="${vmo_classpath_p}:${local_classpath}"
elif [ "W$vmo_include" = "W" ]; then
needs_quotes=`expr "W$cur_option" : 'W.* .*'`
if [ "$needs_quotes" = "0" ]; then
vmoptions_val="$vmoptions_val $cur_option"
else
if [ "W$vmov_1" = "W" ]; then
vmov_1="$cur_option"
elif [ "W$vmov_2" = "W" ]; then
vmov_2="$cur_option"
elif [ "W$vmov_3" = "W" ]; then
vmov_3="$cur_option"
elif [ "W$vmov_4" = "W" ]; then
vmov_4="$cur_option"
elif [ "W$vmov_5" = "W" ]; then
vmov_5="$cur_option"
fi
fi
fi
fi
done
exec 8<&-
if [ ! "W$vmo_include_1" = "W" ]; then
vmo_include="$vmo_include_1"
unset vmo_include_1
read_vmoptions "$vmo_include"
fi
if [ ! "W$vmo_include_2" = "W" ]; then
vmo_include="$vmo_include_2"
unset vmo_include_2
read_vmoptions "$vmo_include"
fi
if [ ! "W$vmo_include_3" = "W" ]; then
vmo_include="$vmo_include_3"
unset vmo_include_3
read_vmoptions "$vmo_include"
fi
fi
}
unpack_file() {
if [ -f "$1" ]; then
jar_file=`echo "$1" | awk '{ print substr($0,1,length-5) }'`
bin/unpack200 -r "$1" "$jar_file" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error unpacking jar files. The architecture or bitness (32/64)"
echo "of the bundled JVM might not match your machine."
echo "You might also need administrative privileges for this operation."
exit 1
else
chmod a+r "$jar_file"
fi
fi
}
run_unpack200() {
if [ -d "$1/lib" ]; then
old_pwd200=`pwd`
cd "$1"
for pack_file in lib/*.jar.pack
do
unpack_file $pack_file
done
for pack_file in lib/ext/*.jar.pack
do
unpack_file $pack_file
done
cd "$old_pwd200"
fi
}
search_jre() {
if [ -z "$app_java_home" ]; then
test_jvm "$INSTALL4J_JAVA_HOME_OVERRIDE"
fi
if [ -z "$app_java_home" ]; then
if [ -f "$app_home/.install4j/pref_jre.cfg" ]; then
read file_jvm_home < "$app_home/.install4j/pref_jre.cfg"
test_jvm "$file_jvm_home"
if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then
if [ -f "$db_file" ]; then
rm "$db_file" 2> /dev/null
fi
test_jvm "$file_jvm_home"
fi
fi
fi
if [ -z "$app_java_home" ]; then
test_jvm "$app_home/jre"
if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then
if [ -f "$db_file" ]; then
rm "$db_file" 2> /dev/null
fi
test_jvm "$app_home/jre"
fi
fi
if [ -z "$app_java_home" ]; then
prg_jvm=`command -v java 2> /dev/null`
if [ "$?" -ne "0" ] || [ "W$prg_jvm" = "W" ]; then
prg_jvm=`which java 2> /dev/null`
if [ "$?" -ne "0" ]; then
prg_jvm=""
fi
fi
if [ ! -z "$prg_jvm" ] && [ -f "$prg_jvm" ]; then
old_pwd_jvm=`pwd`
path_java_bin=`dirname "$prg_jvm"`
cd "$path_java_bin"
prg_jvm=java
while [ -h "$prg_jvm" ] ; do
ls=`ls -ld "$prg_jvm"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '.*/.*' > /dev/null; then
prg_jvm="$link"
else
prg_jvm="`dirname $prg_jvm`/$link"
fi
done
path_java_bin=`dirname "$prg_jvm"`
cd "$path_java_bin"
cd ..
path_java_home=`pwd`
cd "$old_pwd_jvm"
test_jvm "$path_java_home"
fi
fi
if [ -z "$app_java_home" ]; then
common_jvm_locations="/opt/i4j_jres/* /usr/local/i4j_jres/* $HOME/.i4j_jres/* /usr/bin/java* /usr/bin/jdk* /usr/bin/jre* /usr/bin/j2*re* /usr/bin/j2sdk* /usr/java* /usr/java*/jre /usr/jdk* /usr/jre* /usr/j2*re* /usr/j2sdk* /usr/java/j2*re* /usr/java/j2sdk* /opt/java* /usr/java/jdk* /usr/java/jre* /usr/lib/java/jre /usr/local/java* /usr/local/jdk* /usr/local/jre* /usr/local/j2*re* /usr/local/j2sdk* /usr/jdk/java* /usr/jdk/jdk* /usr/jdk/jre* /usr/jdk/j2*re* /usr/jdk/j2sdk* /usr/lib/jvm/* /usr/lib/java* /usr/lib/jdk* /usr/lib/jre* /usr/lib/j2*re* /usr/lib/j2sdk* /System/Library/Frameworks/JavaVM.framework/Versions/1.?/Home /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home /Library/Java/JavaVirtualMachines/*.jdk/Contents/Home/jre /Library/Java/JavaVirtualMachines/*.jre/Contents/Home /Library/Java/JavaVirtualMachines/*.jdk/Contents/Home"
for current_location in $common_jvm_locations
do
if [ -z "$app_java_home" ]; then
test_jvm "$current_location"
fi
done
fi
if [ -z "$app_java_home" ]; then
test_jvm "$JAVA_HOME"
fi
if [ -z "$app_java_home" ]; then
test_jvm "$JDK_HOME"
fi
if [ -z "$app_java_home" ]; then
test_jvm "$INSTALL4J_JAVA_HOME"
fi
if [ -z "$app_java_home" ]; then
if [ -f "$app_home/.install4j/inst_jre.cfg" ]; then
read file_jvm_home < "$app_home/.install4j/inst_jre.cfg"
test_jvm "$file_jvm_home"
if [ -z "$app_java_home" ] && [ $tested_jvm = "false" ]; then
if [ -f "$db_file" ]; then
rm "$db_file" 2> /dev/null
fi
test_jvm "$file_jvm_home"
fi
fi
fi
}
old_pwd=`pwd`
progname=`basename "$0"`
linkdir=`dirname "$0"`
cd "$linkdir"
prg="$progname"
while [ -h "$prg" ] ; do
ls=`ls -ld "$prg"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '.*/.*' > /dev/null; then
prg="$link"
else
prg="`dirname $prg`/$link"
fi
done
prg_dir=`dirname "$prg"`
progname=`basename "$prg"`
cd "$prg_dir"
prg_dir=`pwd`
app_home=.
cd "$app_home"
app_home=`pwd`
bundled_jre_home="$app_home/jre"
if [ "__i4j_lang_restart" = "$1" ]; then
cd "$old_pwd"
else
cd "$prg_dir"/..
fi
if [ "__i4j_extract_and_exit" = "$1" ]; then
cd "$old_pwd"
exit 0
fi
db_home=$HOME
db_file_suffix=
if [ ! -w "$db_home" ]; then
db_home=/tmp
db_file_suffix=_$USER
fi
db_file=$db_home/.install4j$db_file_suffix
if [ -d "$db_file" ] || ([ -f "$db_file" ] && [ ! -r "$db_file" ]) || ([ -f "$db_file" ] && [ ! -w "$db_file" ]); then
db_file=$db_home/.install4j_jre$db_file_suffix
fi
if [ ! "__i4j_lang_restart" = "$1" ]; then
run_unpack200 "$bundled_jre_home"
run_unpack200 "$bundled_jre_home/jre"
fi
search_jre
if [ -z "$app_java_home" ]; then
if [ -f "$db_file" ]; then
rm "$db_file" 2> /dev/null
fi
search_jre
fi
if [ -z "$app_java_home" ]; then
echo No suitable Java Virtual Machine could be found on your system.
echo The version of the JVM must be at least 1.8.
echo Please define INSTALL4J_JAVA_HOME to point to a suitable JVM.
exit 83
fi
i4j_classpath="$app_home/.install4j/i4jruntime.jar"
local_classpath=""
add_class_path "$i4j_classpath"
vmoptions_val=""
read_vmoptions "$prg_dir/$progname.vmoptions"
INSTALL4J_ADD_VM_PARAMS="$INSTALL4J_ADD_VM_PARAMS $vmoptions_val"
LD_LIBRARY_PATH="$app_home/.install4j:$app_home/.install4j/user:$LD_LIBRARY_PATH"
DYLD_LIBRARY_PATH="$app_home/.install4j:$app_home/.install4j/user:$DYLD_LIBRARY_PATH"
SHLIB_PATH="$app_home/.install4j:$app_home/.install4j/user:$SHLIB_PATH"
LIBPATH="$app_home/.install4j:$app_home/.install4j/user:$LIBPATH"
LD_LIBRARYN32_PATH="$app_home/.install4j:$app_home/.install4j/user:$LD_LIBRARYN32_PATH"
LD_LIBRARYN64_PATH="$app_home/.install4j:$app_home/.install4j/user:$LD_LIBRARYN64_PATH"
export LD_LIBRARY_PATH
export DYLD_LIBRARY_PATH
export SHLIB_PATH
export LIBPATH
export LD_LIBRARYN32_PATH
export LD_LIBRARYN64_PATH
INSTALL4J_ADD_VM_PARAMS="$INSTALL4J_ADD_VM_PARAMS -Di4j.vpt=true"
for param in $@; do
if [ `echo "W$param" | cut -c -3` = "W-J" ]; then
INSTALL4J_ADD_VM_PARAMS="$INSTALL4J_ADD_VM_PARAMS `echo "$param" | cut -c 3-`"
fi
done
ui_last_wd=`pwd`
cd "$app_home"
if [ -d jre ]; then
jsa_files=`find jre -name classes.jsa`
for jsa_file in $jsa_files
do
chmod +w $jsa_file
rm $jsa_file
done
fi
cd "$ui_last_wd"
if [ "W$vmov_1" = "W" ]; then
vmov_1="-Di4jv=0"
fi
if [ "W$vmov_2" = "W" ]; then
vmov_2="-Di4jv=0"
fi
if [ "W$vmov_3" = "W" ]; then
vmov_3="-Di4jv=0"
fi
if [ "W$vmov_4" = "W" ]; then
vmov_4="-Di4jv=0"
fi
if [ "W$vmov_5" = "W" ]; then
vmov_5="-Di4jv=0"
fi
return_code=0
$INSTALL4J_JAVA_PREFIX exec "$app_java_home/bin/java" -Dinstall4j.jvmDir="$app_java_home" -Dexe4j.moduleName="$prg_dir/$progname" "$vmov_1" "$vmov_2" "$vmov_3" "$vmov_4" "$vmov_5" $INSTALL4J_ADD_VM_PARAMS -classpath "$local_classpath" com.install4j.runtime.launcher.UnixLauncher launch 2bfa42ba 0 0 com.install4j.runtime.installer.Uninstaller "$@"
return_code=$?
exit $return_code