Skip to content

Commit 832c64b

Browse files
authored
Merge branch 'BOINC:master' into Vulpine05-3403-Revised
2 parents 68b9e44 + b37f2ac commit 832c64b

File tree

13 files changed

+364
-19
lines changed

13 files changed

+364
-19
lines changed

.github/workflows/linux.yml

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: ubuntu-latest
2323
strategy:
2424
matrix:
25-
type: [libs, client, apps, libs-vcpkg, client-vcpkg, apps-vcpkg, libs-cmake, manager-with-webview-vcpkg, server, manager-with-webview, manager-without-webview, unit-test, integration-test]
25+
type: [libs, client, apps, libs-vcpkg, client-vcpkg, apps-vcpkg, libs-cmake, libs-arm64, apps-arm64, manager-with-webview-vcpkg, server, manager-with-webview, manager-without-webview, unit-test, integration-test]
2626
fail-fast: false
2727
steps:
2828
- uses: actions/checkout@v2
@@ -34,8 +34,13 @@ jobs:
3434
sudo apt-get -qq update
3535
sudo apt-get install -y libftgl-dev freeglut3-dev libcurl4-openssl-dev libxmu-dev libxi-dev libfcgi-dev libxss-dev libnotify-dev libxcb-util0-dev libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev libwebkit2gtk-4.0-dev p7zip-full libxxf86vm-dev ocl-icd-opencl-dev zip
3636
37+
- name: Install dependencies for arm64
38+
if: success() && endsWith(matrix.type, 'arm64')
39+
run: |
40+
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
41+
3742
- name: Install dependencies for integration testing
38-
if: matrix.type == 'integration-test'
43+
if: success() && matrix.type == 'integration-test'
3944
run: |
4045
sudo apt-get install ansible
4146
sudo service mysql stop
@@ -112,14 +117,27 @@ jobs:
112117
run: ./3rdParty/buildLinuxDependencies.sh --gtest-only && ./configure --disable-client --disable-manager --enable-unit-tests CFLAGS="-g -O0" CXXFLAGS="-g -O0"
113118

114119
- name: Make
115-
if: success() && ! contains(matrix.type, 'integration-test') && ! endsWith(matrix.type, 'cmake')
120+
if: success() && ! contains(matrix.type, 'integration-test') && ! endsWith(matrix.type, 'cmake') && ! endsWith(matrix.type, 'arm64')
116121
run: make
117122

118123
- name: Make for cmake
119124
if: success() && endsWith(matrix.type, 'cmake')
120125
run:
121126
cmake --build build
122127

128+
- name: Build libraries for amd64
129+
if: success() && matrix.type == 'libs-arm64'
130+
run: |
131+
./linux/arm64/build_libraries_arm64.sh
132+
133+
- name: Build apps for amd64
134+
if: success() && matrix.type == 'apps-arm64'
135+
run: |
136+
./linux/arm64/build_libraries_arm64.sh
137+
./linux/arm64/build_openssl_arm64.sh
138+
./linux/arm64/build_curl_arm64.sh
139+
./linux/arm64/build_example_arm64.sh
140+
123141
- name: Execute unit-test and report coverage
124142
if: success() && matrix.type == 'unit-test'
125143
run: ./tests/executeUnitTests.sh --report-coverage --report-xml

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ locale/*/*.flag
126126
## dependency builds and CI cache directories
127127
3rdParty/Windows/
128128
3rdParty/linux/
129+
3rdParty/linux-arm64/
129130
3rdParty/mac/
130131
3rdParty/buildCache/
131132
3rdParty/android/

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ AC_CONFIG_MACRO_DIR([m4])
1111
LIBBOINC_VERSION=`echo ${PACKAGE_VERSION} | sed 's/\./:/g'`
1212
AC_SUBST([LIBBOINC_VERSION])
1313

14-
WRAPPER_RELEASE=26017
14+
WRAPPER_RELEASE=26018
1515
AC_SUBST([WRAPPER_RELEASE])
1616

1717
VBOXWRAPPER_RELEASE=26205

deploy/prepare_deployment.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,9 @@ def prepare_linux_client_vcpkg(target_directory):
235235
def prepare_linux_apps(target_directory):
236236
prepare_7z_archive('linux_apps', target_directory, linux_apps_list)
237237

238+
def prepare_linux_apps_arm64(target_directory):
239+
prepare_7z_archive('linux_apps-arm64', target_directory, linux_apps_list)
240+
238241
def prepare_linux_apps_vcpkg(target_directory):
239242
prepare_7z_archive('linux_apps-vcpkg', target_directory, linux_apps_list)
240243

@@ -291,6 +294,7 @@ def prepare_logs(target_directory):
291294
'linux_client': prepare_linux_client,
292295
'linux_client-vcpkg': prepare_linux_client_vcpkg,
293296
'linux_apps': prepare_linux_apps,
297+
'linux_apps-arm64': prepare_linux_apps_arm64,
294298
'linux_apps-vcpkg': prepare_linux_apps_vcpkg,
295299
'linux_manager-with-webview': prepare_linux_manager_with_webview,
296300
'linux_manager-with-webview-vcpkg': prepare_linux_manager_with_webview_vcpkg,

linux/arm64/build_curl_arm64.sh

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# Script to compile Libcurl for linux arm64
5+
6+
STDOUT_TARGET="${STDOUT_TARGET:-/dev/stdout}"
7+
CONFIGURE="yes"
8+
MAKECLEAN="yes"
9+
VERBOSE="${VERBOSE:-no}"
10+
CI="${CI:-no}"
11+
NPROC_USER="${NPROC_USER:-1}"
12+
13+
export CURL_VERSION=7.84.0
14+
export BUILD_DIR=${BUILD_DIR:-$PWD/3rdParty/linux-arm64}
15+
export CURL="$BUILD_DIR/curl-$CURL_VERSION" #CURL sources, required by BOINC
16+
export CURL_FLAGFILE=$BUILD_DIR/curl-$CURL_VERSION.flagfile
17+
18+
export TCINCLUDES="$BUILD_DIR/build"
19+
export TCBINARIES="$TCINCLUDES/bin"
20+
export TCSYSROOT="$BUILD_DIR/sysroot"
21+
22+
export PATH="$TCBINARIES:$PATH"
23+
export CC=aarch64-linux-gnu-gcc
24+
export CXX=aarch64-linux-gnu-g++
25+
export LD=aarch64-linux-gnu-ld
26+
export CFLAGS="--sysroot=$TCSYSROOT -I$TCINCLUDES/include -march=armv8-a -O3"
27+
export CXXFLAGS="--sysroot=$TCSYSROOT -I$TCINCLUDES/include -march=armv8-a -O3"
28+
export LDFLAGS="-L$TCSYSROOT/usr/lib -L$TCINCLUDES/lib -march=armv8-a -latomic -static-libstdc++"
29+
30+
MAKE_FLAGS=""
31+
32+
if [ $VERBOSE = "no" ]; then
33+
MAKE_FLAGS="$MAKE_FLAGS --silent"
34+
else
35+
MAKE_FLAGS="$MAKE_FLAGS SHELL=\"/bin/bash -x\""
36+
fi
37+
38+
if [ $CI = "yes" ]; then
39+
MAKE_FLAGS="$MAKE_FLAGS -j $(nproc --all)"
40+
else
41+
MAKE_FLAGS="$MAKE_FLAGS -j $NPROC_USER"
42+
fi
43+
44+
if [ ! -e "${CURL_FLAGFILE}" ]; then
45+
rm -rf "$BUILD_DIR/curl-${CURL_VERSION}"
46+
wget -c --no-verbose -O /tmp/curl_${CURL_VERSION}.tgz https://curl.haxx.se/download/curl-${CURL_VERSION}.tar.gz
47+
tar xzf /tmp/curl_${CURL_VERSION}.tgz --directory=$BUILD_DIR
48+
fi
49+
50+
if [ ! -e "${CURL_FLAGFILE}" ]; then
51+
cd "$CURL"
52+
echo "===== building curl for arm64 from $PWD ====="
53+
if [ -n "$MAKECLEAN" ] && $(grep -q "^distclean:" "${CURL}/Makefile"); then
54+
if [ "$VERBOSE" = "no" ]; then
55+
make distclean 1>$STDOUT_TARGET 2>&1
56+
else
57+
make distclean SHELL="/bin/bash -x"
58+
fi
59+
fi
60+
if [ -n "$CONFIGURE" ]; then
61+
./configure --host=aarch64-linux --prefix="$TCINCLUDES" --libdir="$TCINCLUDES/lib" --disable-shared --enable-static --with-random=/dev/urandom 1>$STDOUT_TARGET --with-openssl
62+
fi
63+
if [ $VERBOSE = "no" ]; then
64+
echo MAKE_FLAGS=$MAKE_FLAGS "1>$STDOUT_TARGET"
65+
make $MAKE_FLAGS 1>$STDOUT_TARGET
66+
make install $MAKE_FLAGS 1>$STDOUT_TARGET
67+
else
68+
echo MAKE_FLAGS=$MAKE_FLAGS
69+
make $MAKE_FLAGS
70+
make install $MAKE_FLAGS
71+
fi
72+
73+
touch "${CURL_FLAGFILE}"
74+
echo "\e[1;32m===== curl for arm64 build done =====\e[0m"
75+
fi

linux/arm64/build_example_arm64.sh

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#/bin/sh
2+
set -e
3+
4+
#script to compile Example for Android
5+
6+
STDOUT_TARGET="${STDOUT_TARGET:-/dev/stdout}"
7+
COMPILEBOINC="yes"
8+
CONFIGURE="yes"
9+
VERBOSE="${VERBOSE:-no}"
10+
CI="${CI:-no}"
11+
NPROC_USER="${NPROC_USER:-1}"
12+
13+
export BUILD_DIR=${BUILD_DIR:-$PWD/3rdParty/linux-arm64}
14+
15+
export TCINCLUDES="$BUILD_DIR/build"
16+
export TCBINARIES="$TCINCLUDES/bin"
17+
export TCSYSROOT="$BUILD_DIR/sysroot"
18+
19+
export BOINC_API_DIR="$PWD/api"
20+
export BOINC_LIB_DIR="$PWD/lib"
21+
export BOINC_ZIP_DIR="$PWD/zip"
22+
23+
export PATH="$TCBINARIES:$PATH"
24+
export CC=aarch64-linux-gnu-gcc
25+
export CXX=aarch64-linux-gnu-g++
26+
export LD=aarch64-linux-gnu-ld
27+
export CFLAGS="--sysroot=$TCSYSROOT -I$TCINCLUDES/include -march=armv8-a -O3 -I$BOINC -I$BOINC_LIB_DIR -I$BOINC_API_DIR -I$BOINC_ZIP_DIR"
28+
export CXXFLAGS="--sysroot=$TCSYSROOT -I$TCINCLUDES/include -march=armv8-a -O3 -I$BOINC -I$BOINC_LIB_DIR -I$BOINC_API_DIR -I$BOINC_ZIP_DIR"
29+
export LDFLAGS="-L$TCSYSROOT/usr/lib -L$TCINCLUDES/lib -march=armv8-a -latomic -static-libstdc++"
30+
# export LDFLAGS="-L$TCSYSROOT/usr/lib -L$TCINCLUDES/lib -march=armv8-a -latomic -static-libstdc++ -lz"
31+
32+
CONFIG_FLAGS="--with-ssl=$TCINCLUDES --with-libcurl=$TCINCLUDES"
33+
CONFIG_LDFLAGS="-L$TCSYSROOT/usr/lib -L$TCINCLUDES/lib"
34+
export _libcurl_pc="$TCINCLUDES/lib/pkgconfig/libcurl.pc"
35+
36+
MAKE_FLAGS=""
37+
38+
if [ $VERBOSE = "no" ]; then
39+
MAKE_FLAGS="$MAKE_FLAGS --silent"
40+
else
41+
MAKE_FLAGS="$MAKE_FLAGS SHELL=\"/bin/bash -x\""
42+
fi
43+
44+
if [ $CI = "yes" ]; then
45+
MAKE_FLAGS="$MAKE_FLAGS -j $(nproc --all)"
46+
else
47+
MAKE_FLAGS="$MAKE_FLAGS -j $NPROC_USER"
48+
fi
49+
50+
if [ -n "$COMPILEBOINC" ]; then
51+
echo "===== building example for arm64 from $PWD ====="
52+
if [ -n "$MAKECLEAN" ] && [ -f "Makefile" ]; then
53+
echo "=== building example clean ==="
54+
if [ "$VERBOSE" = "no" ]; then
55+
make distclean 1>$STDOUT_TARGET 2>&1
56+
else
57+
make distclean SHELL="/bin/bash -x"
58+
fi
59+
fi
60+
if [ -n "$CONFIGURE" ]; then
61+
./_autosetup
62+
./configure --host=aarch64-linux --with-boinc-platform="aarch64-unknown-linux-gnu" --with-boinc-alt-platform="arm-unknown-linux-gnueabihf" --prefix="$TCINCLUDES" --libdir="$TCINCLUDES/lib" $CONFIG_FLAGS --enable-apps --disable-server --disable-manager --disable-client --disable-libraries --disable-shared --enable-static --enable-boinczip
63+
fi
64+
echo MAKE_FLAGS=$MAKE_FLAGS
65+
make $MAKE_FLAGS
66+
echo "\e[1;32m===== building example for arm64 done =====\e[0m"
67+
fi

linux/arm64/build_libraries_arm64.sh

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# Script to compile various BOINC libraries for linux arm64
5+
6+
STDOUT_TARGET="${STDOUT_TARGET:-/dev/stdout}"
7+
COMPILEBOINC="yes"
8+
CONFIGURE="yes"
9+
MAKECLEAN="yes"
10+
VERBOSE="${VERBOSE:-no}"
11+
CI="${CI:-no}"
12+
NPROC_USER="${NPROC_USER:-1}"
13+
14+
export BUILD_DIR=${BUILD_DIR:-$PWD/3rdParty/linux-arm64}
15+
16+
export TCINCLUDES="$BUILD_DIR/build"
17+
export TCSYSROOT="$BUILD_DIR/sysroot"
18+
19+
export CC=aarch64-linux-gnu-gcc
20+
export CXX=aarch64-linux-gnu-g++
21+
export LD=aarch64-linux-gnu-ld
22+
export CFLAGS="--sysroot=$TCSYSROOT -march=armv8-a"
23+
export CXXFLAGS="--sysroot=$TCSYSROOT -march=armv8-a"
24+
export LDFLAGS="-L$TCSYSROOT/usr/lib -L$TCINCLUDES/lib -march=armv8-a -static-libstdc++ -static"
25+
26+
MAKE_FLAGS=""
27+
28+
if [ $VERBOSE = "no" ]; then
29+
MAKE_FLAGS="$MAKE_FLAGS --silent"
30+
else
31+
MAKE_FLAGS="$MAKE_FLAGS SHELL=\"/bin/bash -x\""
32+
fi
33+
34+
if [ $CI = "yes" ]; then
35+
MAKE_FLAGS="$MAKE_FLAGS -j $(nproc --all)"
36+
else
37+
MAKE_FLAGS="$MAKE_FLAGS -j $NPROC_USER"
38+
fi
39+
40+
if [ -n "$COMPILEBOINC" ]; then
41+
42+
echo "===== building BOINC Libraries for arm64 from $PWD ====="
43+
if [ -n "$MAKECLEAN" ] && [ -f "Makefile" ]; then
44+
if [ "$VERBOSE" = "no" ]; then
45+
make distclean 1>$STDOUT_TARGET 2>&1
46+
else
47+
make distclean SHELL="/bin/bash -x"
48+
fi
49+
fi
50+
if [ -n "$CONFIGURE" ]; then
51+
./_autosetup
52+
./configure --host=aarch64-linux --with-boinc-platform="aarch64-unknown-linux-gnu" --with-boinc-alt-platform="arm-unknown-linux-gnueabihf" --prefix="$TCINCLUDES" --libdir="$TCINCLUDES/lib" --disable-server --disable-manager --disable-client --disable-shared --enable-static --enable-boinczip
53+
fi
54+
echo MAKE_FLAGS=$MAKE_FLAGS
55+
make $MAKE_FLAGS
56+
make stage $MAKE_FLAGS
57+
make install $MAKE_FLAGS
58+
59+
echo "\e[1;32m===== building BOINC Libraries for arm64 done =====\e[0m"
60+
61+
fi

linux/arm64/build_openssl_arm64.sh

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/bin/sh
2+
set -e
3+
4+
# Script to compile OpenSSL for linux arm64
5+
6+
STDOUT_TARGET="${STDOUT_TARGET:-/dev/stdout}"
7+
CONFIGURE="yes"
8+
MAKECLEAN="yes"
9+
VERBOSE="${VERBOSE:-no}"
10+
CI="${CI:-no}"
11+
NPROC_USER="${NPROC_USER:-1}"
12+
13+
export OPENSSL_VERSION=3.0.5
14+
export BUILD_DIR=${BUILD_DIR:-$PWD/3rdParty/linux-arm64}
15+
export OPENSSL="$BUILD_DIR/openssl-$OPENSSL_VERSION" #openSSL sources, required by BOINC
16+
export OPENSSL_FLAGFILE=$BUILD_DIR/openssl-$OPENSSL_VERSION.flagfile
17+
18+
export TCINCLUDES="$BUILD_DIR/build"
19+
export TCBINARIES="$TCINCLUDES/bin"
20+
export TCSYSROOT="$BUILD_DIR/sysroot"
21+
22+
export PATH="$TCBINARIES:$PATH"
23+
export CC=aarch64-linux-gnu-gcc
24+
export CXX=aarch64-linux-gnu-g++
25+
export LD=aarch64-linux-gnu-ld
26+
export CFLAGS="--sysroot=$TCSYSROOT -march=armv8-a -O3"
27+
export CXXFLAGS="--sysroot=$TCSYSROOT -march=armv8-a -O3"
28+
export LDFLAGS="-L$TCSYSROOT/usr/lib -L$TCINCLUDES/lib -march=armv8-a -latomic -static-libstdc++"
29+
30+
MAKE_FLAGS=""
31+
32+
if [ $VERBOSE = "no" ]; then
33+
MAKE_FLAGS="$MAKE_FLAGS --silent"
34+
else
35+
MAKE_FLAGS="$MAKE_FLAGS SHELL=\"/bin/bash -x\""
36+
fi
37+
38+
if [ $CI = "yes" ]; then
39+
MAKE_FLAGS1="$MAKE_FLAGS -j $(nproc --all)"
40+
else
41+
MAKE_FLAGS1="$MAKE_FLAGS -j $NPROC_USER"
42+
fi
43+
44+
mkdir -p $BUILD_DIR
45+
46+
if [ ! -e "${OPENSSL_FLAGFILE}" ]; then
47+
rm -rf "$BUILD_DIR/openssl-${OPENSSL_VERSION}"
48+
wget -c --no-verbose -O /tmp/openssl_${OPENSSL_VERSION}.tgz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz
49+
tar xzf /tmp/openssl_${OPENSSL_VERSION}.tgz --directory=$BUILD_DIR
50+
fi
51+
52+
if [ ! -e "${OPENSSL_FLAGFILE}" ]; then
53+
cd "$OPENSSL"
54+
echo "===== building openssl for arm64 from $PWD ====="
55+
if [ -n "$MAKECLEAN" -a -e "${OPENSSL}/Makefile" ]; then
56+
if [ "$VERBOSE" = "no" ]; then
57+
make clean 1>$STDOUT_TARGET 2>&1
58+
else
59+
make clean SHELL="/bin/bash -x"
60+
fi
61+
fi
62+
if [ -n "$CONFIGURE" ]; then
63+
./Configure linux-generic32 no-shared no-dso -DL_ENDIAN --openssldir="$TCINCLUDES" --prefix="$TCINCLUDES" 1>$STDOUT_TARGET
64+
fi
65+
if [ $VERBOSE = "no" ]; then
66+
echo MAKE_FLAGS=$MAKE_FLAGS "1>$STDOUT_TARGET"
67+
make $MAKE_FLAGS 1>$STDOUT_TARGET
68+
make install_sw $MAKE_FLAGS 1>$STDOUT_TARGET
69+
else
70+
echo MAKE_FLAGS=$MAKE_FLAGS
71+
make $MAKE_FLAGS
72+
make install_sw $MAKE_FLAGS
73+
fi
74+
75+
touch "${OPENSSL_FLAGFILE}"
76+
echo "\e[1;32m===== openssl for arm64 build done =====\e[0m"
77+
fi

0 commit comments

Comments
 (0)