diff --git a/Ghidra.scm b/Ghidra.scm new file mode 100644 index 0000000..8450e7b --- /dev/null +++ b/Ghidra.scm @@ -0,0 +1,191 @@ +(define-module (bolt-launcher) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages admin) + #:use-module (gnu packages algebra) + #:use-module (gnu packages assembly) + #:use-module (gnu packages astronomy) + #:use-module (gnu packages audio) + #:use-module (gnu packages avahi) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages backup) + #:use-module (gnu packages bash) + #:use-module (gnu packages boost) + #:use-module (gnu packages check) + #:use-module (gnu packages chromium) + #:use-module (gnu packages commencement) + #:use-module (gnu packages cmake) + #:use-module (gnu packages compression) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) + #:use-module (gnu packages documentation) + #:use-module (gnu packages engineering) + #:use-module (gnu packages fltk) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages gcc) + #:use-module (gnu packages gd) + #:use-module (gnu packages geo) + #:use-module (gnu packages gettext) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages golang) + #:use-module (gnu packages golang-xyz) + #:use-module (gnu packages gps) + #:use-module (gnu packages graphviz) + #:use-module (gnu packages gstreamer) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages image-processing) + #:use-module (gnu packages java) + #:use-module (gnu packages javascript) + #:use-module (gnu packages jemalloc) + #:use-module (gnu packages libedit) + #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) + #:use-module (gnu packages logging) + #:use-module (gnu packages lua) + #:use-module (gnu packages man) + #:use-module (gnu packages maths) + #:use-module (gnu packages mp3) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages networking) + #:use-module (gnu packages nss) + #:use-module (gnu packages openstack) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages popt) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages protobuf) + #:use-module (gnu packages pretty-print) + #:use-module (gnu packages python) + #:use-module (gnu packages python-build) + #:use-module (gnu packages python-check) + #:use-module (gnu packages python-science) + #:use-module (gnu packages python-web) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages qt) + #:use-module (gnu packages readline) + #:use-module (gnu packages ruby) + #:use-module (gnu packages sdl) + #:use-module (gnu packages serialization) + #:use-module (gnu packages sphinx) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages swig) + #:use-module (gnu packages tcl) + #:use-module (gnu packages tex) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages tls) + #:use-module (gnu packages toolkits) + #:use-module (gnu packages vulkan) + #:use-module (gnu packages video) + #:use-module (gnu packages web) + #:use-module (gnu packages wget) + #:use-module (gnu packages wxwidgets) + #:use-module (gnu packages xiph) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) + #:use-module (gnu packages version-control) + #:use-module (guix build-system copy) + #:use-module (guix build-system glib-or-gtk) + #:use-module (guix build-system gnu) + #:use-module (guix build-system go) + #:use-module (guix build-system pyproject) + #:use-module (guix build-system python) + #:use-module (guix build-system qt) + #:use-module (guix build utils) + #:use-module (guix build gnu-build-system) + #:use-module (guix base16) + #:use-module (nongnu packages chromium) + #:use-module (nongnu packages editors) +) + +(define-public ghidra + (package + (name "ghidra") + (version "11.3.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/NationalSecurityAgency/ghidra") + (commit "Ghidra_11.3.1_build") + (recursive? #t))) + + (sha256 + (base32 "0dy8jvwggizb3wxmvikg50hadazdbqv9di659gv38mcz36h76w3h")))) + (build-system copy-build-system) + + (inputs + (list + gcc + gcc-toolchain + python + `(,openjdk "jdk") + gnu-make + unzip + )) + (arguments + (list + #:tests? #f ; no check target + #:phases + #~(modify-phases %standard-phases + ;;(add-after 'unpack 'build + ;;(lambda _ + ;;(display (invoke "pwd")) + ;;(invoke "ls" "-a") + ;;)) + (add-after 'unpack 'build + (lambda _ + (display (invoke "pwd")) + (invoke "ls" "-a" "./") + (let* ((gradle-url "https://services.gradle.org/distributions/gradle-8.12.1-bin.zip") + (local-gradle-dir "./gradle-ins") + (gradle-zip (string-append local-gradle-dir "/gradle-8.12.1-bin.zip")) + (gradle (string-append local-gradle-dir "/gradle-8.12.1/bin/gradle"))) + (mkdir-p local-gradle-dir) + (invoke "wget" gradle-url "-O" gradle-zip) + (system* "unzip" gradle-zip "-d" local-gradle-dir) + (invoke (string-append local-gradle-dir "/gradle-8.12.1/bin/gradle") "tasks") + (system* "sh" (gradle) "-I" "gradle/support/fetchDependencies.gradle" "-Dorg.gradle.dependency.locking=lockMode=DISABLED") + (system* "sh" (gradle) "buildGhidra") + ) + + ;; Open the file for both reading and writing + (system* "sh" "-c" "echo '\ndependencyLocking {\n lockMode = LockMode.DISABLED\n}' >> './settings.gradle'") + (system* "sh" "-c" "echo 'org.gradle.dependency.locking=lockMode=DISABLED' >> './gradle.properties'") + + + + + (invoke "cat" "./gradle.properties") + + ;;(system* "sh" (gradle) "-I" "gradle/support/fetchDependencies.gradle" "-Dorg.gradle.dependency.locking=lockMode=DISABLED") + ;;(system* "sh" (gradle) "buildGhidra") + (display "CAT")) + ) + (delete 'install) + ;;(add-after 'install 'link-cef + ;;(lambda _ + ;;(display (assoc-ref %outputs "out")) + ;;(display "Do nothing.") #t) + ;;) + ) + )) + + (native-inputs + (list gcc-toolchain git unzip wget)) + (synopsis "Soup") + (home-page "https://ghidra-sre.org/") + (description "A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission") + (license license:agpl3))) + + ghidra \ No newline at end of file