diff --git a/installer/ubuntu.py b/installer/ubuntu.py new file mode 100644 index 00000000..bb336f7e --- /dev/null +++ b/installer/ubuntu.py @@ -0,0 +1,110 @@ +#todo: actually make .desktop files +import sys +import subprocess +print("Script ony designed for Ubuntu. Made for the portable Lego Island project.") +def command(command): + if isinstance(command, str): + process = subprocess.Popen( + command, + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + bufsize=1 + ) + else: + process = subprocess.Popen( + command, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + bufsize=1 + ) + + # Print output line by line as it comes + for line in process.stdout: + print(line, end='') + + process.stdout.close() + return_code = process.wait() + if return_code != 0: + print(f"\nCommand failed with return code {return_code}") +installdepscommand = b"sudo apt install -y \ +libsdl3-0 libsdl3-dev \ +libglew2.2 libglew-dev \ +libstdc++6 \ +libgcc-s1 \ +libc6 \ +libopengl0 \ +libm6 \ +libasound2 \ +libx11-6 \ +libxext6 \ +libxcursor1 \ +libxi6 \ +libxfixes3 \ +libxrandr2 \ +libxss1 \ +libpipewire-0.3-0 \ +libpulse0 \ +libsndio7.0 \ +libdrm2 \ +libgbm1 \ +libwayland-egl1 \ +libwayland-client0 \ +libwayland-cursor0 \ +libxkbcommon0 \ +libdecor-0-0 \ +libgl1 \ +libglx0 \ +libgldispatch0 \ +libxcb1 \ +libxrender1 \ +libdbus-1-3 \ +libbsd0 \ +libexpat1 \ +libffi8 \ +libxau6 \ +libxdmcp6 \ +libsndfile1 \ +libx11-xcb1 \ +libsystemd0 \ +libasyncns0 \ +libapparmor1 \ +libmd0 \ +libflac8 \ +libvorbis0a \ +libvorbisenc2 \ +libopus0 \ +libogg0 \ +libmpg123-0 \ +libmp3lame0 \ +libcap2 \ +libmvec1 \ +git" +if input("By pressing enter, you agree that all the dependencies will be installed using apt. If you do not consent, press CTRL+C. To see what command will be run, type \'command\'.") = "command": + print("\n") + print(installdepscommand) + sys.exit() +else: + print("\n") +print("Installing dependencies...\n") +command(installdepscommand) +print("Downloading latest release of Lego Island portable...\n") +command(''' +REPO="isledecomp/isle-portable" +DEST_DIR="~" + +mkdir -p "$DEST_DIR" && \ +curl -s "https://api.github.com/repos/$REPO/releases/latest" | \ + grep "browser_download_url" | grep -i "linux" | cut -d '"' -f 4 | \ + while read -r url; do + curl -L -o "$DEST_DIR/$(basename "$url")" "$url" + done +''') +print("Extracting tarball...\n") +command('''tarball=$(ls ~/isle*.tar.gz | head -n 1); foldername="legoisle"; mkdir -p "$(dirname "$tarball")/$foldername" && tar -xzf "$tarball" -C "$(dirname "$tarball")/$foldername" +''') +print("Making desktop files...") +#make said desktop files +print("Done! YOU NEED TO RUN THIS COMMAND FOR LEGO ISLE TO WORK: sudo mv ~/legoisle/lib/liblego1.so /usr/lib/x86_64-linux-gnu/; sudo ldconfig \n")