mcsema
mcsema copied to clipboard
Building in WSLv1 hangs at CPackRPM:
WSLv1 with Ubuntu 20.04, building follow instructions, and hangs at command ./remill/scripts/build.sh --llvm-version 9 --download-dir ./
.
Last logs:
-- Installing: /home/xxx/mcsema/remill-build/install/usr/local/bin/remill-lift-9
-- Installing: /home/xxx/mcsema/remill-build/install/usr/local/lib/cmake/remill/remillTargets.cmake
-- Installing: /home/xxx/mcsema/remill-build/install/usr/local/lib/cmake/remill/remillTargets-relwithdebinfo.cmake
+ cpack -D REMILL_DATA_PATH=/home/xxx/mcsema/remill-build/install -R ec3dee7b42fabbd0c84d429f3d5f028b03dae56.eec3dee --config /home/xxx/mcsema/remill/packaging/main.cmake
CPack: Create package using TGZ
CPack: Install projects
CPack: - Install directory: /home/xxx/mcsema/remill-build/install
CPack: Create package
CPack: - package: /home/xxx/mcsema/remill-build/remill-ec3dee7b42fabbd0c84d429f3d5f028b03dae56.eec3dee-x86_64.tar.gz generated.
CPack: Create package using DEB
CPack: Install projects
CPack: - Install directory: /home/xxx/mcsema/remill-build/install
CPack: Create package
CMake Warning (dev) at /usr/share/cmake-3.16/Modules/Internal/CPack/CPackDeb.cmake:383 (message):
CPackDeb: Debian package versioning ([<epoch>:]<version>[-<release>])
should confirm to "^([0-9]+:)?[0-9][A-Za-z0-9.+~-]*$" regex in order to
satisfy Debian packaging rules.
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackDeb.cmake:763 (cpack_deb_prepare_package_vars)
This warning is for project developers. Use -Wno-dev to suppress it.
-- CPACK_DEBIAN_PACKAGE_DEPENDS not set, the package will have no dependencies.
CPack: - package: /home/xxx/mcsema/remill-build/remill-ec3dee7b42fabbd0c84d429f3d5f028b03dae56.eec3dee-x86_64.deb generated.
CPack: Create package using RPM
CPack: Install projects
CPack: - Install directory: /home/xxx/mcsema/remill-build/install
CPack: Create package
CPackRPM: Will use GENERATED spec file: /home/xxx/mcsema/remill-build/_CPack_Packages/RPM/SPECS/remill.spec
Any suggestions?
Hello @xrkk
thanks for the bug report! The packages are not really required to build mcsema, so as a quick workaround you could comment out the Package
function in the remill build script.
It does seem like the packaging is causing the script to get stuck; in order to troubleshoot this, we could try to restart the packaging procedure manually so that we can increase verbosity of the CPack build step:
1 - Install remill
Here we create a temporary directory where we can install the library using the DESTDIR environment variable:
mkdir remill_install
export DESTDIR="$(realpath remill_install)"
cmake --build remill_build --target install
2 - Run CPack
The CPack project only needs the path where remill was installed and the library version. For this test, we will just pass a dummy version field
cpack --trace-expand \
-D REMILL_DATA_PATH="${DESTDIR}" \
-R 1.0.0 \
--config remill_source_dir/packaging/main.cmake
The log should help us get more insight on what is happening. An additional flag that can come in useful, if the log does not seem to produce enough output, is --debug
.
Comment out Package
function in remill build script does making building process pass. Thank you.
When run cpack --trace-expand -D REMILL_DATA_PATH=remill_install -R 1.0.0 --config remill/packaging/main.cmake --debug
, last output:
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1756): if(CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE )
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1763): if(CPACK_RPM_USER_BINARY_SPECFILE )
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1768): else()
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1770): message(CPackRPM: Will use GENERATED spec file: /home/xxx/mcsema/_CPack_Packages/RPM/SPECS/remill.spec )
CPackRPM: Will use GENERATED spec file: /home/xxx/mcsema/_CPack_Packages/RPM/SPECS/remill.spec
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1772): configure_file(/home/xxx/mcsema/_CPack_Packages/RPM/SPECS/remill.spec.in /home/xxx/mcsema/_CPack_Packages/RPM/SPECS/remill.spec @ONLY )
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1775): if(NOT GENERATE_SPEC_PARTS )
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1776): if(RPMBUILD_EXECUTABLE )
/usr/share/cmake-3.16/Modules/Internal/CPack/CPackRPM.cmake(1778): execute_process(COMMAND /usr/bin/rpmbuild -bb --define _topdir /home/xxx/mcsema/_CPack_Packages/RPM --buildroot %_topdir/remill-1.0.0-x86_64 --target x86_64 /home/xxx/mcsema/_CPack_Packages/RPM/SPECS/remill.spec WORKING_DIRECTORY /home/xxx/mcsema/_CPack_Packages/RPM/remill-1.0.0-x86_64 RESULT_VARIABLE CPACK_RPMBUILD_EXEC_RESULT ERROR_FILE /home/xxx/mcsema/_CPack_Packages/RPM/rpmbuildremill.err OUTPUT_FILE /home/xxx/mcsema/_CPack_Packages/RPM/rpmbuildremill.out )
Still hangs. (I executed above command right after Step 2
provided in the Readme).
Hello @xrkk
thanks for testing this! It does seem to be a problem related to the rpmbuild
execution. Is there anything of value logged into the stderr and stdout files?
Full stdout list: https://gist.github.com/xrkk/9703a4b9d309363cc13f1fba8dad461d
I searched stdout for keyword error
and found last line: CPACK_RPMBUILD_EXEC_RESULT ERROR_FILE /home/xxx/mcsema/_CPack_Packages/RPM/rpmbuildremill.err OUTPUT_FILE /home/xxx/mcsema/_CPack_Packages/RPM/rpmbuildremill.out )
, but both rpmbuildremill.err
and rpmbuildremill.out
are empty files with no content.
And 56 Warning
in the log.
BTW: the hanging process can't be terminated with Ctrl+C
.