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 { | ||||
| 		//General flags | ||||
| 		CXX_FLAGS = '' | ||||
| 		C_FLAGS = '' | ||||
| 
 | ||||
| 		//CMake specific flags | ||||
| 		CMAKE_OPTIONS = '' | ||||
| 		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 && \ | ||||
| sudo ./configure --enable-optimizations && \ | ||||
| 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 | ||||
| ``` | ||||
| 
 | ||||
| ## Ninja | ||||
| ### Using official version (may be outdated) | ||||
| ```shell script | ||||
| 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 | ||||
| ```shell script | ||||
| 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 | ||||
| ```shell script | ||||
| git clone https://github.com/GNOME/glib.git && \ | ||||
| cd glib && \ | ||||
| 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 | ||||
| [[ "${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 | ||||
|     cd ${library_path} | ||||
| 
 | ||||
| @ -28,19 +29,33 @@ if [[ ${build_os_type} != "win32" && "${_datapipes_webrtc}" == "ON" ]]; then | ||||
|     #fi | ||||
| 
 | ||||
|     echo "Building dependencies" | ||||
|     ./build_usrsctp.sh | ||||
|     #./build_usrsctp.sh | ||||
|     check_err_exit ${library_path} "Failed to build usrsctp!" | ||||
|     ./build_srtp.sh | ||||
|     #./build_srtp.sh | ||||
|     check_err_exit ${library_path} "Failed to build srtp!" | ||||
|     ./build_sdptransform.sh | ||||
|     check_err_exit ${library_path} "Failed to build sdptransform!" | ||||
| 
 | ||||
|     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 | ||||
| 
 | ||||
| 
 | ||||
| _cxx_options="" | ||||
| [[ ${build_os_type} != "win32" ]] && _cxx_options="-fPIC -static-libgcc -static-libstdc++" | ||||
| [[ ${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!" | ||||
| 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 | ||||
							
								
								
									
										12
									
								
								setup_arm
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								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/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 | ||||
| cd cmake-3.16.3 && ./configure --parallel=16 | ||||
| @ -17,10 +17,10 @@ cd .. | ||||
| git config --global credential.helper store | ||||
| 
 | ||||
| # Patchelf | ||||
| wget http://nixos.org/releases/patchelf/patchelf-0.10/patchelf-0.10.tar.bz2 | ||||
| tar xf patchelf-0.10.tar.bz2 | ||||
| cd patchelf-0.10 | ||||
| ./configure | ||||
| wget http://nixos.org/releases/patchelf/patchelf-0.10/patchelf-0.10.tar.bz2 && \ | ||||
| tar xf patchelf-0.10.tar.bz2 && \ | ||||
| cd patchelf-0.10 && \ | ||||
| ./configure && \ | ||||
| make install | ||||
| 
 | ||||
| # Create TeaSpeak | ||||
| @ -36,4 +36,4 @@ 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 | ||||
| sudo update-alternatives --install /usr/bin/go go /usr/lib/go-1.11/bin/go 1 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user