about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDusk Banks <me@bb010g.com>2024-07-04 02:33:13 -0700
committerDusk Banks <me@bb010g.com>2024-07-04 02:41:05 -0700
commitd20703baf6f71b6d9d5673dc81e0c714e277e5d5 (patch)
tree88c5a984a6b086b331c4430f81c2a389e879ef6d
parente7999c7acccc01476c45b8970e997509d285a348 (diff)
swt: clean up
Should be easier to customize now.
-rw-r--r--pkgs/by-name/sw/swt/package.nix189
1 files changed, 95 insertions, 94 deletions
diff --git a/pkgs/by-name/sw/swt/package.nix b/pkgs/by-name/sw/swt/package.nix
index ef7994fea2185..887fbdd6b2123 100644
--- a/pkgs/by-name/sw/swt/package.nix
+++ b/pkgs/by-name/sw/swt/package.nix
@@ -1,60 +1,60 @@
-{ lib
-, stdenv
-, stripJavaArchivesHook
-, fetchzip
-, pkg-config
-, atk
-, glib
-, gtk2
-, jdk
-, libGL
-, libGLU
-, libXt
-, libXtst
+{
+  atk,
+  fetchzip,
+  glib,
+  gtk2,
+  jdk,
+  lib,
+  libGL,
+  libGLU,
+  libXt,
+  libXtst,
+  pkg-config,
+  stdenv,
+  stripJavaArchivesHook,
 }:
 
-let
-  platformMap = {
-    x86_64-linux =
-      { platform = "gtk-linux-x86_64";
-        sha256 = "17frac2nsx22hfa72264as31rn35hfh9gfgy0n6wvc3knl5d2716"; };
-    i686-linux =
-      { platform = "gtk-linux-x86";
-        sha256 = "13ca17rga9yvdshqvh0sfzarmdcl4wv4pid0ls7v35v4844zbc8b"; };
-    x86_64-darwin =
-      { platform = "cocoa-macosx-x86_64";
-        sha256 = "0wjyxlw7i9zd2m8syd6k1q85fj8pzhxlfsrl8fpgsj37p698bd0a"; };
-  };
-
-  metadata = assert platformMap ? ${stdenv.hostPlatform.system};
-    platformMap.${stdenv.hostPlatform.system};
-in stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "swt";
   version = "4.5";
-  fullVersion = "${version}-201506032000";
+  fullVersion = "${finalAttrs.version}-201506032000";
 
   hardeningDisable = [ "format" ];
 
+  passthru.srcMetadataByPlatform = {
+    x86_64-linux.platform = "gtk-linux-x86_64";
+    x86_64-linux.sha256 = "17frac2nsx22hfa72264as31rn35hfh9gfgy0n6wvc3knl5d2716";
+    i686-linux.platform = "gtk-linux-x86";
+    i686-linux.sha256 = "13ca17rga9yvdshqvh0sfzarmdcl4wv4pid0ls7v35v4844zbc8b";
+    x86_64-darwin.platform = "cocoa-macosx-x86_64";
+    x86_64-darwin.sha256 = "0wjyxlw7i9zd2m8syd6k1q85fj8pzhxlfsrl8fpgsj37p698bd0a";
+  };
+  passthru.srcMetadata =
+    finalAttrs.passthru.srcMetadataByPlatform.${stdenv.hostPlatform.system} or null;
   # Alas, the Eclipse Project apparently doesn't produce source-only
   # releases of SWT.  So we just grab a binary release and extract
   # "src.zip" from that.
-  src = fetchzip {
-    url = "https://archive.eclipse.org/eclipse/downloads/drops4/" +
-      "R-${fullVersion}/${pname}-${version}-${metadata.platform}.zip";
-    inherit (metadata) sha256;
-    stripRoot = false;
-    postFetch = ''
-      mkdir "$unpackDir"
-      cd "$unpackDir"
-
-      renamed="$TMPDIR/src.zip"
-      mv "$out/src.zip" "$renamed"
-      unpackFile "$renamed"
-      rm -r "$out"
-
-      mv "$unpackDir" "$out"
-    '';
-  };
+  src =
+    let
+      inherit (finalAttrs.passthru) srcMetadata;
+    in
+    assert srcMetadata != null;
+    fetchzip {
+      url = "https://archive.eclipse.org/eclipse/downloads/drops4/R-${finalAttrs.fullVersion}/swt-${finalAttrs.version}-${srcMetadata.platform}.zip";
+      inherit (srcMetadata) sha256;
+      stripRoot = false;
+      postFetch = ''
+        mkdir "$unpackDir"
+        cd "$unpackDir"
+
+        renamed="$TMPDIR/src.zip"
+        mv -- "$out/src.zip" "$renamed"
+        unpackFile "$renamed"
+        rm -r -- "$out"
+
+        mv -- "$unpackDir" "$out"
+      '';
+    };
 
   nativeBuildInputs = [
     stripJavaArchivesHook
@@ -67,49 +67,51 @@ in stdenv.mkDerivation rec {
     libGL
     libGLU
     libXtst
-  ] ++ lib.optionals (lib.hasPrefix "8u" jdk.version) [
-    libXt
-  ];
+  ] ++ lib.optionals (lib.hasPrefix "8u" jdk.version) [ libXt ];
 
-  patches = [ ./awt-libs.patch ./gtk-libs.patch ];
+  patches = [
+    ./awt-libs.patch
+    ./gtk-libs.patch
+  ];
 
   prePatch = ''
     # clear whitespace from makefiles (since we match on EOL later)
     sed -i 's/ \+$//' ./*.mak
   '';
 
-  postPatch = let makefile-sed = builtins.toFile "swt-makefile.sed" (''
-    # fix pkg-config invocations in CFLAGS/LIBS pairs.
-    #
-    # change:
-    #     FOOCFLAGS = `pkg-config --cflags `foo bar`
-    #     FOOLIBS = `pkg-config --libs-only-L foo` -lbaz
-    # into:
-    #     FOOCFLAGS = `pkg-config --cflags foo bar`
-    #     FOOLIBS = `pkg-config --libs foo bar`
-    #
-    # the latter works more consistently.
-    /^[A-Z0-9_]\+CFLAGS = `pkg-config --cflags [^`]\+`$/ {
-      N
-      s'' +
-        "/" + ''
-          ^\([A-Z0-9_]\+\)CFLAGS = `pkg-config --cflags \(.\+\)`\
-          \1LIBS = `pkg-config --libs-only-L .\+$'' +
-        "/" + ''
-          \1CFLAGS = `pkg-config --cflags \2`\
-          \1LIBS = `pkg-config --libs \2`'' +
-        "/\n" + ''
-    }
-    # fix WebKit libs not being there
-    s/\$(WEBKIT_LIB) \$(WEBKIT_OBJECTS)$/\0 `pkg-config --libs glib-2.0`/g
-  ''); in ''
-    declare -a makefiles=(./*.mak)
-    sed -i -f ${makefile-sed} "''${makefiles[@]}"
-    # assign Makefile variables eagerly & change backticks to `$(shell …)`
-    sed -i -e 's/ = `\([^`]\+\)`/ := $(shell \1)/' \
-      -e 's/`\([^`]\+\)`/$(shell \1)/' \
-      "''${makefiles[@]}"
-  '';
+  postPatch =
+    let
+      makefile-sed = builtins.toFile "swt-makefile.sed" ''
+        # fix pkg-config invocations in CFLAGS/LIBS pairs.
+        #
+        # change:
+        #     FOOCFLAGS = `pkg-config --cflags `foo bar`
+        #     FOOLIBS = `pkg-config --libs-only-L foo` -lbaz
+        # into:
+        #     FOOCFLAGS = `pkg-config --cflags foo bar`
+        #     FOOLIBS = `pkg-config --libs foo bar`
+        #
+        # the latter works more consistently.
+        /^[A-Z0-9_]\+CFLAGS = `pkg-config --cflags [^`]\+`$/ {
+          N
+          s/${''
+            ^\([A-Z0-9_]\+\)CFLAGS = `pkg-config --cflags \(.\+\)`\
+            \1LIBS = `pkg-config --libs-only-L .\+$''}/${''
+            \1CFLAGS = `pkg-config --cflags \2`\
+            \1LIBS = `pkg-config --libs \2`''}/
+        }
+        # fix WebKit libs not being there
+        s/\$(WEBKIT_LIB) \$(WEBKIT_OBJECTS)$/\0 `pkg-config --libs glib-2.0`/g
+      '';
+    in
+    ''
+      declare -a makefiles=(./*.mak)
+      sed -i -f ${makefile-sed} "''${makefiles[@]}"
+      # assign Makefile variables eagerly & change backticks to `$(shell …)`
+      sed -i -e 's/ = `\([^`]\+\)`/ := $(shell \1)/' \
+        -e 's/`\([^`]\+\)`/$(shell \1)/' \
+        "''${makefiles[@]}"
+    '';
 
   buildPhase = ''
     runHook preBuild
@@ -127,28 +129,27 @@ in stdenv.mkDerivation rec {
   installPhase = ''
     runHook preInstall
 
-    if [ -n "$prefix" ]; then
-      mkdir -p "$prefix"
+    if [[ -n "$prefix" ]]; then
+      install -d -- "$prefix"
     fi
 
-    mkdir -p "$out/lib"
-    cp -t "$out/lib" ./*.so
+    install -Dm 644 -t "$out/lib" -- *.so
 
-    mkdir -p "$out/jars"
-    cp -t out/ version.txt
+    install -d -- "$out/jars"
+    install -m 644 -t out -- version.txt
     (cd out && jar -c *) > "$out/jars/swt.jar"
 
     runHook postInstall
   '';
 
-  meta = with lib; {
+  meta = {
     homepage = "https://www.eclipse.org/swt/";
     description = ''
       A widget toolkit for Java to access the user-interface facilities of
       the operating systems on which it is implemented.
     '';
-    license = licenses.epl10;
-    maintainers = with maintainers; [ bb010g ];
-    platforms = platforms.linux;
+    license = lib.licenses.epl10;
+    maintainers = [ lib.maintainers.bb010g ];
+    platforms = lib.platforms.linux;
   };
-}
+})