New port: security/py-pyvex

PyVEX provides an interface that translates binary code into the VEX
intermediate represenation (IR).

WWW: https://github.com/angr/pyvex

PR:		244562
This commit is contained in:
Mateusz Piotrowski 2020-03-03 00:21:33 +00:00
parent f4ac01ef68
commit eec85f9b32
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=527657
6 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,42 @@
# $FreeBSD$
PORTNAME= pyvex
PORTVERSION= 8.20.1.7
CATEGORIES= security devel python
MASTER_SITES= CHEESESHOP
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
MAINTAINER= 0mp@FreeBSD.org
COMMENT= Python interface to libVEX and VEX IR
LICENSE= BSD2CLAUSE GPLv2+ GPLv3
LICENSE_COMB= multi
LICENSE_FILE_BSD2CLAUSE= ${WRKSRC}/LICENSE
LICENSE_FILE_GPLv2+ = ${WRKSRC}/vex/LICENSE.GPL
LICENSE_FILE_GPLv3= ${WRKSRC}/pyvex_c/LICENSE
BUILD_DEPENDS= ${_MY_DEPENDS}
RUN_DEPENDS= ${_MY_DEPENDS} \
${PYTHON_PKGNAMEPREFIX}archinfo>0:devel/py-archinfo@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}future>0:devel/py-future@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}pycparser>0:devel/py-pycparser@${PY_FLAVOR}
USES= gmake localbase python:3.5+
USE_CSTD= c99
USE_PYTHON= autoplist distutils
MAKE_ENV= EXTRA_CFLAGS="${CFLAGS}"
_MY_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cffi>=1.0.3:devel/py-cffi@${PY_FLAVOR}
post-patch:
@${REINPLACE_CMD} -e 's|%%CFLAGS%%|${CFLAGS}|g' \
-e 's|%%LDFLAGS%%|${LDFLAGS}|g' \
${WRKSRC}/pyvex_c/Makefile
@${REINPLACE_CMD} -e 's|%%MAKE_JOBS_NUMBER%%|${MAKE_JOBS_NUMBER}|g' \
${WRKSRC}/setup.py
post-install:
@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/${PORTNAME}/lib/lib${PORTNAME}.so
.include <bsd.port.mk>

View File

@ -0,0 +1,3 @@
TIMESTAMP = 1583168013
SHA256 (pyvex-8.20.1.7.tar.gz) = 16d84ffb61d70d735861599d9f8cb21c33a22cbc9852de4acaa6569991a2e1ce
SIZE (pyvex-8.20.1.7.tar.gz) = 1729320

View File

@ -0,0 +1,28 @@
--- pyvex_c/Makefile.orig 2019-04-16 21:08:49 UTC
+++ pyvex_c/Makefile
@@ -4,6 +4,11 @@ ifeq ($(UNAME), Darwin)
STATIC_LIBRARY_FILE=libpyvex.a
LDFLAGS=-Wl,-install_name,$(LIBRARY_FILE)
endif
+ifeq ($(UNAME), FreeBSD)
+ LIBRARY_FILE=libpyvex.so
+ STATIC_LIBRARY_FILE=libpyvex.a
+ LDFLAGS=-Wl,-soname,$(LIBRARY_FILE) %%LDFLAGS%%
+endif
ifeq ($(UNAME), Linux)
LIBRARY_FILE=libpyvex.so
STATIC_LIBRARY_FILE=libpyvex.a
@@ -27,10 +32,10 @@ sp +=
qs = $(subst ?,$(sp),$1)
sq = $(subst $(sp),?,$1)
-CC=gcc
-AR=ar
+CC?=gcc
+AR?=ar
INCFLAGS=-I "$(VEX_INCLUDE_PATH)"
-CFLAGS=-g -O2 -Wall -shared -fPIC -std=c99 $(INCFLAGS)
+CFLAGS=-g %%CFLAGS%% -Wall -shared -fPIC $(INCFLAGS)
OBJECTS=pyvex.o logging.o analysis.o postprocess.o
HEADERS=pyvex.h

View File

@ -0,0 +1,28 @@
--- setup.py.orig 2020-01-08 00:58:26 UTC
+++ setup.py
@@ -73,10 +73,8 @@ def _build_vex():
e['MULTIARCH'] = '1'
e['DEBUG'] = '1'
- cmd1 = ['nmake', '/f', 'Makefile-msvc', 'all']
- cmd2 = ['make', '-f', 'Makefile-gcc', '-j', str(multiprocessing.cpu_count()), 'all']
- cmd3 = ['gmake', '-f', 'Makefile-gcc', '-j', str(multiprocessing.cpu_count()), 'all']
- for cmd in (cmd1, cmd2, cmd3):
+ cmd3 = ['gmake', '-f', 'Makefile-gcc', '-j', '%%MAKE_JOBS_NUMBER%%', 'all']
+ for cmd in (cmd3,):
try:
if subprocess.call(cmd, cwd=VEX_PATH, env=e) == 0:
break
@@ -91,10 +89,8 @@ def _build_pyvex():
e['VEX_INCLUDE_PATH'] = os.path.join(VEX_PATH, 'pub')
e['VEX_LIB_FILE'] = os.path.join(VEX_PATH, 'libvex.lib')
- cmd1 = ['nmake', '/f', 'Makefile-msvc']
- cmd2 = ['make', '-j', str(multiprocessing.cpu_count())]
- cmd3 = ['gmake', '-j', str(multiprocessing.cpu_count())]
- for cmd in (cmd1, cmd2, cmd3):
+ cmd3 = ['gmake', '-j', '%%MAKE_JOBS_NUMBER%%']
+ for cmd in (cmd3,):
try:
if subprocess.call(cmd, cwd='pyvex_c', env=e) == 0:
break

View File

@ -0,0 +1,11 @@
--- vex/Makefile-gcc.orig 2020-03-02 17:34:06 UTC
+++ vex/Makefile-gcc
@@ -44,7 +44,7 @@ CFLAGS := -Ipub -Ipriv \
ifeq ($(DEBUG),1)
CFLAGS += -g
else
-CFLAGS += -O2
+#CFLAGS += -O2
endif
# These are a separate set of defines that compile for parallel environments

View File

@ -0,0 +1,4 @@
PyVEX provides an interface that translates binary code into the VEX
intermediate represenation (IR).
WWW: https://github.com/angr/pyvex