363 |
andreas |
1 |
#!/bin/bash
|
481 |
andreas |
2 |
# errors are propagated when using the pipe to concatenate commands
|
363 |
andreas |
3 |
set -o pipefail
|
|
|
4 |
# determine script directory
|
|
|
5 |
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
|
6 |
ROOT_DIR="${SCRIPT_DIR}/.."
|
|
|
7 |
LOG_FILE="${ROOT_DIR}/workflow.log"
|
481 |
andreas |
8 |
VERSION="1.4.2"
|
|
|
9 |
RELEASE="1"
|
469 |
andreas |
10 |
export QT_DIR="/opt/Qt/6.6.2/gcc_64"
|
363 |
andreas |
11 |
export CMAKE_PREFIX_PATH="${QT_DIR}/lib/cmake"
|
|
|
12 |
|
|
|
13 |
# the first parameter is the branch, that is currently being built
|
|
|
14 |
BRANCH="$1"
|
|
|
15 |
|
|
|
16 |
# Log the message.
|
|
|
17 |
# parameters:
|
|
|
18 |
# message ... the message to log
|
|
|
19 |
log() {
|
481 |
andreas |
20 |
local message="$1"
|
|
|
21 |
local currentTime=$(date +"%y-%m-%d %H:%M:%S")
|
|
|
22 |
echo "${currentTime}: ${message}" | tee -a ${LOG_FILE}
|
363 |
andreas |
23 |
}
|
|
|
24 |
|
481 |
andreas |
25 |
if [ -f "${ROOT_DIR}/.version" ]
|
|
|
26 |
then
|
|
|
27 |
. ${ROOT_DIR}/.version
|
|
|
28 |
fi
|
|
|
29 |
|
363 |
andreas |
30 |
CPUS=2
|
|
|
31 |
type nproc > /dev/null 2>&1
|
|
|
32 |
|
|
|
33 |
if [ $? -eq 0 ]
|
|
|
34 |
then
|
|
|
35 |
CPUS=`nproc`
|
|
|
36 |
fi
|
|
|
37 |
|
|
|
38 |
rm -rf "${ROOT_DIR}/build" > /dev/null 2>&1
|
|
|
39 |
mkdir "${ROOT_DIR}/build"
|
|
|
40 |
|
|
|
41 |
log "Changing to directory $ROOT_DIR"
|
|
|
42 |
cd ${ROOT_DIR}
|
|
|
43 |
log "Creating the Makefile"
|
|
|
44 |
cmake -B build -S . >> ${LOG_FILE} 2>&1
|
|
|
45 |
|
|
|
46 |
if [ $? -ne 0 ]
|
|
|
47 |
then
|
|
|
48 |
log "ERROR: Could not create Makefile!"
|
|
|
49 |
exit 1
|
|
|
50 |
fi
|
|
|
51 |
|
|
|
52 |
log "Changing to build directory"
|
|
|
53 |
cd build
|
|
|
54 |
log "Building the application ..."
|
481 |
andreas |
55 |
make -j${CPUS} >> ${LOG_FILE} 2>&1
|
|
|
56 |
|
|
|
57 |
if [ $? -ne 0 ]
|
|
|
58 |
then
|
|
|
59 |
echo "Error compiling the code!"
|
|
|
60 |
exit 1
|
|
|
61 |
fi
|
|
|
62 |
|
|
|
63 |
# Build a debian package
|
|
|
64 |
log "Building a debian package"
|
|
|
65 |
BASE_PATH="${ROOT_DIR}/tpanel_${VERSION}-${RELEASE}_amd64"
|
|
|
66 |
rm -rf "${BASE_PATH}"
|
|
|
67 |
mkdir -p "${BASE_PATH}/DEBIAN" >> ${LOG_FILE} 2>&1
|
|
|
68 |
mkdir -p "${BASE_PATH}/usr/bin" >> ${LOG_FILE} 2>&1
|
|
|
69 |
mkdir -p "${BASE_PATH}/usr/lib" >> ${LOG_FILE} 2>&1
|
|
|
70 |
(cd "${ROOT_DIR}/build/ftplib";tar -cf - libftp*) | (cd "${BASE_PATH}/usr/lib";tar -xf -)
|
|
|
71 |
cp "${ROOT_DIR}/build/src/tpanel" "${BASE_PATH}/usr/bin"
|
|
|
72 |
cp "/usr/local/lib/skia/libskia.so" "${BASE_PATH}/usr/lib"
|
|
|
73 |
cp "/usr/local/lib/libpjsua.so.2" "${BASE_PATH}/usr/lib"
|
|
|
74 |
cp "/usr/local/lib/libpjsip-simple.so.2" "${BASE_PATH}/usr/lib"
|
|
|
75 |
cp "/usr/local/lib/libpjsip.so.2" "${BASE_PATH}/usr/lib"
|
|
|
76 |
cp "/usr/local/lib/libpjmedia.so.2" "${BASE_PATH}/usr/lib"
|
|
|
77 |
cp "/usr/local/lib/libpj.so.2" "${BASE_PATH}/usr/lib"
|
|
|
78 |
cp "/usr/local/lib/libpjsip-ua.so.2" "${BASE_PATH}/usr/lib"
|
|
|
79 |
cp "/usr/local/lib/libpjmedia-audiodev.so.2" "${BASE_PATH}/usr/lib"
|
|
|
80 |
cp "/usr/local/lib/libpjmedia-codec.so.2" "${BASE_PATH}/usr/lib"
|
|
|
81 |
cp "/usr/local/lib/libpjnath.so.2" "${BASE_PATH}/usr/lib"
|
|
|
82 |
cp "/usr/local/lib/libpjlib-util.so.2" "${BASE_PATH}/usr/lib"
|
|
|
83 |
cp "/usr/local/lib/libsrtp.so.2" "${BASE_PATH}/usr/lib"
|
|
|
84 |
cp "/usr/local/lib/libresample.so.2" "${BASE_PATH}/usr/lib"
|
|
|
85 |
cp "/usr/local/lib/libspeex.so.2" "${BASE_PATH}/usr/lib"
|
|
|
86 |
cp "/usr/local/lib/libwebrtc.so.2" "${BASE_PATH}/usr/lib"
|
|
|
87 |
cp "/usr/local/lib/libgsmcodec.so.2" "${BASE_PATH}/usr/lib"
|
|
|
88 |
cp "/usr/local/lib/libilbccodec.so.2" "${BASE_PATH}/usr/lib"
|
|
|
89 |
cp "/usr/local/lib/libsndfile.so.1" "${BASE_PATH}/usr/lib"
|
|
|
90 |
|
|
|
91 |
echo "Package: tpanel" > "${BASE_PATH}/DEBIAN/control"
|
|
|
92 |
echo "Version: $VERSION" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
93 |
echo "Section: misc" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
94 |
echo "Priority: optional" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
95 |
echo "Architecture: amd64" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
96 |
echo "Depends: Qt6MultimediaWidgets,ssl,expat,uuid,Qt6Multimedia,Qt6Network,Qt6Widgets,Qt6Gui,Qt6Core,crypto,freetype,jpeg,png16,Qt6DBus,asound,FLAC,vorbis,ogg,mpg123" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
97 |
echo "Summary: Emulation of AMX touch panels" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
98 |
echo "License: GPLv3" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
99 |
echo "Homepage: https://https://github.com/TheLord45/tpanel" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
100 |
echo "Maintainer: Andreas Theofilu <andreas@theosys.at>" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
101 |
echo "Description: TPanel is an emulation of some AMX G4/G5 touch panels." >> "${BASE_PATH}/DEBIAN/control"
|
|
|
102 |
echo " The software uses internally the Skia library for drawing all objects" >> "${BASE_PATH}/DEBIAN/control"
|
|
|
103 |
echo " and the Qt 6.x library to display the objects. TPanel is written in C++." >> "${BASE_PATH}/DEBIAN/control"
|
|
|
104 |
echo " This makes it even on mobile platforms fast and reliable." >> "${BASE_PATH}/DEBIAN/control"
|
|
|
105 |
|
|
|
106 |
dpkg --build "${BASE_PATH}" >> ${LOG_FILE} 2>&1
|
|
|
107 |
|
|
|
108 |
if [ $? -ne 0 ]
|
|
|
109 |
then
|
|
|
110 |
log "Error building a debian package!"
|
|
|
111 |
exit 1
|
|
|
112 |
fi
|
|
|
113 |
|
|
|
114 |
log "Package tpanel_${VERSION}-${RELEASE}_amd64.deb was build successfuly"
|
|
|
115 |
exit 0
|