├── App └── ncspot │ ├── bin │ ├── ncspot │ ├── audiobridge │ ├── rapid-splash │ └── gif-deconstructor │ ├── logos │ ├── icon.png │ ├── splash.png │ └── frames │ │ ├── frame0000.png │ │ ├── frame0001.png │ │ ├── frame0002.png │ │ ├── frame0003.png │ │ ├── frame0004.png │ │ ├── frame0005.png │ │ ├── frame0006.png │ │ ├── frame0007.png │ │ ├── frame0008.png │ │ ├── frame0009.png │ │ ├── frame0010.png │ │ ├── frame0011.png │ │ ├── frame0012.png │ │ ├── frame0013.png │ │ ├── frame0014.png │ │ ├── frame0015.png │ │ ├── frame0016.png │ │ ├── frame0017.png │ │ ├── frame0018.png │ │ ├── frame0019.png │ │ ├── frame0020.png │ │ ├── frame0021.png │ │ ├── frame0022.png │ │ ├── frame0023.png │ │ ├── frame0024.png │ │ ├── frame0025.png │ │ ├── frame0026.png │ │ ├── frame0027.png │ │ ├── frame0028.png │ │ ├── frame0029.png │ │ ├── frame0030.png │ │ ├── frame0031.png │ │ ├── frame0032.png │ │ ├── frame0033.png │ │ ├── frame0034.png │ │ ├── frame0035.png │ │ ├── frame0036.png │ │ ├── frame0037.png │ │ ├── frame0038.png │ │ ├── frame0039.png │ │ ├── frame0040.png │ │ ├── frame0041.png │ │ ├── frame0042.png │ │ ├── frame0043.png │ │ ├── frame0044.png │ │ ├── frame0045.png │ │ ├── frame0046.png │ │ ├── frame0047.png │ │ ├── frame0048.png │ │ ├── frame0049.png │ │ ├── frame0050.png │ │ ├── frame0051.png │ │ ├── frame0052.png │ │ ├── frame0053.png │ │ ├── frame0054.png │ │ ├── frame0055.png │ │ ├── frame0056.png │ │ ├── frame0057.png │ │ ├── frame0058.png │ │ ├── frame0059.png │ │ ├── frame0060.png │ │ ├── frame0061.png │ │ ├── frame0062.png │ │ ├── frame0063.png │ │ ├── frame0064.png │ │ ├── frame0065.png │ │ ├── frame0066.png │ │ ├── frame0067.png │ │ ├── frame0068.png │ │ ├── frame0069.png │ │ ├── frame0070.png │ │ ├── frame0071.png │ │ ├── frame0072.png │ │ ├── frame0073.png │ │ ├── frame0074.png │ │ ├── frame0075.png │ │ ├── frame0076.png │ │ ├── frame0077.png │ │ ├── frame0078.png │ │ ├── frame0079.png │ │ ├── frame0080.png │ │ ├── frame0081.png │ │ ├── frame0082.png │ │ └── frame0083.png │ ├── lib │ ├── libpanel.so.6 │ ├── libtinfo.so.6 │ ├── libSDL_gfx.so.15 │ └── libncurses.so.6 │ ├── config.json │ ├── spotlaunch.sh │ ├── config │ └── config.toml │ └── launch.sh ├── README.md └── mk.sh /App/ncspot/bin/ncspot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/bin/ncspot -------------------------------------------------------------------------------- /App/ncspot/bin/audiobridge: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/bin/audiobridge -------------------------------------------------------------------------------- /App/ncspot/logos/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/icon.png -------------------------------------------------------------------------------- /App/ncspot/bin/rapid-splash: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/bin/rapid-splash -------------------------------------------------------------------------------- /App/ncspot/lib/libpanel.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/lib/libpanel.so.6 -------------------------------------------------------------------------------- /App/ncspot/lib/libtinfo.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/lib/libtinfo.so.6 -------------------------------------------------------------------------------- /App/ncspot/logos/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/splash.png -------------------------------------------------------------------------------- /App/ncspot/lib/libSDL_gfx.so.15: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/lib/libSDL_gfx.so.15 -------------------------------------------------------------------------------- /App/ncspot/lib/libncurses.so.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/lib/libncurses.so.6 -------------------------------------------------------------------------------- /App/ncspot/bin/gif-deconstructor: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/bin/gif-deconstructor -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0000.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0001.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0002.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0003.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0004.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0005.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0006.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0007.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0008.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0009.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0010.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0011.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0012.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0013.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0014.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0014.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0015.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0015.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0016.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0017.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0018.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0019.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0020.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0021.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0022.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0022.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0023.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0024.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0025.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0026.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0026.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0027.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0027.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0028.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0028.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0029.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0029.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0030.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0030.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0031.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0031.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0032.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0032.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0033.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0033.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0034.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0034.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0035.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0035.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0036.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0036.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0037.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0037.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0038.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0038.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0039.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0039.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0040.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0040.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0041.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0041.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0042.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0042.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0043.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0043.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0044.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0044.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0045.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0045.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0046.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0046.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0047.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0047.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0048.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0049.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0049.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0050.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0050.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0051.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0051.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0052.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0052.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0053.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0053.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0054.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0054.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0055.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0055.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0056.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0056.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0057.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0057.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0058.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0058.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0059.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0059.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0060.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0060.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0061.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0061.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0062.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0062.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0063.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0063.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0064.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0064.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0065.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0065.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0066.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0066.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0067.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0067.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0068.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0068.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0069.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0069.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0070.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0070.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0071.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0071.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0072.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0072.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0073.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0073.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0074.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0074.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0075.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0075.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0076.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0076.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0077.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0077.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0078.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0078.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0079.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0079.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0080.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0080.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0081.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0081.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0082.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0082.png -------------------------------------------------------------------------------- /App/ncspot/logos/frames/frame0083.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XK9274/ncspotcli-compile-miyoo/HEAD/App/ncspot/logos/frames/frame0083.png -------------------------------------------------------------------------------- /App/ncspot/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "label":"Spotify", 3 | "icon":"logos/icon.png", 4 | "iconsel":"", 5 | "launch":"launch.sh", 6 | "description":"Spotify client (ncspot)" 7 | } 8 | -------------------------------------------------------------------------------- /App/ncspot/spotlaunch.sh: -------------------------------------------------------------------------------- 1 | #set lib locs etc 2 | export sysdir=/mnt/SDCARD/App 3 | export miyoodir=/mnt/SDCARD/miyoo 4 | export LD_LIBRARY_PATH="$sysdir/ncspot/lib:/lib:/config/lib:$miyoodir/lib:$sysdir/lib:$sysdir/lib/parasyte" 5 | 6 | #set time and date to a time when ncspot certs were valid or you'll get errors saying they dont exist yet, or aren't valid.. the time doesn't matter 7 | date -s '2024.03.15-00:00' > /dev/null 2>&1 8 | 9 | #Setup some env vars 10 | export XDG_CONFIG_HOME="/tmp" 11 | export XDG_CACHE_HOME="/tmp" 12 | 13 | # some cleanup 14 | if pgrep "audiobridge" >/dev/null; then 15 | pkill -f "audiobridge" 16 | else 17 | echo "" 18 | fi 19 | 20 | LD_PRELOAD=/customer/lib/libpadsp.so /mnt/SDCARD/App/ncspot/bin/ncspot -c /mnt/SDCARD/App/ncspot/config/config.toml 21 | -------------------------------------------------------------------------------- /App/ncspot/config/config.toml: -------------------------------------------------------------------------------- 1 | backend = "subprocess" 2 | backend_device = "/mnt/SDCARD/App/ncspot/bin/audiobridge" 3 | audio_cache = true 4 | audio_cache_size = 1024 5 | 6 | [theme] 7 | background = "black" 8 | primary = "light white" 9 | secondary = "black" 10 | title = "green" 11 | playing = "green" 12 | playing_selected = "black" 13 | playing_bg = "black" 14 | highlight = "light white" 15 | highlight_bg = "light green" 16 | error = "light white" 17 | error_bg = "red" 18 | statusbar = "black" 19 | statusbar_progress = "green" 20 | statusbar_bg = "green" 21 | cmdline = "light white" 22 | cmdline_bg = "black" 23 | search_match = "light red" 24 | 25 | statusbar_format = "%title - %artists" 26 | 27 | [track_format] 28 | left = "%title" 29 | center = "%artists" 30 | right = "%saved %duration" 31 | 32 | [keybindings] 33 | "Backspace" = "quit" 34 | "t" = "next" 35 | "e" = "previous" 36 | "Tab" = "focus library" 37 | "Space" = "playpause" 38 | "Alt+e" = "search" 39 | -------------------------------------------------------------------------------- /App/ncspot/launch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sysdir=/mnt/SDCARD/.tmp_update 3 | miyoodir=/mnt/SDCARD/miyoo 4 | export LD_LIBRARY_PATH="/lib:/config/lib:$miyoodir/lib:$sysdir/lib:$sysdir/lib/parasyte:$(dirname "$0")/lib" 5 | export PATH="$sysdir/bin:$PATH" 6 | 7 | sync 8 | 9 | #copies from persistent if exists 10 | if [ ! -d "/tmp/ncspot/librespot" ]; then 11 | mkdir -p /tmp/ncspot/librespot 12 | fi 13 | 14 | if [ -f "/mnt/SDCARD/App/ncspot/config/credentials.json" ]; then 15 | cp -f /mnt/SDCARD/App/ncspot/config/credentials.json /tmp/ncspot/librespot/ 16 | fi 17 | 18 | /mnt/SDCARD/App/ncspot/bin/rapid-splash /mnt/SDCARD/App/ncspot/logos/frames 0 0 0 50 19 | 20 | killall -9 rapid-splash 21 | 22 | /mnt/SDCARD/.tmp_update/bin/st -e sh /mnt/SDCARD/App/ncspot/spotlaunch.sh 23 | 24 | # copies to persistent if exists, comment this out to freeze changes to your "permanent" file 25 | if [ -f "/tmp/ncspot/librespot/credentials.json" ]; then 26 | cp -f /tmp/ncspot/librespot/credentials.json /mnt/SDCARD/App/ncspot/config/ 27 | fi 28 | 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ncspot Spotify client for the MMP. 2 | ## audiobridge - https://github.com/XK9274/audiobridge-miyoo 3 | ## rapid-splash - [https://github.com/XK9274/splash-miyoo](https://github.com/XK9274/animated-splash-miyoo) 4 | 5 | https://github.com/XK9274/animated-splash-miyoo/assets/47260768/3dace5c3-8116-4076-b944-a97606b43588 6 | 7 | - Bit of a novelty/gimmick this app really but it's been a fun build/process and i've learnt a lot about the MMP/embedded environment from it. 8 | - If you have a lot of background apps running (filebrowser etc) it may be worth killing them to free up some memory 9 | - There's other spotify options that may be better (designed for embedded found by kebabstorm) which i'll also look into 10 | - Headphones work 11 | 12 | ![ncspot_000](https://github.com/XK9274/ncspotcli-compile-miyoo/assets/47260768/2e145ea8-f3a4-42bd-85b2-6a83ecaf72b7) 13 | ![ncspot_000s](https://github.com/XK9274/ncspotcli-compile-miyoo/assets/47260768/0bb71918-a309-438d-949a-9ffc92930e32) 14 | 15 | AND with eggs new terminal (larger, clearner font) found here: https://www.dropbox.com/s/56pr1io9e82po8s/Terminal_640x480.zip (install st in .tmp_update/bin) 16 | 17 | ![ncspot_000](https://github.com/XK9274/ncspotcli-compile-miyoo/assets/47260768/ac0ac14c-da4b-4650-bd99-df4e005984bd) 18 | ![ncspot_005](https://github.com/XK9274/ncspotcli-compile-miyoo/assets/47260768/b78c4e84-7d02-4879-9ff3-015a6315d090) 19 | 20 | ### Credits: 21 | - eggs for his terminal (and the new terminal!): https://github.com/OnionUI/app-Terminal https://www.dropbox.com/s/56pr1io9e82po8s/Terminal_640x480.zip 22 | - ncspot: https://github.com/hrkfdn/ncspot 23 | - Spotify logo usage: https://developer.spotify.com/documentation/design#using-our-logo 24 | ### Usage 25 | - Copy the App folder to your /mnt/SDCARD folder 26 | - or 27 | - Copy the ncspot folder to your App folder 28 | 29 | On the login screen: 30 | Use the keyboard to input username, press the `Select` button to tab down, input password, press `Select` button again to tab to login and press start. When logged in press `X` to hide the keyboard. 31 | 32 | You may need to restart your MMP 33 | 34 | ### Building 35 | To build fresh from the source, i've included a mk.sh file that you can run from a docker image, the best docker image to use i've found is: 36 | 37 | ``` 38 | git clone https://github.com/shauninman/union-miyoomini-toolchain.git 39 | cd union-miyoomini-toolchain 40 | make shell 41 | ``` 42 | 43 | copy the mk.sh file to your workspace 44 | 45 | `source mk.sh` 46 | 47 | Wait for it to build 48 | 49 | Then look for the folder called /workspace/ncspot - this should contain everything you need. 50 | 51 | Look at the included launch.sh & /config/config.toml for info. 52 | 53 | This will build the requirements with NO audio backends, it will rely on the audiobridge. 54 | 55 | ## TODO/Issues: 56 | 57 | ### Performance 58 | - Audio has improved a huge amount since swapping to audioserver 59 | 60 | ### App 61 | - The "tracks" page takes a couple of seconds to load if you have a ton of songs in your liked songs 62 | - The current credentials file gets stored in /tmp/ so it resets every boot, i'm tempted to leave it this way due to the nature of the MMPs security - this file contains tokens and secrets 63 | - You need a premium account, no getting around this - it's a librespot/spotify thing 64 | - You can't background the app, terminal closing will kill the child processes' 65 | - You can't background the app, no really, the mmp really doesn't have enough memory to run Main and ncspot. 66 | - It's the same story if you turn the screen off, the audio will stop. 67 | - ~Sometimes audio gets buggy, tap the power button twice to repair~ \\ This is resolved since preloading with built in audioserver 68 | - Sometimes just changes song all on its own \\ Very rare 69 | - You'll potentially get a stutter about 10 seconds in, this is ncspot downloading track and databases 70 | 71 | ### terminal 72 | - ~May try a completely different terminal~ Use eggs new terminal 73 | - Terminal app source needs editing to provide some more keys from SDLK that we can use as volume 74 | - Bind some volume keys. 75 | - ~New font as the current pixel one doesn't display great for ncurses built tuis~ Use eggs new terminal 76 | - There's no keyboard with ncspot so you NEED to use the terminal keyboard to login (select is tab to next field), you can then hide the keyboard with the X button 77 | 78 | ### Audio 79 | - Sometimes audio will stop at random intervals, not sure with this one.. looking into it but i suspect it's ncspot, not AS or AB. 80 | - Occasionally songs wont follow on, it will go silent after a song finishes and the next song won't play 81 | - Now uses built in audioserver, no longer pops when changing song (still uses audiobridge as the bridge across ncspot and audioserver in absence of an ncspot sdl backend/sink) 82 | - Added a buffer to audiobridge, added rewind for EOF but not sure this is working on STDIN 83 | - Full volume audio is distorted - Use 75% with the volume keys or change the ncspot volume with the keyboard. 84 | - Now handles volume correctly based on the audioserver vals 85 | - Now correctly handles mute/unmute with the mmp keys 86 | - Skipping forwards or backwards in the song will stop audio, not sure why. 87 | 88 | ### Key bindings 89 | ## These are the key bindings due to how the terminal app (and ncspot) are setup 90 | 91 | https://github.com/hrkfdn/ncspot/blob/main/doc/users.md#vim-like-commands this is the full list, you can pull up the keyboard with the X button and use these commands 92 | 93 | - Start button - play song 94 | - Arrow keys - navigate 95 | - "Backspace" = "quit" # This is the R2 button 96 | - "t" = "next" # This is the R1 button 97 | - "e" = "previous" # This is the L1 button 98 | - "Tab" = "focus library" # This is the L2 Button 99 | - "Space" = "playpause" # This is the A button 100 | 101 | ### Theme setup 102 | - Edit the config.toml to suit your theme needs, it should accept hex but it doesn't very well and i think this is an st (terminal app) thing as it works fine if you launch from putty. 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /mk.sh: -------------------------------------------------------------------------------- 1 | start_time=$(date +%s) 2 | 3 | unset urls 4 | unset files 5 | unset log_files 6 | unset missing_tools 7 | 8 | check_dev_tools() { # // check which dev packages we have and if they work, if not install them 9 | apt-get update 10 | declare -A tool_to_package_map 11 | tool_to_package_map["pkg-config"]="pkg-config" 12 | tool_to_package_map["autoconf"]="autoconf" 13 | tool_to_package_map["autoupdate"]="autoconf" 14 | tool_to_package_map["libtoolize"]="libtool" 15 | tool_to_package_map["m4"]="m4" 16 | tool_to_package_map["automake"]="automake" 17 | tool_to_package_map["autoreconf"]="autoconf" 18 | 19 | missing_tools=() 20 | missing_packages=() 21 | 22 | for tool in "${!tool_to_package_map[@]}"; do 23 | if command -v "$tool" > /dev/null 2>&1; then 24 | echo "$tool exists." 25 | else 26 | echo "$tool does not exist." 27 | package=${tool_to_package_map[$tool]} 28 | missing_tools+=("$tool") 29 | if ! [[ " ${missing_packages[@]} " =~ " ${package} " ]]; then 30 | missing_packages+=("$package") 31 | fi 32 | fi 33 | done 34 | 35 | if [ ${#missing_tools[@]} -ne 0 ]; then 36 | echo "Missing tools: ${missing_tools[*]}" 37 | echo "Corresponding missing packages: ${missing_packages[*]}" 38 | echo "Running 'apt-get update' and then 'apt-get install' for each missing package." 39 | apt-get update 40 | apt-get install -y "${missing_packages[@]}" 41 | else 42 | echo "All tools are available and functional." 43 | fi 44 | } 45 | 46 | export ROOTDIR="${PWD}" 47 | export BIN_NAME="ncspot" 48 | export SD_DIR="App" 49 | export FIN_BIN_DIR="/mnt/SDCARD/$SD_DIR/$BIN_NAME" 50 | export CROSS_COMPILE="arm-linux-gnueabihf" already set in env 51 | export AR=${CROSS_COMPILE}-ar 52 | export AS=${CROSS_COMPILE}-as 53 | export LD=${CROSS_COMPILE}-ld 54 | export RANLIB=${CROSS_COMPILE}-ranlib 55 | export CC=${CROSS_COMPILE}-gcc 56 | export NM=${CROSS_COMPILE}-nm 57 | export HOST=arm-linux-gnueabihf 58 | export BUILD=x86_64-linux-gnu 59 | export CFLAGS="-Wno-undef -Os -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -march=armv7ve+simd -mfloat-abi=hard -ffunction-sections -fdata-sections" 60 | export CXXFLAGS="-s -O3 -fPIC -pthread" 61 | export PATH="$PATH:$FIN_BIN_DIR/bin" 62 | export LDFLAGS="-L/opt/miyoomini-toolchain/arm-linux-gnueabihf/libc/lib" 63 | 64 | export LOGFILE=./logs/buildtracker.txt # set a full log file 65 | mkdir $ROOTDIR/logs 66 | 67 | check_dev_tools 68 | 69 | #Script header section 70 | 71 | echo -e "\033[32m⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀" 72 | echo -e "⠀⠀⠀⠀⠀⠀⠀⢀⣠⣤⣤⣶⣶⣶⣶⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀" 73 | echo -e "⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⡀⠀⠀⠀⠀" 74 | echo -e "⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀" 75 | echo -e "⠀⢀⣾⣿⡿⠿⠛⠛⠛⠉⠉⠉⠉⠛⠛⠛⠿⠿⣿⣿⣿⣿⣿⣷⡀⠀" 76 | echo -e "⠀⣾⣿⣿⣇⠀⣀⣀⣠⣤⣤⣤⣤⣤⣀⣀⠀⠀⠀⠈⠙⠻⣿⣿⣷⠀ " 77 | echo -e "⢠⣿⣿⣿⣿⡿⠿⠟⠛⠛⠛⠛⠛⠛⠻⠿⢿⣿⣶⣤⣀⣠⣿⣿⣿⡄ \033[0mMiyoo Mini+ ncspot(Spotify) compiler\033[32m" 78 | echo -e "⢸⣿⣿⣿⣿⣇⣀⣀⣤⣤⣤⣤⣤⣄⣀⣀⠀⠀⠉⠛⢿⣿⣿⣿⣿⡇ \033[0mXK9274\033[32m" 79 | echo -e "⠘⣿⣿⣿⣿⣿⠿⠿⠛⠛⠛⠛⠛⠛⠿⠿⣿⣶⣦⣤⣾⣿⣿⣿⣿⠃" 80 | echo -e "⠀⢿⣿⣿⣿⣿⣤⣤⣤⣤⣶⣶⣦⣤⣤⣄⡀⠈⠙⣿⣿⣿⣿⣿⡿⠀" 81 | echo -e "⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿\033[31m⣿\033[0m\033[32m⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⡿⠁⠀" 82 | echo -e "⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿\033[31m⣿⣿⣿\033[0m\033[32m⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀" 83 | echo -e "⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿\033[31m⣿\033[0m\033[32m⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀" 84 | echo -e "⠀⠀⠀⠀⠀⠀⠀⠈⠙⠛⠛⠿⠿⠿⠿⠛⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀\033[0m" 85 | 86 | echo -e "\n" 87 | echo -e "-Building \033[32m"$BIN_NAME"\033[0m for: \033[32m"$CROSS_COMPILE "\033[0m" 88 | 89 | echo -e "-Building with a prefix of \033[32m$FIN_BIN_DIR\033[0m" 90 | 91 | echo -e "-The build will use \033[32m"$(( $(nproc) - 2 ))"\033[0m cpu threads of the max: \033[32m"`nproc`"\033[0m" 92 | echo "-The script will output a list of failed makes at the end.." 93 | echo -e "\n" 94 | echo "-This will compile ncspot with no audio backend (defaults to subprocess or pipe, i use subprocess)" 95 | echo -e "\n" 96 | echo "-Warning: If you're building this on WSL2 it will be incredibly slow and likely take over a day to build, create a docker image in your \\wsl$\distro\home\user\ location and run from there." 97 | echo "For reference it takes around 2-5 mins to download & build everything on a 1gbps circuit with an I9-11900k." 98 | echo -e "\n" 99 | # echo -e "-Starting shortly - a full logfile with be in: \033[32m"$LOGFILE "\033[0m" 100 | echo -e "\n" 101 | 102 | for i in {3..1}; do 103 | echo -ne "Starting in $i\r" 104 | sleep 1 105 | done 106 | 107 | echo -e "\n\n\n" 108 | 109 | while true; do # check if a build has already been completed, it may be best to do a fresh build if you've changed anything 110 | if [ -d "$ROOTDIR/$BIN_NAME" ]; then 111 | read -p "A previously completed build of $BIN_NAME already exists. Do you want to remove this & build fresh? (y/n)" rebuildq 112 | case "$rebuildq" in 113 | y|Y ) 114 | echo "Deleting previous build..." 115 | rm -rf $ROOTDIR/$BIN_NAME 116 | rm -rf $FIN_BIN_DIR 117 | rm -rf */ 118 | rm -f wget-log* 119 | mkdir $ROOTDIR/logs 120 | mkdir -p $FIN_BIN_DIR 121 | break 122 | ;; 123 | n|N ) 124 | echo "Rebuilding over the top of the last build..." 125 | break 126 | ;; 127 | * ) 128 | echo "Invalid input. Please enter 'y' or 'n'." 129 | ;; 130 | esac 131 | else 132 | echo -e "\033[32mNo previous build detected, starting...\033[0m" 133 | break 134 | fi 135 | done 136 | 137 | cd ~/workspace/ 138 | 139 | #Start logging and begin (may crash docker) 140 | # exec 3>&1 4>&2 141 | # trap 'exec 2>&4 1>&3' 0 1 2 3 142 | # exec 1> >(tee -a "$LOGFILE") 2>&1 143 | 144 | #Download everything, but check if it already exists. - no alsa support, see comment on l:248 145 | 146 | urls=( 147 | "https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.4.tar.gz" 148 | "https://github.com/openssl/openssl/releases/download/openssl-3.1.0/openssl-3.1.0.tar.gz" 149 | # "https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.8.tar.bz2" 150 | # "https://www.alsa-project.org/files/files/pub/utils/alsa-utils-1.2.8.tar.bz2" 151 | # "https://github.com/pop-os/libasound2/archive/refs/tags/v1.2.7.tar.gz" 152 | # "http://files.portaudio.com/archives/pa_stable_v190700_20210406.tgz" 153 | ) 154 | 155 | # Parallel download and wait until finished. 156 | pids=() 157 | for url in "${urls[@]}"; do 158 | file_name=$(basename "$url") 159 | if [ ! -f "$file_name" ]; then 160 | echo "Downloading $file_name..." 161 | wget -q "$url" & 162 | pids+=($!) 163 | else 164 | echo "$file_name already exists, skipping download..." 165 | fi 166 | done 167 | 168 | for pid in "${pids[@]}"; do 169 | wait $pid 170 | done 171 | 172 | echo -e "\n\n\033[32mAll downloads finished, now building..\033[0m\n\n" 173 | 174 | # Check all files have downloaded before trying to build 175 | 176 | files=( 177 | "alsa-lib-1.2.8.tar.bz2" 178 | "alsa-utils-1.2.8.tar.bz2" 179 | "libasound2-1.2.7.tar.gz" 180 | "ncurses-6.4.tar.gz" 181 | "openssl-3.1.0.tar.gz" 182 | ) 183 | 184 | missing_files=() 185 | for file in "${files[@]}"; do 186 | if [ ! -f "$file" ]; then 187 | missing_files+=("$file") 188 | fi 189 | done 190 | 191 | if [ ${#missing_files[@]} -eq 0 ]; then 192 | echo -e "\033[32mAll files exist...\033[0m\n\n" 193 | sleep 1 194 | else #check if any of the downloads failed, if they did try to redownload, if they still fail prompt for a new url with the filename.. 195 | echo "Missing files: ${missing_files[@]}" 196 | echo "Trying to download again...." 197 | for file in "${missing_files[@]}"; do 198 | for url in "${urls[@]}"; do 199 | if [[ "$url" == *"$file"* ]]; then 200 | wget -q "$url" 201 | if [ $? -ne 0 ]; then 202 | echo "Error downloading $file from $url" 203 | read -p "Enter a new WORKING URL for $file: " new_url 204 | wget -q "$new_url" 205 | fi 206 | fi 207 | done 208 | done 209 | fi 210 | 211 | # Start compiling.. 212 | 213 | # I don't remember why i had both ncurses and ncurses wide here 214 | 215 | # Cross compile ncursesW 216 | echo -e "-Compiling \033[32mncurses\033[0m" 217 | tar -xf ncurses-6.4.tar.gz & 218 | wait $! 219 | cd ncurses-6.4 220 | ./configure CC=$CC --build=$BUILD --host=$HOST --prefix=$FIN_BIN_DIR --with-fallbacks=vt100,vt102 --disable-stripping --with-shared --with-termlib --with-ticlib --enable-widec --enable-pc-files 221 | wait $! 222 | make clean && make -j$(( $(nproc) - 2 )) && make install -j$(( $(nproc) - 2 )) > ../logs/ncurses-6.4.txt 2>&1 & 223 | wait $! 224 | cd .. 225 | 226 | # Cross compile ncurses 227 | echo -e "-Compiling \033[32mncurses\033[0m" 228 | tar -xf ncurses-6.4.tar.gz & 229 | wait $! 230 | cd ncurses-6.4 231 | ./configure CC=$CC --build=$BUILD --host=$HOST --prefix=$FIN_BIN_DIR --with-fallbacks=vt100,vt102 --disable-stripping --with-shared --with-termlib --with-ticlib 232 | wait $! 233 | make clean && make -j$(( $(nproc) - 2 )) && make install -j$(( $(nproc) - 2 )) > ../logs/ncurses-6.4.txt 2>&1 & 234 | wait $! 235 | cd .. 236 | 237 | #Cross compile OpenSSL 238 | echo -e "-Compiling \033[32mopenssl\033[0m" 239 | export CROSS_COMPILE="" # set this or it gets confused as $CROSS_COMPILE appears on the cc lines already 240 | tar -xf openssl-3.1.0.tar.gz 241 | cd openssl-3.1.0 242 | ./Configure --prefix=$FIN_BIN_DIR --openssldir=$FIN_BIN_DIR linux-generic32 shared -DL_ENDIAN PROCESSOR=ARM & 243 | wait $! 244 | make clean && make -j$(( $(nproc) - 2 )) && make install -j$(( $(nproc) - 2 )) > ../logs/openssl-3.1.0.txt & 245 | wait $! 246 | cd .. 247 | export CROSS_COMPILE="arm-linux-gnueabihf" # set back 248 | export OPENSSL_DIR="$FIN_BIN_DIR" 249 | 250 | # i ended up removing alsa support and using a custon subprocess for the backend 251 | 252 | #Cross compile libasound 253 | # echo -e "-Compiling \033[32mlibasound\033[0m" 254 | # tar -xf v1.2.7.tar.gz 255 | # cd libasound2-1.2.7 256 | # wait $! 257 | # libtoolize 258 | # aclocal 259 | # autoheader 260 | # automake --add-missing 261 | # autoconf 262 | # autoupdate --force 263 | # ./configure CC=$CC --host=$HOST --build=$BUILD --target=$TARGET --prefix=$FIN_BIN_DIR --disable-dependency-tracking & 264 | # wait $! 265 | # make -j$(( $(nproc) - 2 )) && make install -j$(( $(nproc) - 2 )) && > ../logs/libasound2-1.2.7.txt 2>&1 & 266 | # wait $! 267 | # cd ~/workspace/ 268 | 269 | #Cross compile alsa 270 | # echo -e "-Compiling \033[32malsa-lib\033[0m" 271 | # tar -xf alsa-lib-1.2.8.tar.bz2 272 | # cd alsa-lib-1.2.8 273 | # ./configure CC=$CC --host=$HOST --build=$BUILD --target=$TARGET --prefix=$FIN_BIN_DIR --sysconfdir=$FIN_BIN_DIR --exec-prefix=$FIN_BIN_DIR --localstatedir=$FIN_BIN_DIR --datarootdir=$FIN_BIN_DIR & 274 | # wait $! 275 | # make -j$(( $(nproc) - 2 )) && make install -j$(( $(nproc) - 2 )) && > ../logs/alsa-lib-1.2.8.txt 2>&1 & 276 | # wait $! 277 | # cd .. 278 | 279 | export CPPFLAGS="-I$FIN_BIN_DIR/include" 280 | export LDFLAGS="-L$FIN_BIN_DIR/lib/ -lpanel -lncurses -ltinfo" 281 | 282 | #Cross compile alsautils 283 | # echo -e "-Compiling \033[32malsa-utils\033[0m" 284 | # tar -xf alsa-utils-1.2.8.tar.bz2 285 | # cd alsa-utils-1.2.8 286 | # CFLAGS="$CFLAGS -I$FIN_BIN_DIR/include/ncurses/" 287 | # ./configure CC=$CC --host=$HOST --build=$BUILD --target=$TARGET --prefix=$FIN_BIN_DIR --disable-xmlto --disable-nls --with-curses=ncurses PKG_CONFIG_LIBDIR=$FIN_BIN_DIR/lib/pkgconfig & 288 | # wait $! 289 | # make -j$(( $(nproc) - 2 )) && make install -j$(( $(nproc) - 2 )) && > ../logs/alsa-utils-1.2.8.txt 2>&1 & 290 | # wait $! 291 | # cd .. 292 | 293 | echo -e "-Compiling \033[32mrust\033[0m" 294 | # set some rust/cargo vars 295 | export CARGO_BUILD_TARGET=arm-unknown-linux-gnueabihf 296 | export CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=/opt/miyoomini-toolchain/usr/bin/arm-linux-gnueabihf-gcc 297 | export CARGO_INSTALL_ROOT=$FIN_BIN_DIR 298 | export CARGO_HOME="$FIN_BIN_DIR/cargo" 299 | export RUSTFLAGS="-L $FIN_BIN_DIR/lib -C link-arg=$FIN_BIN_DIR/include/ncurses/ncurses_dll.h" 300 | 301 | # Install Rust with target set for the miyoo 302 | wget -qO - https://sh.rustup.rs | bash -s -- -y --target arm-unknown-linux-gnueabihf 303 | 304 | # Rust flags - set some rust flags 305 | 306 | #Install ncspot # 307 | $FIN_BIN_DIR/cargo/bin/cargo install ncspot --no-default-features --features cursive/termion-backend 308 | 309 | 310 | #Main compile done if you get a success message, if not check the below output in the logfile 311 | #Check if the logfiles appear, these are only created at the install stage which rarely fails - could be checked better but this works: 312 | 313 | echo -e "\n\n\n" 314 | 315 | log_files=( 316 | # "alsa-lib-1.2.8.txt" 317 | # "alsa-utils-1.2.8.txt" 318 | # "buildtracker.txt" 319 | # "libasound2-1.2.7.txt" 320 | "ncurses-6.4.txt" 321 | "openssl-3.1.0.txt" 322 | ) 323 | 324 | for log_file in "${log_files[@]}" 325 | do 326 | if [ ! -f "logs/$log_file" ]; then 327 | echo "$log_file FAILED" 328 | failed_logs="$failed_logs $log_file" 329 | else 330 | echo "$log_file built OK" 331 | fi 332 | done 333 | 334 | # Prep the ncspot folder to quickly be copied out. 335 | # Cleanup 336 | # Edit some files 337 | # All this is done if the ncspot bin was installed to the bin folder. 338 | 339 | if [ -f "$FIN_BIN_DIR/bin/$BIN_NAME" ]; then # Check if the bin file for BINNAME exists. $FIN_BIN_DIR changes to $ROOTDIR here as it gets copied to the workspace. 340 | echo -e "\n\n" 341 | echo "Preparing export folder" 342 | echo -e "\n\n" 343 | echo "Moving built files to workspace area" 344 | mkdir -v $ROOTDIR/$BIN_NAME 345 | cp -r "$FIN_BIN_DIR/"* "$ROOTDIR/$BIN_NAME" & 346 | wait $! 347 | 348 | # Fix some libraries (building on windows sucks) 349 | rm $ROOTDIR/$BIN_NAME/lib/libpanel.so.6 350 | cp $ROOTDIR/$BIN_NAME/lib/libpanel.so.6.4 $ROOTDIR/$BIN_NAME/lib/libpanel.so.6 351 | rm $ROOTDIR/$BIN_NAME/lib/libncurses.so.6 352 | cp $ROOTDIR/$BIN_NAME/lib/libncurses.so.6.4 $ROOTDIR/$BIN_NAME/lib/libncurses.so.6 353 | rm $ROOTDIR/$BIN_NAME/lib/libtinfo.so.6 354 | cp $ROOTDIR/$BIN_NAME/lib/libtinfo.so.6.4 $ROOTDIR/$BIN_NAME/lib/libtinfo.so.6 355 | rm $ROOTDIR/$BIN_NAME/lib/libform.so.6 356 | cp $ROOTDIR/$BIN_NAME/lib/libform.so.6.4 $ROOTDIR/$BIN_NAME/lib/libform.so.6 357 | rm $ROOTDIR/$BIN_NAME/lib/libmenu.so.6 358 | cp $ROOTDIR/$BIN_NAME/lib/libmenu.so.6.4 $ROOTDIR/$BIN_NAME/lib/libmenu.so.6 359 | # rm $ROOTDIR/$BIN_NAME/lib/libasound.so.2 360 | # cp $ROOTDIR/$BIN_NAME/lib/libasound.so.2.0.0 $ROOTDIR/$BIN_NAME/lib/libasound.so.2 361 | 362 | 363 | # remove some excess fat from the end product dir 364 | rm -rf "$BIN_NAME"/{aclocal,docs,doc,certs,include,xml,misc,GConf,man,cargo} 365 | rm -rf "$BIN_NAME"/bin/{gio,glib-compile-resources,gdbus,gsettings,gapplication,gresource,pytho,gio-querymodules,gobject-query,glib-compile-schemas} 366 | rm -rf "$BIN_NAME"/share/{doc,autoconf,man,gdb,glib-2.0,automake-1.16,aclocal-1.16,aclocal,bash-completion,gtk-doc,glib2-0,info,libtool,pkgconfig,readline,tabset,terminfo,util-macros,vala,xcb,zcb,zsh} 367 | rm -rf "$BIN_NAME"/lib/{python3.7/test,pkgconfig,cmake} 368 | 369 | echo -e "\n\n" 370 | fi 371 | end_time=$(date +%s) 372 | duration=$((end_time - start_time)) 373 | 374 | # checks if the final product dir was moved to the /workspace/ folder, indicating it built OK 375 | if [ -z "$failed_logs" ]; then 376 | if [ -d "$ROOTDIR/$BIN_NAME" ]; then 377 | echo -e "\033[32mComplete - your finished build is in /workspace/$BIN_NAME, this will contain all build products... " 378 | echo -e "Build duration: $duration seconds\033[0m" 379 | else 380 | echo -e "Build failed, check ~/workspace/logs/buildtracker.txt for more info" 381 | fi 382 | else 383 | if [ -d "$ROOTDIR/$BIN_NAME" ]; then 384 | echo -e "\033[32mComplete - your finished build is in /workspace/$BIN_NAME, this will contain all build products... " 385 | echo "Build duration: $duration seconds" 386 | echo -e "These packages did not complete\033[31m$failed_logs\033[32m but it has not affected the $BIN_NAME bin being built\033[0m." 387 | else 388 | echo -e "Build failed, these packages did not complete \033[31m$failed_logs\033[0m check ~/workspace/logs/buildtracker.txt for more info" 389 | fi 390 | fi 391 | --------------------------------------------------------------------------------