capstone/bindings/python
Benno Fünfstück b446327f3b python-bindings: fix setup.py for wheel installation
When the python bindings are installed using the new wheels
infrastructure, data_files are relative to the site-packages directory
even if using absolute paths.

The following example demonstrates the bug fixed by this commit: (ran on archlinux)

```bash
$ pip install wheel       # if this package is installed, wheel installation is made the default
Collecting wheel
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
    100% |################################| 71kB 124kB/s
Installing collected packages: wheel
Successfully installed wheel-0.29.0

$ pip install capstone    # this will use the wheel installation method now
Collecting capstone
  Using cached capstone-3.0.4.tar.gz
Building wheels for collected packages: capstone
  Running setup.py bdist_wheel for capstone ... done
  Stored in directory: /root/.cache/pip/wheels/7c/d1/d0/db6e2c5ef1063aabb9de2dd8b92b4c27ee6f9fd213240099b8
Successfully built capstone
Installing collected packages: capstone
Successfully installed capstone-3.0.4

$ find /usr/lib/ -name "libcapstone.so"
/usr/lib/python3.5/site-packages/usr/lib/python3.5/site-packages/capstone/libcapstone.so
```

So the path `SITE_PACKAGES` in the `data_files` specification of the
setup.py file was interpreted relative to the python site-packages
directory. The fix for this is simple: use `/capstone` instead of an
absolute path for `SITE_PACKAGES`.
2016-10-03 10:50:08 +08:00
..
capstone python: cast skipdata function inside binding to simplify the API 2016-10-02 01:35:28 +08:00
prebuilt python: do not include msvcr120.dll because we can static compile it 2015-02-04 10:34:28 +08:00
pyx Fix a bug in Cython due to renaming 2015-04-28 13:55:29 +08:00
.gitignore Update building script to copy source files to build directory if missing. 2015-01-26 17:29:54 +01:00
LICENSE.TXT python: add LICENSE & PKG-INFO for Python module 2015-01-30 14:45:33 +08:00
Makefile Fix error return code 2016-06-29 11:08:13 -04:00
MANIFEST.in Added a missed dependency to MANIFEST.in to allow packaging of C src in the sdist. 2016-03-04 08:06:05 -08:00
PKG-INFO.src This adds M68K support to Capstone 2015-10-02 20:47:00 +02:00
PKG-INFO.win This adds M68K support to Capstone 2015-10-02 20:47:00 +02:00
README.pypi-src python: update README.pypi-src 2015-05-15 17:02:47 +08:00
README.pypi-win python: update PyPi packages installation doc 2015-05-15 16:59:09 +08:00
README.TXT python: rename test.py to test_basic.py 2015-06-03 22:14:59 +08:00
setup_cython.py This adds M68K support to Capstone 2015-10-02 20:47:00 +02:00
setup.py python-bindings: fix setup.py for wheel installation 2016-10-03 10:50:08 +08:00
test_all.py This adds M68K support to Capstone 2015-10-02 20:47:00 +02:00
test_arm64.py python: add access field for ARM64 2016-04-12 13:42:07 +08:00
test_arm.py arm: treat ARM address as unsigned 2016-09-04 00:13:50 +09:00
test_basic.py Add m68k to the general Python tests. 2016-06-14 13:35:02 +02:00
test_customized_mnem.py python: a minor fix for test_customized_mnem.py 2015-04-27 12:56:31 +08:00
test_detail.py Add m68k to the general Python tests. 2016-06-14 13:35:02 +02:00
test_lite.py Add m68k to the general Python tests. 2016-06-14 13:35:02 +02:00
test_m68k.py Merge pull request #696 from emoon/m68k-reg-read-write 2016-08-11 11:22:48 +08:00
test_mips.py python: update Mips modes to CS_MODE_MIPS32 & CS_MODE_MIPS64 2014-11-13 11:42:38 +08:00
test_ppc.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
test_skipdata.py python: cast skipdata function inside binding to simplify the API 2016-10-02 01:35:28 +08:00
test_sparc.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
test_systemz.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
test_x86.py Use and test syntax against None in all_tests. 2016-06-13 12:25:24 +02:00
test_xcore.py python: clean up test_*.py 2015-04-27 11:51:48 +08:00
xprint.py python: support option CS_OPT_MNEMONIC 2015-04-27 11:34:44 +08:00

0. This documentation explains how to install Python binding for Capstone
   from source. If you want to install it from PyPi package, see the below
   docs instead:

   - README.pypi-src: How to compile the Capstone core & install binding
     at the same time from PyPi package "capstone"

   - README.pypi-win: How to install binding for Windows from PyPi package
     "capstone-windows". Note that this package already has prebuilt core
     inside, so no compilation is needed.

1. To install pure Python binding on *nix, run the command below:

		$ sudo make install

   To install Python3 binding package, run the command below:
   (Note: this requires python3 installed in your machine)

		$ sudo make install3

2. For better Python performance, install cython-based binding with:

		$ sudo make install_cython

	Note that this requires cython installed in your machine first.
	To install cython, see section 3 below.
	
3. To install cython, you have to ensure that the header files
   and the static library for Python are installed beforehand.

	E.g. on Ubuntu, do:

		$ sudo apt-get install python-dev

	Depending on if you already have pip or easy_install
	installed, install cython with either:

		$ sudo pip install cython
	or:
		$ sudo easy_install cython

	NOTE: Depending on your distribution you might also be able to
	      install the required cython version using your repository.

	E.g. on Ubuntu, do:
	
		$ sudo apt-get install cython

	However, our cython-based binding requires cython version 0.19 or newer,
	but sometimes distributions only provide older version. Make sure to
	verify the current installed version before going into section 2 above.
	
	E.g, on Ubuntu, you can verify the current cython version with:

		$ apt-cache policy cython

	Which should at least print version 0.19


This directory contains some test code to show how to use Capstone API.

- test_basic.py
  This code shows the most simple form of API where we only want to get basic
  information out of disassembled instruction, such as address, mnemonic and
  operand string.

- test_lite.py
  Similarly to test_basic.py, but this code shows how to use disasm_lite(), a lighter
  method to disassemble binary. Unlike disasm() API (used by test_basic.py), which returns
  CsInsn objects, this API just returns tuples of (address, size, mnemonic, op_str).

  The main reason for using this API is better performance: disasm_lite() is at least
  20% faster than disasm(). Memory usage is also less. So if you just need basic
  information out of disassembler, use disasm_lite() instead of disasm().

- test_detail.py:
  This code shows how to access to architecture-neutral information in disassembled
  instructions, such as implicit registers read/written, or groups of instructions
  that this instruction belong to.

- test_<arch>.py
  These code show how to access architecture-specific information for each
  architecture.


2. To install Python binding on Windows:

Recommended method:

	Use the Python module installer for 32/64 bit Windows from:

		http://www.capstone-engine.org/download.html


Manual method:

	If the module installer fails to locate your Python install, or if you have
	additional Python installs (e.g. Anaconda / virtualenv), run the following
	command in command prompt:

		C:\> C:\location_to_python\python.exe setup.py install

	Next, copy capstone.dll from the 'Core engine for Windows' package available
	on the same Capstone download page and paste it in the path:

		C:\location_to_python\Lib\site-packages\capstone\