From 7bba6cd7612293796e905885f9ed3072877798ab Mon Sep 17 00:00:00 2001
From: davidovski <david@davidovski.xyz>
Date: Mon, 27 Jun 2022 01:14:42 +0100
Subject: added shmk, building all with shmk

---
 src/tools/default-jvm.sh | 52 +++++++++++++++++++++++++++++++++++++++++++
 src/tools/xichroot.sh    | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+)
 create mode 100755 src/tools/default-jvm.sh
 create mode 100644 src/tools/xichroot.sh

(limited to 'src/tools')

diff --git a/src/tools/default-jvm.sh b/src/tools/default-jvm.sh
new file mode 100755
index 0000000..56c427c
--- /dev/null
+++ b/src/tools/default-jvm.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+JVM_DIR=/usr/lib/jvm
+JAVA_BIN=/bin/java
+
+usage () {
+    cat << EOF 
+xilinux-java 
+    Print the name of the currently linked jvm
+    non-zero exit code if none is linked
+        
+xilinux-java [name]
+    create symlinks to /usr/lib/jvm/[name]/bin to /bin
+
+xilinux-java [-l]
+    list installed JVMs
+EOF
+}
+
+get () {
+    [ -h "$JAVA_BIN" ] && {
+        path=$(readlink "$JAVA_BIN")
+        path=${path%%/bin/java}
+        path=${path##*/}
+        echo $path
+    } 
+}
+
+link ()  {
+    [ -d "$1" ] && for bin in $1/bin/*; do 
+        ln -sf $bin /bin/${bin##*/}
+    done
+}
+
+
+[ "$#" = "0" ] && {
+    get || return 1
+} || {
+    case "$1" in
+        "-l"|"--list")
+            ls -1 $JVM_DIR
+            ;;
+        "-h"|"--help")
+            usage
+            ;;
+        *)
+            link $1 \
+            || link $JVM_DIR/$1 \
+            || get
+            ;;
+    esac
+}
+
diff --git a/src/tools/xichroot.sh b/src/tools/xichroot.sh
new file mode 100644
index 0000000..7136e25
--- /dev/null
+++ b/src/tools/xichroot.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+# This script is intended for root users to automatically mount requried dirs and chroot into an installed system
+# simplifed version of arch-chroot from <https://github.com/archlinux/arch-install-scripts>
+
+args=$@
+target=$1
+
+die() { printf "$@\n"; exit 1;}
+
+ignore_error() {
+  "$@" 2>/dev/null
+  return 0
+}
+
+chroot_add_mount() {
+  mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
+}
+
+chroot_maybe_add_mount() {
+  local cond=$1; shift
+  if eval "$cond"; then
+    chroot_add_mount "$@"
+  fi
+}
+
+chroot_setup() {
+  CHROOT_ACTIVE_MOUNTS=()
+  [[ $(trap -p EXIT) ]] && die '(BUG): attempting to overwrite existing EXIT trap'
+  trap 'chroot_teardown' EXIT
+
+  chroot_add_mount proc "$target/proc" -t proc -o nosuid,noexec,nodev 
+  chroot_add_mount sys "$target/sys" -t sysfs -o nosuid,noexec,nodev,ro 
+  ignore_error chroot_maybe_add_mount "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
+      efivarfs "$target/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev 
+  chroot_add_mount udev "$target/dev" -t devtmpfs -o mode=0755,nosuid 
+  chroot_add_mount devpts "$target/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec 
+  chroot_add_mount shm "$target/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev 
+  chroot_add_mount /run "$target/run" --bind 
+  chroot_add_mount tmp "$target/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
+}
+
+chroot_teardown() {
+  if (( ${#CHROOT_ACTIVE_MOUNTS[@]} )); then
+    umount "${CHROOT_ACTIVE_MOUNTS[@]}"
+  fi
+  unset CHROOT_ACTIVE_MOUNTS
+}
+
+[ "$EUID" -eq 0 ] || die "Please run this as root"
+[[ -d $target ]] || die "$target is not a directory; cannot chroot!"
+
+chroot_setup $@
+
+if [ $# -gt 1 ]; then
+    chroot $@ 
+else
+    chroot $@ /bin/sh -l
+fi
-- 
cgit v1.2.1