diff --git a/.appveyor/install.bat b/.appveyor/install.bat index 590d1e0f5..cf2e8e021 100644 --- a/.appveyor/install.bat +++ b/.appveyor/install.bat @@ -50,8 +50,8 @@ GOTO:EOF git submodule init git submodule update cd %SRC_DIR%\Telegram - call gyp\refresh.bat --api-id 17349 --api-hash 344583e45741c457fe1862106095a5eb -GOTO:EOF + call gyp\refresh.bat --api-id 17349 --api-hash 344583e45741c457fe1862106095a5eb --ci-build + GOTO:EOF :configureBuild call:logInfo "Configuring build" diff --git a/.travis/build.sh b/.travis/build.sh index 4b6d05ff8..e9665847b 100755 --- a/.travis/build.sh +++ b/.travis/build.sh @@ -11,21 +11,21 @@ CACHE="$HOME/travisCacheDir" QT_WAS_BUILT="0" -QT_VERSION=5.6.2 +QT_VERSION=5.12.5 XKB_PATH="$BUILD/libxkbcommon" XKB_CACHE_VERSION="3" QT_PATH="$BUILD/qt" QT_CACHE_VERSION="4" -QT_PATCH="$UPSTREAM/Telegram/Patches/qtbase_${QT_VERSION//\./_}.diff" +QT_PATCH="$EXTERNAL/patches/qtbase_${QT_VERSION//\./_}.diff" BREAKPAD_PATH="$BUILD/breakpad" BREAKPAD_CACHE_VERSION="3" GYP_PATH="$BUILD/gyp" GYP_CACHE_VERSION="3" -GYP_PATCH="$UPSTREAM/Telegram/Patches/gyp.diff" +GYP_PATCH="$EXTERNAL/patches/gyp.diff" RANGE_PATH="$BUILD/range-v3" RANGE_CACHE_VERSION="3" @@ -64,6 +64,8 @@ build() { BUILD_VERSION_DATA=$(echo $BUILD_VERSION | cut -d'-' -f 1) + getPatches + # libxkbcommon getXkbCommon @@ -127,6 +129,11 @@ build() { travisEndFold } +getPatches() { + cd "$EXTERNAL" + git clone --depth 1 https://github.com/desktop-app/patches +} + getXkbCommon() { travisStartFold "Getting xkbcommon" @@ -580,8 +587,8 @@ buildCustomQt() { QT_WAS_BUILT="1" info_msg "Downloading and building patched qt" - if [ -d "$EXTERNAL/qt${QT_VERSION}" ]; then - sudo rm -rf "$EXTERNAL/qt${QT_VERSION}" + if [ -d "$EXTERNAL/qt_${QT_VERSION}" ]; then + sudo rm -rf "$EXTERNAL/qt_${QT_VERSION}" fi cd $QT_PATH sudo rm -rf * @@ -592,8 +599,8 @@ buildCustomQt() { cd "$EXTERNAL/qt${QT_VERSION}" perl init-repository --branch --module-subset=qtbase,qtimageformats git checkout v${QT_VERSION} - cd qtbase && git checkout v${QT_VERSION} && cd .. - cd qtimageformats && git checkout v${QT_VERSION} && cd .. + git submodule update qtbase + git submodule update qtimageformats cd "$EXTERNAL/qt${QT_VERSION}/qtbase" git apply "$QT_PATCH" @@ -606,10 +613,10 @@ buildCustomQt() { cd ../../../.. ./configure -prefix $QT_PATH -release -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 \ + -qt-libpng -qt-libjpeg -qt-harfbuzz -qt-pcre -qt-xcb \ + -system-freetype -fontconfig -no-opengl -no-gtk -static \ -nomake examples -nomake tests -no-mirclient \ - -dbus-runtime -no-gstreamer -no-mtdev # <- Not sure about these + -dbus-runtime -no-mtdev # <- Not sure about these make $MAKE_ARGS sudo make install } @@ -664,7 +671,7 @@ buildGYP() { git clone https://chromium.googlesource.com/external/gyp cd "$EXTERNAL/gyp" - git checkout 702ac58e47 + git checkout 9f2a7bb1 git apply "$GYP_PATCH" cp -r * "$GYP_PATH/" } @@ -676,6 +683,7 @@ buildTelegram() { "$GYP_PATH/gyp" \ -Dapi_id=17349 \ -Dapi_hash=344583e45741c457fe1862106095a5eb \ + -Dspecial_build_target= \ -Dbuild_defines=${GYP_DEFINES:1} \ -Dlinux_path_xkbcommon=$XKB_PATH \ -Dlinux_path_va=$VA_PATH \ diff --git a/Telegram/Resources/uwp/AppX/AppxManifest.xml b/Telegram/Resources/uwp/AppX/AppxManifest.xml index 05919fb20..91eed0956 100644 --- a/Telegram/Resources/uwp/AppX/AppxManifest.xml +++ b/Telegram/Resources/uwp/AppX/AppxManifest.xml @@ -9,7 +9,7 @@ + Version="1.9.1.0" /> Telegram Desktop Telegram FZ-LLC diff --git a/Telegram/SourceFiles/chat_helpers/message_field.cpp b/Telegram/SourceFiles/chat_helpers/message_field.cpp index 8895b0ee4..f6ae4593f 100644 --- a/Telegram/SourceFiles/chat_helpers/message_field.cpp +++ b/Telegram/SourceFiles/chat_helpers/message_field.cpp @@ -279,9 +279,8 @@ void InitSpellchecker( not_null field) { #ifndef TDESKTOP_DISABLE_SPELLCHECK const auto s = Ui::CreateChild( - field->rawTextEdit().get(), - session->settings().spellcheckerEnabledValue(), - field->documentContentsChanges()); + field.get(), + session->settings().spellcheckerEnabledValue()); Spellchecker::SetPhrases({ { { &ph::lng_spellchecker_add, tr::lng_spellchecker_add() }, { &ph::lng_spellchecker_remove, tr::lng_spellchecker_remove() }, diff --git a/Telegram/SourceFiles/core/version.h b/Telegram/SourceFiles/core/version.h index bac5c7f8c..fa5be2005 100644 --- a/Telegram/SourceFiles/core/version.h +++ b/Telegram/SourceFiles/core/version.h @@ -15,8 +15,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #define TDESKTOP_ALPHA_VERSION (0ULL) #endif // TDESKTOP_OFFICIAL_TARGET -constexpr auto AppVersion = 1009000; -constexpr auto AppVersionStr = "1.9"; +constexpr auto AppVersion = 1009001; +constexpr auto AppVersionStr = "1.9.1"; constexpr auto AppBetaVersion = true; constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION; constexpr auto AppKotatoVersion = 1001000; diff --git a/Telegram/SourceFiles/settings/settings_advanced.cpp b/Telegram/SourceFiles/settings/settings_advanced.cpp index 9605044b5..0a41abef7 100644 --- a/Telegram/SourceFiles/settings/settings_advanced.cpp +++ b/Telegram/SourceFiles/settings/settings_advanced.cpp @@ -244,6 +244,9 @@ void SetupUpdate(not_null container) { } bool HasSystemSpellchecker() { +#ifdef TDESKTOP_DISABLE_SPELLCHECK + return false; +#endif // TDESKTOP_DISABLE_SPELLCHECK return (Platform::IsWindows() && Platform::IsWindows8OrGreater()) || Platform::IsMac(); } diff --git a/Telegram/build/build.bat b/Telegram/build/build.bat index 3e8e37cfc..88b5c4e92 100644 --- a/Telegram/build/build.bat +++ b/Telegram/build/build.bat @@ -57,7 +57,7 @@ set "DeployPath=%ReleasePath%\deploy\%AppVersionStrMajor%\%AppVersionStrFull%" set "SignPath=%HomePath%\..\..\DesktopPrivate\Sign.bat" set "BinaryName=Telegram" set "DropboxSymbolsPath=Y:\Telegram\symbols" -set "FinalReleasePath=Z:\Telegram\backup" +set "FinalReleasePath=Z:\Projects\backup\tdesktop" if not exist %DropboxSymbolsPath% ( echo Dropbox path %DropboxSymbolsPath% not found! diff --git a/Telegram/build/build.sh b/Telegram/build/build.sh index 98a9568ac..325d473b2 100755 --- a/Telegram/build/build.sh +++ b/Telegram/build/build.sh @@ -118,8 +118,8 @@ if [ "$BuildTarget" == "linux" ] || [ "$BuildTarget" == "linux32" ]; then Error "Dropbox path not found!" fi - BackupPath="/media/psf/backup/$AppVersionStrMajor/$AppVersionStrFull/t$BuildTarget" - if [ ! -d "/media/psf/backup" ]; then + BackupPath="/media/psf/backup/tdesktop/$AppVersionStrMajor/$AppVersionStrFull/t$BuildTarget" + if [ ! -d "/media/psf/backup/tdesktop" ]; then Error "Backup folder not found!" fi @@ -248,8 +248,8 @@ if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "osx" ] || [ "$BuildTarget Error "Dropbox path not found!" fi - BackupPath="$HOME/Telegram/backup/$AppVersionStrMajor/$AppVersionStrFull" - if [ ! -d "$HOME/Telegram/backup" ]; then + BackupPath="$HOME/Projects/backup/tdesktop/$AppVersionStrMajor/$AppVersionStrFull" + if [ ! -d "$HOME/Projects/backup/tdesktop" ]; then Error "Backup path not found!" fi diff --git a/Telegram/build/deploy.sh b/Telegram/build/deploy.sh index 87879bc1a..e3e9fdf5b 100755 --- a/Telegram/build/deploy.sh +++ b/Telegram/build/deploy.sh @@ -79,9 +79,9 @@ else fi fi if [ "$BuildTarget" == "mac" ]; then - BackupPath="$HOME/Telegram/backup" + BackupPath="$HOME/Projects/backup/tdesktop" elif [ "$BuildTarget" == "linux" ]; then - BackupPath="/media/psf/Home/Telegram/backup" + BackupPath="/media/psf/Home/Projects/backup/tdesktop" else Error "Can't deploy here" fi diff --git a/Telegram/build/release.py b/Telegram/build/release.py index f1523476b..dcccafccb 100644 --- a/Telegram/build/release.py +++ b/Telegram/build/release.py @@ -1,6 +1,6 @@ import os, sys, requests, pprint, re, json from uritemplate import URITemplate, expand -from subprocess import call +from subprocess import call, Popen, PIPE from os.path import expanduser changelog_file = '../../changelog.txt' @@ -53,6 +53,59 @@ def checkResponseCode(result, right_code): print('Wrong result code: ' + str(result.status_code) + ', should be ' + str(right_code)) sys.exit(1) +def getOutput(command): + p = Popen(command.split(), stdout=PIPE) + output, err = p.communicate() + if err != None or p.returncode != 0: + print('ERROR!') + print(err) + print(p.returncode) + sys.exit(1) + return output.decode('utf-8') + +def prepareSources(): + workpath = os.getcwd() + os.chdir('../..') + rootpath = os.getcwd() + finalpath = rootpath + '/out/Release/sources.tar' + if os.path.exists(finalpath): + os.remove(finalpath) + if os.path.exists(finalpath + '.gz'): + os.remove(finalpath + '.gz') + tmppath = rootpath + '/out/Release/tmp.tar' + print('Preparing source tarball...') + if (call(('git archive --prefix=tdesktop-' + version + '-full/ -o ' + finalpath + ' v' + version).split()) != 0): + os.remove(finalpath) + sys.exit(1) + lines = getOutput('git submodule foreach').split('\n') + for line in lines: + if len(line) == 0: + continue + match = re.match(r"^Entering '([^']+)'$", line) + if not match: + print('Bad line: ' + line) + sys.exit(1) + path = match.group(1) + revision = getOutput('git rev-parse v' + version + ':' + path).split('\n')[0] + print('Adding submodule ' + path + '...') + os.chdir(path) + if (call(('git archive --prefix=tdesktop-' + version + '-full/' + path + '/ ' + revision + ' -o ' + tmppath).split()) != 0): + os.remove(finalpath) + os.remove(tmppath) + sys.exit(1) + if (call(('gtar --concatenate --file=' + finalpath + ' ' + tmppath).split()) != 0): + os.remove(finalpath) + os.remove(tmppath) + sys.exit(1) + os.remove(tmppath) + os.chdir(rootpath) + print('Compressing...') + if (call(('gzip -9 ' + finalpath).split()) != 0): + os.remove(finalpath) + sys.exit(1) + os.chdir(workpath) + return finalpath + '.gz' + pp = pprint.PrettyPrinter(indent=2) url = 'https://api.github.com/' @@ -152,6 +205,12 @@ files.append({ 'mime': 'application/octet-stream', 'label': 'Linux 32 bit: Binary', }) +files.append({ + 'local': 'sources', + 'remote': 'tdesktop-' + version + '-full.tar.gz', + 'mime': 'application/x-gzip', + 'label': 'Source code (tar.gz, full)', +}) r = requests.get(url + 'repos/telegramdesktop/tdesktop/releases/tags/v' + version) if r.status_code == 404: @@ -182,8 +241,8 @@ if r.status_code == 404: sys.exit(1) changelog = changelog.strip() - print('Changelog: '); - print(changelog); + print('Changelog: ') + print(changelog) r = requests.post(url + 'repos/telegramdesktop/tdesktop/releases', headers={'Authorization': 'token ' + access_token}, data=json.dumps({ 'tag_name': 'v' + version, @@ -195,7 +254,7 @@ if r.status_code == 404: checkResponseCode(r, 201) tagname = 'v' + version -call("git fetch origin".split()); +call("git fetch origin".split()) if stable == 1: call("git push launchpad {}:master".format(tagname).split()) else: @@ -203,7 +262,7 @@ else: call("git push --tags launchpad".split()) r = requests.get(url + 'repos/telegramdesktop/tdesktop/releases/tags/v' + version) -checkResponseCode(r, 200); +checkResponseCode(r, 200) release_data = r.json() #pp.pprint(release_data) @@ -211,8 +270,8 @@ release_data = r.json() release_id = release_data['id'] print('Release ID: ' + str(release_id)) -r = requests.get(url + 'repos/telegramdesktop/tdesktop/releases/' + str(release_id) + '/assets'); -checkResponseCode(r, 200); +r = requests.get(url + 'repos/telegramdesktop/tdesktop/releases/' + str(release_id) + '/assets') +checkResponseCode(r, 200) assets = release_data['assets'] for asset in assets: @@ -230,12 +289,15 @@ for asset in assets: for file in files: if 'already' in file: continue - file_path = local_folder + file['backup_folder'] + '/' + file['local'] + if file['local'] == 'sources': + file_path = prepareSources() + else: + file_path = local_folder + file['backup_folder'] + '/' + file['local'] if not os.path.isfile(file_path): print('Warning: file not found ' + file['local']) continue - upload_url = expand(release_data['upload_url'], {'name': file['remote'], 'label': file['label']}) + '&access_token=' + access_token; + upload_url = expand(release_data['upload_url'], {'name': file['remote'], 'label': file['label']}) + '&access_token=' + access_token content = upload_in_chunks(file_path, 10) diff --git a/Telegram/build/version b/Telegram/build/version index b3f93e6c0..d4f9f3413 100644 --- a/Telegram/build/version +++ b/Telegram/build/version @@ -1,6 +1,6 @@ -AppVersion 1009000 +AppVersion 1009001 AppVersionStrMajor 1.9 -AppVersionStrSmall 1.9 -AppVersionStr 1.9.0 +AppVersionStrSmall 1.9.1 +AppVersionStr 1.9.1 BetaChannel 1 AlphaVersion 0 diff --git a/Telegram/gyp/generate.py b/Telegram/gyp/generate.py index 083b1325c..5b8ef8688 100644 --- a/Telegram/gyp/generate.py +++ b/Telegram/gyp/generate.py @@ -23,6 +23,7 @@ apiId = '' apiHash = '' nextApiId = False nextApiHash = False +ciBuild = False for arg in sys.argv: if nextApiId: apiId = re.sub(r'[^\d]', '', arg) @@ -33,6 +34,8 @@ for arg in sys.argv: else: nextApiId = (arg == '--api-id') nextApiHash = (arg == '--api-hash') + if arg == '--ci-build': + ciBuild = True officialTarget = '' officialTargetFile = scriptPath + '/../build/target' @@ -86,6 +89,9 @@ gypArguments.append('-Dapi_id=' + apiId) gypArguments.append('-Dapi_hash=' + apiHash) gypArguments.append('-Dlottie_use_cache=1') gypArguments.append('-Dspecial_build_target=' + officialTarget) +if ciBuild: + gypArguments.append('-Dci_build=1') + if 'TDESKTOP_BUILD_DEFINES' in os.environ: buildDefines = os.environ['TDESKTOP_BUILD_DEFINES'] gypArguments.append('-Dbuild_defines=' + buildDefines) diff --git a/Telegram/lib_ui b/Telegram/lib_ui index b12d0dbe9..d76b213fc 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit b12d0dbe9a388d08dc97ac8b164b52b8b6e33ea1 +Subproject commit d76b213fc41943ecc1a469b6cd7f8a60318a18be diff --git a/changelog.txt b/changelog.txt index 0f0834000..5241eca18 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,7 @@ +1.9.1 beta (06.11.19) + +- Bug fixes and other minor improvements. + 1.9 beta (05.11.19) - System spellchecker on Windows 8+ and macOS 10.12+. diff --git a/docs/building-cmake.md b/docs/building-cmake.md index d4a228e5a..8b953035b 100644 --- a/docs/building-cmake.md +++ b/docs/building-cmake.md @@ -13,7 +13,7 @@ You will require **api_id** and **api_hash** to access the Telegram API servers. You will need GCC 8.1 installed. To install them and all the required dependencies run sudo apt-get install software-properties-common -y && \ - sudo apt-get install git libexif-dev liblzma-dev libz-dev libssl-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 xutils-dev bison python-xcbgen chrpath gperf -y && \ + sudo apt-get install git libexif-dev liblzma-dev libz-dev libssl-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 libxcb-xkb-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 xutils-dev bison python-xcbgen chrpath gperf -y && \ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \ sudo apt-get update && \ sudo apt-get install gcc-8 g++-8 -y && \ @@ -218,7 +218,7 @@ Go to ***BuildPath*** and run git clone https://github.com/xkbcommon/libxkbcommon.git cd libxkbcommon git checkout xkbcommon-0.8.4 - ./autogen.sh --disable-x11 + ./autogen.sh make $MAKE_THREADS_CNT sudo make install cd .. @@ -259,7 +259,11 @@ Go to ***BuildPath*** and run ./configure make $MAKE_THREADS_CNT sudo make install - cd src/tools + cd src + rm -r testing + git clone https://github.com/google/googletest testing + cd tools + sed -i 's/minidump_upload.m/minidump_upload.cc/' linux/tools_linux.gypi ../../../gyp/gyp --depth=. --generator-output=.. -Goutput_dir=../out tools.gyp --format=cmake cd ../../out/Default cmake . diff --git a/docs/building-msvc.md b/docs/building-msvc.md index ad4e2b082..215c35901 100644 --- a/docs/building-msvc.md +++ b/docs/building-msvc.md @@ -32,7 +32,7 @@ Open **x86 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** cd ThirdParty git clone https://github.com/desktop-app/patches.git cd patches - git checkout b0ec5df4 + git checkout b0ec5df cd ../ git clone https://chromium.googlesource.com/external/gyp cd gyp @@ -95,7 +95,6 @@ Open **x86 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** git clone https://github.com/desktop-app/zlib.git cd zlib - git checkout tdesktop cd contrib\vstudio\vc14 msbuild zlibstat.vcxproj /property:Configuration=Debug msbuild zlibstat.vcxproj /property:Configuration=ReleaseWithoutAsm diff --git a/docs/building-xcode.md b/docs/building-xcode.md index 7c66e18d6..8679de944 100644 --- a/docs/building-xcode.md +++ b/docs/building-xcode.md @@ -22,7 +22,7 @@ Go to ***BuildPath*** and run MACOSX_DEPLOYMENT_TARGET=10.12 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - brew install automake cmake fdk-aac git lame libass libtool libvorbis libvpx ninja opus sdl shtool texi2html theora wget x264 xvid yasm pkg-config + brew install automake cmake fdk-aac git lame libass libtool libvorbis libvpx ninja opus sdl shtool texi2html theora wget x264 xvid yasm pkg-config gnu-tar sudo xcode-select -s /Applications/Xcode.app/Contents/Developer