diff --git a/PKGBUILD b/PKGBUILD index 4d2c085..ce6093f 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -13,12 +13,18 @@ optdepends=('checksec: checksec command support' 'ropper: ropper command support' 'ropgadget: ropgadget command support' 'radare2: radare2 command support') -source=(https://github.com/pwndbg/pwndbg/archive/${pkgver}/${pkgname}-${pkgver}.tar.gz) -sha512sums=('d261ed992327d62b0b3e7cc002d3185435748e27cc2ce0085d438848ef1bdb0b3921ae5c1ce19c25e49d52b10f8340eb67c4e05fc197d2adeb888b47e2c158ba') -b2sums=('e373a7408366090f58385dac8dfcdd13702c475117a35158a1a149d149c9a2cbf5f2702be33aeab537451cfd990b5253e9bc0283fa5ae197c9cceb680e65a724') +source=(https://github.com/pwndbg/pwndbg/archive/${pkgver}/${pkgname}-${pkgver}.tar.gz + pwndbg-2023.07.17-optional-venv.patch) +sha512sums=('d261ed992327d62b0b3e7cc002d3185435748e27cc2ce0085d438848ef1bdb0b3921ae5c1ce19c25e49d52b10f8340eb67c4e05fc197d2adeb888b47e2c158ba' + 'bf7e87549b80c4103c2e750372effb65521e6f9c4dd24bb769c1a179a3a957f5d480c5f8f0c786e7e99153cc997f167fff6fdcaafbe8d0a1df84d10add02378d') +b2sums=('e373a7408366090f58385dac8dfcdd13702c475117a35158a1a149d149c9a2cbf5f2702be33aeab537451cfd990b5253e9bc0283fa5ae197c9cceb680e65a724' + '492caebeb0afff974564c7a9b178faa230ccb9c05b03c2b50a8825d8b2a8905f2fb1399d16e35ea6e7c18a5729e07c382fa2150249f77aad9d5ce5bf4a129470') prepare() { cd ${pkgname}-${pkgver} + + patch -Np1 -i ../pwndbg-2023.07.17-optional-venv.patch # based on https://github.com/pwndbg/pwndbg/commit/f3914e26968ca3cc0a1f06a29cd54913beb662ff + sed '/0L/d' -i ida_script.py } diff --git a/pwndbg-2023.07.17-optional-venv.patch b/pwndbg-2023.07.17-optional-venv.patch new file mode 100644 index 0000000..5037aa0 --- /dev/null +++ b/pwndbg-2023.07.17-optional-venv.patch @@ -0,0 +1,66 @@ +diff --git a/gdbinit.py b/gdbinit.py +index 8bf44d2..14747e2 100644 +--- a/gdbinit.py ++++ b/gdbinit.py +@@ -16,37 +16,38 @@ if environ.get("PWNDBG_PROFILE") == "1": + _start_time = time.time() + _profiler.enable() + +-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 venv_path == "PWNDBG_PLEASE_SKIP_VENV": ++ pass ++else: ++ directory, file = path.split(__file__) ++ directory = path.expanduser(directory) ++ directory = path.abspath(directory) ++ ++ 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) ++ if os.path.exists(venv_path): + +-site_pkgs_path = glob(os.path.join(venv_path, "lib/*/site-packages"))[0] ++ 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) ++ # 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) ++ # 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") ++ # 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) +-sys.path.append(gdbpt) ++ # Add gdb-pt-dump directory to sys.path so it can be imported ++ gdbpt = path.join(directory, "gdb-pt-dump") ++ sys.path.append(directory) ++ sys.path.append(gdbpt) + + # warn if the user has different encoding than utf-8 + encoding = locale.getpreferredencoding()