diff --git a/.gitignore b/.gitignore index f8236c8..19fef48 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,6 @@ appimage-builder-cache appimage-build AppDir *.zsync +*.AppImage core* qemu_* diff --git a/dependencies/glfw/src b/dependencies/glfw/src index 62e175e..d3ede7b 160000 --- a/dependencies/glfw/src +++ b/dependencies/glfw/src @@ -1 +1 @@ -Subproject commit 62e175ef9fae75335575964c845a302447c012c7 +Subproject commit d3ede7b6847b66cf30b067214b2b4b126d4c729b diff --git a/scripts/ci/Dockerfile b/scripts/ci/Dockerfile index d1a0e68..bdcd600 100644 --- a/scripts/ci/Dockerfile +++ b/scripts/ci/Dockerfile @@ -8,5 +8,5 @@ ADD ./scripts/install-dependencies.sh / RUN \ apt-get update && \ apt-get install --no-install-recommends -y sudo && \ - /install-dependencies.sh && \ + /install-dependencies.sh amd64 armhf arm64 && \ rm -rf /var/lib/apt/lists/* diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index 0a670ae..897d271 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -2,120 +2,96 @@ set -e -# This Script Assumes An x86_64 Host -if [ "$(uname -m)" != "x86_64" ]; then - echo 'Invalid Build Architecture' - exit 1 -fi +# Main Script +run() { + # Add ARM Repository + for arch in "$@"; do + sudo dpkg --add-architecture "${arch}" + done -# Add ARM Repository -if [ ! -z "${ARM_PACKAGES_SUPPORTED}" ]; then - sudo dpkg --add-architecture armhf - sudo dpkg --add-architecture arm64 -fi + # Update APT + sudo apt-get update + sudo apt-get dist-upgrade -y -# Update APT -sudo apt-get update -sudo apt-get dist-upgrade -y + # Install Everything In One Go + PKG_QUEUE='' + queue_pkg() { + PKG_QUEUE="${PKG_QUEUE} $@" + } -# Install Everything In One Go -PKG_QUEUE='' -queue_pkg() { - PKG_QUEUE="${PKG_QUEUE} $@" + # Build System + queue_pkg \ + git \ + cmake \ + ninja-build \ + nodejs + + # Host Dependencies Needed For Compile + queue_pkg \ + libwayland-bin \ + libfreeimage-dev + + # Host Dependencies Needed For Running + queue_pkg \ + qemu-user \ + patchelf + + # Architecture-Specific Dependencies + architecture_specific_pkg() { + # Compiler + queue_pkg \ + crossbuild-essential-$1 + + # Dependencies + queue_pkg \ + libfreeimage3:$1 \ + libopenal-dev:$1 + + # GLFW Dependencies + queue_pkg \ + libwayland-dev:$1 \ + libxkbcommon-dev:$1 \ + libx11-dev:$1 \ + libxcursor-dev:$1 \ + libxi-dev:$1 \ + libxinerama-dev:$1 \ + libxrandr-dev:$1 \ + libxext-dev:$1 + + # Zenity Dependencies + queue_pkg \ + libgtk-3-dev:$1 \ + libglib2.0-dev:$1 + } + for arch in "$@"; do + architecture_specific_pkg "${arch}" + done + + # Install appimagetool & appimage-builder Dependencies + queue_pkg \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + patchelf \ + desktop-file-utils \ + libgdk-pixbuf2.0-dev \ + fakeroot \ + strace \ + fuse \ + gtk-update-icon-cache \ + shared-mime-info \ + sed + + # Install Queue + sudo apt-get install --no-install-recommends -y ${PKG_QUEUE} + + # Install appimage-builder + sudo pip3 install 'git+https://github.com/AppImageCrafters/appimage-builder.git' } -# Build Tools -queue_pkg \ - git \ - cmake \ - ninja-build \ - crossbuild-essential-armhf \ - gcc g++ \ - nodejs - -# Dependencies -queue_pkg \ - libfreeimage3 libfreeimage-dev \ - libopenal-dev \ - qemu-user \ - patchelf - -# GLFW Dependencies -queue_pkg \ - libwayland-dev \ - libxkbcommon-dev \ - wayland-protocols \ - libx11-dev \ - libxcursor-dev \ - libxi-dev \ - libxinerama-dev \ - libxrandr-dev \ - libxext-dev - -# Zenity Dependencies -queue_pkg \ - libgtk-3-dev \ - libglib2.0-dev - -# ARM Packages -if [ ! -z "${ARM_PACKAGES_SUPPORTED}" ]; then - # Build Tools - queue_pkg \ - crossbuild-essential-arm64 - - # Dependencies - queue_pkg \ - libfreeimage3:armhf libfreeimage3:arm64 \ - libopenal-dev:armhf libopenal-dev:arm64 - - # GLFW Dependencies - queue_pkg \ - libwayland-dev:armhf libwayland-dev:arm64 \ - libxkbcommon-dev:armhf libxkbcommon-dev:arm64 \ - libx11-dev:armhf libx11-dev:arm64 \ - libxcursor-dev:armhf libxcursor-dev:arm64 \ - libxi-dev:armhf libxi-dev:arm64 \ - libxinerama-dev:armhf libxinerama-dev:arm64 \ - libxrandr-dev:armhf libxrandr-dev:arm64 \ - libxext-dev:armhf libxext-dev:arm64 - - # Zenity Dependencies - queue_pkg \ - libgtk-3-dev:armhf libgtk-3-dev:arm64 \ - libglib2.0-dev:armhf libglib2.0-dev:arm64 +# Run +if [ "$#" -lt 1 ]; then + run "$(dpkg-architecture -qDEB_BUILD_ARCH)" +else + run "$@" fi - -# Install appimagetool & appimage-builder Dependencies -queue_pkg \ - python3-pip \ - python3-setuptools \ - python3-wheel \ - patchelf \ - desktop-file-utils \ - libgdk-pixbuf2.0-dev \ - fakeroot \ - strace \ - fuse \ - gtk-update-icon-cache \ - shared-mime-info \ - sed - -# Install Queue -sudo apt-get install --no-install-recommends -y ${PKG_QUEUE} - -# Download appimagetool -sudo mkdir -p /opt -sudo wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /opt/appimagetool -sudo chmod +x /opt/appimagetool -# Workaround AppImage Issues With Docker -cd /opt -sudo sed -i '0,/AI\x02/{s|AI\x02|\x00\x00\x00|}' ./appimagetool -sudo rm -rf /opt/squashfs-root /opt/appimagetool.AppDir -sudo ./appimagetool --appimage-extract -sudo rm -f ./appimagetool -sudo mv /opt/squashfs-root /opt/appimagetool.AppDir -sudo rm -f /usr/local/bin/appimagetool -sudo ln -s /opt/appimagetool.AppDir/AppRun /usr/local/bin/appimagetool - -# Install appimage-builder -sudo pip3 install 'git+https://github.com/AppImageCrafters/appimage-builder.git' diff --git a/scripts/package.sh b/scripts/package.sh index 693ab40..0a7bf91 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -9,4 +9,5 @@ set -e appimage-builder --recipe AppImageBuilder.yml # Move ZSync +rm -f "./out/minecraft-pi-reborn-$1-latest-$2.AppImage.zsync" mv "./minecraft-pi-reborn-$1-$(cat VERSION)-$2.AppImage.zsync" "./out/minecraft-pi-reborn-$1-latest-$2.AppImage.zsync"