From 77b1a7ff42854183ef4a40ec040307b54967f381 Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 9 Aug 2012 18:58:51 +0200 Subject: [PATCH 1/3] boomerang: New package from the fork. This adds the boomerang decompiler, which has been forked on github because of some years of inactivity. --- pkgs/development/tools/boomerang/default.nix | 28 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 30 insertions(+) create mode 100644 pkgs/development/tools/boomerang/default.nix diff --git a/pkgs/development/tools/boomerang/default.nix b/pkgs/development/tools/boomerang/default.nix new file mode 100644 index 00000000000..3cfa5e8eb5b --- /dev/null +++ b/pkgs/development/tools/boomerang/default.nix @@ -0,0 +1,28 @@ +{ stdenv, fetchgit, cmake, boehmgc, expat, cppunit }: + +stdenv.mkDerivation { + name = "boomerang-1.0pre"; + + buildInputs = [ cmake boehmgc expat cppunit ]; + + installPhase = '' + for loaderfile in loader/*.so + do + install -vD "$loaderfile" "$out/lib/$(basename "$loaderfile")" + done + + install -vD boomerang "$out/bin/boomerang" + ''; + + src = fetchgit { + url = "git://github.com/andrew-aladev/boomerang.git"; + rev = "c0ad5c1f64091725b4ca7f63c57edd3d3bc74a57"; + sha256 = "76d8512db672bad1322943172046e4b450c5fa509e4141457b3dc60493852fcc"; + }; + + meta = { + homepage = http://boomerang.sourceforge.net/; + license = stdenv.lib.licenses.bsd3; + description = "A general, open source, retargetable decompiler"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 79bd7583317..5cbc0f0fbea 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -437,6 +437,8 @@ let bfr = callPackage ../tools/misc/bfr { }; + boomerang = callPackage ../development/tools/boomerang { }; + bootchart = callPackage ../tools/system/bootchart { }; bsod = callPackage ../misc/emulators/bsod { }; From a6e266306f5852a850ce4838dc1634622ad6122b Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 10 Aug 2012 14:59:05 +0200 Subject: [PATCH 2/3] boomerang: Fix endless loop in createDirectory(). Fix is on GitHub, so changing the git URL to point to the commit ID of my fix. --- pkgs/development/tools/boomerang/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/boomerang/default.nix b/pkgs/development/tools/boomerang/default.nix index 3cfa5e8eb5b..0f9035f9d39 100644 --- a/pkgs/development/tools/boomerang/default.nix +++ b/pkgs/development/tools/boomerang/default.nix @@ -15,9 +15,9 @@ stdenv.mkDerivation { ''; src = fetchgit { - url = "git://github.com/andrew-aladev/boomerang.git"; - rev = "c0ad5c1f64091725b4ca7f63c57edd3d3bc74a57"; - sha256 = "76d8512db672bad1322943172046e4b450c5fa509e4141457b3dc60493852fcc"; + url = "git://github.com/aszlig/boomerang.git"; + rev = "d0b147a5dfc915a5fa8fe6c517e66a049a37bf22"; + sha256 = "6cfd95a3539ff45c18b17de76407568b0d0c17fde4e45dda54486c7eac113969"; }; meta = { From d10772ec8a4d3f2bd24f663d4c317429c46389a8 Mon Sep 17 00:00:00 2001 From: aszlig Date: Fri, 10 Aug 2012 15:02:19 +0200 Subject: [PATCH 3/3] boomerang: Fix prefix in dlopen(). We already have the correct library dir in our search path, so we don't need to prepend lib/ again. --- pkgs/development/tools/boomerang/default.nix | 2 ++ pkgs/development/tools/boomerang/dlopen_path.patch | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 pkgs/development/tools/boomerang/dlopen_path.patch diff --git a/pkgs/development/tools/boomerang/default.nix b/pkgs/development/tools/boomerang/default.nix index 0f9035f9d39..eadeb51d1b3 100644 --- a/pkgs/development/tools/boomerang/default.nix +++ b/pkgs/development/tools/boomerang/default.nix @@ -14,6 +14,8 @@ stdenv.mkDerivation { install -vD boomerang "$out/bin/boomerang" ''; + patches = [ ./dlopen_path.patch ]; + src = fetchgit { url = "git://github.com/aszlig/boomerang.git"; rev = "d0b147a5dfc915a5fa8fe6c517e66a049a37bf22"; diff --git a/pkgs/development/tools/boomerang/dlopen_path.patch b/pkgs/development/tools/boomerang/dlopen_path.patch new file mode 100644 index 00000000000..1e4bf3c75a3 --- /dev/null +++ b/pkgs/development/tools/boomerang/dlopen_path.patch @@ -0,0 +1,13 @@ +diff --git a/loader/BinaryFileFactory.cpp b/loader/BinaryFileFactory.cpp +index 889a4ed..ca86765 100644 +--- a/loader/BinaryFileFactory.cpp ++++ b/loader/BinaryFileFactory.cpp +@@ -109,7 +109,7 @@ BinaryFile* BinaryFileFactory::getInstanceFor( const char *sName ) { + + // Load the specific loader library + #ifndef _WIN32 // Cygwin, Unix/Linux +- libName = std::string("lib/lib") + libName; ++ libName = std::string("lib") + libName; + #ifdef __CYGWIN__ + libName += ".dll"; // Cygwin wants .dll, but is otherwise like Unix + #else