From 77f2cc5791904caf4077c526fbdaca4ad27e2374 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Thu, 6 Mar 2025 03:00:58 -0500 Subject: apply build system patches This is a more upstreamable approach, and doesn't require any kind of weird substitution on our end. It also avoids downloading Kotlin in our antDeps and fixes cross compilation!! (only tested on aarch64) Signed-off-by: Seth Flynn --- pkgs/lwjgl/default.nix | 80 ++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 45 deletions(-) (limited to 'pkgs/lwjgl/default.nix') diff --git a/pkgs/lwjgl/default.nix b/pkgs/lwjgl/default.nix index 546c45c..bebd70a 100644 --- a/pkgs/lwjgl/default.nix +++ b/pkgs/lwjgl/default.nix @@ -3,22 +3,17 @@ stdenv, breakpointHook, ant, - at-spi2-atk, buildPackages, - cairo, dbus, fetchAntDeps, fetchFromGitHub, - gdk-pixbuf, glib, gtk3, - harfbuzz, kotlin, libGLU, libffi, libglvnd, - pango, - replaceVars, + pkg-config, xorg, version, @@ -38,20 +33,11 @@ stdenv.mkDerivation (finalAttrs: { }; patches = [ - (replaceVars ./fix-library-paths.patch ( - lib.mapAttrs (lib.const lib.getDev) { - inherit - at-spi2-atk - cairo - dbus - gdk-pixbuf - glib - gtk3 - harfbuzz - pango - ; - } - )) + ./0001-build-use-pkg-config-for-linux-dependencies.patch + ./0002-build-allow-local-kotlin.patch + ./0003-build-allow-linking-against-system-libffi.patch + ./0004-build-add-dbus-as-dependency-for-nfd_portal.patch + ./0005-build-allow-setting-pkg-config-prefix-suffix.patch ]; antJdk = buildPackages.jdk_headless; @@ -60,7 +46,9 @@ stdenv.mkDerivation (finalAttrs: { pname version src + patches antJdk + antFlags ; hash = antHash; }; @@ -70,32 +58,40 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ ant kotlin + pkg-config ] ++ lib.optional (lib.meta.availableOn stdenv.buildPlatform breakpointHook) breakpointHook; buildInputs = [ - at-spi2-atk - cairo dbus - gdk-pixbuf glib gtk3 - harfbuzz libGLU libffi - pango xorg.libX11 xorg.libXt ]; + antFlags = + [ + "-Dgcc.libpath.opengl=${libglvnd}/lib" + + "-Dlibffi.path=${lib.getLib libffi}/lib" + "-Duse.libffi.so=true" + + "-Dlocal.kotlin=${lib.getBin kotlin}" + ] + ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + "-Dgcc.prefix=${stdenv.cc.targetPrefix}" + "-Dpkg-config.prefix=${stdenv.cc.targetPrefix}" + ]; + env = { - NIX_CFLAGS = "-funroll-loops -I${lib.getDev gtk3}/include/gtk-3.0"; NIX_LDFLAGS = "-lffi"; JAVA_HOME = finalAttrs.antJdk.home; JAVA8_HOME = buildPackages.jdk8_headless.home; # https://github.com/LWJGL/lwjgl3/tree/e8552d53624f789c8f8c3dc35976fa02cba73cff/doc#build-configuration - LWJGL_BUILD_OFFLINE = "yes"; LWJGL_BUILD_ARCH = if stdenv.hostPlatform.isx86_64 then "x64" @@ -109,6 +105,8 @@ stdenv.mkDerivation (finalAttrs: { "riscv64" else throw "${stdenv.hostPlatform.cpu.name} is not a supported architecture"; + LWJGL_BUILD_OFFLINE = "yes"; + LWJGL_BUILD_TYPE = "release/${finalAttrs.version}"; }; # Put the dependencies we already downloaded in the right place @@ -120,29 +118,21 @@ stdenv.mkDerivation (finalAttrs: { postBuild = '' mkdir $out - ant \ - -emacs \ - -Dgcc.libpath.opengl=${libglvnd}/lib \ - compile-templates compile-native + concatTo flagsArray buildFlags buildFlagsArray antFlags antFlagsArray + ant compile-templates compile compile-native "''${flagsArray[@]}" ''; postInstall = '' - exit 1 + mkdir -p $out/lib + find . -type f -name '*.so' -exec install -Dm755 -t $out/lib {} \; ''; meta = { - platforms = - - let - architectures = lib.flatten [ - lib.platforms.x86_64 - lib.platforms.i686 - lib.platforms.aarch64 - lib.platforms.armv7 - lib.platforms.riscv64 - ]; - in - - lib.intersectLists architectures lib.platforms.linux; + description = "Lightweight Java Game Library"; + homepage = "https://www.lwjgl.org/"; + changelog = "https://github.com/LWJGL/lwjgl3/releases/tag/${toString finalAttrs.src.tag}"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ getchoo ]; + platforms = lib.platforms.linux; }; }) -- cgit v1.2.3