Przeglądaj źródła

Debian packaging via dh_virtualenv (#4285)

tags/v0.34.0
Richard van der Hoff 5 lat temu
rodzic
commit
1a6d5bfa08
36 zmienionych plików z 310 dodań i 495 usunięć
  1. +2
    -0
      .dockerignore
  2. +7
    -1
      .gitignore
  3. +1
    -0
      MANIFEST.in
  4. +1
    -0
      changelog.d/4212.misc
  5. +7
    -0
      debian/.gitignore
  6. +22
    -0
      debian/NEWS
  7. +48
    -0
      debian/build_virtualenv
  8. +11
    -0
      debian/changelog
  9. +26
    -66
      debian/control
  10. +1
    -1
      debian/copyright
  11. +0
    -5
      debian/gbp.conf
  12. +3
    -7
      debian/homeserver.yaml
  13. +4
    -0
      debian/matrix-synapse-py3.links
  14. +0
    -0
     
  15. +31
    -0
      debian/matrix-synapse-py3.preinst
  16. +9
    -0
      debian/matrix-synapse-py3.triggers
  17. +0
    -184
      debian/matrix-synapse.init
  18. +2
    -2
      debian/matrix-synapse.service
  19. +0
    -17
      debian/patches/0001-tox.patch
  20. +0
    -32
      debian/patches/0002-change_instructions.patch
  21. +0
    -25
      debian/patches/0004-webclient-instructions.patch
  22. +0
    -19
      debian/patches/0006-Don-t-require-strict-nacl-0.3.0-requirement.patch
  23. +0
    -28
      debian/patches/bcrypt.patch
  24. +0
    -40
      debian/patches/no_install_with_pip
  25. +0
    -30
      debian/patches/remove-webclient.patch
  26. +0
    -7
      debian/patches/series
  27. +0
    -5
      debian/pydist-overrides
  28. +16
    -12
      debian/rules
  29. +1
    -1
      debian/source/format
  30. +0
    -11
      debian/watch
  31. +35
    -0
      docker/Dockerfile-dhvirtualenv
  32. +41
    -0
      docker/build_debian.sh
  33. +39
    -0
      docker/build_debian_packages.sh
  34. +1
    -1
      synapse/python_dependencies.py
  35. +1
    -1
      synapse/storage/e2e_room_keys.py
  36. +1
    -0
      tox.ini

+ 2
- 0
.dockerignore Wyświetl plik

@@ -5,3 +5,5 @@ demo/etc
tox.ini tox.ini
.git/* .git/*
.tox/* .tox/*
debian/matrix-synapse/
debian/matrix-synapse-*/

+ 7
- 1
.gitignore Wyświetl plik

@@ -18,7 +18,7 @@ homeserver*.db
homeserver*.log homeserver*.log
homeserver*.log.* homeserver*.log.*
homeserver*.pid homeserver*.pid
homeserver*.yaml
/homeserver*.yaml


*.signing.key *.signing.key
*.tls.crt *.tls.crt
@@ -26,6 +26,8 @@ homeserver*.yaml
*.tls.key *.tls.key


.coverage .coverage
.coverage.*
!.coverage.rc
htmlcov htmlcov


demo/*/*.db demo/*/*.db
@@ -57,3 +59,7 @@ env/


.vscode/ .vscode/
.ropeproject/ .ropeproject/

*.deb

/debs

+ 1
- 0
MANIFEST.in Wyświetl plik

@@ -36,6 +36,7 @@ prune demo/etc
prune docker prune docker
prune .circleci prune .circleci
prune .coveragerc prune .coveragerc
prune debian


exclude jenkins* exclude jenkins*
recursive-exclude jenkins *.sh recursive-exclude jenkins *.sh

+ 1
- 0
changelog.d/4212.misc Wyświetl plik

@@ -0,0 +1 @@
Debian packages utilising a virtualenv with bundled dependencies can now be built.

+ 7
- 0
debian/.gitignore Wyświetl plik

@@ -0,0 +1,7 @@
/matrix-synapse-py3.*.debhelper
/matrix-synapse-py3.debhelper.log
/matrix-synapse-py3.substvars
/matrix-synapse-*/
/files
/debhelper-build-stamp
/.debhelper

+ 22
- 0
debian/NEWS Wyświetl plik

@@ -0,0 +1,22 @@
matrix-synapse-py3 (0.34.0) stable; urgency=medium

matrix-synapse-py3 is intended as a drop-in replacement for the existing
matrix-synapse package. The replacement should be relatively seamless,
however, please note the following important differences to matrix-synapse:

* Most importantly, the matrix-synapse service now runs under Python 3 rather
than Python 2.7.

* Synapse is installed into its own virtualenv (in /opt/venvs/matrix-synapse)
instead of using the system python libraries. (This may mean that you can
remove a number of old dependencies with `apt-get autoremove`).

matrix-synapse-py3 will take over responsibility for the existing
configuration files, including the matrix-synapse systemd service.

Beware, however, that `apt-get purge matrix-synapse` will *disable* the
matrix-synapse service (so that it will not be started on reboot), even
though that service is no longer being provided by the matrix-synapse
package. It can be re-enabled with `systemctl enable matrix-synapse`.

-- Richard van der Hoff <richard@matrix.org> Wed, 19 Dec 2018 14:00:00 +0000

+ 48
- 0
debian/build_virtualenv Wyświetl plik

@@ -0,0 +1,48 @@
#!/bin/bash
#
# runs dh_virtualenv to build the virtualenv in the build directory,
# and then runs the trial tests against the installed synapse.

set -e

export DH_VIRTUALENV_INSTALL_ROOT=/opt/venvs
SNAKE=/usr/bin/python3

# try to set the CFLAGS so any compiled C extensions are compiled with the most
# generic as possible x64 instructions, so that compiling it on a new Intel chip
# doesn't enable features not available on older ones or AMD.
#
# TODO: add similar things for non-amd64, or figure out a more generic way to
# do this.

case `dpkg-architecture -q DEB_HOST_ARCH` in
amd64)
export CFLAGS=-march=x86-64
;;
esac

# Use --builtin-venv to use the better `venv` module from CPython 3.4+ rather
# than the 2/3 compatible `virtualenv`.

dh_virtualenv \
--install-suffix "matrix-synapse" \
--builtin-venv \
--setuptools \
--python "$SNAKE" \
--upgrade-pip \
--preinstall="lxml" \
--preinstall="mock" \
--extra-pip-arg="--no-cache-dir" \
--extra-pip-arg="--compile"

# we copy the tests to a temporary directory so that we can put them on the
# PYTHONPATH without putting the uninstalled synapse on the pythonpath.
tmpdir=`mktemp -d`
trap "rm -r $tmpdir" EXIT

cp -r tests "$tmpdir"
cd debian/matrix-synapse-py3

PYTHONPATH="$tmpdir" \
./opt/venvs/matrix-synapse/bin/python \
-B -m twisted.trial --reporter=text -j2 tests

+ 11
- 0
debian/changelog Wyświetl plik

@@ -1,3 +1,14 @@
matrix-synapse-py3 (0.34.0) stable; urgency=medium

* New synapse release 0.34.0.
* Synapse is now installed into a Python 3 virtual environment with
up-to-date dependencies.
* The matrix-synapse service will now be restarted when the package is
upgraded.
(Fixes https://github.com/matrix-org/package-synapse-debian/issues/18)

-- Synapse packaging team <packages@matrix.org> Wed, 19 Dec 2018 14:00:00 +0000

matrix-synapse (0.33.9-1matrix1) stretch; urgency=medium matrix-synapse (0.33.9-1matrix1) stretch; urgency=medium


[ Erik Johnston ] [ Erik Johnston ]


+ 26
- 66
debian/control Wyświetl plik

@@ -1,77 +1,37 @@
Source: matrix-synapse
Maintainer: Erik Johnston <erikj@matrix.org>
Section: python
Priority: optional
Source: matrix-synapse-py3
Section: contrib/python
Priority: extra
Maintainer: Synapse Packaging team <packages@matrix.org>
Build-Depends: Build-Depends:
debhelper (>= 9), debhelper (>= 9),
dh-python,
dh-systemd (>= 1.5),
po-debconf,
python (>= 2.6.6-3),
python-bcrypt,
python-blist,
python-canonicaljson (>=1.1.3),
python-daemonize,
python-frozendict (>= 0.4),
python-lxml,
python-mock,
python-msgpack (>=0.3.0),
python-nacl (>= 0.3.0),
python-netaddr,
python-openssl (>= 0.14),
python-pil,
python-psutil,
python-pyasn1,
python-pydenticon,
python-pymacaroons-pynacl,
python-pysaml2,
python-service-identity (>= 1.0.0),
python-setuptools (>= 0.6b3),
python-signedjson (>= 1.0.0),
python-sortedcontainers,
python-syutil (>= 0.0.7),
python-treq (>= 15.1.0),
python-twisted (>= 17.1.0),
python-unpaddedbase64 (>= 1.0.1),
python-yaml,
python-phonenumbers (>= 8.2.0),
python-jsonschema (>=2.5.1),
python-prometheus-client,
python-attr
Standards-Version: 3.9.8
X-Python-Version: >= 2.7
dh-systemd,
dh-virtualenv (>= 1.0),
lsb-release,
python3-dev,
python3,
python3-setuptools,
python3-pip,
python3-venv,
tar,
Standards-Version: 3.9.5
Homepage: https://github.com/matrix-org/synapse


Package: matrix-synapse
Architecture: all
Package: matrix-synapse-py3
Architecture: amd64
Conflicts: matrix-synapse
Pre-Depends: dpkg (>= 1.16.1)
Depends: Depends:
${misc:Depends},
${python:Depends},
adduser, adduser,
debconf, debconf,
lsb-base (>= 3.0-6),
python-attr (>= 16.0.0),
python-twisted (>= 17.1.0),
python-canonicaljson (>=1.1.3),
python-prometheus-client (>=0.0.14),
python3-distutils|libpython3-stdlib (<< 3.6),
python3,
${misc:Depends},
# some of our scripts use perl, but none of them are important,
# so we put perl:Depends in Suggests rather than Depends.
Suggests: Suggests:
python-bleach (>= 1.4.2),
python-jinja2 (>= 2.8),
Recommends:
python-psycopg2,
python-lxml,
sqlite3,
${perl:Depends},
Description: Open federated Instant Messaging and VoIP server Description: Open federated Instant Messaging and VoIP server
Matrix is an ambitious new ecosystem for open federated Instant Matrix is an ambitious new ecosystem for open federated Instant
Messaging and VoIP. Synapse is a reference Matrix server Messaging and VoIP. Synapse is a reference Matrix server
implementation. implementation.
.
Everything in Matrix happens in a room. Rooms are distributed and do
not exist on any single server. Rooms can be located using
convenience aliases like #matrix:matrix.org or #test:localhost:8448.
.
Matrix user IDs look like @matthew:matrix.org (although in the future
you will normally refer to yourself and others using a 3PID: email
address, phone number, etc rather than manipulating Matrix user IDs)
.
The overall architecture is:
client <------> homeserver <=============> homeserver <------> client
https://a.org/_matrix https://b.net/_matrix

+ 1
- 1
debian/copyright Wyświetl plik

@@ -3,7 +3,7 @@ Upstream-Name: synapse
Source: https://github.com/matrix-org/synapse Source: https://github.com/matrix-org/synapse


Files: * Files: *
Copyright: 2014-2017, OpenMarket Ltd
Copyright: 2014-2017, OpenMarket Ltd, 2017-2018 New Vector Ltd
License: Apache-2.0 License: Apache-2.0


Files: synapse/config/saml2.py Files: synapse/config/saml2.py


+ 0
- 5
debian/gbp.conf Wyświetl plik

@@ -1,5 +0,0 @@
[DEFAULT]
debian-branch = debian

[dch]
distribution = stable

+ 3
- 7
debian/homeserver.yaml Wyświetl plik

@@ -70,13 +70,9 @@ pid_file: "/var/run/matrix-synapse.pid"
# #
# cpu_affinity: 0xFFFFFFFF # cpu_affinity: 0xFFFFFFFF


# Whether to serve a web client from the HTTP/HTTPS root resource.
web_client: False

# The root directory to server for the above web client.
# If left undefined, synapse will serve the matrix-angular-sdk web client.
# Make sure matrix-angular-sdk is installed with pip if web_client is True
# and web_client_location is undefined
# The path to the web client which will be served at /_matrix/client/
# if 'webclient' is configured under the 'listeners' configuration.
#
# web_client_location: "/path/to/web/root" # web_client_location: "/path/to/web/root"


# The public-facing base URL for the client API (not including _matrix/...) # The public-facing base URL for the client API (not including _matrix/...)


+ 4
- 0
debian/matrix-synapse-py3.links Wyświetl plik

@@ -0,0 +1,4 @@
opt/venvs/matrix-synapse/bin/hash_password usr/bin/hash_password
opt/venvs/matrix-synapse/bin/register_new_matrix_user usr/bin/register_new_matrix_user
opt/venvs/matrix-synapse/bin/synapse_port_db usr/bin/synapse_port_db
opt/venvs/matrix-synapse/bin/synctl usr/bin/synctl

+ 0
- 0
Wyświetl plik


+ 31
- 0
debian/matrix-synapse-py3.preinst Wyświetl plik

@@ -0,0 +1,31 @@
#!/bin/sh -e

# Attempt to undo some of the braindamage caused by
# https://github.com/matrix-org/package-synapse-debian/issues/18.
#
# Due to reasons [1], the old python2 matrix-synapse package will not stop the
# service when the package is uninstalled. Our maintainer scripts will do the
# right thing in terms of ensuring the service is enabled and unmasked, but
# then do a `systemctl start matrix-synapse`, which of course does nothing -
# leaving the old (py2) service running.
#
# There should normally be no reason for the service to be running during our
# preinst, so we assume that if it *is* running, it's due to that situation,
# and stop it.
#
# [1] dh_systemd_start doesn't do anything because it sees that there is an
# init.d script with the same name, so leaves it to dh_installinit.
#
# dh_installinit doesn't do anything because somebody gave it a --no-start
# for unknown reasons.

if [ -x /bin/systemctl ]; then
if /bin/systemctl --quiet is-active -- matrix-synapse; then
echo >&2 "stopping existing matrix-synapse service"
/bin/systemctl stop matrix-synapse || true
fi
fi

#DEBHELPER#

exit 0

+ 9
- 0
debian/matrix-synapse-py3.triggers Wyświetl plik

@@ -0,0 +1,9 @@
# Register interest in Python interpreter changes and
# don't make the Python package dependent on the virtualenv package
# processing (noawait)
interest-noawait /usr/bin/python3.5
interest-noawait /usr/bin/python3.6
interest-noawait /usr/bin/python3.7

# Also provide a symbolic trigger for all dh-virtualenv packages
interest dh-virtualenv-interpreter-update

+ 0
- 184
debian/matrix-synapse.init Wyświetl plik

@@ -1,184 +0,0 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: matrix-synapse
# Required-Start: $local_fs $network $remote_fs $syslog
# Required-Stop: $local_fs $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: <Enter a short description of the software>
# Description: <Enter a long description of the software>
# <...>
# <...>
### END INIT INFO

# Author: Paul "LeoNerd" Evans <paul@matrix.org>

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="matrix-synapse"
NAME=matrix-synapse
SCRIPTNAME=/etc/init.d/$NAME

PYTHON="/usr/bin/python"
CONFIGS="--config-path /etc/matrix-synapse/homeserver.yaml --config-path /etc/matrix-synapse/conf.d/"
USER="matrix-synapse"
SHAREDIR=/var/lib/$NAME

# Exit if the package is not installed
[ -f "/etc/matrix-synapse/homeserver.yaml" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

get_config_key()
{
python -m synapse.config read "$1" $CONFIGS || return 2
}

#
# Function that starts the daemon/service
#
do_start()
{
# Running --generate-config to create keys if any are absent.
# Doesn't matter if not
$PYTHON -m "synapse.app.homeserver" $CONFIGS --generate-keys || return 2

# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
PIDFILE=`get_config_key "pid_file"`
RETVAL=$?
if [ "$RETVAL" != 0 ]; then
return $RETVAL
fi
if [ -r "$PIDFILE" ]; then
kill -0 `cat $PIDFILE` && return 1
fi

export PYTHONPATH

# Create the PID file so that synapse can write to it as nonroot
touch $PIDFILE
chown $USER:nogroup $PIDFILE
chown $USER:nogroup $SHAREDIR/media/
chown $USER:nogroup $SHAREDIR/uploads/

start-stop-daemon --start --pidfile $PIDFILE --chuid $USER \
--exec $PYTHON -- -m "synapse.app.homeserver" $CONFIGS --daemonize || return 2

return 0
}

#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
PIDFILE=`get_config_key "pid_file"`
RETVAL=$?
if [ "$RETVAL" != 0 ]; then
return $RETVAL
fi

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --user $USER --exec $PYTHON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2

# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
return 1
}

case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
PIDFILE=`get_config_key "pid_file"`
RETVAL=$?
if [ "$RETVAL" != 0 ]; then
return $RETVAL
fi
status_of_proc -p "$PIDFILE" "$PYTHON" "$NAME" && exit 0 || exit $?
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac

:

+ 2
- 2
debian/matrix-synapse.service Wyświetl plik

@@ -6,8 +6,8 @@ Type=simple
User=matrix-synapse User=matrix-synapse
WorkingDirectory=/var/lib/matrix-synapse WorkingDirectory=/var/lib/matrix-synapse
EnvironmentFile=/etc/default/matrix-synapse EnvironmentFile=/etc/default/matrix-synapse
ExecStartPre=/usr/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-keys
ExecStart=/usr/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/
ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-keys
ExecStart=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/
Restart=always Restart=always
RestartSec=3 RestartSec=3




+ 0
- 17
debian/patches/0001-tox.patch Wyświetl plik

@@ -1,19 +0,0 @@
From: Erik Johnston <erikj@matrix.org>
Date: Fri, 10 Jun 2016 10:57:07 +0100
Subject: tox

tox.ini | 1 +
1 file changed, 1 insertion(+)

Index: package-synapse-debian/tox.ini
===================================================================
+++ package-synapse-debian/tox.ini
@@ -1,5 +1,6 @@
[tox]
envlist = packaging, py27, py36, pep8, check_isort
+sitepackages = True
[base]
deps =

+ 0
- 32
debian/patches/0002-change_instructions.patch Wyświetl plik

@@ -1,34 +0,0 @@
From: Erik Johnston <erikj@matrix.org>
Date: Fri, 10 Jun 2016 10:57:07 +0100
Subject: change_instructions

synapse/config/_base.py | 10 ++++++++++
1 file changed, 10 insertions(+)

+++ b/synapse/config/_base.py
@@ -31,6 +31,11 @@
MISSING_REPORT_STATS_CONFIG_INSTRUCTIONS = """\
Please opt in or out of reporting anonymized homeserver usage statistics, by
setting the `report_stats` key in your config file to either True or False.
+
+To set it run:
+
+ dpkg-reconfigure matrix-synapse
+
"""
MISSING_REPORT_STATS_SPIEL = """\
@@ -45,6 +50,11 @@
MISSING_SERVER_NAME = """\
Missing mandatory `server_name` config option.
+
+To set it run:
+
+ dpkg-reconfigure matrix-synapse
+
"""

+ 0
- 25
debian/patches/0004-webclient-instructions.patch Wyświetl plik

@@ -1,27 +0,0 @@
From: Erik Johnston <erikj@matrix.org>
Date: Fri, 10 Jun 2016 10:57:07 +0100
Subject: webclient-instructions

synapse/app/homeserver.py | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)

Index: package-synapse-debian/synapse/app/homeserver.py
===================================================================
+++ package-synapse-debian/synapse/app/homeserver.py
@@ -86,12 +86,11 @@ def build_resource_for_web_client(hs):
"Please either install the matrix-angular-sdk or configure\n"
"the location of the source to serve via the configuration\n"
"option `web_client_location`\n\n"
- "To install the `matrix-angular-sdk` via pip, run:\n\n"
- " pip install '%(dep)s'\n"
+ "To install the `matrix-angular-sdk` via apt-get, run:\n\n"
+ " apt-get install matrix-synapse-angular-client\n"
"\n"
"You can also disable hosting of the webclient via the\n"
"configuration option `web_client`\n"
- % {"dep": CONDITIONAL_REQUIREMENTS["web_client"].keys()[0]}
)
syweb_path = os.path.dirname(syweb.__file__)
webclient_path = os.path.join(syweb_path, "webclient")

+ 0
- 19
debian/patches/0006-Don-t-require-strict-nacl-0.3.0-requirement.patch Wyświetl plik

@@ -1,21 +0,0 @@
From: Erik Johnston <erikj@matrix.org>
Date: Mon, 20 Jun 2016 13:20:37 +0100
Subject: Don't require strict nacl==0.3.0 requirement

synapse/python_dependencies.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: package-synapse-debian/synapse/python_dependencies.py
===================================================================
+++ package-synapse-debian/synapse/python_dependencies.py
@@ -37,7 +37,7 @@ REQUIREMENTS = {
"unpaddedbase64>=1.1.0": ["unpaddedbase64>=1.1.0"],
"canonicaljson>=1.1.3": ["canonicaljson>=1.1.3"],
"signedjson>=1.0.0": ["signedjson>=1.0.0"],
- "pynacl>=1.2.1": ["nacl>=1.2.1", "nacl.bindings"],
+ "pynacl>=0.3.0": ["nacl>=0.3.0", "nacl.bindings"],
"service_identity>=16.0.0": ["service_identity>=16.0.0"],
"Twisted>=17.1.0": ["twisted>=17.1.0"],
"treq>=15.1": ["treq>=15.1"],

+ 0
- 28
debian/patches/bcrypt.patch Wyświetl plik

@@ -1,30 +0,0 @@
Index: package-synapse-debian/synapse/handlers/auth.py
===================================================================
+++ package-synapse-debian/synapse/handlers/auth.py
@@ -921,10 +921,10 @@ class AuthHandler(BaseHandler):
# Normalise the Unicode in the password
pw = unicodedata.normalize("NFKC", password)
- return bcrypt.checkpw(
+ return bcrypt.hashpw(
pw.encode('utf8') + self.hs.config.password_pepper.encode("utf8"),
stored_hash
- )
+ ) == stored_hash
if stored_hash:
if not isinstance(stored_hash, bytes):
Index: package-synapse-debian/synapse/python_dependencies.py
===================================================================
+++ package-synapse-debian/synapse/python_dependencies.py
@@ -49,7 +49,7 @@ REQUIREMENTS = {
"pyasn1>=0.1.9": ["pyasn1"],
"pyasn1-modules>=0.0.7": ["pyasn1_modules"],
"daemonize>=2.3.1": ["daemonize"],
- "bcrypt>=3.1.0": ["bcrypt>=3.1.0"],
+ "bcrypt": ["bcrypt"],
"pillow>=3.1.2": ["PIL"],
"sortedcontainers>=1.4.4": ["sortedcontainers"],
"psutil>=2.0.0": ["psutil>=2.0.0"],

+ 0
- 40
debian/patches/no_install_with_pip Wyświetl plik

@@ -1,43 +0,0 @@
Index: package-synapse-debian/synapse/app/__init__.py
===================================================================
+++ package-synapse-debian/synapse/app/__init__.py
@@ -25,8 +25,8 @@ try:
except python_dependencies.MissingRequirementError as e:
message = "\n".join([
"Missing Requirement: %s" % (str(e),),
- "To install run:",
- " pip install --upgrade --force \"%s\"" % (e.dependency,),
+ "To install, try:",
+ " sudo apt-get install python-%s" % (e.dependency,),
"",
])
sys.stderr.writelines(message)
Index: package-synapse-debian/synapse/config/jwt_config.py
===================================================================
+++ package-synapse-debian/synapse/config/jwt_config.py
@@ -19,7 +19,7 @@ MISSING_JWT = (
"""Missing jwt library. This is required for jwt login.
Install by running:
- pip install pyjwt
+ sudo apt-get install python-jwt
"""
)
Index: package-synapse-debian/synapse/config/repository.py
===================================================================
+++ package-synapse-debian/synapse/config/repository.py
@@ -27,9 +27,7 @@ MISSING_LXML = (
"""Missing lxml library. This is required for URL preview API.
Install by running:
- pip install lxml
-
- Requires libxslt1-dev system package.
+ sudo apt-get install python-lxml
"""
)

+ 0
- 30
debian/patches/remove-webclient.patch Wyświetl plik

@@ -1,31 +0,0 @@
Index: package-synapse-debian/synapse/app/homeserver.py
===================================================================
+++ package-synapse-debian/synapse/app/homeserver.py
@@ -124,7 +124,7 @@ class SynapseHomeServer(HomeServer):
for res in listener_config["resources"]:
for name in res["names"]:
resources.update(self._configure_named_resource(
- name, res.get("compress", False),
+ config, name, res.get("compress", False),
))
additional_resources = listener_config.get("additional_resources", {})
@@ -171,7 +171,7 @@ class SynapseHomeServer(HomeServer):
)
logger.info("Synapse now listening on port %d", port)
- def _configure_named_resource(self, name, compress=False):
+ def _configure_named_resource(self, config, name, compress=False):
"""Build a resource map for a named resource
Args:
@@ -235,7 +235,7 @@ class SynapseHomeServer(HomeServer):
if name in ["keys", "federation"]:
resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self)
- if name == "webclient":
+ if name == "webclient" and config.web_client:
resources[WEB_CLIENT_PREFIX] = build_resource_for_web_client(self)
if name == "metrics" and self.get_config().enable_metrics:

+ 0
- 7
debian/patches/series Wyświetl plik

@@ -1,7 +0,0 @@
0001-tox.patch
0002-change_instructions.patch
0004-webclient-instructions.patch
0006-Don-t-require-strict-nacl-0.3.0-requirement.patch
remove-webclient.patch
bcrypt.patch
no_install_with_pip

+ 0
- 5
debian/pydist-overrides Wyświetl plik

@@ -1,5 +0,0 @@
matrix-angular-sdk
jinja2
bleach
ldap3
matrix-synapse-ldap3

+ 16
- 12
debian/rules Wyświetl plik

@@ -1,18 +1,22 @@
#!/usr/bin/make -f #!/usr/bin/make -f
#
# Build Debian package using https://github.com/spotify/dh-virtualenv
#


# This file was automatically generated by stdeb 0.8.2 at
# Fri, 12 Jun 2015 14:32:03 +0100
export PYBUILD_NAME=matrix-synapse
%:
dh $@ --with python2 --with systemd --buildsystem=pybuild --no-guessing-deps
override_dh_systemd_enable:
dh_systemd_enable --name=matrix-synapse


override_dh_auto_install:
python setup.py install --root=debian/matrix-synapse --install-layout=deb
override_dh_installinit:
dh_installinit --name=matrix-synapse


override_dh_auto_build:
override_dh_strip:


override_dh_installinit:
dh_installinit --no-start
override_dh_shlibdeps:


override_dh_auto_test:
PYTHONPATH=. trial tests
override_dh_virtualenv:
./debian/build_virtualenv

# We are restricted to compat level 9 (because xenial), so have to
# enable the systemd bits manually.
%:
dh $@ --with python-virtualenv --with systemd

+ 1
- 1
debian/source/format Wyświetl plik

@@ -1 +1 @@
3.0 (quilt)
3.0 (native)

+ 0
- 11
debian/watch Wyświetl plik

@@ -1,11 +0,0 @@
# Example watch control file for uscan
# Rename this file to "watch" and then you can run the "uscan" command
# to check for upstream updates and more.
# See uscan(1) for format

# Compulsory line, this is a version 3 file
version=3


opts=filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/matrix-synapse-$1\.tar\.gz/,uversionmangle=s/-?rc/~rc/ \
https://github.com/matrix-org/synapse/tags .*/v?(\d[^\s\-]*)\.tar\.gz debian uupdate

+ 35
- 0
docker/Dockerfile-dhvirtualenv Wyświetl plik

@@ -0,0 +1,35 @@
# A dockerfile which builds a docker image for building a debian package for
# synapse. The distro to build for is passed as a docker build var.
#
# The default entrypoint expects the synapse source to be mounted as a
# (read-only) volume at /synapse/source, and an output directory at /debs.
#
# A pair of environment variables (TARGET_USERID and TARGET_GROUPID) can be
# passed to the docker container; if these are set, the build script will chown
# the build products accordingly, to avoid ending up with things owned by root
# in the host filesystem.

# Get the distro we want to pull from as a dynamic build variable
ARG distro=""
FROM ${distro}

# Install the build dependencies
RUN apt-get update -qq -o Acquire::Languages=none \
&& env DEBIAN_FRONTEND=noninteractive apt-get install \
-yqq --no-install-recommends -o Dpkg::Options::=--force-unsafe-io \
build-essential \
debhelper \
devscripts \
dh-systemd \
dh-virtualenv \
equivs \
lsb-release \
python3-dev \
python3-pip \
python3-setuptools \
python3-venv \
sqlite3 \
wget

WORKDIR /synapse/source
ENTRYPOINT ["bash","/synapse/source/docker/build_debian.sh"]

+ 41
- 0
docker/build_debian.sh Wyświetl plik

@@ -0,0 +1,41 @@
#!/bin/bash

# The script to build the Debian package, as ran inside the Docker image.

set -ex

DIST=`lsb_release -c -s`

# We need to build a newer dh_virtualenv on older OSes like Xenial.
if [ "$DIST" = 'xenial' ]; then
mkdir -p /tmp/dhvenv
cd /tmp/dhvenv
wget https://github.com/spotify/dh-virtualenv/archive/1.1.tar.gz
tar xvf 1.1.tar.gz
cd dh-virtualenv-1.1/
env DEBIAN_FRONTEND=noninteractive mk-build-deps -ri -t "apt-get -yqq --no-install-recommends -o Dpkg::Options::=--force-unsafe-io"
dpkg-buildpackage -us -uc -b
cd /tmp/dhvenv
apt-get install -yqq ./dh-virtualenv_1.1-1_all.deb
fi


# we get a read-only copy of the source: make a writeable copy
cp -aT /synapse/source /synapse/build
cd /synapse/build

# add an entry to the changelog for this distribution
dch -M -l "+$DIST" "build for $DIST"
dch -M -r "" --force-distribution --distribution "$DIST"

dpkg-buildpackage -us -uc

ls -l ..

# copy the build results out, setting perms if necessary
shopt -s nullglob
for i in ../*.deb ../*.dsc ../*.tar.xz ../*.changes ../*.buildinfo; do
[ -z "$TARGET_USERID" ] || chown "$TARGET_USERID" "$i"
[ -z "$TARGET_GROUPID" ] || chgrp "$TARGET_GROUPID" "$i"
mv "$i" /debs
done

+ 39
- 0
docker/build_debian_packages.sh Wyświetl plik

@@ -0,0 +1,39 @@
#!/bin/bash

# Build the Debian packages using Docker images.
#
# This script builds the Docker images and then executes them sequentially, each
# one building a Debian package for the targeted operating system. It is
# designed to be a "single command" to produce all the images.
#
# By default, builds for all known distributions, but a list of distributions
# can be passed on the commandline for debugging.

set -ex

cd `dirname $0`

if [ $# -lt 1 ]; then
DISTS=(debian:stretch debian:sid ubuntu:xenial ubuntu:bionic ubuntu:cosmic)
else
DISTS=("$@")
fi

# Make the dir where the debs will live.
#
# Note that we deliberately put this outside the source tree, otherwise we tend
# to get source packages which are full of debs. (We could hack around that
# with more magic in the build_debian.sh script, but that doesn't solve the
# problem for natively-run dpkg-buildpakage).

mkdir -p ../../debs

# Build each OS image;
for i in "${DISTS[@]}"; do
TAG=$(echo ${i} | cut -d ":" -f 2)
docker build --tag dh-venv-builder:${TAG} --build-arg distro=${i} -f Dockerfile-dhvirtualenv .
docker run -it --rm --volume=$(pwd)/../\:/synapse/source:ro --volume=$(pwd)/../../debs:/debs \
-e TARGET_USERID=$(id -u) \
-e TARGET_GROUPID=$(id -g) \
dh-venv-builder:${TAG}
done

+ 1
- 1
synapse/python_dependencies.py Wyświetl plik

@@ -78,7 +78,7 @@ CONDITIONAL_REQUIREMENTS = {
}, },
"postgres": { "postgres": {
"psycopg2>=2.6": ["psycopg2"] "psycopg2>=2.6": ["psycopg2"]
}
},
} }






+ 1
- 1
synapse/storage/e2e_room_keys.py Wyświetl plik

@@ -182,7 +182,7 @@ class EndToEndRoomKeyStore(SQLBaseStore):


keyvalues = { keyvalues = {
"user_id": user_id, "user_id": user_id,
"version": version,
"version": int(version),
} }
if room_id: if room_id:
keyvalues['room_id'] = room_id keyvalues['room_id'] = room_id


+ 1
- 0
tox.ini Wyświetl plik

@@ -119,6 +119,7 @@ setenv =




[testenv:packaging] [testenv:packaging]
skip_install=True
deps = deps =
check-manifest check-manifest
commands = commands =


Ładowanie…
Anuluj
Zapisz