LIEF 0.11.5 - new package

This commit is contained in:
Marcelo Duarte
2021-12-29 09:24:52 -03:00
parent a1041a822d
commit 6448c5034b
2 changed files with 127 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
# Maintainer: Marcelo Duarte https://github.com/marcelotduarte
_realname=lief
pkgbase=mingw-w64-python-${_realname}
pkgname=${MINGW_PACKAGE_PREFIX}-python-${_realname}
pkgdesc="LIEF - Library to Instrument Executable Formats (mingw-w64)"
pkgver=0.11.5
pkgrel=1
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clang32')
url="https://github.com/lief-project/LIEF/"
license=("Apache-2.0")
depends=("${MINGW_PACKAGE_PREFIX}-python")
makedepends=("${MINGW_PACKAGE_PREFIX}-ccache"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
"${MINGW_PACKAGE_PREFIX}-python"
"${MINGW_PACKAGE_PREFIX}-python-setuptools")
options=('staticlibs' '!strip' '!debug')
source=(https://github.com/lief-project/LIEF/archive/${pkgver}.tar.gz
lief.patch)
sha256sums=('6d6d57304a56850958e4ce54f3da2ea2b9eb856ccbab61c6cde9cba15d7c9da5'
'c3734f00930a3ad5942367eb69fe8b6db9652205eebe1936b8ca5596cd4ff926')
prepare() {
cd "${srcdir}/LIEF-${pkgver}"
patch -p1 -i "${srcdir}/lief.patch"
${MINGW_PREFIX}/bin/python setup.py egg_info
}
build() {
echo "Building for Python - ${MSYSTEM}"
cd "${srcdir}/LIEF-${pkgver}"
[[ -d build-${MSYSTEM} ]] && rm -rf build-${MSYSTEM}
mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM}
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX" \
${MINGW_PREFIX}/bin/cmake.exe -LAH \
-G"Ninja" \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DLIEF_PYTHON_API=ON \
-DLIEF_DISABLE_FROZEN=OFF \
-DCMAKE_SKIP_RPATH=ON \
-DLIEF_INSTALL_PYTHON=ON \
-DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python.exe \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS=OFF \
-DCMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS=OFF \
-DLIEF_ELF=off -DLIEF_MACHO=off -DLIEF_OAT=off -DLIEF_DEX=off -DLIEF_VDEX=off -DLIEF_ART=off \
${_conf} \
..
#-DBUILD_SHARED_LIBS:BOOL=OFF
#-DBUILD_STATIC_LIBS:BOOL=OFF
mkdir -p api/python/lief
MSYS2_ARG_CONV_EXCL="--include-paths=;--typesystem-paths=" \
${MINGW_PREFIX}/bin/cmake.exe --build .
MSYS2_ARG_CONV_EXCL="--include-paths=;--typesystem-paths=" \
${MINGW_PREFIX}/bin/cmake.exe --build . --target pyLIEF --config Release
}
package() {
cd "${srcdir}/LIEF-${pkgver}"
DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake.exe --install build-${MSYSTEM}
local _PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
for _f in "${pkgdir}${MINGW_PREFIX}"/lib/pkgconfig/*.pc; do
sed -s "s|${_PREFIX_WIN}|${MINGW_PREFIX}|g" -i "${_f}"
done
# Install egg-info and .pyd
_pythonpath=`${MINGW_PREFIX}/bin/python -c "from sysconfig import get_path; print(get_path('platlib'))"`
_site_packages=${pkgdir}$(cygpath ${_pythonpath})
mkdir -p $_site_packages
cp -r ${_realname}.egg-info $_site_packages/${_realname}-${pkgver}
cp build-${MSYSTEM}/api/python/lief.pyd $_site_packages/lief.pyd
install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
}

View File

@@ -0,0 +1,44 @@
diff --git a/cmake/FindPythonLibsNew.cmake b/cmake/FindPythonLibsNew.cmake
index 919a384..931d49e 100644
--- a/cmake/FindPythonLibsNew.cmake
+++ b/cmake/FindPythonLibsNew.cmake
@@ -141,7 +141,7 @@ string(REGEX REPLACE "\\\\" "/" PYTHON_PREFIX ${PYTHON_PREFIX})
string(REGEX REPLACE "\\\\" "/" PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_DIR})
string(REGEX REPLACE "\\\\" "/" PYTHON_SITE_PACKAGES ${PYTHON_SITE_PACKAGES})
-if(CMAKE_HOST_WIN32)
+if(CMAKE_HOST_WIN32 AND NOT (MSYS OR MINGW))
set(PYTHON_LIBRARY
"${PYTHON_PREFIX}/libs/Python${PYTHON_LIBRARY_SUFFIX}.lib")
diff --git a/setup.py b/setup.py
index 79e91b6..1f32d2f 100644
--- a/setup.py
+++ b/setup.py
@@ -201,7 +201,7 @@ class BuildLibrary(build_ext):
]
- if platform.system() == "Windows":
+ if platform.system() == "Windows" and not sysconfig.get_platform().startswith("mingw"):
from setuptools import msvc
cmake_args += [
@@ -241,7 +241,7 @@ class BuildLibrary(build_ext):
if self.distribution.doc:
targets['doc'] = "lief-doc"
- if platform.system() == "Windows":
+ if platform.system() == "Windows" and not sysconfig.get_platform().startswith("mingw"):
build_cmd = ['cmake', '--build', '.', '--target', "lief_samples"] + build_args
#log.info(" ".join(build_cmd))
@@ -299,7 +299,7 @@ class BuildLibrary(build_ext):
libsuffix = pylief_dst.split(".")[-1]
pylief_path = os.path.join(cmake_library_output_directory, "{}.{}".format(PACKAGE_NAME, libsuffix))
- if platform.system() == "Windows":
+ if platform.system() == "Windows" and not sysconfig.get_platform().startswith("mingw"):
pylief_base = pathlib.Path(cmake_library_output_directory) / "Release" / "api" / "python"
pylief_path = pylief_base / "Release" / "{}.{}".format(PACKAGE_NAME, libsuffix)
if not pylief_path.is_file():