* In 0.9 the entrypoint got removed as it's recommended to use
`python -m`[1]. However, our build layer for python relies on
that, so I added a patch to re-add this.
* The tests in the upstream sources appear abandoned, so those are
skipped. Therefore it's also pointless to add `pytest-runner` to the
`nativeBuildInputs` as it's not used and only blows up the build
closure.
A second patch modifies the requirements, so ow `pytest-runner` isn't
needed anymore.
[1] a565853c5e
Tests currently fail like this:
```
/nix/store/yslk7x7iw3hka6d33kmnba9sxaia4492-python3.7-mautrix-0.4.0/lib/python3.7/site-packages/mautrix/util/manhole.py:9: in <module>
from socket import SOL_SOCKET, SO_PEERCRED
E ImportError: cannot import name 'SO_PEERCRED' from 'socket' (/nix/store/81qani7sdir46gjwf3a3jr2cv1aggkz1-python3-3.7.5/lib/python3.7/socket.py)
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 1.73s ===============================
```
Those values don't seem to be available on the MacOS-version of that
module. As there's no workaround implemented in the source, I assume
that upstream doesn't intend to support darwin-alike platforms atm.
With updating `pluggy` to `0.13.0`[1] the way how python modules are
imported during pytest changed which broke all modules that had a
`coding: future_fstrings` annotation at the top which used to be needed
for python <=3.5. This only affected the tests, deploying a
`mautrix-telegram` from master with `doCheck = false;` works fine.
I applied a patch for `mautrix-telegram` which drops python 3.5 compat
(this package is intended to be used as application with python 3.7, so this
should be fine on master/unstable) and modified `mautrix-appservice`
accordingly as a lot of things on master changed since their last
release, so applying a patch didn't work there.
Resolves#71996
[1] faf8cfba4ecd86186bb2d965f6d6386a08aba6a6
`alembic`[1] is a database migration tool which is invoked from the CLI
when installing the telegram bridge, but never needed during the
runtime.
The reason why `alembic` is required here is to ensure that it
exists in the Python environment when deploying the bridge. However
`alembic` requires `mautrix-telegram` in its environment to create a
database schema from the Python models.
Such a dependency relation may be possible with tools like virtualenv,
however it'll result in an infinite recursion at evaluation time in Nix.
With this patch, `mautrix-telegram` doesn't depend on `alembic` anymore
and provides a patched alembic (`pkgs.mautrix-telegram.alembic`) which
has `mautrix-telegram` in its path.
[1] https://alembic.sqlalchemy.org/en/latest/