Gallopsled / Gallopsled/pwntools

Latest pwntools on pip can't be installed as it uses an older unicorn which won't compile

Open
#2,771 1 comment 0 reactions 0 assignees View on GitHub
backport-required bug
Dominant language
Python
Stars
13.7k
Forks
1.9k
Avg merge
6d 23h
Merged PRs (30d)
3

Description

on

```
(test) ➜ ~ cat /etc/os-release
PRETTY_NAME="Ubuntu 26.04 LTS"
NAME="Ubuntu"
VERSION_ID="26.04"
VERSION="26.04 LTS (Resolute Raccoon)"
VERSION_CODENAME=resolute
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=resolute
LOGO=ubuntu-logo
(test) ➜ ~ python3 --version
Python 3.14.4
```

when I run `pip install pwntools`

```
(test) ➜ ~ pip install pwntools
Collecting pwntools
Using cached pwntools-4.15.0-py2.py3-none-any.whl.metadata (5.3 kB)
Collecting paramiko>=1.15.2 (from pwntools)
Using cached paramiko-5.0.0-py3-none-any.whl.metadata (3.7 kB)
Collecting mako>=1.0.0 (from pwntools)
Using cached mako-1.4.1-py3-none-any.whl.metadata (2.9 kB)
Collecting pyelftools>=0.29 (from pwntools)
Using cached pyelftools-0.33-py3-none-any.whl.metadata (1.0 kB)
Collecting capstone>=3.0.5rc2 (from pwntools)
Using cached capstone-6.0.0a10-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (3.8 kB)
Collecting ropgadget>=5.3 (from pwntools)
Using cached ropgadget-7.7-py3-none-any.whl.metadata (1.0 kB)
Collecting pyserial>=2.7 (from pwntools)
Using cached pyserial-3.5-py2.py3-none-any.whl.metadata (1.6 kB)
Collecting requests>=2.0 (from pwntools)
Using cached requests-2.34.2-py3-none-any.whl.metadata (4.8 kB)
Requirement already satisfied: pip>=6.0.8 in ./.envs/test/lib/python3.14/site-packages (from pwntools) (25.1.1)
Collecting pygments>=2.0 (from pwntools)
Using cached pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB)
Collecting pysocks (from pwntools)
Using cached PySocks-1.7.1-py3-none-any.whl.metadata (13 kB)
Collecting python-dateutil (from pwntools)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting packaging (from pwntools)
Using cached packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
Collecting psutil>=3.3.0 (from pwntools)
Using cached psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl.metadata (22 kB)
Collecting intervaltree>=3.0 (from pwntools)
Using cached intervaltree-3.2.1-py2.py3-none-any.whl.metadata (12 kB)
Collecting sortedcontainers (from pwntools)
Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl.metadata (10 kB)
Collecting unicorn!=2.1.3,!=2.1.4,>=2.0.1 (from pwntools)
Using cached unicorn-2.1.2.tar.gz (2.9 MB)
Installing build dependencies ... done
^[1 Getting requirements to build wheel ... -^[done
Preparing metadata (pyproject.toml) ... done
Collecting six>=1.12.0 (from pwntools)
Using cached six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting rpyc (from pwntools)
Using cached rpyc-6.0.2-py3-none-any.whl.metadata (3.5 kB)
Collecting colored_traceback (from pwntools)
Using cached colored_traceback-0.4.2-py3-none-any.whl.metadata (4.6 kB)
Collecting unix-ar (from pwntools)
Using cached unix_ar-0.2.1-py2.py3-none-any.whl.metadata (1.9 kB)
Collecting zstandard (from pwntools)
Using cached zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (3.3 kB)
1Collecting MarkupSafe>=2.0 (from mako>=1.0.0->pwntools)
Using cached markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
Collecting bcrypt>=3.2 (from paramiko>=1.15.2->pwntools)
Using cached bcrypt-5.0.0-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (10 kB)
^@Collecting cryptography>=3.3 (from paramiko>=1.15.2->pwntools)
Using cached cryptography-50.0.1-cp311-abi3-manylinux_2_34_x86_64.whl.metadata (4.3 kB)
Collecting invoke>=2.0 (from paramiko>=1.15.2->pwntools)
Using cached invoke-3.0.3-py3-none-any.whl.metadata (3.2 kB)
Collecting pynacl>=1.5 (from paramiko>=1.15.2->pwntools)
Using cached pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl.metadata (10.0 kB)
Collecting cffi>=2.0.0 (from cryptography>=3.3->paramiko>=1.15.2->pwntools)
Using cached cffi-2.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.5 kB)
Collecting pycparser (from cffi>=2.0.0->cryptography>=3.3->paramiko>=1.15.2->pwntools)
Using cached pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
Collecting charset_normalizer<4,>=2 (from requests>=2.0->pwntools)
Using cached charset_normalizer-3.5.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (45 kB)
Collecting idna<4,>=2.5 (from requests>=2.0->pwntools)
Using cached idna-3.19-py3-none-any.whl.metadata (9.2 kB)
Collecting urllib3<3,>=1.26 (from requests>=2.0->pwntools)
Using cached urllib3-2.7.0-py3-none-any.whl.metadata (6.9 kB)
Collecting certifi>=2023.5.7 (from requests>=2.0->pwntools)
Using cached certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB)
Collecting plumbum (from rpyc->pwntools)
Using cached plumbum-2.0.2-py3-none-any.whl.metadata (8.5 kB)
Using cached pwntools-4.15.0-py2.py3-none-any.whl (12.9 MB)
Using cached capstone-6.0.0a10-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.6 MB)
Using cached intervaltree-3.2.1-py2.py3-none-any.whl (25 kB)
Using cached mako-1.4.1-py3-none-any.whl (80 kB)
Using cached markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (23 kB)
Using cached paramiko-5.0.0-py3-none-any.whl (208 kB)
Using cached bcrypt-5.0.0-cp39-abi3-manylinux_2_34_x86_64.whl (278 kB)
Using cached cryptography-50.0.1-cp311-abi3-manylinux_2_34_x86_64.whl (4.7 MB)
Using cached cffi-2.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (221 kB)
Using cached invoke-3.0.3-py3-none-any.whl (160 kB)
Using cached psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl (155 kB)
Using cached pyelftools-0.33-py3-none-any.whl (201 kB)
Using cached pygments-2.21.0-py3-none-any.whl (1.3 MB)
Using cached pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl (1.4 MB)
Using cached pyserial-3.5-py2.py3-none-any.whl (90 kB)
Using cached requests-2.34.2-py3-none-any.whl (73 kB)
Using cached charset_normalizer-3.5.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (251 kB)
Using cached idna-3.19-py3-none-any.whl (68 kB)
Using cached urllib3-2.7.0-py3-none-any.whl (131 kB)
Using cached certifi-2026.7.22-py3-none-any.whl (136 kB)
Using cached ropgadget-7.7-py3-none-any.whl (32 kB)
Using cached six-1.17.0-py2.py3-none-any.whl (11 kB)
Using cached colored_traceback-0.4.2-py3-none-any.whl (5.5 kB)
Using cached packaging-26.3-py3-none-any.whl (129 kB)
Using cached pycparser-3.0-py3-none-any.whl (48 kB)
Using cached PySocks-1.7.1-py3-none-any.whl (16 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached rpyc-6.0.2-py3-none-any.whl (74 kB)
Using cached plumbum-2.0.2-py3-none-any.whl (168 kB)
Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
Using cached unix_ar-0.2.1-py2.py3-none-any.whl (6.5 kB)
Using cached zstandard-0.25.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.6 MB)
Building wheels for collected packages: unicorn
Building wheel for unicorn (pyproject.toml) ... error
error: subprocess-exited-with-error

× Building wheel for unicorn (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [193 lines of output]
/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
!!

********************************************************************************
Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).

By 2027-Feb-18, you need to update your project and remove deprecated calls
or your builds will no longer be supported.

See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************

!!
corresp(dist, value, root_dir)
/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!

********************************************************************************
Please consider removing the following classifiers in favor of a SPDX license expression:

License :: OSI Approved :: BSD License

See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************

!!
dist._finalize_license_expression()
/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!

********************************************************************************
Please consider removing the following classifiers in favor of a SPDX license expression:

License :: OSI Approved :: BSD License

See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
********************************************************************************

!!
self._finalize_license_expression()
running bdist_wheel
running build
running build_py
Building C extensions
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
Compatibility with CMake < 3.10 will be removed from a future version of
CMake.

Update the VERSION argument value. Or, use the ... syntax
to tell CMake that the project requires at least but has been updated
to work with policies introduced by or earlier.

-- The C compiler identification is GNU 15.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done

ERROR: pkg-config binary 'pkg-config' not found

-- Configuring done (5.5s)
-- Generating done (0.2s)
-- Build files have been written to: /tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/build_python
[ 0%] Building C object CMakeFiles/unicorn-common.dir/list.c.o
[ 0%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/garray.c.o
[ 0%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/glib_compat.c.o
[ 1%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/gtestutils.c.o
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/glib_compat/glib_compat.c: In function ‘g_strsplit’:
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/glib_compat/glib_compat.c:1434:7: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
1434 | s = strstr (remainder, delimiter);
| ^
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/glib_compat/glib_compat.c:1448:15: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
1448 | s = strstr (remainder, delimiter);
| ^
[ 1%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/gtree.c.o
[ 1%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/grand.c.o
[ 1%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/glist.c.o
[ 1%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/gmem.c.o
[ 2%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/gpattern.c.o
[ 2%] Building C object CMakeFiles/unicorn-common.dir/glib_compat/gslice.c.o
[ 2%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/bitmap.c.o
[ 2%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/bitops.c.o
[ 2%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/crc32c.c.o
[ 2%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/cutils.c.o
[ 2%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/getauxval.c.o
[ 3%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/guest-random.c.o
[ 3%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/host-utils.c.o
[ 3%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/osdep.c.o
[ 3%] Building C object CMakeFiles/unicorn-common.dir/qemu/util/qdist.c.o
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c: In function ‘qemu_mprotect__osdep’:
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c:66:9: error: implicit declaration of function ‘mprotect’ [-Wimplicit-function-declaration]
66 | if (mprotect(addr, size, prot)) {
| ^~~~~~~~
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c: In function ‘qemu_mprotect_rwx’:
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c:79:45: error: ‘PROT_READ’ undeclared (first use in this function)
79 | return qemu_mprotect__osdep(addr, size, PROT_READ | PROT_WRITE | PROT_EXEC);
| ^~~~~~~~~
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c:79:45: note: each undeclared identifier is reported only once for each function it appears in
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c:79:57: error: ‘PROT_WRITE’ undeclared (first use in this function)
79 | return qemu_mprotect__osdep(addr, size, PROT_READ | PROT_WRITE | PROT_EXEC);
| ^~~~~~~~~~
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c:79:70: error: ‘PROT_EXEC’ undeclared (first use in this function)
79 | return qemu_mprotect__osdep(addr, size, PROT_READ | PROT_WRITE | PROT_EXEC);
| ^~~~~~~~~
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c: In function ‘qemu_mprotect_none’:
/tmp/pip-install-0546ut37/unicorn_a11c5353c0554587840f96cf2f3689ce/src/qemu/util/osdep.c:88:45: error: ‘PROT_NONE’ undeclared (first use in this function)
88 | return qemu_mprotect__osdep(addr, size, PROT_NONE);
| ^~~~~~~~~
gmake[2]: *** [CMakeFiles/unicorn-common.dir/build.make:317: CMakeFiles/unicorn-common.dir/qemu/util/osdep.c.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:740: CMakeFiles/unicorn-common.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
Traceback (most recent call last):
File "/home/sudhackar/.envs/test/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in
main()
~~~~^^
File "/home/sudhackar/.envs/test/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main
json_out["return_val"] = hook(**hook_input["kwargs"])
~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/sudhackar/.envs/test/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 280, in build_wheel
return _build_backend().build_wheel(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
wheel_directory, config_settings, metadata_directory
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/build_meta.py", line 441, in build_wheel
return _build(['bdist_wheel', '--dist-info-dir', str(metadata_directory)])
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/build_meta.py", line 429, in _build
return self._build_with_temp_dir(
~~~~~~~~~~~~~~~~~~~~~~~~~^
cmd,
^^^^
...<3 lines>...
self._arbitrary_args(config_settings),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/build_meta.py", line 410, in _build_with_temp_dir
self.run_setup()
~~~~~~~~~~~~~~^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/build_meta.py", line 317, in run_setup
exec(code, locals()) # noqa: S102 # exec is intentional here
~~~~^^^^^^^^^^^^^^^^
File "", line 149, in
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/__init__.py", line 117, in setup
return distutils.core.setup(**attrs) # type: ignore[return-value]
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/core.py", line 168, in setup
return run_commands(dist)
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/core.py", line 184, in run_commands
dist.run_commands()
~~~~~~~~~~~~~~~~~^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/dist.py", line 1028, in run_commands
self.run_command(cmd)
~~~~~~~~~~~~~~~~^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/dist.py", line 1106, in run_command
super().run_command(command)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/dist.py", line 1047, in run_command
cmd_obj.run()
~~~~~~~~~~~^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/command/bdist_wheel.py", line 385, in run
self.run_command("build")
~~~~~~~~~~~~~~~~^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/cmd.py", line 342, in run_command
self.distribution.run_command(command)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/dist.py", line 1106, in run_command
super().run_command(command)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/dist.py", line 1047, in run_command
cmd_obj.run()
~~~~~~~~~~~^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/command/build.py", line 137, in run
self.run_command(cmd_name)
~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/cmd.py", line 342, in run_command
self.distribution.run_command(command)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/dist.py", line 1106, in run_command
super().run_command(command)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/tmp/pip-build-env-yxzx3uvo/overlay/lib/python3.14/site-packages/setuptools/_distutils/dist.py", line 1047, in run_command
cmd_obj.run()
~~~~~~~~~~~^^
File "", line 145, in run
File "", line 126, in build_libraries
File "/usr/lib/python3.14/subprocess.py", line 420, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '--build', '.', '-j4']' returned non-zero exit status 2.
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for unicorn
Failed to build unicorn
ERROR: Failed to build installable wheels for some pyproject.toml based projects (unicorn
```

this is a known issue looks like - https://github.com/unicorn-engine/unicorn/issues/2329#issuecomment-4761227264

We should bump the unicorn pin

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure with `pip install pwntools` on Python 3.14 and Ubuntu 26.04, then inspect pwntools' dependency metadata and the unicorn 2.1.2 build selected by pip. Done means the package installs successfully in the reported environment without the failing unicorn build, with relevant packaging checks passing.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, python
Domain
build-system, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.