Fri Jul 01, 2022 11:01 pm
Login Register Lost Password? Contact Us

Please Note: The HPCC Systems forums are moving to Stack Overflow. We invite you to post your questions on Stack Overflow utilizing the tag hpcc-ecl (https://stackoverflow.com/search?tab=newest&q=hpcc-ecl). This legacy forum will be active and monitored during our transition to Stack Overflow but will become read only beginning September 1, 2022.



Raspberry PI

Post questions specific to installation or configuration for the HPCC Systems platform

Sat Dec 18, 2021 3:45 am Change Time Zone

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:
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

Sat Dec 25, 2021 10:07 pm Change Time Zone

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:
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

Mon Dec 27, 2021 10:18 pm Change Time Zone

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.
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

Tue Dec 28, 2021 12:07 am Change Time Zone

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...
lpezet
 
Posts: 85
Joined: Wed Sep 10, 2014 3:14 am


Return to Installation

Who is online

Users browsing this forum: No registered users and 1 guest

cron