Better build of datapipes and some documentation
This commit is contained in:
parent
c45bcd2068
commit
7843534d9e
4
Jenkinsfile
vendored
4
Jenkinsfile
vendored
@ -9,10 +9,6 @@ pipeline {
|
|||||||
}
|
}
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
//General flags
|
|
||||||
CXX_FLAGS = ''
|
|
||||||
C_FLAGS = ''
|
|
||||||
|
|
||||||
//CMake specific flags
|
//CMake specific flags
|
||||||
CMAKE_OPTIONS = ''
|
CMAKE_OPTIONS = ''
|
||||||
CMAKE_MAKE_OPTIONS = '-j 12'
|
CMAKE_MAKE_OPTIONS = '-j 12'
|
||||||
|
2
TeaSpeak
2
TeaSpeak
@ -1 +1 @@
|
|||||||
Subproject commit 9e41b825c04999bb78411df23cb491dadeb02a18
|
Subproject commit f180f62f2c0798c80b6147111162cb42f28b569c
|
@ -1 +1 @@
|
|||||||
Subproject commit 958b088e0b3a3711c1ee015efd5d22ada2d2aeb4
|
Subproject commit d7203d854b75cb7954a2580c645729e7def8f297
|
@ -6,25 +6,118 @@ tar -xvf Python-3.6.3.tgz && \
|
|||||||
cd Python-3.6.3 && \
|
cd Python-3.6.3 && \
|
||||||
sudo ./configure --enable-optimizations && \
|
sudo ./configure --enable-optimizations && \
|
||||||
make -j32 && \
|
make -j32 && \
|
||||||
sudo make install
|
sudo make install && \
|
||||||
|
sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.6 60
|
||||||
|
|
||||||
pip3.6 install --upgrade pip
|
pip3.6 install --upgrade pip
|
||||||
```
|
```
|
||||||
|
|
||||||
## Ninja
|
## Ninja
|
||||||
|
### Using official version (may be outdated)
|
||||||
```shell script
|
```shell script
|
||||||
sudo apt install ninja
|
sudo apt install ninja
|
||||||
```
|
```
|
||||||
|
### Building from source
|
||||||
|
```shell script
|
||||||
|
apt-get purge ninja
|
||||||
|
|
||||||
|
git clone git://github.com/ninja-build/ninja.git && \
|
||||||
|
cd ninja && \
|
||||||
|
git checkout release && \
|
||||||
|
./configure.py --bootstrap && \
|
||||||
|
mv ninja /usr/local/bin/
|
||||||
|
```
|
||||||
|
|
||||||
## Meson
|
## Meson
|
||||||
```shell script
|
```shell script
|
||||||
pip3.6 install meson
|
pip3.6 install meson
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## objcopy
|
||||||
|
`objcopy` must be build from source because the option "--add-symbol" is mouse likely not available...
|
||||||
|
```shell script
|
||||||
|
apt-get install -y texinfo bison flex
|
||||||
|
|
||||||
|
git clone git://sourceware.org/git/binutils-gdb.git && cd binutils-gdb && \
|
||||||
|
git checkout binutils-2_32-branch && \
|
||||||
|
CXXFLAGS="-Wno-error=unused-function -O2" CFLAGS="-Wno-error=unused-function -O2" ./configure && \
|
||||||
|
make -j32 && \
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
# Building GLIB2.0
|
# Building GLIB2.0
|
||||||
|
Building GLIB2.0
|
||||||
```shell script
|
```shell script
|
||||||
git clone https://github.com/GNOME/glib.git && \
|
git clone https://github.com/GNOME/glib.git && \
|
||||||
cd glib && \
|
cd glib && \
|
||||||
git checkout glib-2-62 && \
|
git checkout glib-2-62 && \
|
||||||
meson _build -Dlibmount=false
|
meson _build -Dlibmount=false --prefix=`pwd`/out --buildtype=release --default-library=both -Diconv=libc
|
||||||
|
|
||||||
|
ninja -C _build && \
|
||||||
|
ninja -C _build install && \
|
||||||
|
cd ..
|
||||||
```
|
```
|
||||||
|
Publishing GLIB2.0
|
||||||
|
```shell script
|
||||||
|
export build_os_type=linux
|
||||||
|
export build_os_arch=amd64
|
||||||
|
export prebuild_path="`pwd`/glibc-prebuild/${build_os_type}_${build_os_arch}/"
|
||||||
|
|
||||||
|
git clone https://git.did.science/WolverinDEV/glibc-prebuild.git
|
||||||
|
[[ -d $prebuild_path ]] && rm -r "$prebuild_path"
|
||||||
|
mkdir $prebuild_path && \
|
||||||
|
cp -r glib/out/include/ $prebuild_path && \
|
||||||
|
cp -r glib/out/lib/ $prebuild_path
|
||||||
|
```
|
||||||
|
|
||||||
|
# Building libnice
|
||||||
|
Building boringssl
|
||||||
|
```shell script
|
||||||
|
git clone https://boringssl.googlesource.com/boringssl && cd boringssl && \
|
||||||
|
git checkout 1cc95ac0 # This version does TeaSpeak use
|
||||||
|
|
||||||
|
[[ "`getconf LONG_BIT`" != "64" ]] && { export _toolchain="-DCMAKE_TOOLCHAIN_FILE=../util/32-bit-toolchain.cmake"; }
|
||||||
|
cmake . -DCMAKE_INSTALL_PREFIX=`pwd`/out -DOPENSSL_NO_ASM=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release $_toolchain && \
|
||||||
|
make -j32
|
||||||
|
```
|
||||||
|
|
||||||
|
Build libnice
|
||||||
|
```shell script
|
||||||
|
apt-get install gtk-doc-tools
|
||||||
|
git clone https://github.com/libnice/libnice.git && cd libnice
|
||||||
|
|
||||||
|
export glib20_dir="`pwd`/../glibc-prebuild/linux_amd64/"
|
||||||
|
export glib20_lib_path="$glib20_dir/lib/"*"/"
|
||||||
|
export boringssl_path="`pwd`/../boringssl/"
|
||||||
|
|
||||||
|
#pkg-config --static --cflags glib-2.0 := -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
|
||||||
|
#pkg-config --static --libs glib-2.0 gio-2.0 gobject-2.0 := -pthread -lgio-2.0 -lz -lresolv -lselinux -lgmodule-2.0 -ldl -lgobject-2.0 -lffi -lglib-2.0 -lpcre
|
||||||
|
export GLIB_CFLAGS="-I$glib20_dir/include/glib-2.0 -I`echo "$glib20_dir/lib/"*"/glib-2.0/include"`"
|
||||||
|
export GLIB_LIBS="$glib20_lib_path/libgio-2.0.a -lz -lresolv $glib20_lib_path/libgmodule-2.0.a -ldl $glib20_lib_path/libgobject-2.0.a $glib20_lib_path/libffi.a $glib20_lib_path/libglib-2.0.a -lpcre -pthread"
|
||||||
|
export LDFLAGS="-L$boringssl_path/crypto/ -L$boringssl_path/ssl/"
|
||||||
|
|
||||||
|
./autogen.sh --prefix=`pwd`/out --with-pic --with-crypto-library=openssl --without-gstreamer --disable-assert --disable-gtk-doc --enable-static=no --enable-shared=yes && \
|
||||||
|
make && \
|
||||||
|
make install
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
```
|
||||||
|
|
||||||
|
Publishing libnice
|
||||||
|
```shell script
|
||||||
|
[[ -z "${build_os_type}" ]] && export build_os_type=linux
|
||||||
|
[[ -z "${build_os_type}" ]] && export build_os_arch=amd64
|
||||||
|
export prebuild_path="`pwd`/libnice-prebuild/${build_os_type}_${build_os_arch}/"
|
||||||
|
|
||||||
|
[[ ! -d libnice-prebuild ]] && git clone https://git.did.science/WolverinDEV/libnice-prebuild.git
|
||||||
|
[[ -d $prebuild_path ]] && rm -r "$prebuild_path"
|
||||||
|
mkdir $prebuild_path && \
|
||||||
|
cp -r libnice/out/include/ $prebuild_path && \
|
||||||
|
cp -r libnice/out/lib/ $prebuild_path
|
||||||
|
```
|
||||||
|
|
||||||
|
# Troubleshooting
|
||||||
|
## GLIB2.0 hangs on meson
|
||||||
|
Ninja may be too sold. It should work with 1.9.0.
|
||||||
|
|
||||||
|
export GLIB_LIBS="$glib20_lib_path/libgio-2.0.a -lz -lresolv $glib20_lib_path/libgmodule-2.0.a $glib20_lib_path/libgobject-2.0.a $glib20_lib_path/libffi.a $glib20_lib_path/libglib-2.0.a -lpcre -pthread"
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 20d5c4030bd723c34d2abe6fa3dc65a0ec134fb6
|
Subproject commit 80adb70bfc6cc4c68a7be4ccbb1a9e7fa201b624
|
@ -14,6 +14,7 @@ requires_rebuild ${library_path}
|
|||||||
[[ -z "${datapipes_webrtc}" ]] && datapipes_webrtc=1
|
[[ -z "${datapipes_webrtc}" ]] && datapipes_webrtc=1
|
||||||
[[ "${datapipes_webrtc}" -eq 1 ]] && _datapipes_webrtc="ON" || datapipes_webrtc="OFF"
|
[[ "${datapipes_webrtc}" -eq 1 ]] && _datapipes_webrtc="ON" || datapipes_webrtc="OFF"
|
||||||
|
|
||||||
|
web_cmake_flags="-DBUILD_WEBRTC=${_datapipes_webrtc}"
|
||||||
if [[ ${build_os_type} != "win32" && "${_datapipes_webrtc}" == "ON" ]]; then
|
if [[ ${build_os_type} != "win32" && "${_datapipes_webrtc}" == "ON" ]]; then
|
||||||
cd ${library_path}
|
cd ${library_path}
|
||||||
|
|
||||||
@ -28,19 +29,33 @@ if [[ ${build_os_type} != "win32" && "${_datapipes_webrtc}" == "ON" ]]; then
|
|||||||
#fi
|
#fi
|
||||||
|
|
||||||
echo "Building dependencies"
|
echo "Building dependencies"
|
||||||
./build_usrsctp.sh
|
#./build_usrsctp.sh
|
||||||
check_err_exit ${library_path} "Failed to build usrsctp!"
|
check_err_exit ${library_path} "Failed to build usrsctp!"
|
||||||
./build_srtp.sh
|
#./build_srtp.sh
|
||||||
check_err_exit ${library_path} "Failed to build srtp!"
|
check_err_exit ${library_path} "Failed to build srtp!"
|
||||||
./build_sdptransform.sh
|
|
||||||
check_err_exit ${library_path} "Failed to build sdptransform!"
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
glib20_dir=$(realpath "$(pwd)/glibc/linux_${build_os_arch}/")
|
||||||
|
# shellcheck disable=SC2125
|
||||||
|
glib20_lib_path=$(realpath "$glib20_dir/lib/"*"/")
|
||||||
|
|
||||||
|
# TODO: pcre really required here?
|
||||||
|
web_cmake_flags="$web_cmake_flags -DGLIB_PREBUILD_FLAGS=\"-I$glib20_dir/include -I$glib20_dir/include/glib-2.0/ -I$glib20_lib_path/glib-2.0/include/\""
|
||||||
|
web_cmake_flags="$web_cmake_flags -DGLIB_PREBUILD_LIBRARIES=\"$glib20_lib_path/libgio-2.0.a;z;resolv;$glib20_lib_path/libgmodule-2.0.a;$glib20_lib_path/libgobject-2.0.a;$glib20_lib_path/libffi.a;$glib20_lib_path/libglib-2.0.a;pcre\""
|
||||||
|
web_cmake_flags="$web_cmake_flags -DLIBNICE_PREBUILD_PATH=\"../libnice/linux_${build_os_arch}\""
|
||||||
|
echo "WebRTC flags: $web_cmake_flags"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
_cxx_options=""
|
_cxx_options=""
|
||||||
[[ ${build_os_type} != "win32" ]] && _cxx_options="-fPIC -static-libgcc -static-libstdc++"
|
[[ ${build_os_type} != "win32" ]] && _cxx_options="-fPIC -static-libgcc -static-libstdc++"
|
||||||
[[ ${build_os_type} == "win32" ]] && _cxx_options="-DWIN32"
|
[[ ${build_os_type} == "win32" ]] && _cxx_options="-DWIN32"
|
||||||
cmake_build ${library_path} -DCrypto_ROOT_DIR="`pwd`/boringssl/" -DCRYPTO_TYPE="boringssl" -DCMAKE_CXX_FLAGS="-fPIC -static-libgcc -static-libstdc++ ${CXX_FLAGS}" -DBUILD_TESTS=OFF -DCMAKE_C_FLAGS="${C_FLAGS} -fPIC" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" ${CMAKE_OPTIONS} -DLIBNICE_PREBUILD_PATH="../libnice/linux_${build_os_arch}" -DGLIBC_PREBUILD_PATH="../glibc/linux_${build_os_arch}" -DBUILD_STATIC=0 -DBUILD_SHARED=1 -DBUILD_WEBRTC=${_datapipes_webrtc}
|
|
||||||
|
general_options="-DCMAKE_C_FLAGS=\"-fPIC\" -DCMAKE_CXX_FLAGS=\"$_cxx_options\" -DBUILD_TESTS=OFF -DBUILD_STATIC=0 -DBUILD_SHARED=1 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
|
||||||
|
crypto_options="-DCrypto_ROOT_DIR=\"$(pwd)/boringssl/lib/\" -DCRYPTO_TYPE=\"boringssl\""
|
||||||
|
|
||||||
|
command="cmake_build ${library_path} ${general_options} ${crypto_options} ${web_cmake_flags} ${CMAKE_OPTIONS}"
|
||||||
|
eval "$command"
|
||||||
check_err_exit ${library_path} "Failed to build DataPipes!"
|
check_err_exit ${library_path} "Failed to build DataPipes!"
|
||||||
set_build_successful ${library_path}
|
set_build_successful ${library_path}
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit b09017c340b04a8ce9373e93aa55780144428958
|
Subproject commit 3396416fab69945f420f31dea30850806e199984
|
18
setup_alpine
Normal file
18
setup_alpine
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Basic Setup
|
||||||
|
#linux-headers for unistd.h
|
||||||
|
#bsd-compat-headers for sys/cdefs.h (arm only!)
|
||||||
|
apk add bash coreutils build-base autoconf git wget sqlite-dev openssl-dev cmake patchelf go linux-headers bsd-compat-headers
|
||||||
|
git config --global credential.helper store
|
||||||
|
|
||||||
|
# Create TeaSpeak
|
||||||
|
git clone https://git.did.science/WolverinDEV/TeaSpeak-Parent.git server && cd server && \
|
||||||
|
git submodule update --init --recursive
|
||||||
|
./libraries/build.sh
|
||||||
|
|
||||||
|
|
||||||
|
# -------- Troubleshooting ----------
|
||||||
|
If go raises an error/crashes install a newer version:
|
||||||
|
$ sudo add-apt-repository ppa:gophers/archive
|
||||||
|
$ sudo apt-get update
|
||||||
|
$ sudo apt-get install golang-1.11-go
|
||||||
|
sudo update-alternatives --install /usr/bin/go go /usr/lib/go-1.11/bin/go 1
|
10
setup_arm
10
setup_arm
@ -7,7 +7,7 @@ sudo apt-get install gcc-9 g++-9 -y && \
|
|||||||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9 && \
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9 && \
|
||||||
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-9 60 --slave /usr/bin/c++ c++ /usr/bin/c++-9
|
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-9 60 --slave /usr/bin/c++ c++ /usr/bin/c++-9
|
||||||
|
|
||||||
apt-get install autoconf git wget libssl-dev realpath
|
apt-get install autoconf git wget libssl-dev realpath libsqlite3-dev libmysqlclient-dev
|
||||||
|
|
||||||
wget https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz && tar xvf cmake-3.16.3.tar.gz
|
wget https://github.com/Kitware/CMake/releases/download/v3.16.3/cmake-3.16.3.tar.gz && tar xvf cmake-3.16.3.tar.gz
|
||||||
cd cmake-3.16.3 && ./configure --parallel=16
|
cd cmake-3.16.3 && ./configure --parallel=16
|
||||||
@ -17,10 +17,10 @@ cd ..
|
|||||||
git config --global credential.helper store
|
git config --global credential.helper store
|
||||||
|
|
||||||
# Patchelf
|
# Patchelf
|
||||||
wget http://nixos.org/releases/patchelf/patchelf-0.10/patchelf-0.10.tar.bz2
|
wget http://nixos.org/releases/patchelf/patchelf-0.10/patchelf-0.10.tar.bz2 && \
|
||||||
tar xf patchelf-0.10.tar.bz2
|
tar xf patchelf-0.10.tar.bz2 && \
|
||||||
cd patchelf-0.10
|
cd patchelf-0.10 && \
|
||||||
./configure
|
./configure && \
|
||||||
make install
|
make install
|
||||||
|
|
||||||
# Create TeaSpeak
|
# Create TeaSpeak
|
||||||
|
Loading…
Reference in New Issue
Block a user