summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2024-01-17 19:46:38 +0100
committerMichał Górny <mgorny@gentoo.org>2024-01-18 15:27:42 +0100
commit504f70cbe15e0062a1b2fbfefbc9a89c1961d49e (patch)
treed0fa992196fdd52bf5026c05d11fb090c931dae8 /dev-debug
parentMove {dev-util → dev-debug}/kdbg (diff)
downloadgentoo-504f70cbe15e0062a1b2fbfefbc9a89c1961d49e.tar.gz
gentoo-504f70cbe15e0062a1b2fbfefbc9a89c1961d49e.tar.bz2
gentoo-504f70cbe15e0062a1b2fbfefbc9a89c1961d49e.zip
Move {dev-util → dev-debug}/pwndbg
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-debug')
-rw-r--r--dev-debug/pwndbg/Manifest2
-rw-r--r--dev-debug/pwndbg/files/pwndbg-20230717-no-venv.patch46
-rw-r--r--dev-debug/pwndbg/metadata.xml20
-rw-r--r--dev-debug/pwndbg/pwndbg-20230717-r1.ebuild90
-rw-r--r--dev-debug/pwndbg/pwndbg-99999999.ebuild83
5 files changed, 241 insertions, 0 deletions
diff --git a/dev-debug/pwndbg/Manifest b/dev-debug/pwndbg/Manifest
new file mode 100644
index 000000000000..b489d37a759c
--- /dev/null
+++ b/dev-debug/pwndbg/Manifest
@@ -0,0 +1,2 @@
+DIST gdb-pt-dump-ebdc24573a4bf075cf3ab6016add9db6baacf977.tar.gz 385989 BLAKE2B b7582289f83fd0c76b8ef2a04540db979b0f599b6b711e17541e2804b93bcffe6fd611d43101c96644a7324398eea5df02326267b4e201564929de956849b719 SHA512 57701b5fdd4c69be79a451f08fa6d7cbd43a0963cfd7689443676b68ece96154ccb61121d4a770d6e519d3142f99c589df1143b0ff8308547c06fb0e87e187db
+DIST pwndbg-20230717.tar.gz 8392017 BLAKE2B e373a7408366090f58385dac8dfcdd13702c475117a35158a1a149d149c9a2cbf5f2702be33aeab537451cfd990b5253e9bc0283fa5ae197c9cceb680e65a724 SHA512 d261ed992327d62b0b3e7cc002d3185435748e27cc2ce0085d438848ef1bdb0b3921ae5c1ce19c25e49d52b10f8340eb67c4e05fc197d2adeb888b47e2c158ba
diff --git a/dev-debug/pwndbg/files/pwndbg-20230717-no-venv.patch b/dev-debug/pwndbg/files/pwndbg-20230717-no-venv.patch
new file mode 100644
index 000000000000..4011236240f9
--- /dev/null
+++ b/dev-debug/pwndbg/files/pwndbg-20230717-no-venv.patch
@@ -0,0 +1,46 @@
+From 6a351680675123ccc0d8fb192f28f3c654979c92 Mon Sep 17 00:00:00 2001
+From: Stefan Gloor <code@stefan-gloor.ch>
+Date: Tue, 28 Nov 2023 20:24:26 +0100
+Subject: [PATCH] Use global python packages instead of virtualenv
+Bug: https://bugs.gentoo.org/918705
+
+The upstream install script creates a .venv and installs the
+dependencies there. This patch allows the normal python packages to be
+used.
+
+Signed-off-by: Stefan Gloor <code@stefan-gloor.ch>
+--- a/gdbinit.py
++++ b/gdbinit.py
+@@ -20,29 +20,6 @@ directory, file = path.split(__file__)
+ directory = path.expanduser(directory)
+ directory = path.abspath(directory)
+
+-# Get virtualenv's site-packages path
+-venv_path = os.environ.get("PWNDBG_VENV_PATH")
+-if not venv_path:
+- venv_path = os.path.join(directory, ".venv")
+-
+-if not os.path.exists(venv_path):
+- print(f"Cannot find Pwndbg virtualenv directory: {venv_path}: please re-run setup.sh")
+- sys.exit(1)
+-
+-site_pkgs_path = glob(os.path.join(venv_path, "lib/*/site-packages"))[0]
+-
+-# add virtualenv's site-packages to sys.path and run .pth files
+-site.addsitedir(site_pkgs_path)
+-
+-# remove existing, system-level site-packages from sys.path
+-for site_packages in site.getsitepackages():
+- if site_packages in sys.path:
+- sys.path.remove(site_packages)
+-
+-# Set virtualenv's bin path (needed for utility tools like ropper, pwntools etc)
+-bin_path = os.path.join(venv_path, "bin")
+-os.environ["PATH"] = bin_path + os.pathsep + os.environ.get("PATH")
+-
+ # Add gdb-pt-dump directory to sys.path so it can be imported
+ gdbpt = path.join(directory, "gdb-pt-dump")
+ sys.path.append(directory)
+--
+2.41.0
+
diff --git a/dev-debug/pwndbg/metadata.xml b/dev-debug/pwndbg/metadata.xml
new file mode 100644
index 000000000000..707da35acff7
--- /dev/null
+++ b/dev-debug/pwndbg/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <longdescription>
+ pwndbg is a GDB plug-in that makes debugging with GDB suck less, with a
+ focus on features needed by low-level software developers, hardware
+ hackers, reverse-engineers and exploit developers.
+ </longdescription>
+ <upstream>
+ <remote-id type="github">pwndbg/pwndbg</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-debug/pwndbg/pwndbg-20230717-r1.ebuild b/dev-debug/pwndbg/pwndbg-20230717-r1.ebuild
new file mode 100644
index 000000000000..a38b9180e566
--- /dev/null
+++ b/dev-debug/pwndbg/pwndbg-20230717-r1.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..11} )
+
+inherit python-single-r1 wrapper
+
+DESCRIPTION="A GDB plug-in that makes debugging with GDB suck less"
+HOMEPAGE="https://github.com/pwndbg/pwndbg"
+
+if [[ ${PV} == "99999999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pwndbg/pwndbg"
+else
+ MY_PV="${PV:0:4}.${PV:4:2}.${PV:6:2}"
+ GDB_PT_DUMP_COMMIT="ebdc24573a4bf075cf3ab6016add9db6baacf977"
+ SRC_URI="
+ https://github.com/pwndbg/pwndbg/archive/${MY_PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/martinradev/gdb-pt-dump/archive/${GDB_PT_DUMP_COMMIT}.tar.gz -> gdb-pt-dump-${GDB_PT_DUMP_COMMIT}.tar.gz
+ "
+ KEYWORDS="amd64 ~arm64 x86"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-libs/capstone-5.0_rc4[python,${PYTHON_USEDEP}]
+ >=dev-python/psutil-5.9.5[${PYTHON_USEDEP}]
+ >=dev-python/pycparser-2.21[${PYTHON_USEDEP}]
+ >=dev-python/pyelftools-0.29[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.15.1[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.6.1[${PYTHON_USEDEP}]
+ >=dev-util/pwntools-4.10.0[${PYTHON_USEDEP}]
+ >=dev-util/ROPgadget-7.2[${PYTHON_USEDEP}]
+ >=dev-util/unicorn-2.0.1[python,${PYTHON_USEDEP}]
+ ')"
+
+PATCHES=(
+ "${FILESDIR}/${P}-no-venv.patch" # Bug 918705
+)
+
+src_prepare() {
+ if [[ ${PV} == *9999 ]]; then
+ rm -r gdb-pt-dump/.git || die
+ else
+ sed -e "s/__version__ = '\(.*\)'/__version__ = '${PV}'/" \
+ -i pwndbg/lib/version.py || die
+
+ rm -r gdb-pt-dump || die
+ mv "${WORKDIR}/gdb-pt-dump-${GDB_PT_DUMP_COMMIT}" gdb-pt-dump || die
+ fi
+
+ python_fix_shebang "${S}"
+ default
+}
+
+src_install() {
+ insinto /usr/share/${PN}
+ doins -r pwndbg/ gdbinit.py # ida_script.py
+ doins -r gdb-pt-dump/
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ make_wrapper "pwndbg" \
+ "gdb -x \"${EPREFIX}/usr/share/${PN}/gdbinit.py\"" || die
+
+ dodoc {README,DEVELOPING,FEATURES}.md
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ einfo "\nUsage:"
+ einfo " ~$ pwndbg <program>"
+ ewarn "\nWARNING!!!"
+ ewarn "Some pwndbg commands only works with libc debug symbols.\n"
+ ewarn "See also:"
+ ewarn " * https://github.com/pentoo/pentoo-overlay/issues/521#issuecomment-548975884"
+ ewarn " * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html"
+ ewarn " * https://wiki.gentoo.org/wiki/Debugging"
+ fi
+}
diff --git a/dev-debug/pwndbg/pwndbg-99999999.ebuild b/dev-debug/pwndbg/pwndbg-99999999.ebuild
new file mode 100644
index 000000000000..304326ef2983
--- /dev/null
+++ b/dev-debug/pwndbg/pwndbg-99999999.ebuild
@@ -0,0 +1,83 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+DISTUTILS_SINGLE_IMPL=1
+PYTHON_COMPAT=( python3_{10..11} )
+
+inherit distutils-r1 wrapper
+
+DESCRIPTION="A GDB plug-in that makes debugging with GDB suck less"
+HOMEPAGE="https://github.com/pwndbg/pwndbg"
+
+if [[ ${PV} == "99999999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pwndbg/pwndbg"
+else
+ MY_PV="${PV:0:4}.${PV:4:2}.${PV:6:2}"
+ SRC_URI="https://github.com/pwndbg/pwndbg/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ ~dev-python/gdb-pt-dump-0.0.0_p20231111[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-libs/capstone-5.0_rc4[python,${PYTHON_USEDEP}]
+ >=dev-python/psutil-5.9.5[${PYTHON_USEDEP}]
+ >=dev-python/pycparser-2.21[${PYTHON_USEDEP}]
+ >=dev-python/pyelftools-0.29[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.15.1[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.6.1[${PYTHON_USEDEP}]
+ >=dev-util/pwntools-4.10.0[${PYTHON_USEDEP}]
+ >=dev-util/ROPgadget-7.2[${PYTHON_USEDEP}]
+ >=dev-util/unicorn-2.0.1[python,${PYTHON_USEDEP}]
+ ')
+"
+
+src_prepare() {
+ if [[ ${PV} != 99999999 ]]; then
+ sed -e "s/__version__ = '\(.*\)'/__version__ = '${PV}'/" \
+ -i pwndbg/lib/version.py || die
+ fi
+
+ default
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ insinto /usr/share/${PN}
+ doins gdbinit.py
+
+ # Signal pwndbg not to create it's own python venv (Bug #918705).
+ # See: https://github.com/pwndbg/pwndbg/commit/139b7542cd9567eaff32bd713df971b6ac5b81de
+ touch "${ED}/usr/share/${PN}/.skip-venv" || die
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ make_wrapper "pwndbg" \
+ "gdb -x \"${EPREFIX}/usr/share/${PN}/gdbinit.py\"" || die
+
+ dodoc {README,DEVELOPING,FEATURES}.md
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ einfo "\nUsage:"
+ einfo " ~$ pwndbg <program>"
+ ewarn "\nWARNING!!!"
+ ewarn "Some pwndbg commands only works with libc debug symbols.\n"
+ ewarn "See also:"
+ ewarn " * https://github.com/pentoo/pentoo-overlay/issues/521#issuecomment-548975884"
+ ewarn " * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html"
+ ewarn " * https://wiki.gentoo.org/wiki/Debugging"
+ fi
+}