diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2018-02-19 21:23:41 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2018-02-19 21:23:41 +0300 |
commit | e7bb56b084cd27b80ceec15ce71cbbd1ccfd5446 (patch) | |
tree | 943a4424ef0acc64fa24b6ca1a39bc5fc11b423a | |
parent | 8d31e86bdd82aa5f46bd24b3a6b5665e1b2796d8 (diff) |
Updated to latest hakchi, latest zImage, fixes
-rw-r--r-- | WorkerForm.cs | 47 | ||||
-rw-r--r-- | data/zImage | bin | 2623832 -> 2624208 bytes | |||
-rw-r--r-- | hakchi_gui.csproj | 3 | ||||
-rw-r--r-- | mods/hmods/modules-3.4.112.madmonkey.hmod | bin | 99046 -> 99217 bytes | |||
-rw-r--r-- | mods/mod_hakchi/hakchi/init | 3 | ||||
-rwxr-xr-x | mods/mod_hakchi/hakchi/rootfs/bin/hakchi | 44 | ||||
-rwxr-xr-x | mods/mod_hakchi/hakchi/rootfs/bin/remote-exec | 2 | ||||
-rw-r--r-- | mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png | bin | 0 -> 4620 bytes | |||
-rw-r--r-- | mods/mod_hakchi/hakchi/rootfs/etc/inittab | 3 | ||||
-rw-r--r-- | mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0010_functions | 11 | ||||
-rw-r--r-- | mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0030_package | 25 | ||||
-rw-r--r-- | mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb | 21 | ||||
-rw-r--r-- | mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb | 2 | ||||
-rw-r--r-- | mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7100_preinit | 1 | ||||
-rwxr-xr-x | mods/mod_hakchi/sbin/init | 4 |
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 Binary files differindex 5c655969..e38db7d5 100644 --- a/data/zImage +++ b/data/zImage 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 Binary files differindex 3419c1a8..8a023886 100644 --- a/mods/hmods/modules-3.4.112.madmonkey.hmod +++ b/mods/hmods/modules-3.4.112.madmonkey.hmod 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 Binary files differnew file mode 100644 index 00000000..f18bc87f --- /dev/null +++ b/mods/mod_hakchi/hakchi/rootfs/etc/hakchi.png 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 |