diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index 769aab3..1db11fe 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -2,46 +2,81 @@ # Contributor: hexchain pkgname=telegram-desktop pkgver=4.5.3 -pkgrel=1 +_qtver=6.4.2 +pkgrel=2 pkgdesc='Official Telegram Desktop client' arch=('x86_64') url="https://desktop.telegram.org/" license=('GPL3') depends=('hunspell' 'ffmpeg' 'hicolor-icon-theme' 'lz4' 'minizip' 'openal' 'ttf-opensans' - 'qt6-imageformats' 'qt6-svg' 'qt6-wayland' 'qt6-5compat' 'xxhash' 'glibmm-2.68' - 'rnnoise' 'pipewire' 'libxtst' 'libxrandr' 'jemalloc' 'abseil-cpp' 'libdispatch' - 'openssl-1.1' 'protobuf') + 'xxhash' 'glibmm-2.68' 'rnnoise' 'pipewire' 'libxtst' 'libxrandr' 'jemalloc' 'abseil-cpp' + 'libdispatch' 'openssl-1.1' 'protobuf' + 'xcb-util-keysyms' 'libxcomposite' 'libxkbcommon-x11' 'libxrender' 'xcb-util-cursor' 'xcb-util-wm') # 'libinput' makedepends=('cmake' 'git' 'ninja' 'python' 'range-v3' 'tl-expected' 'microsoft-gsl' 'meson' 'extra-cmake-modules' 'wayland-protocols' 'plasma-wayland-protocols' 'libtg_owt') optdepends=('webkit2gtk: embedded browser features' 'xdg-desktop-portal: desktop integration') -source=("https://github.com/telegramdesktop/tdesktop/releases/download/v${pkgver}/tdesktop-${pkgver}-full.tar.gz") -sha512sums=('58a9c5d096e236090347388e1ed480527f841045a80771079dc0c3e35e12ce8ac11753987e87bb57870d9bd8488fc6a4734114648ecec7823d8544744b06c6b1') +_pkgfn=qt-everywhere-src-$_qtver +options=('!lto') +source=("https://github.com/telegramdesktop/tdesktop/releases/download/v${pkgver}/tdesktop-${pkgver}-full.tar.gz" + https://download.qt.io/official_releases/qt/${_qtver%.*}/$_qtver/single/$_pkgfn.tar.xz + qt6-base-cflags.patch + qt6-base-nostrip.patch + https://github.com/desktop-app/patches/archive/9aa30bc44248eb620a720459ef4c81ed0bb65065.tar.gz) +sha512sums=('58a9c5d096e236090347388e1ed480527f841045a80771079dc0c3e35e12ce8ac11753987e87bb57870d9bd8488fc6a4734114648ecec7823d8544744b06c6b1' + '1b41ad1bd3f4b0780e8cd32219a5f0b037dc2c500c491a9e4a5ad7f5844356a3553856eb8aef8d73528a26f9e2bf058318ac239f55962b3368a9539f6c5d1dbe' + 'ce4c2b4aeb70073c1f68d68e9f03746bba5350e09605ca29f64b57c92d3ff9ab27279fe307307273cb4c23fd091bb9056d7b86eb02a802b695499d56b1f79cf0' + 'af061bb56d5079d11407e6eb352fa4af7fefa6aed7f8cc40b5b2d591ef7ff04e9da6c6d534ca1904355ea7552951a1610fdcefb04ef9d696cb2b23ad6a0606e8' + '5c00d63bab64dda4f1ce85cbfe0a3ffba233dccf835ada3fb3e533cea9442731afdefd99505e95fdea8eed7cf63430e10c9b181c6049afc6c17dbc2dc63d73a5') prepare() { - cd tdesktop-$pkgver-full + cd $_pkgfn + patch -Np1 -i "$srcdir"/qt6-base-cflags.patch -d qtbase + patch -Np1 -i "$srcdir"/qt6-base-nostrip.patch -d qtbase + for p in "$srcdir"/patches-*/qtbase_6_4_2/*.patch; do patch -Np1 -i "$p" -d qtbase; done + cd ../tdesktop-$pkgver-full + rm -rf Telegram/ThirdParty/libtgvoip/webrtc_dsp/absl } build() { + CXXFLAGS+=' -ffat-lto-objects' + # Telegram needs a specific and heavily patched version of Qt6 and so we + # can't use system dependencies. + QT_BUILD_SUBMODULES="qtdeclarative;qtwayland;qtimageformats;qtsvg;qt5compat;qtshadertools" \ + cmake -B build-qt6-base -S $_pkgfn -G Ninja \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF \ + -DCMAKE_MESSAGE_LOG_LEVEL=STATUS \ + -DCMAKE_SKIP_RPATH=ON \ + -DQT_FEATURE_openssl_linked=ON \ + -DQT_FEATURE_system_sqlite=ON \ + -DQT_FEATURE_system_xcb_xinput=ON + cmake --build build-qt6-base + DESTDIR=qt6-base cmake --install build-qt6-base + cd tdesktop-$pkgver-full - #Turns out we're allowed to use the official API key that telegram uses for their snap builds: + # Turns out we're allowed to use the official API key that telegram uses for their snap builds: # https://github.com/telegramdesktop/tdesktop/blob/8fab9167beb2407c1153930ed03a4badd0c2b59f/snap/snapcraft.yaml#L87-L88 # Thanks @primeos! + export CMAKE_PREFIX_PATH="$srcdir"/qt6-base/usr cmake \ -B build \ - -G Ninja \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ -DCMAKE_INSTALL_PREFIX="/usr" \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_BUILD_TYPE=None \ -DTDESKTOP_API_ID=611335 \ -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c - ninja -C build + cmake --build build } package() { cd tdesktop-$pkgver-full DESTDIR="$pkgdir" ninja -C build install # They botched the release and put a lot of stuff here. - rm -rf "$pkgdir/build" + # rm -rf "$pkgdir/build" + # install -D ../build-qt6-base/lib/libQt6OpenGL.so.$_qtver "$pkgdir/usr/lib/$pkgname/libQt6OpenGL.so.${_qtver%%.*}" } diff --git a/trunk/qt6-base-cflags.patch b/trunk/qt6-base-cflags.patch new file mode 100644 index 0000000..3325016 --- /dev/null +++ b/trunk/qt6-base-cflags.patch @@ -0,0 +1,46 @@ +diff --git a/mkspecs/common/g++-unix.conf b/mkspecs/common/g++-unix.conf +index a493cd5984..41342f5020 100644 +--- a/mkspecs/common/g++-unix.conf ++++ b/mkspecs/common/g++-unix.conf +@@ -10,5 +10,6 @@ + + include(g++-base.conf) + +-QMAKE_LFLAGS_RELEASE += -Wl,-O1 ++SYSTEM_LDFLAGS = $$(LDFLAGS) ++!isEmpty(SYSTEM_LDFLAGS) { eval(QMAKE_LFLAGS_RELEASE += $$(LDFLAGS)) } else { QMAKE_LFLAGS_RELEASE += -Wl,-O1 } + QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined +diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf +index 1f919d270a..7ef6046326 100644 +--- a/mkspecs/common/gcc-base.conf ++++ b/mkspecs/common/gcc-base.conf +@@ -40,9 +40,11 @@ QMAKE_CFLAGS_OPTIMIZE_SIZE = -Os + QMAKE_CFLAGS_DEPS += -M + QMAKE_CFLAGS_WARN_ON += -Wall -Wextra + QMAKE_CFLAGS_WARN_OFF += -w +-QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE +-QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g +-QMAKE_CFLAGS_DEBUG += -g ++SYSTEM_CFLAGS = $$(CFLAGS) ++SYSTEM_DEBUG_CFLAGS = $$(DEBUG_CFLAGS) ++!isEmpty(SYSTEM_CFLAGS) { eval(QMAKE_CFLAGS_RELEASE += $$(CFLAGS)) } else { QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE } ++!isEmpty(SYSTEM_CFLAGS) { eval(QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -g $$(CFLAGS)) } else { QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g } ++!isEmpty(SYSTEM_DEBUG_CFLAGS) { eval(QMAKE_CFLAGS_DEBUG += $$(DEBUG_CFLAGS)) } else { QMAKE_CFLAGS_DEBUG += -g } + QMAKE_CFLAGS_SHLIB += $$QMAKE_CFLAGS_PIC + QMAKE_CFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_PIC + QMAKE_CFLAGS_APP += $$QMAKE_CFLAGS_PIC +@@ -59,9 +61,11 @@ QMAKE_CXXFLAGS += $$QMAKE_CFLAGS + QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS + QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON + QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF +-QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE +-QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +-QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG ++SYSTEM_CXXFLAGS = $$(CXXFLAGS) ++SYSTEM_DEBUG_CXXFLAGS = $$(DEBUG_CXXFLAGS) ++!isEmpty(SYSTEM_CXXFLAGS) { eval(QMAKE_CXXFLAGS_RELEASE += $$(CXXFLAGS)) } else { QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE } ++!isEmpty(SYSTEM_CXXFLAGS) { eval(QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -g $$(CXXFLAGS)) } else { QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g } ++!isEmpty(SYSTEM_DEBUG_CXXFLAGS) { eval(QMAKE_CXXFLAGS_DEBUG += $$(DEBUG_CXXFLAGS)) } else { QMAKE_CXXFLAGS_DEBUG += -g } + QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB + QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB + QMAKE_CXXFLAGS_APP += $$QMAKE_CFLAGS_APP diff --git a/trunk/qt6-base-nostrip.patch b/trunk/qt6-base-nostrip.patch new file mode 100644 index 0000000..17d24b4 --- /dev/null +++ b/trunk/qt6-base-nostrip.patch @@ -0,0 +1,13 @@ +diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf +index 99d77156fd..fc840fe9f6 100644 +--- a/mkspecs/common/gcc-base.conf ++++ b/mkspecs/common/gcc-base.conf +@@ -31,6 +31,8 @@ + # you can use the manual test in tests/manual/mkspecs. + # + ++CONFIG += nostrip ++ + QMAKE_CFLAGS_OPTIMIZE = -O2 + QMAKE_CFLAGS_OPTIMIZE_FULL = -O3 + QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Og