Skip to content

Commit 146029f

Browse files
committed
merge from default branch. Fix travis.ci so CI builds don't error out
2 parents d2b244d + e70b519 commit 146029f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+8838
-4054
lines changed

.travis.yml

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ branches:
1616
# - default
1717
# - maint-1.6
1818

19-
dist:
20-
- bionic
19+
dist: focal
2120

21+
# - pypy3
2222
python:
2323
- 2.7
24-
- 3.9-dev
24+
- 3.10.0
25+
- 3.9
2526
- 3.8
2627
- 3.6
2728
- nightly
@@ -33,11 +34,12 @@ services:
3334
jobs:
3435
allow_failures: # nightly not ready for prime time yet.
3536
- python: nightly
37+
- python: pypy3
3638

3739
addons:
3840
apt:
39-
sources:
40-
- sourceline: ppa:xapian-backports/ppa
41+
#sources:
42+
# - sourceline: ppa:xapian-backports/ppa
4143

4244
packages:
4345
# Required to build/install the xapian-binding
@@ -48,8 +50,12 @@ addons:
4850
- gpgsm
4951

5052
before_install:
51-
# Sphinx required to build the xapian python bindings
52-
- pip install sphinx==1.8.5
53+
- echo "$TRAVIS_PYTHON_VERSION"
54+
# Sphinx required to build the xapian python bindings. Use 1.8.5 on
55+
# older python and newest on newer.
56+
- if [[ $TRAVIS_PYTHON_VERSION == "2."* ]]; then pip install sphinx==1.8.5; fi
57+
- if [[ $TRAVIS_PYTHON_VERSION == '3.'* ]] ; then pip install sphinx; fi
58+
- if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then pip install sphinx; fi
5359
- XAPIAN_VER=$(dpkg -l libxapian-dev | tail -n 1 | awk '{print $3}' | cut -d '-' -f 1)
5460
- cd /tmp
5561
- curl -s -O https://oligarchy.co.uk/xapian/$XAPIAN_VER/xapian-bindings-$XAPIAN_VER.tar.xz
@@ -59,12 +65,13 @@ before_install:
5965
- if [[ $TRAVIS_PYTHON_VERSION == "2."* ]]; then ./configure --prefix=$VIRTUAL_ENV --with-python; fi
6066
- if [[ $TRAVIS_PYTHON_VERSION == "3."* ]]; then ./configure --prefix=$VIRTUAL_ENV --with-python3; fi
6167
- if [[ $TRAVIS_PYTHON_VERSION == "nightly" ]]; then ./configure --prefix=$VIRTUAL_ENV --with-python3; fi
68+
- if [[ $TRAVIS_PYTHON_VERSION == "pypy3" ]]; then ./configure --prefix=$VIRTUAL_ENV --with-python3; fi
6269
- make && make install
6370

6471
- PATH=$VIRTUAL_ENV/bin:$PATH
6572

6673
# libgpg-error
67-
- LIBGPG_ERROR_VERSION=1.32
74+
- LIBGPG_ERROR_VERSION=1.43
6875
- cd /tmp
6976
- curl -s -O https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-$LIBGPG_ERROR_VERSION.tar.bz2
7077
- tar -jxvf libgpg-error-$LIBGPG_ERROR_VERSION.tar.bz2
@@ -73,7 +80,7 @@ before_install:
7380
- make && make install
7481

7582
# libassuan
76-
- LIBASSUAN_VERSION=2.5.1
83+
- LIBASSUAN_VERSION=2.5.5
7784
- cd /tmp
7885
- curl -s -O https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-$LIBASSUAN_VERSION.tar.bz2
7986
- tar -jxvf libassuan-$LIBASSUAN_VERSION.tar.bz2
@@ -82,7 +89,7 @@ before_install:
8289
- make && make install
8390

8491
# gpgme
85-
- GPGME_VERSION=1.11.1
92+
- GPGME_VERSION=1.16.0
8693
- cd /tmp
8794
- curl -s -O https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-$GPGME_VERSION.tar.bz2
8895
- tar -jxf gpgme-$GPGME_VERSION.tar.bz2
@@ -100,24 +107,31 @@ install:
100107
- pip install gpg pytz whoosh pyjwt requests
101108
- pip install pytest-cov codecov
102109
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install docutils; fi
103-
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install mistune; fi
110+
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* ]]; then pip install mistune==0.8.4; fi
104111
- if [[ $TRAVIS_PYTHON_VERSION != "3.4"* && $TRAVIS_PYTHON_VERSION != "2."* ]]; then pip install Markdown; fi
105112
- pip install markdown2
106-
- pip install brotli zstd
113+
- pip install brotli
114+
# zstd fails to build under python nightly aborting test.
115+
# allow testing to still happen if the optional package doesn't install.
116+
- pip install zstd || true
107117

108118
before_script:
109119
# set up mysql database
110120
- sudo sed -i -e '/^\[mysqld\]/,/^\[mysql/s/^max_allowed_packet.*/max_allowed_packet = 500M/' /etc/mysql/my.cnf
111121
- cat /etc/mysql/my.cnf
112122
- sudo service mysql restart
113-
- mysql -u root -e 'GRANT ALL ON rounduptest.* TO rounduptest@localhost IDENTIFIED BY "rounduptest";'
123+
- mysql -u root -e 'CREATE USER "rounduptest"@"localhost" IDENTIFIED WITH mysql_native_password BY "rounduptest"; GRANT ALL on rounduptest.* TO "rounduptest"@"localhost";'
114124

125+
# Disable fsync for speed, don't care about data durability when testing
126+
- sudo sed -i -e '$a\fsync = off' /etc/postgresql/*/*/postgresql.conf
115127
- sudo service postgresql restart; sleep 30
116128
# set up postgresql database
117129
- psql -c "CREATE ROLE rounduptest WITH CREATEDB LOGIN PASSWORD 'rounduptest';" -U postgres
118130

119131
# HACK: workaround mysql bug: http://bugs.mysql.com/bug.php?id=74901
120132
# needed for test_mysql.mysqlDBTest.testFilteringSpecialChars
133+
# plus others. Otherwise we get:
134+
# COLLATION 'utf8_bin' is not valid for CHARACTER SET 'utf8mb4'
121135
- sed -i 's/CREATE DATABASE \%s/CREATE DATABASE \%s COLLATE utf8_general_ci/' roundup/backends/back_mysql.py
122136

123137
# build the .mo translation files and install them into a tree
@@ -141,6 +155,7 @@ script:
141155
- if [[ "$TRAVIS_PYTHON_VERSION" == "2."* ]]; then
142156
py.test -v --maxfail=20 test/ --cov=roundup;
143157
fi
158+
- ./setup.py build_doc
144159

145160
after_success:
146161
- codecov

CHANGES.txt

Lines changed: 99 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,62 @@ Fixed:
2222
Previously it used to accept only TLS v1.1. 1.1 is deprecated by
2323
chrome. I don't expect this to be a major problem since a front
2424
end server (apache, Nginx...) is usually customer facing and
25-
terminates SSL.
25+
terminates SSL. (John Rouillard)
2626
- Fix hang when valid user without authorization for REST tries to use
27-
the rest interface.
27+
the rest interface. (John Rouillard)
28+
- Remove Content-Type and make sure no content is returned by OPTIONS
29+
request in REST interface. (John Rouillard)
30+
- In write_html set the Content-Length when response is not
31+
encoded/compressed. (John Rouillard)
32+
- In REST interface do not raise UsageError for invalid api version.
33+
Return json error with proper message. Fixes crash. (John Rouillard)
34+
- In REST interface, allow extensions on URI less than 6 characters in
35+
length. All other paths with a . in then will be passed through
36+
without change. This allows items like a JWT to be passed as a path
37+
element. (John Rouillard)
38+
- issue2551167 - pip install in containerized environments puts
39+
template and locale files under site-packages where roundup can't find
40+
them. Change code to find them under site-packages.
41+
- REST replace hard coded list of child endpoints for /rest/ with list
42+
pulled from registered endpoints. So newly added endpoints are
43+
shown. (John Rouillard)
44+
- issue2551107 - Handle representation of long int in history params
45+
for python3. Causes SyntaxError crash when showing history due to
46+
long int e.g. 2345L. This is not a problem for roundup trackers
47+
created using 1.2.0 or newer. The fix may have predated the 1.2.0
48+
release but where the fix actually landed (representing id as a
49+
string and not as an int) is unknown.
50+
- issue2551175 - Make ETag content-encoding aware. HTTP ETag headers
51+
now include a suffix indicating the content-encoding used to send
52+
the data per rfc7232. Properly validate any form of ETag suffixed or
53+
non-suffixed for If-Match.
54+
- issue2551178 - fix Traceback in Apache WSGI - during file upload
55+
- issue2551179 - make roundup-demo initialize templates using
56+
config_ini.ini overrides. Needed for jinja to set template lang etc.
57+
Recognize minimal template when presented with a full
58+
path. (John Kristensen (jerrykan) and John Rouillard)
59+
- handle configparser.InterpolationSyntaxError raised if value
60+
has a single %. Seems to afect python 3 only. Reported by
61+
nomicon on IRC. (John Rouillard)
62+
- add random delay to session database retry code between 0 and .125
63+
seconds. This seems to help reduce stalled connections when a
64+
number of connections are made at the same time. Log remaining
65+
retries once 5 of them have been used. (John Rouillard)
66+
- issue2551169 - setup.py enters endless loop on gentoo linux python2
67+
installation. Fixed.
68+
- issue2551185 - must set PYTHONPATH=... python2 setup.py install
69+
--prefix=/tmp/r2. Force insert --old-and-unmangable to get it
70+
to use a classic installer and not an easy install. This only
71+
affects python2.
72+
- issue2551186 - Python versions >= 3.3 no longer use socket.sslerror.
73+
Andrew (kragacles) patched uses of socket.sslerror in mailgy.py.
74+
Patch adapted to allow trapping sslerror under both python2 and 3.
75+
(John Rouillard)
76+
- issue2551142 - postgresql reworked to use savepoint/"rollback to"
77+
rather than commit()/rollback(). Using savepoint should be faster.
78+
- issue2551196 - Unset labelprop of a Multilink can lead to Python
79+
error when using context/history. (reported and initial patch: Nagy
80+
Gabor, John Rouillard)
2881

2982
Features:
3083

@@ -42,6 +95,50 @@ Features:
4295
responsive templates already have this feature.
4396
- issue2550917 - Add a: "Welcome user, you have logged in" ok_message
4497
on login. (Ashley Burke)
98+
- enable HTTP/1.1 for roundup-server. This enables keep-alive for
99+
faster response/loading. Also eliminates stalls when the front end web
100+
server uses http 1.1 but the roundup-server uses 1.0. New option
101+
"-V HTTP/1.0" can turn it off. (John Rouillard)
102+
- issue2551163 - add scripts/Docker/Dockerfile to provide basic support for
103+
containerization. See installation.txt for details. (John Rouillard)
104+
- issue2551163 - add scripts/Docker/docker-compose.yml to get a
105+
mysql/roundup deployment. (Norbert Schlemmer, modified by John
106+
Rouilard)
107+
- REST add openapi_doc decorator to add openapi_doc to
108+
endpoints. Decorate a couple of examples. (John Rouillard)
109+
- REST when incorrect method is used, report allowed methods in error
110+
message as well as in an Allow header. (John Rouillard)
111+
- REST change response to invalid attribute specified in path. Return
112+
400 code not 405 code for this case and improve error. (John
113+
Rouillard)
114+
- REST correct values for some Access-Control-Allow-Methods and
115+
Access-Control-Allow-Headers headers. (John Rouillard)
116+
- issue2550991 - define default cache control settings for javascript
117+
and css assets. (John Rouillard)
118+
- issue2551181 - fragments can be appended to designators. So
119+
issue23#msg24 could jump to the element with id msg24 in issue 23.
120+
Before this patch you would have two links issue23 and msg24
121+
separated by # (John Rouillard).
122+
- added small utility script to dump dbm based tracker databases
123+
(e.g. db/sessions). (John Rouillard)
124+
- issue2551182 - Enhance configuration module to allow loading values
125+
from an external file. Secrets (passwords, secrets) can specify
126+
file using file:// or file:///. The first line of the file is used
127+
as the secret. This allows committing config.ini to a VCS. (John
128+
Rouillard)
129+
- Added xapian indexer to Docker container. (John Rouillard)
130+
- Add support for indexer type native-fts to use FTS5 for sqlite
131+
databases. (John Rouillard)
132+
- Add support for indexer type native-fts to use PostreSQL's full text
133+
search. (John Rouillard)
134+
- Add better error display to the user. Needed to expose errors in fts5
135+
search syntax to the user while also displaying the template page
136+
structure. (John Rouillard)
137+
- issue2551189 - increase size of words in full text index.
138+
Many terms (like exception names or symbolic constants) are larger
139+
than 25. Also German words are long. Since there is little chance of
140+
fixing German to shorten their words, change indexer maxlength to 50.
141+
(Thomas Arendsen Hein provided patch; patch reworked John Rouillard)
45142

46143
2021-07-13 2.1.0
47144

0 commit comments

Comments
 (0)