Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/hakchi2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2018-02-19 21:23:41 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2018-02-19 21:23:41 +0300
commite7bb56b084cd27b80ceec15ce71cbbd1ccfd5446 (patch)
tree943a4424ef0acc64fa24b6ca1a39bc5fc11b423a
parent8d31e86bdd82aa5f46bd24b3a6b5665e1b2796d8 (diff)
Updated to latest hakchi, latest zImage, fixes
-rw-r--r--WorkerForm.cs47
-rw-r--r--data/zImagebin2623832 -> 2624208 bytes
-rw-r--r--hakchi_gui.csproj3
-rw-r--r--mods/hmods/modules-3.4.112.madmonkey.hmodbin99046 -> 99217 bytes
-rw-r--r--mods/mod_hakchi/hakchi/init3
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/hakchi44
-rwxr-xr-xmods/mod_hakchi/hakchi/rootfs/bin/remote-exec2
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/hakchi.pngbin0 -> 4620 bytes
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/inittab3
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions11
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package25
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb21
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb2
-rw-r--r--mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7100_preinit1
-rwxr-xr-xmods/mod_hakchi/sbin/init4
15 files changed, 107 insertions, 59 deletions
diff --git a/WorkerForm.cs b/WorkerForm.cs
index 815b3396..6a4adeeb 100644
--- a/WorkerForm.cs
+++ b/WorkerForm.cs
@@ -1465,42 +1465,33 @@ namespace com.clusterrr.hakchi_gui
var outputStr = new StringBuilder();
var errorStr = new StringBuilder();
process.Start();
- if (onLineOutput != null)
+ var line = new StringBuilder();
+ while (!process.HasExited || !process.StandardOutput.EndOfStream || !process.StandardError.EndOfStream)
{
- var line = new StringBuilder();
- while (!process.HasExited || !process.StandardOutput.EndOfStream || !process.StandardError.EndOfStream)
+ while (!process.StandardOutput.EndOfStream)
{
- while (!process.StandardOutput.EndOfStream)
+ var b = process.StandardOutput.Read();
+ if (b >= 0)
{
- var b = process.StandardOutput.Read();
- if (b >= 0)
+ if ((char)b != '\n' && (char)b != '\r')
{
- if ((char)b != '\n' && (char)b != '\r')
- {
- line.Append((char)b);
- }
- else
- {
- if (line.Length > 0)
- onLineOutput(line.ToString());
- line.Length = 0;
- }
- outputStr.Append((char)b);
+ line.Append((char)b);
}
+ else
+ {
+ if (onLineOutput != null && line.Length > 0)
+ onLineOutput(line.ToString());
+ line.Length = 0;
+ }
+ outputStr.Append((char)b);
}
- if (!process.StandardError.EndOfStream)
- errorStr.Append(process.StandardError.ReadToEnd());
- Thread.Sleep(100);
}
- if (line.Length > 0)
- onLineOutput(line.ToString());
- }
- else
- {
- process.WaitForExit();
- outputStr.Append(process.StandardOutput.ReadToEnd());
- errorStr.Append(process.StandardError.ReadToEnd());
+ if (!process.StandardError.EndOfStream)
+ errorStr.Append(process.StandardError.ReadToEnd());
+ Thread.Sleep(100);
}
+ if (onLineOutput != null && line.Length > 0)
+ onLineOutput(line.ToString());
output = Encoding.GetEncoding(866).GetBytes(outputStr.ToString());
Debug.WriteLineIf(outputStr.Length > 0 && outputStr.Length < 300, "Output:\r\n" + outputStr);
diff --git a/data/zImage b/data/zImage
index 5c655969..e38db7d5 100644
--- a/data/zImage
+++ b/data/zImage
Binary files differ
diff --git a/hakchi_gui.csproj b/hakchi_gui.csproj
index e29e219a..044396be 100644
--- a/hakchi_gui.csproj
+++ b/hakchi_gui.csproj
@@ -2382,6 +2382,9 @@
<Content Include="mods\mod_hakchi\hakchi\rootfs\etc\pleasewait.fb">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
+ <Content Include="mods\mod_hakchi\hakchi\rootfs\etc\preinit.d\p0000_version">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
<None Include="Properties\app.manifest" />
<Content Include="user_mods\snes_custom_filters.hmod\canoe-custom-filters">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
diff --git a/mods/hmods/modules-3.4.112.madmonkey.hmod b/mods/hmods/modules-3.4.112.madmonkey.hmod
index 3419c1a8..8a023886 100644
--- a/mods/hmods/modules-3.4.112.madmonkey.hmod
+++ b/mods/hmods/modules-3.4.112.madmonkey.hmod
Binary files differ
diff --git a/mods/mod_hakchi/hakchi/init b/mods/mod_hakchi/hakchi/init
index 023db13a..0e9a5db0 100644
--- a/mods/mod_hakchi/hakchi/init
+++ b/mods/mod_hakchi/hakchi/init
@@ -6,7 +6,8 @@ init(){
export modpath="/$modname"
export mountpoint="/newroot"
export temppath="/tmp"
- echo "$modname init script version: 1.0"
+ export bootVersion="1.0.1"
+ echo "$modname init script version: $bootVersion"
/bin/busybox --install -s /bin/
mkdir -p "$temppath"
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/hakchi b/mods/mod_hakchi/hakchi/rootfs/bin/hakchi
index e3493b82..29caa50c 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/hakchi
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/hakchi
@@ -4,12 +4,44 @@ script_init
hakchi(){
[ "$1" == "hakchi" ] && shift
- if type "$1" | grep -q '^.* is a shell function$' 2>/dev/null; then
- ${1+"$@"}
- else
- echo "no such function: $@"
- return 1
- fi
+ case "$1" in
+ set|unset)
+ if echo "$2" | grep -qEe '^cfg_'; then
+ [ "$1" == "set" ] && eval "$2="\${3}"" || unset "$2"
+ return 0
+ else
+ echo "only cfg_ variables are supported with hakchi $1"
+ fi
+ return 1
+ ;;
+ get)
+ eval "echo "\$$2""
+ return 0
+ ;;
+ eval)
+ if [ -z "$2" ]; then
+ source /dev/stdin
+ else
+ eval "$2"
+ fi
+ return $?
+ ;;
+ source)
+ source "$2"
+ return $?
+ ;;
+ *)
+ if type "$1" | grep -q '^.* is a shell function$' 2>/dev/null; then
+ ${1+"$@"}
+ else
+ echo "no such function: $@"
+ return 1
+ fi
+ ;;
+ esac
}
hakchi "$(basename "$0")" ${1+"$@"}
+exit_code=$?
+save_config
+exit $exit_code
diff --git a/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec b/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
index a7e62442..2e015937 100755
--- a/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
+++ b/mods/mod_hakchi/hakchi/rootfs/bin/remote-exec
@@ -13,7 +13,7 @@ while true; do
fi
if [ -f "$exec_flag" ]; then
usleep 100000
- source "$exec_flag"
+ sh "$exec_flag"
rm -f "$exec_flag"
fi
usleep 200000
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png b/mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png
new file mode 100644
index 00000000..f18bc87f
--- /dev/null
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png
Binary files differ
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/inittab b/mods/mod_hakchi/hakchi/rootfs/etc/inittab
index 1de7da21..216aabcc 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/inittab
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/inittab
@@ -1,5 +1,4 @@
-null::sysinit:/bin/mount -t proc proc /proc
-null::sysinit:/bin/mount -t usbfs none /proc/bus/usb
+null::sysinit:/bin/mount -t usbfs usbfs /proc/bus/usb
null::sysinit:/bin/mkdir -p /dev/pts /dev/shm
null::sysinit:/bin/mount -a
null::sysinit:/bin/mkdir -p /var/cache /var/lock /var/log /var/spool
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
index cb5c9e15..ec568dc8 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions
@@ -77,7 +77,7 @@ remount_root(){
stopTask decodepng
stopTask aplay
- umount "$mountpoint"
+ umount "$mountpoint" || (mkdir -p "/var/fuckup" && mount --move "$mountpoint" "/var/fuckup")
local loopfile="/var${1##$mountpoint/var}"
[ -f "$loopfile" ] || loopfile="/media${1##$mountpoint/media}"
@@ -254,8 +254,8 @@ softwareCheck(){
repair_fonts(){
if [ "$sftype" == "nes" ]; then
mkdir -p "$1" || return 1
- [ ! -f "$1/title.fnt" ] && copy "$squashfs$gamepath/title.fnt" "$1/"
- [ ! -f "$1/copyright.fnt" ] && copy "$squashfs$gamepath/copyright.fnt" "$1/"
+ [ ! -f "$1/title.fnt" ] && (copy "$rootfs$gamepath/title.fnt" "$1/" || copy "$squashfs$gamepath/title.fnt" "$1/")
+ [ ! -f "$1/copyright.fnt" ] && (copy "$rootfs$gamepath/copyright.fnt" "$1/" || copy "$squashfs$gamepath/copyright.fnt" "$1/")
fi
}
@@ -335,7 +335,10 @@ overmount_games(){
local menu_code="$1"
[ -z "$1" ] && menu_code="000"
[ -z "$1" ] && [ -f "$state_file" ] && menu_code="$(cat "$state_file")"
- containsGames "$gameStorage/$menu_code" || menu_code=""
+ if ! containsGames "$gameStorage/$menu_code"; then
+ menu_code="000"
+ containsGames "$gameStorage/$menu_code" || menu_code=""
+ fi
echo "menu code: $menu_code"
if containsGames "$gameStorage/$menu_code"; then
mount_bind "$gameStorage/$menu_code" "$mountpoint/$gamepath" && \
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package
index 3c3894f3..7697c6c7 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package
@@ -37,17 +37,23 @@ pack_upath(){
}
pack_install(){
- echo "installing $(basename "$1" .hmod)..."
- if [ -f "$1" ]; then
+ local packFile="$(readlink -f "$1")"
+ local packName="$(basename "$1" .hmod)"
+ echo "installing $packName..."
+ if [ -f "$packFile" ]; then
local transferpath="$temppath/pack"
rm -rf "$transferpath"
mkdir -p "$transferpath"
- cd "$transferpath" && tar -xzf "$1"
+ cd "$transferpath" && tar -xzf "$packFile"
else
- local transferpath="$1"
+ local transferpath="$packFile"
fi
transfer_path "$transferpath"
- echo "creating uninstall for $(basename "$1" .hmod)..."
+ if grep -xqF "no-uninstall" "$transferpath/uninstall"; then
+ echo "package $packName installed"
+ return 0
+ fi
+ echo "creating uninstall for $packName..."
echo >> "$transferpath/uninstall"
echo "# auto-generated" >> "$transferpath/uninstall"
cd "$transferpath"
@@ -56,7 +62,7 @@ pack_install(){
find . -depth -mindepth 1 -type d -exec echo rmdir \"\$rootfs/{}\" + >> "$transferpath/uninstall"
[ $(stat -c%s "$transferpath/uninstall") -gt 8 ] || rm -f "$transferpath/uninstall"
cd /
- local unfile="$(pack_upath "$1")"
+ local unfile="$(pack_upath "$packFile")"
if [ -f "$transferpath/uninstall" ]; then
dos2unix -u "$transferpath/uninstall"
sed -i "s#rmdir #rmdir --ignore-fail-on-non-empty #" "$transferpath/uninstall"
@@ -65,7 +71,7 @@ pack_install(){
else
rm -f "$unfile"
fi
- echo "package $(basename "$1" .hmod) installed"
+ echo "package $packName installed"
}
pack_list(){
@@ -84,10 +90,11 @@ pack_uninstall(){
else
local unfile="$(pack_upath "$1")"
if [ -f "$unfile" ]; then
- echo "uninstalling $(basename "$1" .hmod)..."
+ local packName="$(basename "$1" .hmod)"
+ echo "uninstalling $packName..."
cd "$rootfs"
transfer_file "$unfile"
- echo "package $(basename "$1" .hmod) uninstalled"
+ echo "package $packName uninstalled"
fi
fi
cd /
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
index ddfffdb4..3abecd6f 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb
@@ -30,25 +30,33 @@ getUsbStorageIds(){
done
}
-waitForUsbDevice(){
- [ -z "$(getUsbStorageIds)" ] && return 1
+waitForStorageDevice(){
local blockDevice="$1"
- local timeout=5
+ [ -z "$timeout" ] && local timeout=5
while [ $timeout -gt 0 ] && ! [ -b "$blockDevice" ]; do
- echo "waiting for media $timeout"
+ echo "waiting for $blockDevice $timeout"
let timeout=timeout-1
sleep 1
done
[ -b "$blockDevice" ]
}
+waitForUsbDevice(){
+ [ -z "$(getUsbStorageIds)" ] && return 1
+ waitForStorageDevice ${1+"$@"}
+}
+
+waitForMmcDevice(){
+ [ -f "/key-file" ] && return 1
+ waitForStorageDevice ${1+"$@"}
+}
+
checkStorageDevice(){
local blockDevice="$1"
[ -b "$blockDevice" ] || return 1
local ro="defaults,nosuid,nodev,noatime,ro"
local rw="defaults,nosuid,nodev,noatime,rw"
- local games="$modname/games"
local saves="$modname/saves"
if ! [ "$cfg_usb_rw" == "y" ]; then
@@ -98,6 +106,7 @@ checkExtStorage(){
local di
local d
local p
+ local timeout=5
local blockDevice="/dev/sd"
waitForUsbDevice "${blockDevice}a1"
for di in $(seq 97 99); do
@@ -106,7 +115,9 @@ checkExtStorage(){
checkStorageDevice "$blockDevice$d$p" && return 0
done
done
+ [ $timeout -gt 2 ] && timeout=2
blockDevice="/dev/mmcblk0p"
+ waitForMmcDevice "${blockDevice}1"
for p in $(seq 1 9); do
checkStorageDevice "$blockDevice$p" && return 0
done
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
index 43b27c24..8c38f151 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb
@@ -4,7 +4,7 @@ else
switchToUsbHost
# the usb driver needs some time to initialize
sleep 1
- if [ -z "$(lsusb | grep -v "1d6b:0001")" ]; then
+ if [ -z "$(lsusb | grep -v "1d6b:")" ]; then
switchToUsbDevice
fi
fi
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7100_preinit b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7100_preinit
index 7110dfb9..9fa94f93 100644
--- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7100_preinit
+++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7100_preinit
@@ -1,2 +1,3 @@
+createVersionFile
overmount "/bin"
overmount "/etc"
diff --git a/mods/mod_hakchi/sbin/init b/mods/mod_hakchi/sbin/init
index 156c02ae..1bb0b47a 100755
--- a/mods/mod_hakchi/sbin/init
+++ b/mods/mod_hakchi/sbin/init
@@ -34,6 +34,6 @@ fi
[ -f "/hakchi/init" ] && sh "/hakchi/init"
/bin/mount --move /dev /newroot/dev
-/bin/umount /proc
-/bin/umount /sys
+/bin/mount --move /proc /newroot/proc
+/bin/mount --move /sys /newroot/sys
exec /sbin/switch_root /newroot /sbin/init