Raspberry PI
Hello!
I remember an old (I'm old too) blog post about the HPCC Systems team building the source code of HPCC-Platform for ARM to make it work on Raspberry PI (an old version now). I remember some plugin/options were disabled to make things happen more quickly.
Now years later, I'm trying to do the same on a R-PI 4 but I'm having some difficulties.
Is there anyone with some documentation/guidance/hints to accomplish this?
(I can build source code on Ubuntu just fine).
Here's an example of something failing at the moment, in HPCC-Platform/system/aeron/aeron-driver/src/main/c/concurrent/aeron_atomic.h:
That concurrent/aeron_atomic64_gcc_c11.h is simply missing.
This is just an example, and I can start ironing one kink at a time, but if there's something out there to help speed things up, that'd be great!
Thanks!
I remember an old (I'm old too) blog post about the HPCC Systems team building the source code of HPCC-Platform for ARM to make it work on Raspberry PI (an old version now). I remember some plugin/options were disabled to make things happen more quickly.
Now years later, I'm trying to do the same on a R-PI 4 but I'm having some difficulties.
Is there anyone with some documentation/guidance/hints to accomplish this?
(I can build source code on Ubuntu just fine).
Here's an example of something failing at the moment, in HPCC-Platform/system/aeron/aeron-driver/src/main/c/concurrent/aeron_atomic.h:
- Code: Select all
#if defined(AERON_COMPILER_GCC)
#if defined(AERON_CPU_X64)
#include <concurrent/aeron_atomic64_gcc_x86_64.h>
#else
#include <concurrent/aeron_atomic64_gcc_c11.h>
#endif
That concurrent/aeron_atomic64_gcc_c11.h is simply missing.
This is just an example, and I can start ironing one kink at a time, but if there's something out there to help speed things up, that'd be great!
Thanks!
- lpezet
- Posts: 85
- Joined: Wed Sep 10, 2014 3:14 am
I made some progress but still can't build everything in the end.
I had to skip a bunch of (I think) optional stuff for now.
Here's where I'm at right now.
I have "HPCC-Platform" folder with all the source code, and "HPCC-Platform-Build" folder as my build folder.
In my build folder, I run the following:
At that point, I get errors like:
I don't know if I did something wrong before all this, but the linker needs the "-latomic" flag for things to compile in "jlib". For now I edited the CMakeLists.txt in system/jlib like so:
I'm just trying to make it work right now (not trying to detect things or use some EXTRA flags to make it more flexible for example).
Cleaning things up (deleting build folder and re-creating it) and running the same exact cmake and make from above (with VERBOSE=1), I end up with this kind of error:
Not sure how to deal with that right now...
I had to skip a bunch of (I think) optional stuff for now.
Here's where I'm at right now.
I have "HPCC-Platform" folder with all the source code, and "HPCC-Platform-Build" folder as my build folder.
In my build folder, I run the following:
- Code: Select all
cmake -DUSE_AWS=OFF -DUSE_AERON=OFF -DUSE_AZURE=OFF -DUSE_CASSANDRA=OFF -DUSE_ELASTICSTACK_CLIENT=OFF ../HPCC-Platform/
make -j6
At that point, I get errors like:
- Code: Select all
/usr/bin/ld: CMakeFiles/jlib.dir/jstats.cpp.o: in function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
/usr/include/c++/10/bits/atomic_base.h:426: undefined reference to `__atomic_load_8'
I don't know if I did something wrong before all this, but the linker needs the "-latomic" flag for things to compile in "jlib". For now I edited the CMakeLists.txt in system/jlib like so:
- Code: Select all
diff --git a/system/jlib/CMakeLists.txt b/system/jlib/CMakeLists.txt
index f66c3173b..ac7847607 100644
--- a/system/jlib/CMakeLists.txt
+++ b/system/jlib/CMakeLists.txt
@@ -235,6 +235,7 @@ elseif (("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin" ))
else ()
target_link_libraries ( jlib rt )
endif ()
+target_link_libraries ( jlib atomic )
if (NOT PLUGIN)
if (WIN32)
I'm just trying to make it work right now (not trying to detect things or use some EXTRA flags to make it more flexible for example).
Cleaning things up (deleting build folder and re-creating it) and running the same exact cmake and make from above (with VERBOSE=1), I end up with this kind of error:
- Code: Select all
cd /media/pi/Data/HPCC/HPCC-Platform-Build/system/jlib && /usr/bin/cmake -E cmake_link_script CMakeFiles/jlib.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -frtti -fPIC -fmessage-length=0 -Werror=format -Wformat-security -Wformat-nonliteral -pthread -Wuninitialized -Werror=return-type -Werror=format-nonliteral -Wno-psabi -Wparentheses -std=c++11 -Wall -Wextra -Wno-switch -Wno-unused-parameter -Werror -Wno-error=delete-non-virtual-dtor -O3 -DNDEBUG -g -fno-inline-functions -g -fno-default-inline -rdynamic -Wl,-z,defs -shared -Wl,-soname,libjlib.so -o ../../Release/libs/libjlib.so CMakeFiles/jlib.dir/jargv.cpp.o CMakeFiles/jlib.dir/jarray.cpp.o CMakeFiles/jlib.dir/javahash.cpp.o CMakeFiles/jlib.dir/jbsocket.cpp.o CMakeFiles/jlib.dir/jbuff.cpp.o CMakeFiles/jlib.dir/jcomp.cpp.o CMakeFiles/jlib.dir/jcrc.cpp.o CMakeFiles/jlib.dir/jdebug.cpp.o CMakeFiles/jlib.dir/jencrypt.cpp.o CMakeFiles/jlib.dir/jexcept.cpp.o CMakeFiles/jlib.dir/jfile.cpp.o CMakeFiles/jlib.dir/jflz.cpp.o CMakeFiles/jlib.dir/jhash.cpp.o CMakeFiles/jlib.dir/jiface.cpp.o CMakeFiles/jlib.dir/jio.cpp.o CMakeFiles/jlib.dir/jiter.cpp.o CMakeFiles/jlib.dir/jkeyboard.cpp.o CMakeFiles/jlib.dir/jlib.cpp.o CMakeFiles/jlib.dir/jlog.cpp.o CMakeFiles/jlib.dir/jlz4.cpp.o CMakeFiles/jlib.dir/jlzma.cpp.o CMakeFiles/jlib.dir/jlzw.cpp.o CMakeFiles/jlib.dir/jmd5.cpp.o CMakeFiles/jlib.dir/jmemleak.cpp.o CMakeFiles/jlib.dir/jmetrics.cpp.o CMakeFiles/jlib.dir/jmisc.cpp.o CMakeFiles/jlib.dir/jmutex.cpp.o CMakeFiles/jlib.dir/jobserve.cpp.o CMakeFiles/jlib.dir/jprop.cpp.o CMakeFiles/jlib.dir/jptree.cpp.o CMakeFiles/jlib.dir/jqueue.cpp.o CMakeFiles/jlib.dir/jregexp.cpp.o CMakeFiles/jlib.dir/jrowstream.cpp.o CMakeFiles/jlib.dir/jsecrets.cpp.o CMakeFiles/jlib.dir/jsem.cpp.o CMakeFiles/jlib.dir/jset.cpp.o CMakeFiles/jlib.dir/jsmartsock.cpp.o CMakeFiles/jlib.dir/jsocket.cpp.o CMakeFiles/jlib.dir/jsort.cpp.o CMakeFiles/jlib.dir/jstats.cpp.o CMakeFiles/jlib.dir/jstream.cpp.o CMakeFiles/jlib.dir/jstring.cpp.o CMakeFiles/jlib.dir/jsuperhash.cpp.o CMakeFiles/jlib.dir/jthread.cpp.o CMakeFiles/jlib.dir/jtime.cpp.o CMakeFiles/jlib.dir/junicode.cpp.o CMakeFiles/jlib.dir/jutil.cpp.o CMakeFiles/jlib.dir/__/globalid/lnuid.cpp.o CMakeFiles/jlib.dir/__/codesigner/codesigner.cpp.o CMakeFiles/jlib.dir/__/codesigner/gpgcodesigner.cpp.o CMakeFiles/jlib.dir/__/security/cryptohelper/cryptocommon.cpp.o CMakeFiles/jlib.dir/__/security/cryptohelper/digisign.cpp.o CMakeFiles/jlib.dir/__/security/cryptohelper/pke.cpp.o CMakeFiles/jlib.dir/__/security/cryptohelper/ske.cpp.o -Wl,-rpath,/media/pi/Data/HPCC/HPCC-Platform-Build/Release/libs::::::::::::::::::::::: ../../Release/libs/liblzma.a ../../Release/libs/liblz4.a ../../Release/libs/liblibbase58.a ../../Release/libs/libyaml.so -ldl -lcrypt /usr/lib/arm-linux-gnueabihf/libssl.so /usr/lib/arm-linux-gnueabihf/libcrypto.so -lrt -latomic
/usr/bin/ld: CMakeFiles/jlib.dir/jarray.cpp.o:(.rodata+0xc): multiple definition of `typeinfo name for CSimpleInterfaceOf<CEmptyClass>'; CMakeFiles/jlib.dir/jargv.cpp.o:(.rodata+0xc): first defined here
/usr/bin/ld: CMakeFiles/jlib.dir/jarray.cpp.o:(.data.rel.ro+0x0): multiple definition of `typeinfo for CSimpleInterfaceOf<CEmptyClass>'; CMakeFiles/jlib.dir/jargv.cpp.o:(.data.rel.ro+0x0): first defined here
/usr/bin/ld: CMakeFiles/jlib.dir/javahash.cpp.o:(.rodata+0x0): multiple definition of `typeinfo name for CSimpleInterfaceOf<CEmptyClass>'; CMakeFiles/jlib.dir/jargv.cpp.o:(.rodata+0xc): first defined here
...bunch more...
collect2: error: ld returned 1 exit status
make[2]: *** [system/jlib/CMakeFiles/jlib.dir/build.make:904: Release/libs/libjlib.so] Error 1
make[2]: Leaving directory '/media/pi/Data/HPCC/HPCC-Platform-Build'
make[1]: *** [CMakeFiles/Makefile2:7830: system/jlib/CMakeFiles/jlib.dir/all] Error 2
make[1]: Leaving directory '/media/pi/Data/HPCC/HPCC-Platform-Build'
make: *** [Makefile:182: all] Error 2
Not sure how to deal with that right now...
- lpezet
- Posts: 85
- Joined: Wed Sep 10, 2014 3:14 am
All this time I was using Raspberry Pi OS...
I just switched to Ubuntu 20.03.3 LTS 64-bits and now using pristine branch candidate-8.4.20.
When when running make, I get:
I just switched to Ubuntu 20.03.3 LTS 64-bits and now using pristine branch candidate-8.4.20.
- Code: Select all
$ cmake -DUSE_AWS=OFF -DUSE_AERON=OFF -DUSE_AZURE=OFF -DUSE_CASSANDRA=OFF -DUSE_JAVA=OFF -DUSE_MYSQL=OFF -DUSE_NUMA=OFF -DUSE_TBB=OFF ../HPCC-Platform/
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at cmake_modules/commonSetup.cmake:42 (cmake_policy):
The OLD behavior for policy CMP0026 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
CMakeLists.txt:145 (include)
-- Found LIBMEMCACHED: /usr/lib/aarch64-linux-gnu/libmemcached.so (Required is at least version "1.0.10")
-- Making Release system
-- 64bit architecture is 1
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
Using compiler: GNU :: 9.3.0 :: ::
-- GLIBC version: 2.31
CMake Warning at cmake_modules/commonSetup.cmake:671 (message):
USE_OPTIONAL set - missing dependencies for optional features will
automatically disable them
Call Stack (most recent call first):
CMakeLists.txt:145 (include)
-- Found Bison v3.5.1
-- Found OpenLDAP: /usr/lib/aarch64-linux-gnu/libldap_r.so
-- Found ICU: /usr/lib/aarch64-linux-gnu/libicuuc.so
-- version: 66 unicode: 13.0
-- Found Libxslt: /usr/lib/aarch64-linux-gnu/libxslt.so
-- Found Libxml2: /usr/lib/aarch64-linux-gnu/libxml2.so
-- Found CBLAS: /usr/lib/aarch64-linux-gnu/libcblas.so
-- Found ZLIB: /usr/lib/aarch64-linux-gnu/libz.so
-- Found libarchive: /usr/lib/aarch64-linux-gnu/libarchive.so
-- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.34.0") found components: regex
-- Found BOOST_REGEX: Boost::regex
BOOST_REGEX_VERSION is 107100
-- BOOST_REGEX enabled
-- Found OPENSSL: /usr/lib/aarch64-linux-gnu/libssl.so
-- Found APR: /usr/lib/aarch64-linux-gnu/libapr-1.so
-- Found APRUTIL: /usr/lib/aarch64-linux-gnu/libaprutil-1.so
-- Looking for dlopen in dl
-- Looking for dlopen in dl - found
-- Looking for crypt in crypt
-- Looking for crypt in crypt - found
-- Found OpenSSL: /usr/lib/aarch64-linux-gnu/libcrypto.so (found suitable version "1.1.1f", minimum required is "1.0.2")
-- Found CURL: /usr/lib/aarch64-linux-gnu/libcurl.so (found version "7.68.0")
CMake Warning (dev) at initfiles/bash/etc/systemd/system/CMakeLists.txt:53 (if):
Policy CMP0054 is not set: Only interpret if() arguments as variables or
keywords when unquoted. Run "cmake --help-policy CMP0054" for policy
details. Use the cmake_policy command to set the policy and suppress this
warning.
Quoted variables like "thor" will no longer be dereferenced when the policy
is set to NEW. Since the policy is not set the OLD behavior will be used.
This warning is for project developers. Use -Wno-dev to suppress it.
-- Process file: dafilesrv.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/dafilesrv
-- Process file: install-init.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/install-init
-- Process file: hpcc-init.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/hpcc-init
-- Process file: hpcc_common.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/hpcc_common
-- Process file: uninstall-init.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/uninstall-init
-- Process file: setupPKI.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/setupPKI
-- Process file: distributePKI.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/distributePKI
-- Process file: safe_copyPKI.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/etc/init.d/safe_copyPKI
-- Process file: bash_postinst.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bash/sbin/bash_postinst
-- Process file: init_dafilesrv.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_dafilesrv
-- Process file: init_eclagent.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_eclagent
-- Process file: init_dali.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_dali
-- Process file: init_thor.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_thor
-- Process file: init_configesp.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_configesp
-- Process file: init_dfuserver.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_dfuserver
-- Process file: init_eclccserver.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_eclccserver
-- Process file: init_eclscheduler.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_eclscheduler
-- Process file: init_esp.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_esp
-- Process file: init_roxie.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_roxie
-- Process file: init_sasha.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_sasha
-- Process file: init_thorslave.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_thorslave
-- Process file: init_toposerver.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/bin/init_toposerver
-- Process file: hpcc_setenv.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/hpcc_setenv
-- Process file: complete-uninstall.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/complete-uninstall.sh
-- Process file: keygen.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/keygen.sh
-- Process file: update-keys
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/update-keys
-- Process file: add_conf_settings.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/add_conf_settings.sh
-- Process file: rm_conf_settings.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/rm_conf_settings.sh
-- Process file: configmgr.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/configmgr
-- Process file: config2mgr.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/config2mgr
-- Process file: install-cluster.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/install-cluster.sh
-- Process file: hpcc-push.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/hpcc-push.sh
-- Process file: hpcc-run.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/hpcc-run.sh
-- Process file: remote-install-engine.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/remote-install-engine.sh
-- Process file: deploy-java-files.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/deploy-java-files.sh
-- Process file: check-component-exists.sh.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/sbin/check-component-exists.sh
-- Process file: run_ftslave.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/componentfiles/ftslave/run_ftslave
-- Process file: start_backupnode.in
-- Output file: /media/disk1/HPCC/HPCC-Platform-Build2/initfiles/componentfiles/thor/start_backupnode
-- Updated CPACK_DEBIAN_PACKAGE_DEPENDS to xterm
----INSTALLING esdlcomp
----INSTALLING ESDL-XML
-- Building start-stop-daemon
-- Found Python3: /usr/bin/python3.8 (found suitable version "3.8.10", minimum required is "3.6") found components: Interpreter Development
-- Auto Detecting Packaging type
-- distro uses DEB, revision is focal_aarch64
-- Current release version is hpccsystems-platform-community_8.4.20-rc1focal_aarch64
-- Git tag is 'community_8.4.20-rc1'
-- Build tag is 'community_8.4.20-rc1'
-- Base build tag is ''
-- Will build DEB package
-- Packing BASH installation files
-- Updated CPACK_DEBIAN_PACKAGE_DEPENDS to xterm, g++, openssh-client, openssh-server, expect, rsync, libapr1, python2, python3, psmisc, curl
-- Configuring done
-- Generating done
-- Build files have been written to: /media/disk1/HPCC/HPCC-Platform-Build2
When when running make, I get:
- Code: Select all
/media/disk1/HPCC/HPCC-Platform/ecl/hql/hqlfold.cpp: In function ‘IValue* doFoldExternalCall(IHqlExpression*, unsigned int, const char*, const char*, void*)’:
/media/disk1/HPCC/HPCC-Platform/ecl/hql/hqlfold.cpp:843:11: error: unused variable ‘strbuf’ [-Werror=unused-variable]
843 | char* strbuf = fstack.getMem();
| ^~~~~~
- lpezet
- Posts: 85
- Joined: Wed Sep 10, 2014 3:14 am
I commented out that line #843 in hqlfold.cpp (not sure why it would trip my compilation in ARM/64 and not trip the usual workflow in Git???).
It compiled just fine, created package, installed it and started the platform successfully. I had to comment out the ws_sql service and binding in /etc/HPCCSystems/environment.xml (does -DUSE_MYSQL=OFF skip the missing lib libws_sql.so???).
Now ECL Watch is up, Playground code ran fine (hthor) and now to run some more tests...
It compiled just fine, created package, installed it and started the platform successfully. I had to comment out the ws_sql service and binding in /etc/HPCCSystems/environment.xml (does -DUSE_MYSQL=OFF skip the missing lib libws_sql.so???).
Now ECL Watch is up, Playground code ran fine (hthor) and now to run some more tests...
- lpezet
- Posts: 85
- Joined: Wed Sep 10, 2014 3:14 am
4 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 1 guest