name: Release build on: push: branches: master jobs: build_windows: name: Windows runs-on: windows-2019 steps: - name: Clone repo run: | git clone --recursive https://github.com/kotatogram/kotatogram-desktop.git tdesktop cd tdesktop git checkout master - name: Set up environment variables run: | echo ::set-env name=VS::call ^ "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat" echo ::set-env name=SWITCH_PY::call venv-2\Scripts\activate echo ::add-path::C:\Perl64\bin echo ::add-path::%GITHUB_WORKSPACE%\Libraries\gyp - name: Install tools run: | choco install -y nasm yasm jom ninja activeperl cmake msys2 mkdir Libraries - name: Replace Python 3 with Python 2 run: | py -2 -m pip install virtualenv py -2 -m virtualenv venv-2 - name: Range-v3 run: | cd Libraries git clone --branch 0.9.1 https://github.com/ericniebler/range-v3 range-v3 - name: LZMA run: | cd Libraries %VS% git clone https://github.com/telegramdesktop/lzma.git cd lzma cd C\Util\LzmaLib msbuild LzmaLib.sln /property:Configuration=Debug msbuild LzmaLib.sln /property:Configuration=Release - name: OpenSSL run: | %VS% && cd Libraries git clone https://github.com/openssl/openssl.git cd openssl git checkout OpenSSL_1_0_1-stable call perl Configure no-shared --prefix="C:\Program Files (x86)\OpenSSL" ^ --openssldir="C:\Program Files (x86)\Common Files\SSL" VC-WIN32 call ms\do_ms < nul call nmake -f ms\nt.mak < nul call perl Configure no-shared --prefix="C:\Program Files (x86)\OpenSSL" ^ --openssldir="C:\Program Files (x86)\Common Files\SSL" debug-VC-WIN32 call ms\do_ms < nul call nmake -f ms\nt.mak < nul - name: Zlib run: | %VS% && cd Libraries git clone https://github.com/telegramdesktop/zlib.git cd zlib git checkout tdesktop cd contrib\vstudio\vc14 msbuild zlibstat.vcxproj /property:Configuration=Debug msbuild zlibstat.vcxproj /property:Configuration=ReleaseWithoutAsm - name: OpenAL Soft run: | %VS% && cd Libraries git clone https://github.com/telegramdesktop/openal-soft.git cd openal-soft git checkout fix_capture cd build cmake -G "Visual Studio 16 2019" -A Win32 -D LIBTYPE:STRING=STATIC -D FORCE_STATIC_VCRT:STRING=ON .. msbuild OpenAL.vcxproj /property:Configuration=Debug msbuild OpenAL.vcxproj /property:Configuration=Release - name: GYP run: | %VS% %SWITCH_PY% cd Libraries git clone https://github.com/telegramdesktop/gyp.git cd gyp git checkout tdesktop - name: Breakpad run: | %VS% %SWITCH_PY% cd Libraries git clone https://github.com/google/breakpad cd breakpad git checkout a1dbcdcb43 dir ..\..\tdesktop\Telegram\Patches\ git apply ..\..\tdesktop\Telegram\Patches\breakpad.diff cd src git clone https://github.com/google/googletest testing cd client\windows call gyp --no-circular-check breakpad_client.gyp --format=ninja cd ..\.. ninja -C out/Debug common crash_generation_client exception_handler ninja -C out/Release common crash_generation_client exception_handler cd tools\windows\dump_syms call gyp dump_syms.gyp msbuild dump_syms.vcxproj /property:Configuration=Release - name: Opus run: | %VS% && cd Libraries git clone https://github.com/telegramdesktop/opus.git cd opus git checkout tdesktop cd win32\VS2015 msbuild opus.sln /property:Configuration=Debug /property:Platform="Win32" msbuild opus.sln /property:Configuration=Release /property:Platform="Win32" - name: FFmpeg run: | %VS% && cd Libraries git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg git checkout release/3.4 set CHERE_INVOKING=enabled_from_arguments set MSYS2_PATH_TYPE=inherit call c:\tools\msys64\usr\bin\bash --login ../../tdesktop/Telegram/Patches/build_ffmpeg_win.sh - name: Configure Qt 5.6.2 run: | %VS% && cd Libraries git clone git://code.qt.io/qt/qt5.git qt5_6_2 cd qt5_6_2 perl init-repository --module-subset=qtbase,qtimageformats git checkout v5.6.2 cd qtimageformats git checkout v5.6.2 cd ..\qtbase git checkout v5.6.2 git apply ../../../tdesktop/Telegram/Patches/qtbase_5_6_2.diff cd .. configure -debug-and-release -force-debug-info -opensource -confirm-license ^ -static -I "%cd%\..\openssl\inc32" -no-opengl -openssl-linked ^ OPENSSL_LIBS_DEBUG="%cd%\..\openssl\out32.dbg\ssleay32.lib %cd%\..\openssl\out32.dbg\libeay32.lib" ^ OPENSSL_LIBS_RELEASE="%cd%\..\openssl\out32\ssleay32.lib %cd%\..\openssl\out32\libeay32.lib" ^ -mp -nomake examples -nomake tests -platform win32-msvc2015 - name: Build Qt 5.6.2 run: | %VS% && cd Libraries cd qt5_6_2 jom -j4 jom -j4 install - name: Build Kotatogram env: GYP_MSVS_OVERRIDE_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\' GYP_MSVS_VERSION: 2019 API_ID: ${{ secrets.API_ID }} API_HASH: ${{ secrets.API_HASH }} TDESKTOP_BUILD_DEFINES: TDESKTOP_DISABLE_CRASH_REPORTS run: | %VS% %SWITCH_PY% cd tdesktop\Telegram call gyp\refresh.bat --api-id %API_ID% --api-hash %API_HASH% msbuild Telegram.sln /nologo /p:Configuration=Release,Platform=Win32 - name: Move artifact run: | cd tdesktop\out\Release mkdir artifact ren Telegram.exe Kotatogram.exe move Kotatogram.exe artifact/ move Updater.exe artifact/ - uses: actions/upload-artifact@master name: Upload artifact with: name: Forkgram path: tdesktop\out\Release\artifact\ build_linux: name: Linux runs-on: ubuntu-16.04 steps: - name: Install packages run: | sudo apt-get install software-properties-common -y && \ sudo apt-get remove libssl-dev && \ sudo apt-get install -t xenial-security libssl-dev && \ sudo apt-get install git libexif-dev liblzma-dev libz-dev libappindicator-dev \ libicu-dev libdee-dev libdrm-dev dh-autoreconf autoconf automake build-essential \ libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool \ libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-image0-dev libxcb-shm0-dev \ libxcb-xfixes0-dev libxcb-keysyms1-dev libxcb-icccm4-dev libxcb-render-util0-dev \ libxcb-util0-dev libxrender-dev libasound-dev libpulse-dev libxcb-sync0-dev \ libxcb-randr0-dev libx11-xcb-dev libffi-dev libncurses5-dev pkg-config texi2html \ zlib1g-dev yasm cmake xutils-dev bison python-xcbgen chrpath -y && \ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \ sudo add-apt-repository ppa:george-edison55/cmake-3.x -y && \ sudo apt-get update && \ sudo apt-get install gcc-8 g++-8 cmake -y && \ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 && \ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 60 && \ sudo update-alternatives --config gcc && \ sudo add-apt-repository --remove ppa:ubuntu-toolchain-r/test -y && \ sudo add-apt-repository --remove ppa:george-edison55/cmake-3.x -y - name: Clone repo run : | git clone --recursive https://github.com/kotatogram/kotatogram-desktop.git tdesktop cd tdesktop git checkout master cd .. mkdir Libraries - name: Range-v3 run: | cd Libraries git clone --branch 0.9.1 https://github.com/ericniebler/range-v3 - name: Zlib run: | cd Libraries git clone https://github.com/telegramdesktop/zlib.git cd zlib ./configure make -j8 sudo make install - name: Opus run: | cd Libraries git clone https://github.com/xiph/opus cd opus git checkout v1.3 ./autogen.sh ./configure make -j8 sudo make install - name: libva run: | cd Libraries git clone https://github.com/01org/libva.git cd libva ./autogen.sh --enable-static make -j8 sudo make install - name: libvdpau run: | cd Libraries git clone git://anongit.freedesktop.org/vdpau/libvdpau cd libvdpau git checkout libvdpau-1.2 ./autogen.sh --enable-static make -j8 sudo make install - name: FFmpeg run: | cd Libraries git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg git checkout release/3.4 ./configure --prefix=/usr/local \ --enable-protocol=file --enable-libopus \ --disable-programs \ --disable-doc \ --disable-network \ --disable-everything \ --enable-hwaccel=h264_vaapi \ --enable-hwaccel=h264_vdpau \ --enable-hwaccel=mpeg4_vaapi \ --enable-hwaccel=mpeg4_vdpau \ --enable-decoder=aac \ --enable-decoder=aac_at \ --enable-decoder=aac_fixed \ --enable-decoder=aac_latm \ --enable-decoder=aasc \ --enable-decoder=alac \ --enable-decoder=alac_at \ --enable-decoder=flac \ --enable-decoder=gif \ --enable-decoder=h264 \ --enable-decoder=h264_vdpau \ --enable-decoder=hevc \ --enable-decoder=mp1 \ --enable-decoder=mp1float \ --enable-decoder=mp2 \ --enable-decoder=mp2float \ --enable-decoder=mp3 \ --enable-decoder=mp3adu \ --enable-decoder=mp3adufloat \ --enable-decoder=mp3float \ --enable-decoder=mp3on4 \ --enable-decoder=mp3on4float \ --enable-decoder=mpeg4 \ --enable-decoder=mpeg4_vdpau \ --enable-decoder=msmpeg4v2 \ --enable-decoder=msmpeg4v3 \ --enable-decoder=opus \ --enable-decoder=pcm_alaw \ --enable-decoder=pcm_alaw_at \ --enable-decoder=pcm_f32be \ --enable-decoder=pcm_f32le \ --enable-decoder=pcm_f64be \ --enable-decoder=pcm_f64le \ --enable-decoder=pcm_lxf \ --enable-decoder=pcm_mulaw \ --enable-decoder=pcm_mulaw_at \ --enable-decoder=pcm_s16be \ --enable-decoder=pcm_s16be_planar \ --enable-decoder=pcm_s16le \ --enable-decoder=pcm_s16le_planar \ --enable-decoder=pcm_s24be \ --enable-decoder=pcm_s24daud \ --enable-decoder=pcm_s24le \ --enable-decoder=pcm_s24le_planar \ --enable-decoder=pcm_s32be \ --enable-decoder=pcm_s32le \ --enable-decoder=pcm_s32le_planar \ --enable-decoder=pcm_s64be \ --enable-decoder=pcm_s64le \ --enable-decoder=pcm_s8 \ --enable-decoder=pcm_s8_planar \ --enable-decoder=pcm_u16be \ --enable-decoder=pcm_u16le \ --enable-decoder=pcm_u24be \ --enable-decoder=pcm_u24le \ --enable-decoder=pcm_u32be \ --enable-decoder=pcm_u32le \ --enable-decoder=pcm_u8 \ --enable-decoder=pcm_zork \ --enable-decoder=vorbis \ --enable-decoder=wavpack \ --enable-decoder=wmalossless \ --enable-decoder=wmapro \ --enable-decoder=wmav1 \ --enable-decoder=wmav2 \ --enable-decoder=wmavoice \ --enable-encoder=libopus \ --enable-parser=aac \ --enable-parser=aac_latm \ --enable-parser=flac \ --enable-parser=h264 \ --enable-parser=hevc \ --enable-parser=mpeg4video \ --enable-parser=mpegaudio \ --enable-parser=opus \ --enable-parser=vorbis \ --enable-demuxer=aac \ --enable-demuxer=flac \ --enable-demuxer=gif \ --enable-demuxer=h264 \ --enable-demuxer=hevc \ --enable-demuxer=m4v \ --enable-demuxer=mov \ --enable-demuxer=mp3 \ --enable-demuxer=ogg \ --enable-demuxer=wav \ --enable-muxer=ogg \ --enable-muxer=opus make -j8 sudo make install - name: PortAudio run: | cd Libraries git clone https://git.assembla.com/portaudio.git cd portaudio git checkout 396fe4b669 ./configure make -j8 sudo make install - name: OpenAL-Soft run: | cd Libraries git clone git://repo.or.cz/openal-soft.git cd openal-soft git checkout openal-soft-1.19.1 cd build if [ `uname -p` == "i686" ]; then cmake -D LIBTYPE:STRING=STATIC -D ALSOFT_UTILS:BOOL=OFF .. else cmake -D LIBTYPE:STRING=STATIC .. fi make -j8 sudo make install - name: OpenSSL run: | cd Libraries git clone https://github.com/openssl/openssl cd openssl git checkout OpenSSL_1_0_2-stable ./config make -j8 sudo make install - name: libxkbcommon run: | cd Libraries git clone https://github.com/xkbcommon/libxkbcommon.git cd libxkbcommon git checkout xkbcommon-0.8.4 ./autogen.sh --disable-x11 make -j8 sudo make install - name: GYP run: | cd Libraries git clone https://chromium.googlesource.com/external/gyp cd gyp git checkout 702ac58e47 git apply ../../tdesktop/Telegram/Patches/gyp.diff - name: Breakpad run: | cd Libraries git clone https://chromium.googlesource.com/breakpad/breakpad cd breakpad git checkout bc8fb886 git clone https://chromium.googlesource.com/linux-syscall-support src/third_party/lss cd src/third_party/lss git checkout a91633d1 cd ../../.. ./configure make -j8 sudo make install - name: Qt 5.6.2 run: | cd Libraries git clone git://code.qt.io/qt/qt5.git qt5_6_2 cd qt5_6_2 perl init-repository --module-subset=qtbase,qtimageformats git checkout v5.6.2 cd qtimageformats && git checkout v5.6.2 && cd .. cd qtbase && git checkout v5.6.2 && cd .. cd qtbase && git apply ../../../tdesktop/Telegram/Patches/qtbase_5_6_2.diff && cd .. cd qtbase/src/plugins/platforminputcontexts git clone https://github.com/telegramdesktop/fcitx.git git clone https://github.com/telegramdesktop/hime.git git clone https://github.com/telegramdesktop/nimf.git cd ../../../.. ./configure -prefix "/usr/local/tdesktop/Qt-5.6.2" -release -force-debug-info -opensource \ -confirm-license -qt-zlib -qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz -qt-pcre -qt-xcb \ -qt-xkbcommon-x11 -no-opengl -no-gtkstyle -static -openssl-linked -nomake examples -nomake tests make -j8 sudo make install - name: Build Kotatogram env: API_ID: ${{ secrets.API_ID }} API_HASH: ${{ secrets.API_HASH }} TDESKTOP_BUILD_DEFINES: TDESKTOP_DISABLE_CRASH_REPORTS run: | cd tdesktop/Telegram gyp/refresh.sh --api-id $API_ID --api-hash $API_HASH cd ../out/Release make strip --strip-all Telegram Updater mv Telegram Kotatogram - name: Move artifact run: | cd tdesktop/out/Release mkdir artifact mv Kotatogram artifact/ mv Updater artifact/ - uses: actions/upload-artifact@master name: Upload artifact with: name: Kotatogram path: tdesktop/out/Release/artifact/