From 6448c5034bbdb089bdac657b05912fc6f82f6bb7 Mon Sep 17 00:00:00 2001 From: Marcelo Duarte Date: Wed, 29 Dec 2021 09:24:52 -0300 Subject: [PATCH] LIEF 0.11.5 - new package --- mingw-w64-python-lief/PKGBUILD | 83 ++++++++++++++++++++++++++++++++ mingw-w64-python-lief/lief.patch | 44 +++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 mingw-w64-python-lief/PKGBUILD create mode 100755 mingw-w64-python-lief/lief.patch diff --git a/mingw-w64-python-lief/PKGBUILD b/mingw-w64-python-lief/PKGBUILD new file mode 100644 index 0000000000..234a6b037e --- /dev/null +++ b/mingw-w64-python-lief/PKGBUILD @@ -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" +} + diff --git a/mingw-w64-python-lief/lief.patch b/mingw-w64-python-lief/lief.patch new file mode 100755 index 0000000000..13a7cb1602 --- /dev/null +++ b/mingw-w64-python-lief/lief.patch @@ -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():