1
1
#! /bin/bash
2
2
3
+ print_manual ()
4
+ {
5
+ EscChar=" \033"
6
+ ColorReset=" ${EscChar} [m"
7
+ RedColor=" ${EscChar} [31;1m"
8
+ GreenColor=" ${EscChar} [32;1m"
9
+ YellowColor=" ${EscChar} [33;1m"
10
+ YellowColor2=" ${EscChar} [33m"
11
+ BlueColor=" ${EscChar} [34;1m"
12
+ CyanColor=" ${EscChar} [36;1m"
13
+
14
+ printf " \n${GreenColor} Required environmental options:${ColorReset} "
15
+ printf " \n${YellowColor} PLATFORM${ColorReset} - one of the supported targets: osx|windows|linux|rpi"
16
+ printf " \n${YellowColor} DOCKER_TAG${ColorReset} | ${YellowColor} DOCKER_IMAGE${ColorReset} - both are required only for linux|rpi platforms:"
17
+
18
+ printf " \n Debian => ${YellowColor2} bullseye${ColorReset} | ${YellowColor2} x86_64${ColorReset} "
19
+ printf " \n Debian => ${YellowColor2} bullseye${ColorReset} | ${YellowColor2} arm-32bit-armv6l${ColorReset} "
20
+ printf " \n Debian => ${YellowColor2} bullseye${ColorReset} | ${YellowColor2} arm-64bit-aarch64${ColorReset} "
21
+ printf " \n Debian => ${YellowColor2} bookworm${ColorReset} | ${YellowColor2} x86_64${ColorReset} "
22
+ printf " \n Debian => ${YellowColor2} bookworm${ColorReset} | ${YellowColor2} arm-32bit-armv6l${ColorReset} "
23
+ printf " \n Debian => ${YellowColor2} bookworm${ColorReset} | ${YellowColor2} arm-64bit-aarch64${ColorReset} "
24
+ printf " \n Ubuntu => ${YellowColor2} jammy${ColorReset} | ${YellowColor2} x86_64${ColorReset} "
25
+ printf " \n Ubuntu => ${YellowColor2} noble${ColorReset} | ${YellowColor2} x86_64${ColorReset} "
26
+ printf " \n Fedora => ${YellowColor2} Fedora_40${ColorReset} | ${YellowColor2} x86_64${ColorReset} "
27
+ printf " \n ArchLinux => ${YellowColor2} ArchLinux${ColorReset} | ${YellowColor2} x86_64${ColorReset} "
28
+
29
+ printf " \n\n${GreenColor} Optional environmental options:${ColorReset} "
30
+ printf " \n${CyanColor} BUILD_TYPE${ColorReset} - Release|Debug, default is Release version"
31
+ printf " \n${CyanColor} BUILD_ARCHIVES${ColorReset} - false|true, cpack will build ZIP package"
32
+ printf " \n${CyanColor} USE_STANDARD_INSTALLER_NAME${ColorReset} - false|true, use standard Linux package naming"
33
+ printf " \n${CyanColor} USE_CCACHE${ColorReset} - false|true, use ccache if available"
34
+ printf " \n${CyanColor} RESET_CACHE${ColorReset} - false|true, reset ccache storage"
35
+ printf " \n\n${GreenColor} Example of usage:${ColorReset} \n${YellowColor} PLATFORM=linux DOCKER_TAG=bullseye DOCKER_IMAGE=arm-64bit-aarch64 ./build.sh${ColorReset} "
36
+ printf " \nInstallers from Docker builds will be ready in the ${RedColor} deploy${ColorReset} folder"
37
+ printf " \n\n"
38
+ exit 0
39
+ }
40
+
41
+ if [[ " $PLATFORM " == " " || ( (" $PLATFORM " == " linux" || " $PLATFORM " == " rpi" ) && ( " $DOCKER_IMAGE " = " " || " $DOCKER_TAG " = " " ) ) ]]; then
42
+ print_manual
43
+ fi
44
+
3
45
# detect CI
4
46
if [ " $SYSTEM_COLLECTIONID " != " " ]; then
5
47
# Azure Pipelines
6
48
echo " Azure detected"
7
49
CI_NAME=" $( echo " $AGENT_OS " | tr ' [:upper:]' ' [:lower:]' ) "
8
50
CI_BUILD_DIR=" $BUILD_SOURCESDIRECTORY "
9
51
CI_TYPE=" azure"
10
- elif [ " $HOME " != " " ]; then
52
+ elif [ " $GITHUB_ACTIONS " != " " ]; then
11
53
# GitHub Actions
12
54
echo " Github Actions detected"
13
55
CI_NAME=" $( uname -s | tr ' [:upper:]' ' [:lower:]' ) "
14
56
CI_BUILD_DIR=" $GITHUB_WORKSPACE "
15
57
CI_TYPE=" github_action"
16
58
else
17
59
# for executing in non ci environment
60
+ echo " Local system build detected"
18
61
CI_NAME=" $( uname -s | tr ' [:upper:]' ' [:lower:]' ) "
19
62
CI_TYPE=" other"
63
+ CI_BUILD_DIR=" $PWD "
20
64
fi
21
65
66
+ # set environment variables if not exists
67
+ [ -z " ${BUILD_TYPE} " ] && BUILD_TYPE=" Release"
68
+ [ -z " ${USE_STANDARD_INSTALLER_NAME} " ] && USE_STANDARD_INSTALLER_NAME=false
69
+ [ -z " ${USE_CCACHE} " ] && USE_CCACHE=true
70
+ [ -z " ${RESET_CACHE} " ] && RESET_CACHE=false
71
+ [ -z " ${BUILD_ARCHIVES} " ] && BUILD_ARCHIVES=true
72
+
73
+
74
+ printf " \nPLATFORM = %s" ${PLATFORM}
75
+ printf " \nDOCKER_TAG = %s" ${DOCKER_TAG}
76
+ printf " \nDOCKER_IMAGE = %s" ${DOCKER_IMAGE}
77
+ printf " \nBUILD_TYPE = %s" ${BUILD_TYPE}
78
+ printf " \nBUILD_ARCHIVES = %s" ${BUILD_ARCHIVES}
79
+ printf " \nUSE_STANDARD_INSTALLER_NAME = %s" ${USE_STANDARD_INSTALLER_NAME}
80
+ printf " \nUSE_CCACHE = %s" ${USE_CCACHE}
81
+ printf " \nRESET_CACHE = %s" ${RESET_CACHE}
82
+ printf " \n"
83
+
22
84
if [ ${BUILD_ARCHIVES} = true ]; then
23
85
echo " Build the package archive"
24
- IS_ARCHIVE_SKIPPED =" -DDO_NOT_BUILD_ARCHIVES=OFF "
86
+ ARCHIVE_OPTION =" -DBUILD_ARCHIVES=ON "
25
87
else
26
88
echo " Do not build the package archive"
27
- IS_ARCHIVE_SKIPPED =" -DDO_NOT_BUILD_ARCHIVES=ON "
89
+ ARCHIVE_OPTION =" -DBUILD_ARCHIVES=OFF "
28
90
fi
29
91
30
- # set environment variables if not exists (debug)
31
- [ -z " ${BUILD_TYPE} " ] && BUILD_TYPE=" Release"
32
-
33
- [ -z " ${USE_STANDARD_INSTALLER_NAME} " ] && USE_STANDARD_INSTALLER_NAME=" OFF"
92
+ if [ ${USE_STANDARD_INSTALLER_NAME} = true ]; then
93
+ echo " Use standard naming"
94
+ ARCHIVE_OPTION=" ${ARCHIVE_OPTION} -DUSE_STANDARD_INSTALLER_NAME=ON"
95
+ else
96
+ echo " Do not use standard naming"
97
+ ARCHIVE_OPTION=" ${ARCHIVE_OPTION} -DUSE_STANDARD_INSTALLER_NAME=OFF"
98
+ fi
34
99
35
- echo " Platform: ${PLATFORM} , build type: ${BUILD_TYPE} , CI_NAME: $CI_NAME , docker image: ${DOCKER_IMAGE} , docker type: ${DOCKER_TAG} , is archive enabled : ${IS_ARCHIVE_SKIPPED } , use ccache: ${USE_CCACHE} , reset ccache: ${RESET_CACHE} "
100
+ echo " Platform: ${PLATFORM} , build type: ${BUILD_TYPE} , CI_NAME: $CI_NAME , docker image: ${DOCKER_IMAGE} , docker type: ${DOCKER_TAG} , archive options : ${ARCHIVE_OPTION } , use ccache: ${USE_CCACHE} , reset ccache: ${RESET_CACHE} "
36
101
37
102
# clear ccache if neccesery
38
103
if [ ${RESET_CACHE} = true ]; then
@@ -77,10 +142,10 @@ elif [[ $CI_NAME == *"mingw64_nt"* || "$CI_NAME" == 'windows_nt' ]]; then
77
142
78
143
if [ ${USE_CCACHE} = true ]; then
79
144
echo " Using ccache"
80
- BUILD_OPTION=" ${IS_ARCHIVE_SKIPPED } "
145
+ BUILD_OPTION=" ${ARCHIVE_OPTION } "
81
146
else
82
147
echo " Not using ccache"
83
- BUILD_OPTION=" -DUSE_CCACHE_CACHING=OFF ${IS_ARCHIVE_SKIPPED } "
148
+ BUILD_OPTION=" -DUSE_CCACHE_CACHING=OFF ${ARCHIVE_OPTION } "
84
149
fi
85
150
86
151
if [[ $CI_TYPE == " github_action" ]]; then
@@ -115,12 +180,12 @@ elif [[ "$CI_NAME" == 'linux' ]]; then
115
180
116
181
if [ ${USE_CCACHE} = true ]; then
117
182
echo " Using ccache"
118
- BUILD_OPTION=" ${IS_ARCHIVE_SKIPPED } "
183
+ BUILD_OPTION=" ${ARCHIVE_OPTION } "
119
184
cache_env=" export CCACHE_DIR=/.ccache && ccache -z"
120
185
ls -a .ccache
121
186
else
122
187
echo " Not using ccache"
123
- BUILD_OPTION=" -DUSE_CCACHE_CACHING=OFF ${IS_ARCHIVE_SKIPPED } "
188
+ BUILD_OPTION=" -DUSE_CCACHE_CACHING=OFF ${ARCHIVE_OPTION } "
124
189
cache_env=" true"
125
190
fi
126
191
@@ -129,9 +194,11 @@ elif [[ "$CI_NAME" == 'linux' ]]; then
129
194
if [[ " $DOCKER_TAG " == " ArchLinux" ]]; then
130
195
echo " Arch Linux detected"
131
196
cp cmake/linux/arch/* .
132
- executeCommand=" makepkg"
133
197
chmod -R a+rw ${CI_BUILD_DIR} /deploy
134
198
versionFile=` cat version`
199
+ executeCommand=" echo \" GLIBC version: \$ (ldd --version | head -1 | sed 's/[^0-9]*\([.0-9]*\)$/\1/')\" "
200
+ executeCommand=${executeCommand} " && sed -i \" s/{GLIBC_VERSION}/\$ (ldd --version | head -1 | sed 's/[^0-9]*\([.0-9]*\)$/\1/')/\" PKGBUILD && makepkg"
201
+ echo ${executeCommand}
135
202
sed -i " s/{VERSION}/${versionFile} /" PKGBUILD
136
203
if [ ${USE_CCACHE} = true ]; then
137
204
sed -i " s/{BUILD_OPTION}/${BUILD_OPTION} -DUSE_PRECOMPILED_HEADERS=OFF/" PKGBUILD
@@ -150,7 +217,7 @@ elif [[ "$CI_NAME" == 'linux' ]]; then
150
217
-v " ${CI_BUILD_DIR} /deploy:/deploy" \
151
218
-v " ${CI_BUILD_DIR} :/source:ro" \
152
219
$REGISTRY_URL :$DOCKER_TAG \
153
- /bin/bash -c " ${cache_env} && cd / && mkdir -p hyperhdr && cp -r source/. /hyperhdr &&
220
+ /bin/bash -c " ${cache_env} && cd / && mkdir -p hyperhdr && cp -rf / source/. /hyperhdr &&
154
221
cd /hyperhdr && mkdir build && (${executeCommand} ) &&
155
222
(cp /hyperhdr/build/bin/h* /deploy/ 2>/dev/null || : ) &&
156
223
(cp /hyperhdr/build/Hyper* /deploy/ 2>/dev/null || : ) &&
0 commit comments