diff options
Diffstat (limited to 'archived/projt-launcher/docs/packaging')
6 files changed, 401 insertions, 0 deletions
diff --git a/archived/projt-launcher/docs/packaging/README.md b/archived/projt-launcher/docs/packaging/README.md new file mode 100644 index 0000000000..dc9dbe4caf --- /dev/null +++ b/archived/projt-launcher/docs/packaging/README.md @@ -0,0 +1,8 @@ +# Packaging + +Platform-specific packaging files. + +For documentation, see: + +- [Linux Packaging](../handbook/linux-packaging.md) +- [Nix Packaging](../handbook/nix.md) diff --git a/archived/projt-launcher/docs/packaging/os-specific/linux/flathub/flathubpackage.yml b/archived/projt-launcher/docs/packaging/os-specific/linux/flathub/flathubpackage.yml new file mode 100644 index 0000000000..07ef6e05c7 --- /dev/null +++ b/archived/projt-launcher/docs/packaging/os-specific/linux/flathub/flathubpackage.yml @@ -0,0 +1,110 @@ +id: org.projecttick.ProjTLauncher +runtime: org.kde.Platform +runtime-version: '6.10' +sdk: org.kde.Sdk +sdk-extensions: + - org.freedesktop.Sdk.Extension.openjdk17 + +command: projtlauncher +finish-args: + - --share=ipc + - --socket=wayland + - --socket=fallback-x11 + - --device=all # Grant access to all device nodes, often required by certain game mods for accessing specialized hardware like controllers, joysticks, or other input peripherals that use non-standard device paths. + - --share=network + - --socket=pulseaudio + # for Discord RPC mods + - --filesystem=xdg-run/app/com.discordapp.Discord:create + # Mod drag&drop + - --filesystem=xdg-download:ro + # FTBApp import + - --persist=.ftba + # Userspace visibility for manual hugepages configuration + # Required for -XX:+UseLargePages + - --filesystem=/sys/kernel/mm/hugepages:ro + # Userspace visibility for transparent hugepages configuration + # Required for -XX:+UseTransparentHugePages + - --filesystem=/sys/kernel/mm/transparent_hugepage:ro + +cleanup: + - /include + - /lib/cmake + - /lib/pkgconfig + +modules: + - name: glfw + buildsystem: cmake-ninja + config-opts: + - -DCMAKE_BUILD_TYPE=RelWithDebInfo + - -DBUILD_SHARED_LIBS:BOOL=ON + - -DGLFW_BUILD_WAYLAND:BOOL=ON + - -DGLFW_BUILD_DOCS:BOOL=OFF + sources: + - type: git + url: https://github.com/glfw/glfw.git + tag: '3.4' + commit: 7b6aead9fb88b3623e3b3725ebb42670cbe4c579 + + - name: xrandr + buildsystem: autotools + sources: + - type: archive + url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.3.tar.xz + sha256: f8dd7566adb74147fab9964680b6bbadee87cf406a7fcff51718a5e6949b841c + x-checker-data: + type: anitya + project-id: 14957 + stable-only: true + url-template: https://xorg.freedesktop.org/archive/individual/app/xrandr-$version.tar.xz + cleanup: + - /share/man + - /bin/xkeystone + + - name: gamemode + buildsystem: meson + config-opts: + - -Dwith-sd-bus-provider=no-daemon + - -Dwith-examples=false + post-install: + # gamemoderun is installed for users who want to use wrapper commands + # post-install is running inside the build dir, we need it from the source though + - install -Dm755 ../data/gamemoderun -t /app/bin + sources: + - type: archive + dest-filename: gamemode.tar.gz + url: https://api.github.com/repos/FeralInteractive/gamemode/tarball/1.8.2 + sha256: 2886d4ce543c78bd2a364316d5e7fd59ef06b71de63f896b37c6d3dc97658f60 + x-checker-data: + type: json + url: https://api.github.com/repos/FeralInteractive/gamemode/releases/latest + version-query: .tag_name + url-query: .tarball_url + timestamp-query: .published_at + cleanup: + - /include + - /lib/pkgconfig + - '*.a' + + - name: projtlauncher + buildsystem: cmake-ninja + builddir: true + config-opts: + - -DLauncher_BUILD_PLATFORM=flatpak + # This allows us to manage and update Java independently of this Flatpak + - -DLauncher_ENABLE_JAVA_DOWNLOADER=ON + - -DCMAKE_BUILD_TYPE=RelWithDebInfo + build-options: + env: + JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17 + JAVA_COMPILER: /usr/lib/sdk/openjdk17/jvm/openjdk-17/bin/javac + run-tests: true + post-install: + - mv /app/bin/projtlauncher /app/bin/projtrun + - install -Dm755 ../projtlauncher -t /app/bin + sources: + - type: git + url: https://github.com/Project-Tick/ProjT-Launcher.git + tag: 0.0.3-4 + commit: f0d189dc9dcd5938cc52f385b610165f65198da8 # 0.0.3-4 + - type: file + path: projtlauncher diff --git a/archived/projt-launcher/docs/packaging/os-specific/linux/flathub/projtlauncher b/archived/projt-launcher/docs/packaging/os-specific/linux/flathub/projtlauncher new file mode 100644 index 0000000000..90ea33e4e4 --- /dev/null +++ b/archived/projt-launcher/docs/packaging/os-specific/linux/flathub/projtlauncher @@ -0,0 +1,11 @@ +#!/bin/bash + +# discord RPC +for i in {0..9}; do + test -S "$XDG_RUNTIME_DIR"/discord-ipc-"$i" || ln -sf {app/com.discordapp.Discord,"$XDG_RUNTIME_DIR"}/discord-ipc-"$i"; +done + +export PATH="${PATH}${PATH:+:}/usr/lib/extensions/vulkan/gamescope/bin:/usr/lib/extensions/vulkan/MangoHud/bin" +export VK_LAYER_PATH="/usr/lib/extensions/vulkan/share/vulkan/implicit_layer.d/" + +exec /app/bin/projtrun "$@" diff --git a/archived/projt-launcher/docs/packaging/os-specific/linux/nix/projtlauncher-unwrapped.nix b/archived/projt-launcher/docs/packaging/os-specific/linux/nix/projtlauncher-unwrapped.nix new file mode 100644 index 0000000000..505792b9d6 --- /dev/null +++ b/archived/projt-launcher/docs/packaging/os-specific/linux/nix/projtlauncher-unwrapped.nix @@ -0,0 +1,109 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + cmark, + extra-cmake-modules, + qt6Packages, + gamemode, + jdk17, + ninja, + nix-update-script, + stripJavaArchivesHook, + tomlplusplus, + zlib, + msaClientID ? null, + gamemodeSupport ? stdenv.hostPlatform.isLinux, +}: + +assert lib.assertMsg ( + gamemodeSupport -> stdenv.hostPlatform.isLinux +) "gamemodeSupport is only available on Linux."; +stdenv.mkDerivation (finalAttrs: { + pname = "projtlauncher"; + version = "0.0.3-4"; + + src = fetchFromGitHub { + owner = "Project-Tick"; + repo = "ProjT-Launcher"; + tag = finalAttrs.version; + hash = "sha256-U7bcQOySof86EtZHa63/PNuWDDJ7kEL0NuzvJ1dGU8c="; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ + cmake + ninja + jdk17 + stripJavaArchivesHook + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + extra-cmake-modules + ]; + + buildInputs = [ + cmark + qt6Packages.qtbase + qt6Packages.qtnetworkauth + qt6Packages.quazip + tomlplusplus + zlib + ] + ++ lib.optional gamemodeSupport gamemode; + + cmakeFlags = [ + # downstream branding + (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixpkgs") + ] + ++ lib.optionals (msaClientID != null) [ + (lib.cmakeFeature "Launcher_MSA_CLIENT_ID" (toString msaClientID)) + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # we wrap our binary manually + (lib.cmakeFeature "INSTALL_BUNDLE" "nodeps") + # disable built-in updater + (lib.cmakeFeature "MACOSX_SPARKLE_UPDATE_FEED_URL" "''") + (lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/Applications/") + ]; + + doCheck = true; + + dontWrapQtApps = true; + + passthru = { + updateScript = nix-update-script { }; + }; + + meta = { + description = "Free, open-source Minecraft launcher"; + longDescription = '' + This application lets you create and manage multiple + independent Minecraft instances, each with its own + unique mods, texture packs, worlds, and settings. + Easily switch between different setups without conflicts, + keep all your saves and customizations organized, and + configure options for each instance through a simple and + intuitive interface. Perfect for players who want to + experiment with different modpacks, resource packs, or + gameplay styles while keeping everything neatly separated. + ''; + homepage = "https://projecttick.org/projtlauncher"; + changelog = "https://github.com/Project-Tick/ProjT-Launcher/releases/tag/${finalAttrs.version}"; + license = with lib.licenses; [ + gpl3Only + asl20 + cc-by-sa-40 + ]; + maintainers = with lib.maintainers; [ + yongdohyun + grxtor + ]; + mainProgram = "projtlauncher"; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + ]; + }; +}) diff --git a/archived/projt-launcher/docs/packaging/os-specific/linux/nix/projtlauncher.nix b/archived/projt-launcher/docs/packaging/os-specific/linux/nix/projtlauncher.nix new file mode 100644 index 0000000000..d597a275f4 --- /dev/null +++ b/archived/projt-launcher/docs/packaging/os-specific/linux/nix/projtlauncher.nix @@ -0,0 +1,132 @@ +{ + addDriverRunpath, + alsa-lib, + flite, + gamemode, + glfw3-minecraft, + jdk17, + jdk21, + jdk8, + qt6Packages, + lib, + libGL, + libX11, + libXcursor, + libXext, + libXrandr, + libXxf86vm, + libjack2, + libpulseaudio, + libusb1, + mesa-demos, + openal, + pciutils, + pipewire, + projtlauncher-unwrapped, + stdenv, + symlinkJoin, + udev, + vulkan-loader, + xrandr, + + additionalLibs ? [ ], + additionalPrograms ? [ ], + controllerSupport ? stdenv.hostPlatform.isLinux, + gamemodeSupport ? stdenv.hostPlatform.isLinux, + jdks ? [ + jdk21 # need for newest Minecraft versions + jdk17 # need for old and new Minecraft versions + jdk8 # need for legacy Minecraft versions + ], + msaClientID ? null, + textToSpeechSupport ? stdenv.hostPlatform.isLinux, +}: + +assert lib.assertMsg ( + controllerSupport -> stdenv.hostPlatform.isLinux +) "controllerSupport only has an effect on Linux."; + +assert lib.assertMsg ( + textToSpeechSupport -> stdenv.hostPlatform.isLinux +) "textToSpeechSupport only has an effect on Linux."; + +let + projtlauncher' = projtlauncher-unwrapped.override { inherit msaClientID gamemodeSupport; }; +in + +symlinkJoin { + pname = "projtlauncher"; + inherit (projtlauncher') version; + + paths = [ projtlauncher' ]; + + nativeBuildInputs = [ qt6Packages.wrapQtAppsHook ]; + + buildInputs = [ + qt6Packages.qtbase + qt6Packages.qtsvg + ] + ++ lib.optional stdenv.hostPlatform.isLinux qt6Packages.qtwayland; + + postBuild = '' + wrapQtAppsHook + ''; + + qtWrapperArgs = + let + runtimeLibs = [ + (lib.getLib stdenv.cc.cc) + ## native versions + glfw3-minecraft + openal + + ## openal + alsa-lib + libjack2 + libpulseaudio + pipewire + + ## glfw + libGL + libX11 + libXcursor + libXext + libXrandr + libXxf86vm + + udev # oshi + + vulkan-loader # VulkanMod's lwjgl + ] + ++ lib.optional textToSpeechSupport flite + ++ lib.optional gamemodeSupport gamemode.lib + ++ lib.optional controllerSupport libusb1 + ++ additionalLibs; + + runtimePrograms = [ + mesa-demos + pciutils # need lspci + xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 + ] + ++ additionalPrograms; + + in + [ "--prefix PROJTLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + "--set LD_LIBRARY_PATH ${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" + "--prefix PATH : ${lib.makeBinPath runtimePrograms}" + ]; + + meta = { + inherit (projtlauncher'.meta) + description + longDescription + homepage + changelog + license + maintainers + mainProgram + platforms + ; + }; +} diff --git a/archived/projt-launcher/docs/packaging/os-specific/macos/homebrew/projtlauncher.rb b/archived/projt-launcher/docs/packaging/os-specific/macos/homebrew/projtlauncher.rb new file mode 100644 index 0000000000..f8185dfc67 --- /dev/null +++ b/archived/projt-launcher/docs/packaging/os-specific/macos/homebrew/projtlauncher.rb @@ -0,0 +1,31 @@ +cask "projtlauncher" do + version "0.0.3-4" + depends_on macos: :big_sur + + sha256 "68ff5bdaf1e92675a4a660e5b6bf42a989aae30dd6680856e7f691ea44809aec" + + url "https://github.com/Project-Tick/ProjT-Launcher/releases/download/#{version}/ProjTLauncher-macOS-#{version}.zip", + verified: "github.com/Project-Tick/ProjT-Launcher/" + + name "ProjT Launcher" + desc "Minecraft launcher" + homepage "https://projecttick.org/projtlauncher/" + + livecheck do + url "https://projecttick.org/projtlauncher/feed/appcast.xml" + strategy :sparkle + end + + auto_updates true + + app "ProjT Launcher.app" + binary "#{appdir}/ProjT Launcher.app/Contents/MacOS/projtlauncher" + + zap trash: [ + "~/Library/Application Support/ProjT Launcher/metacache", + "~/Library/Application Support/ProjT Launcher/projtlauncher-*.log", + "~/Library/Application Support/ProjT Launcher/projtlauncher.cfg", + "~/Library/Preferences/org.projecttick.ProjTLauncher.plist", + "~/Library/Saved Application State/org.projecttick.ProjTLauncher.savedState", + ] +end
\ No newline at end of file |
