Compare commits

..

No commits in common. "9d42d525a8529d1d56e7eb6b52b6d79071e26a5a" and "aa8b70931cd70cb2b98e5d12677b28ef2bb18ee1" have entirely different histories.

12 changed files with 38 additions and 67 deletions

View File

@ -10,7 +10,7 @@ final: prev: {
ghidra_headless = final.ghidra.lib; ghidra_headless = final.ghidra.lib;
# stuff that tracks upstream # stuff that tracks upstream
ghidra = final.callPackage ./pkgs/reverse-engineering/ghidra/build.nix { ghidra = final.callPackage ./pkgs/reverse-enginering/ghidra/build.nix {
protobuf = final.protobuf_21; protobuf = final.protobuf_21;
}; };
ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/reverse-engineering/ghidra/extensions.nix { }); ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/reverse-engineering/ghidra/extensions.nix { });

View File

@ -65,11 +65,4 @@
]; ];
pythonImportsCheck = [ "binsync" ]; pythonImportsCheck = [ "binsync" ];
meta = {
description = "Reversing plugin for cross-decompiler collaboration, built on git";
homepage = "https://github.com/binsync/binsync";
changelog = "https://github.com/binsync/binsync/releases/tag/${src.tag}";
license = lib.licenses.bsd2;
};
} }

View File

@ -67,11 +67,4 @@
"tests/test_decompilers.py" "tests/test_decompilers.py"
"tests/test_remote_ghidra.py" "tests/test_remote_ghidra.py"
]; ];
meta = {
description = "Library for writing plugins in any decompiler: includes API lifting, common data formatting, and GUI abstraction";
homepage = "https://github.com/binsync/libbs";
changelog = "https://github.com/binsync/libbs/releases/tag/${src.tag}";
license = lib.licenses.bsd2;
};
} }

View File

@ -21,17 +21,16 @@ let
platforms = oldMeta.platforms or ghidra.meta.platforms; platforms = oldMeta.platforms or ghidra.meta.platforms;
}; };
buildGhidraExtension = lib.extendMkDerivation { buildGhidraExtension =
constructDrv = stdenv.mkDerivation;
extendDrvArgs =
finalAttrs:
{ {
pname, pname,
nativeBuildInputs ? [ ], nativeBuildInputs ? [ ],
meta ? { }, meta ? { },
... ...
}@args: }@args:
{ stdenv.mkDerivation (
args
// {
nativeBuildInputs = nativeBuildInputs ++ [ nativeBuildInputs = nativeBuildInputs ++ [
unzip unzip
jdk jdk
@ -59,28 +58,22 @@ let
mkdir -p $out/lib/ghidra/Ghidra/Extensions mkdir -p $out/lib/ghidra/Ghidra/Extensions
unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip
# Prevent attempted creation of plugin lock files in the Nix store.
for i in $out/lib/ghidra/Ghidra/Extensions/*; do
touch "$i/.dbDirLock"
done
runHook postInstall runHook postInstall
''; '';
meta = metaCommon meta; meta = metaCommon meta;
}; }
}; );
buildGhidraScripts = lib.extendMkDerivation { buildGhidraScripts =
constructDrv = stdenv.mkDerivation;
extendDrvArgs =
finalAttrs:
{ {
pname, pname,
meta ? { }, meta ? { },
... ...
}@args: }@args:
{ stdenv.mkDerivation (
args
// {
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
@ -102,8 +95,8 @@ let
''; '';
meta = metaCommon meta; meta = metaCommon meta;
}; }
}; );
in in
{ {
inherit buildGhidraExtension buildGhidraScripts; inherit buildGhidraExtension buildGhidraScripts;

View File

@ -11,13 +11,11 @@ lib.makeScope newScope (self: {
buildGhidraScripts buildGhidraScripts
; ;
binsync = self.callPackage ./extensions/binsync {};
findcrypt = self.callPackage ./extensions/findcrypt { }; findcrypt = self.callPackage ./extensions/findcrypt { };
ghidra-delinker-extension = self.callPackage ./extensions/ghidra-delinker-extension { }; ghidra-delinker-extension = self.callPackage ./extensions/ghidra-delinker-extension {
inherit ghidra;
ghidra-firmware-utils = self.callPackage ./extensions/ghidra-firmware-utils { }; };
ghidra-golanganalyzerextension = self.callPackage ./extensions/ghidra-golanganalyzerextension { }; ghidra-golanganalyzerextension = self.callPackage ./extensions/ghidra-golanganalyzerextension { };
@ -36,4 +34,6 @@ lib.makeScope newScope (self: {
sleighdevtools = self.callPackage ./extensions/sleighdevtools { inherit ghidra; }; sleighdevtools = self.callPackage ./extensions/sleighdevtools { inherit ghidra; };
wasm = self.callPackage ./extensions/wasm { inherit ghidra; }; wasm = self.callPackage ./extensions/wasm { inherit ghidra; };
binsync = self.callPackage ./extensions/binsync {};
}) })

View File

@ -15,7 +15,7 @@
binsync binsync
] ++ binsync.optional-dependencies.ghidra)); ] ++ binsync.optional-dependencies.ghidra));
in buildGhidraScripts { in buildGhidraScripts {
pname = "BinSync"; pname = "binsync-ghidra";
inherit (python.pkgs.binsync) version; inherit (python.pkgs.binsync) version;
src = runCommand "binsync-ghidra-scripts" { src = runCommand "binsync-ghidra-scripts" {
@ -37,10 +37,4 @@ in buildGhidraScripts {
--replace-fail 'plugin_command = "binsync -s ghidra"' \ --replace-fail 'plugin_command = "binsync -s ghidra"' \
'plugin_command = "${lib.getExe' binsync_env "binsync"} -s ghidra"' 'plugin_command = "${lib.getExe' binsync_env "binsync"} -s ghidra"'
''; '';
meta = {
description = "Reversing plugin for cross-decompiler collaboration, built on git";
homepage = "https://github.com/binsync/binsync";
license = lib.licenses.bsd2;
};
} }

View File

@ -1,10 +1,10 @@
{ {
lib, lib,
buildGhidraExtension, ghidra,
gradle, gradle,
fetchFromGitHub, fetchFromGitHub,
}: }:
buildGhidraExtension (finalAttrs: { ghidra.buildGhidraExtension (finalAttrs: {
pname = "ghidra-delinker-extension"; pname = "ghidra-delinker-extension";
version = "0.5.1"; version = "0.5.1";

View File

@ -25,7 +25,7 @@ buildGhidraExtension {
pname = "gnudisassembler"; pname = "gnudisassembler";
version = lib.getVersion ghidra; version = lib.getVersion ghidra;
src = "${ghidra.lib}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_GnuDisassembler.zip"; src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_GnuDisassembler.zip";
postPatch = '' postPatch = ''
ln -s ${binutils-src} binutils-${binutils-version}.tar.bz2 ln -s ${binutils-src} binutils-${binutils-version}.tar.bz2

View File

@ -8,7 +8,7 @@ buildGhidraExtension {
pname = "machinelearning"; pname = "machinelearning";
version = lib.getVersion ghidra; version = lib.getVersion ghidra;
src = "${ghidra.lib}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_MachineLearning.zip"; src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_MachineLearning.zip";
dontUnpack = true; dontUnpack = true;
# Built as part ghidra # Built as part ghidra

View File

@ -9,7 +9,7 @@ buildGhidraExtension {
pname = "sleighdevtools"; pname = "sleighdevtools";
version = lib.getVersion ghidra; version = lib.getVersion ghidra;
src = "${ghidra.lib}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_SleighDevTools.zip"; src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_SleighDevTools.zip";
dontUnpack = true; dontUnpack = true;
# Built as part ghidra # Built as part ghidra

View File

@ -23,7 +23,7 @@ buildGhidraExtension (finalAttrs: {
# this doesn't really compile, it compresses sinc into sla # this doesn't really compile, it compresses sinc into sla
pushd data pushd data
ant -f build.xml -Dghidra.install.dir=${ghidra.lib}/lib/ghidra sleighCompile ant -f build.xml -Dghidra.install.dir=${ghidra}/lib/ghidra sleighCompile
popd popd
runHook postConfigure runHook postConfigure

View File

@ -29,10 +29,8 @@ let
nativeBuildInputs = [ nativeBuildInputs = [
makeBinaryWrapper makeBinaryWrapper
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle; ] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
postBuild = '' postBuild =
# Prevent attempted creation of plugin lock files in the Nix store. ''
touch $out/lib/ghidra/Ghidra/.dbDirLock
makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \ makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \
--set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra" --set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra"
makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \ makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \