Date: Sunday, June 12, 2016 @ 20:46:08 Author: anthraxx Revision: 179724
upgpkg: distorm 3.3.4-1 Added: distorm/trunk/build.patch distorm/trunk/python3.patch Modified: distorm/trunk/PKGBUILD ---------------+ PKGBUILD | 63 ++++++++++++++++++++++++++++++++++++++++---------------- build.patch | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ python3.patch | 40 +++++++++++++++++++++++++++++++++++ 3 files changed, 146 insertions(+), 18 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-06-12 15:47:48 UTC (rev 179723) +++ PKGBUILD 2016-06-12 18:46:08 UTC (rev 179724) @@ -2,39 +2,66 @@ # Contributor: Mike Sampson <mike at sambodata dot com> # Contributor: Dmitry A. Ilyashevich <[email protected]> -pkgname=distorm -pkgver=3.3.3 +pkgbase=distorm +pkgname=('distorm' 'python-distorm' 'python2-distorm') +pkgver=3.3.4 pkgrel=1 -pkgdesc="Powerful disassembler library for x86/AMD64" +pkgdesc='Powerful disassembler library for x86/AMD64' url='https://github.com/gdabah/distorm' arch=('i686' 'x86_64') license=('BSD') -depends=('python2') -source=(${pkgname}-${pkgver}.tar.gz::https://github.com/gdabah/distorm/archive/v${pkgver}.tar.gz) -sha512sums=('abc37d050efcb7fd7c6e0f1ef055537f06059528fb48a07d159621adca8d905ee3a44b394d75e10aa69f2429fb1023e9282b349281acb3a9474148f195306fbf') +makedepends=('python' 'python2' 'glibc') +options=('staticlibs') +source=(${pkgname}-${pkgver}.tar.gz::https://github.com/gdabah/distorm/archive/v${pkgver}.tar.gz + python3.patch + build.patch) +sha512sums=('172bb1a9a3f92089daf140fd019c94cf3b63f646b78e7aa527640819f418b1e3df2e2d727a76863a7800e6e3735c404054aeb48fceeec7a94f95480b89883b90' + '91bfa096e8de1c494a84e781aa27c48a1063239c4d1e1c746d32fde9273e79769af37240559341edf6547055fbf80698339474ad77c3581c01d4057ba5cef0ea' + 'f7ec10c577715b3c8907dc999652de377f21b33acb78954544f920bc65be7e19d13368cf9915be10a5162c149cb9b48816f52f0258d219a3ea1cf26bb63ed8c2') prepare() { - cd ${pkgname}-${pkgver} - sed -r 's|(install)|\1 -D|g' -i make/linux/Makefile - sed -r 's|/usr/local/lib|${DESTDIR}/usr/lib/${TARGET}|g' -i make/linux/Makefile - sed -r 's|(CFLAGS )=|\1+=|g' -i make/linux/Makefile - sed -e '1i#!/usr/bin/env python2' -i python/distorm3/sample.py + (cd ${pkgbase}-${pkgver} + patch -p1 < "${srcdir}/build.patch" + patch -p1 < "${srcdir}/python3.patch" + ) + cp -ra ${pkgbase}-${pkgver}{,-py2} + sed -e '1i#!/usr/bin/env python' -i ${pkgbase}-${pkgver}/python/distorm3/sample.py + sed -e '1i#!/usr/bin/env python2' -i ${pkgbase}-${pkgver}-py2/python/distorm3/sample.py } build() { - cd ${pkgname}-${pkgver} - make -C make/linux + (cd ${pkgbase}-${pkgver} + make -C make/linux + python setup.py build + ) + (cd ${pkgbase}-${pkgver}-py2 + python2 setup.py build + ) } -package() { - cd ${pkgname}-${pkgver} +package_distorm() { + depends=('glibc') + cd ${pkgbase}-${pkgver} + make -C make/linux PREFIX=/usr DESTDIR="${pkgdir}" install + install -Dm 644 include/*.h -t "${pkgdir}/usr/include" + install -Dm 644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} - make -C make/linux DESTDIR="${pkgdir}" install - python2 setup.py install --root="${pkgdir}" -O1 +package_python-distorm() { + depends=('python') + cd ${pkgbase}-${pkgver} + python setup.py install --root="${pkgdir}" -O1 --skip-build + install -Dm 755 python/distorm3/sample.py "${pkgdir}/usr/bin/disasm" + install -Dm 644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} +package_python2-distorm() { + depends=('python2') + cd ${pkgbase}-${pkgver}-py2 + python2 setup.py install --root="${pkgdir}" -O1 --skip-build install -Dm 755 python/distorm3/sample.py "${pkgdir}/usr/bin/disasm" - install -Dm 644 include/*.h -t "${pkgdir}/usr/include" install -Dm 644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + mv "${pkgdir}/usr/bin/disasm"{,-py2} } # vim: ts=2 sw=2 et: Added: build.patch =================================================================== --- build.patch (rev 0) +++ build.patch 2016-06-12 18:46:08 UTC (rev 179724) @@ -0,0 +1,61 @@ +From 26d3959ac90cfbecd36458fee2fbb67807457d54 Mon Sep 17 00:00:00 2001 +From: anthraxx <[email protected]> +Date: Mon, 6 Jun 2016 00:03:20 +0200 +Subject: [PATCH] more distribution friendly Makefile improvements + +- append CFLAGS instead of force-set it, this was distributions + can also add their own CFLAGS in addition (this is very common). +- introduce LDFLAGS so distributions can set their own additional + flags for the linker and append instead of set (this is very common) +- replace static /usr/local/lib with a PREFIX variable with default + value of /usr/local so a distribution can easily use PREFIX=/usr + (this is also common) +- introduce DESTDIR for distribution wide packaging as they build in + chroots and deploy into a special directory structure that will later + put into a tarball and lands in a distribution package. + f.e. DESTDIR="/build/package" (this is also common for packaging) +- adding -D to install call to create all leading components of the + destination. This is very important if the DESTDIR is set for + packaging the therefor the structure does not yet exists. This will + then basically freate the directory structure. in case DESTDIR is not + used and /usr/local/lib f.e. already exists this will do nothing + this is highly common to do it this way. + We add the ${TARGET} to the end because we use the -D parameter and + therefor we need to also pass the resulting filename +--- + make/linux/Makefile | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/make/linux/Makefile b/make/linux/Makefile +index c2ad39e..d142bb4 100644 +--- a/make/linux/Makefile ++++ b/make/linux/Makefile +@@ -5,7 +5,10 @@ + TARGET = libdistorm3.so + COBJS = ../../src/mnemonics.o ../../src/wstring.o ../../src/textdefs.o ../../src/prefix.o ../../src/operands.o ../../src/insts.o ../../src/instructions.o ../../src/distorm.o ../../src/decoder.o + CC = gcc +-CFLAGS = -fPIC -O2 -Wall -DSUPPORT_64BIT_OFFSET -DDISTORM_STATIC ++CFLAGS += -fPIC -O2 -Wall -DSUPPORT_64BIT_OFFSET -DDISTORM_STATIC ++LDFLAGS += -shared ++PREFIX = /usr/local ++DESTDIR = + + all: clib + +@@ -13,11 +16,11 @@ clean: + /bin/rm -rf ../../src/*.o ${TARGET} ../../distorm3.a ./../*.o + + clib: ${COBJS} +- ${CC} ${CFLAGS} ${VERSION} ${COBJS} -shared -o ${TARGET} ++ ${CC} ${CFLAGS} ${VERSION} ${COBJS} ${LDFLAGS} -o ${TARGET} + ar rs ../../distorm3.a ${COBJS} + + install: libdistorm3.so +- install -s ${TARGET} /usr/local/lib ++ install -D -s ${TARGET} ${DESTDIR}/${PREFIX}/lib/${TARGET} + @echo "... running ldconfig might be smart ..." + + .c.o: +-- +2.8.3 + Added: python3.patch =================================================================== --- python3.patch (rev 0) +++ python3.patch 2016-06-12 18:46:08 UTC (rev 179724) @@ -0,0 +1,40 @@ +From 28b3af2136bcc465830631afa9357fbf73048e52 Mon Sep 17 00:00:00 2001 +From: gil_dabah <[email protected]> +Date: Sat, 4 Jun 2016 17:37:40 +0300 +Subject: [PATCH] Fix for cross Python support. + +--- + python/distorm3/__init__.py | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/python/distorm3/__init__.py b/python/distorm3/__init__.py +index c8f881c..176677b 100644 +--- a/python/distorm3/__init__.py ++++ b/python/distorm3/__init__.py +@@ -537,6 +537,15 @@ def DecodeGenerator(codeOffset, code, dt): + p_result = byref(result) + instruction_off = 0 + ++ # Support cross Python compatibility ++ toUnicode = lambda s: s ++ spaceCh = b" " ++ if sys.version_info[0] >= 3: ++ if sys.version_info[1] > 0: ++ toUnicode = lambda s: s.decode() ++ else: ++ spaceCh = " " ++ + while codeLen > 0: + + usedInstructionsCount = c_uint(0) +@@ -553,8 +562,8 @@ def DecodeGenerator(codeOffset, code, dt): + di = result[index] + asm = di.mnemonic.p + if len(di.operands.p): +- asm += b" " + di.operands.p +- pydi = (di.offset, di.size, asm, di.instructionHex.p) ++ asm += spaceCh + di.operands.p ++ pydi = (di.offset, di.size, toUnicode(asm), toUnicode(di.instructionHex.p)) + instruction_off += di.size + yield pydi +
