This is not required anymore and therefore a refactoring/cleanup
(verified with diffoscope that only the output paths change).
Credit to @ilya-fedin for bringing this to my attention.
This also properly enables the spell checking with enchant2.
Note: This requires a proper configuration.
A quick and dirty solution (not recommended) could look like this:
install -Dt ~/.config/enchant/hunspell/ $(nix-build -A hunspellDicts.en_US)/share/hunspell/en_US.{aff,dic}
The GYP build is now deprecated [0].
This results in a large number of changes and many custom Nix patches
aren't required anymore (and probably haven't been required for quite
some time now, the derivation got a bit outdated...).
A lot of the changes in this commit are based on the changes of the
Arch package [1][2] (which our package is based upon).
Rough overview of the changes:
- gcc9 -> ninja (optional but let's follow Arch here)
- Dropped GYP, only CMake now
- But: Python is still required
- fetchFromGitHub -> fetchurl (optional?)
- Apply all Arch patches and remove old patches
- Requires one new patch for range-v3
- New dependencies: enchant2, lz4, xxHash
- TODO: Plus a few new dependencies that shouldn't be required
- Cleanup: Irrelevant flags (e.g. GYP_DEFINES) and patches (e.g. sed)
- Simplifies quite a few things :)
- Some additional documentation and TODOs
Co-Authored-By: Jan Tojnar <jtojnar@gmail.com>
[0]: https://github.com/telegramdesktop/tdesktop/issues/7001
[1]: https://git.archlinux.org/svntogit/community.git/commit/?id=23eff2b1ef7435441e93120618ca899f0b0e7e61
[2]: https://git.archlinux.org/svntogit/community.git/commit/?id=6a19e949724b2e2bfcdcf2081111ecd46108e449
Unfortunately the previous release (1.8.1) was crashing due to a
segmentation fault (didn't have time to investigate), but this release
works fine so far.
Had to switch from GCC 8 to GCC 9 due to the following internal compiler
error:
/nix/store/qsc6w1cnjp4pr7d90bhc0sid01i8k0a0-range-v3-0.5.0/include/range/v3/utility/compressed_pair.hpp:50:92: internal compiler error: in tsubst_pack_expansion, at cp/pt.c:12200
meta::if_<meta::strict_and<std::is_constructible<Ts, Args>...>, int> = 0>
^
This is a refactoring of "tdesktop", i.e. the resulting derivation isn't
affected by this commit (only the tdesktopPackages.* attributes are
removed).
I decided to remove the attributes "tdesktopPackages.*" as I don't
maintain the preview version anymore. There are regular stable releases
and we depend on the patches from Arch Linux which only track the stable
version as well, i.e. I would have to maintain our own patches, which
would either require an additional repository or "bloat" Nixpkgs (apart
from the fact that it would be unnecessarily time-consuming).
GCC 8.x is required to avoid the following error:
cc1plus: error: -Werror=class-memaccess: no option -Wclass-memaccess
If we build without "-Wno-error=class-memaccess" the build should fail
and the upstream requirements were raised from GCC 7 to GCC 8 anyway:
b2f821d3de
The two additional patches are required to avoid build errors like this:
/build/source/Telegram/ThirdParty/qtlottie/src/bodymovin/bmbase.cpp:123:12:
error: invalid use of incomplete type 'class QDebug'
qWarning()
^
In file included from
/nix/store/1qk60bhxcf95iicms7mkyjq3h7lz136p-qtbase-5.12.0-dev/include/QtCore/qglobal.h:1200,
from
/nix/store/1qk60bhxcf95iicms7mkyjq3h7lz136p-qtbase-5.12.0-dev/include/QtCore/qalgorithms.h:43,
from
/nix/store/1qk60bhxcf95iicms7mkyjq3h7lz136p-qtbase-5.12.0-dev/include/QtCore/qlist.h:43,
from
/nix/store/1qk60bhxcf95iicms7mkyjq3h7lz136p-qtbase-5.12.0-dev/include/QtCore/QList:1,
from
/build/source/Telegram/ThirdParty/qtlottie/src/bodymovin/bmbase.h:31,
from
/build/source/Telegram/ThirdParty/qtlottie/src/bodymovin/bmbase.cpp:29:
/nix/store/1qk60bhxcf95iicms7mkyjq3h7lz136p-qtbase-5.12.0-dev/include/QtCore/qlogging.h:57:7:
note: forward declaration of 'class QDebug'
class QDebug;
^~~~~~