Unverified Commit 54cdfe94 authored by Emily Trau's avatar Emily Trau Committed by GitHub
Browse files

Merge pull request #315672 from vringar/ghidra-ret-sync

ghidra-extensions.ret-sync: init at unstable-2024-05-29
parents 2cd969c1 57a7c134
Loading
Loading
Loading
Loading
+79 −53
Original line number Diff line number Diff line
{ lib
, stdenv
, unzip
, jdk
, gradle
, ghidra
{
  lib,
  stdenv,
  unzip,
  jdk,
  gradle,
  ghidra,
}:

let
  metaCommon = oldMeta:
    oldMeta // (with lib; {
  metaCommon =
    oldMeta:
    oldMeta
    // (with lib; {
      maintainers = (oldMeta.maintainers or [ ]) ++ (with maintainers; [ vringar ]);
      platforms = oldMeta.platforms or ghidra.meta.platforms;
    });

  buildGhidraExtension = {
    pname, nativeBuildInputs ? [], meta ? { }, ...
  buildGhidraExtension =
    {
      pname,
      nativeBuildInputs ? [ ],
      meta ? { },
      ...
    }@args:
    stdenv.mkDerivation (args // {
    stdenv.mkDerivation (
      args
      // {
        nativeBuildInputs = nativeBuildInputs ++ [
          unzip
          jdk
@@ -26,13 +35,19 @@ let
        preBuild = ''
          # Set project name, otherwise defaults to directory name
          echo -e '\nrootProject.name = "${pname}"' >> settings.gradle
          # A config directory needs to exist when ghidra's GHelpBuilder is run
          export XDG_CONFIG_HOME="''${XDG_CONFIG_HOME:-$(mktemp -d)}"
          ${args.preBuild or ""}
        '';

        # Needed to run gradle on darwin
        __darwinAllowLocalNetworking = true;

        gradleBuildTask = args.gradleBuildTask or "buildExtension";
        gradleFlags = args.gradleFlags or [ ] ++ [ "-PGHIDRA_INSTALL_DIR=${ghidra}/lib/ghidra" ];

      installPhase = args.installPhase or ''
        installPhase =
          args.installPhase or ''
            runHook preInstall

            mkdir -p $out/lib/ghidra/Ghidra/Extensions
@@ -42,10 +57,18 @@ let
          '';

        meta = metaCommon meta;
    });
      }
    );

  buildGhidraScripts = { pname, meta ? { }, ... }@args:
    stdenv.mkDerivation (args // {
  buildGhidraScripts =
    {
      pname,
      meta ? { },
      ...
    }@args:
    stdenv.mkDerivation (
      args
      // {
        installPhase = ''
          runHook preInstall

@@ -67,6 +90,9 @@ let
        '';

        meta = metaCommon meta;
    });
      }
    );
in
  { inherit buildGhidraExtension buildGhidraScripts; }
{
  inherit buildGhidraExtension buildGhidraScripts;
}
+22 −14
Original line number Diff line number Diff line
{ stdenv
, fetchzip
, lib
, makeWrapper
, autoPatchelfHook
, openjdk17
, pam
, makeDesktopItem
, icoutils
{
  stdenv,
  fetchzip,
  lib,
  makeWrapper,
  autoPatchelfHook,
  openjdk17,
  pam,
  makeDesktopItem,
  icoutils,
}:

let
@@ -24,7 +25,8 @@ let
    startupWMClass = "ghidra-Ghidra";
  };

in stdenv.mkDerivation rec {
in
stdenv.mkDerivation rec {
  pname = "ghidra";
  version = "10.4";
  versiondate = "20230928";
@@ -37,8 +39,7 @@ in stdenv.mkDerivation rec {
  nativeBuildInputs = [
    makeWrapper
    icoutils
  ]
  ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ];
  ] ++ lib.optionals stdenv.isLinux [ autoPatchelfHook ];

  buildInputs = [
    stdenv.cc.cc.lib
@@ -74,10 +75,17 @@ in stdenv.mkDerivation rec {
    description = "Software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission";
    mainProgram = "ghidra";
    homepage = "https://github.com/NationalSecurityAgency/ghidra";
    platforms = [ "x86_64-linux" "x86_64-darwin" ];
    platforms = [
      "x86_64-linux"
      "x86_64-darwin"
    ];
    sourceProvenance = with sourceTypes; [ binaryBytecode ];
    license = licenses.asl20;
    maintainers = with maintainers; [ ck3d govanify mic92 ];
    maintainers = with maintainers; [
      ck3d
      govanify
      mic92
    ];
  };

}
+14 −2
Original line number Diff line number Diff line
{ lib, newScope, callPackage, ghidra }:
{
  lib,
  newScope,
  callPackage,
  ghidra,
}:

lib.makeScope newScope (self: {
  inherit (callPackage ./build-extension.nix { inherit ghidra; }) buildGhidraExtension buildGhidraScripts;
  inherit (callPackage ./build-extension.nix { inherit ghidra; })
    buildGhidraExtension
    buildGhidraScripts
    ;

  ghidraninja-ghidra-scripts = self.callPackage ./extensions/ghidraninja-ghidra-scripts { };

  gnudisassembler = self.callPackage ./extensions/gnudisassembler { inherit ghidra; };

  lightkeeper = self.callPackage ./extensions/lightkeeper { };

  machinelearning = self.callPackage ./extensions/machinelearning { inherit ghidra; };

  ret-sync = self.callPackage ./extensions/ret-sync { };

  sleighdevtools = self.callPackage ./extensions/sleighdevtools { inherit ghidra; };

})
+7 −6
Original line number Diff line number Diff line
{ lib
, fetchFromGitHub
, buildGhidraScripts
, binwalk
, swift
, yara
{
  lib,
  fetchFromGitHub,
  buildGhidraScripts,
  binwalk,
  swift,
  yara,
}:

buildGhidraScripts {
+14 −17
Original line number Diff line number Diff line
{ lib
, stdenv
, fetchurl
, buildGhidraExtension
, ghidra
, flex
, bison
, texinfo
, perl
, zlib
, xcbuild
{
  lib,
  stdenv,
  fetchurl,
  buildGhidraExtension,
  ghidra,
  flex,
  bison,
  texinfo,
  perl,
  zlib,
  xcbuild,
}:

let
@@ -41,13 +42,9 @@ buildGhidraExtension {
    bison
    texinfo
    perl
  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
    xcbuild
  ];
  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];

  buildInputs = [
    zlib
  ];
  buildInputs = [ zlib ];
  gradleBuildTask = "assemble";

  installPhase = ''
Loading