summaryrefslogtreecommitdiff
path: root/tools
Commit message (Collapse)AuthorAge
* Add parallel testingStephen Finucane2020-11-29
| | | | | | | | | | | | | | | | | | | | This saves us a good deal of time, even allowing for process startup and general overhead. Before: real 6m39.103s user 1m9.561s sys 0m2.705s After: real 4m5.267s user 1m24.527s sys 0m3.828s This requires N databases, where N is the N of processors on the host. We need to update the docker configuration for this. Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: Ignore postgres data fileStephen Finucane2020-04-26
| | | | Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: Remove Python 2.7, 3.5Stephen Finucane2020-04-08
| | | | | | We no longer need these dependencies. Signed-off-by: Stephen Finucane <stephen@that.guru>
* Revert "pyenv: also install requirements for python2"Stephen Finucane2020-04-08
| | | | | | | This reverts commit 5b904f91c4cab1ff3f8460c9d4ed920a990c8db3. It is no longer necessary now that we're dropping Python 2.7 support. Signed-off-by: Stephen Finucane <stephen@that.guru>
* pyenv: also install requirements for python2Daniel Axtens2020-02-27
| | | | | | | | | | The first time you do a migration with python3, you get a whole lot of seemingly null changes. This is a bit annoying so I use py2 to generate the changes. To do that, first fix the pyenv transition so requirements are still installed for python2. Signed-off-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Stephen Finucane <stephen@that.guru>
* docker: update dependency for current buildPranav Annam2020-02-17
| | | | | | | | | | | | | | | | | | | The dependency libssl1.0-dev in the Dockerfile makes docker build fail: The following packages have unmet dependencies: libmysqlclient-dev : Depends: libssl-dev (>= 1.1.1-1ubuntu2.1~18.04.5~) but it is not going to be installed E: Unable to correct problems, you have held broken packages. There seems to be a conflict with different versions of libssl and libmysqlclient that did not exist previously with Ubuntu 18.04. Just use the current libssl-dev from Ubuntu 18.04 to fix the build. Signed-off-by: Pranav Annam <pranavannam@gmail.com> [rephrased commit message] Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com> Signed-off-by: Daniel Axtens <dja@axtens.net>
* Python 3.8 supportAndrew Donnellan2019-10-24
| | | | | | | Enable Python 3.8 in our tests and list it as a supported version. Signed-off-by: Andrew Donnellan <ajd@linux.ibm.com> Signed-off-by: Daniel Axtens <dja@axtens.net>
* docker: Require GID alsoStephen Finucane2019-10-17
| | | | | | | If you don't do this, created files end up with a group of 'gcc' or whatever group has an ID of 1000. Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: Rely on cachingStephen Finucane2019-10-17
| | | | | | | | It seems less likely that tox and tox-pyenv will change than our requirements. Split up the 'RUN' steps so we don't have to reinstall the former every time the latter change. Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: Use pyenv for Python versionsStephen Finucane2019-09-08
| | | | | | | | This is slightly slower to initially configure but requires less hacking to get the same environment and should be a lot more maintainable (just a simple modification to change the Python version). Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: Simplify MySQL resetStephen Finucane2019-09-08
| | | | | | Just use the hardcoded configuration. Signed-off-by: Stephen Finucane <stephen@that.guru>
* Drop support for Python 3.4, add Python 3.7Stephen Finucane2019-09-08
| | | | | | | It's no longer supported upstream and the *second* last Ubuntu LTS release provides something newer. Time to move on. Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: *Actually* don't require rebuilding if unnecessaryStephen Finucane2019-08-21
| | | | | | | | | | | Because we were using 'set -e', we were erroring out as soon as something - a diff in this case - failed. Temporarily disable it for this one check. Signed-off-by: Stephen Finucane <stephen@that.guru> Fixes: 0b5b4e8c ("docker: Don't require rebuilding if unnecessary") Cc: Daniel Axtens <dja@axtens.net> Signed-off-by: Daniel Axtens <dja@axtens.net>
* Remove pwclientStephen Finucane2019-06-17
| | | | | | | | | Let's start managing this via a separate project, which will allow the client to evolve separately from the server. No redirect is added for the old '/pwclient' URL as it seems wiser to return a HTTP 404 error code. Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: Use Ubuntu ports repositories on non-x86 architecturesRussell Currey2019-05-03
| | | | | | | | | | | | | | | | | This should allow Patchwork to run "out of the box" in Docker on any architecture with a) an Ubuntu port and b) support in the Postgres multiarch Docker image, which includes at least arm64 and ppc64le. It's a little gross hacking the Dockerfile like this, but I'm not sure there's a more elegant way to do it. Unfortunately it doesn't seem like there's any way to do conditional COPY, and anything in RUN is plain /bin/sh, so that's why it looks like it does. Tested on ppc64le and on x86_64. Signed-off-by: Russell Currey <ruscur@russell.cc> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Signed-off-by: Daniel Axtens <dja@axtens.net>
* docker: Install libpq-dev to fix psycopg2-binary buildRussell Currey2019-05-03
| | | | | | | | | | | | | | | | | | psycopg2-binary fails if pg_config isn't installed, which is provided by libpq-dev. This seems strange to me since psycopg2-binary suggests that you use psycopg2-binary instead (of itself) if you don't want to build psycopg2 so you wouldn't need pg_config, which is very confusing. It's possible that psycopg2-binary only needs to compile itself on non-x86 platforms, since I hit this on ppc64le. Anyway, it works when this is added. Signed-off-by: Russell Currey <ruscur@russell.cc> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Signed-off-by: Daniel Axtens <dja@axtens.net>
* Update license headerStephen Finucane2018-09-19
| | | | | | | | | | | | | The FSF has a new address since 2005 that hasn't been noted in any file except the COPYING file. Rather than fix these, simply remove the headers in favour of a SPDX license header. IANAL but the combination of the header and the COPYING file in source should resolve this issue. Note that copyright notices are retained. Signed-off-by: Stephen Finucane <stephen@that.guru> Closes: #210 Reviewed-by: Veronika Kabatova <vkabatov@redhat.com>
* docker: Use heredocs where possibleStephen Finucane2018-08-30
| | | | | | | | | | This was suggested in a recent review [1]. Make it happen. [1] http://patchwork.ozlabs.org/patch/933979/#1941584 Signed-off-by: Stephen Finucane <stephen@that.guru> Suggested-by: Petr Vorel <petr.vorel@gmail.com> Reviewed-by: Petr Vorel <pvorel@suse.cz>
* docker: Don't require rebuilding if unnecessaryStephen Finucane2018-08-26
| | | | | | | | | | | | | | | Now that we're pinning versions, we're going to see more frequent dependency version changes. Requiring a rebuild after every one of these is tiresome so don't force it and instead display a helpful message merely suggesting that a rebuild may be necessary. Signed-off-by: Stephen Finucane <stephen@that.guru> Cc: Daniel Axtens <dja@axtens.net> Acked-by: Daniel Axtens <dja@axtens.net> [dja: we're not currently pinning versions because I dropped that patch as it broke postgres. But this can stay - sfin has been asking for it for ages.] Signed-off-by: Daniel Axtens <dja@axtens.net>
* docker: Bump to bionicStephen Finucane2018-04-26
| | | | | | | As noted in commit 94dd1d411, we can and should start using Bionic once it's out. This is now the case. Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker-compose: Switch to 3.0 syntaxStephen Finucane2018-04-26
| | | | | | | | | | | Ubuntu 18.04 (Bionic Beaver) providers 'docker-compose' 1.17.1 [1] at release which supports the 3.0 syntax [2]. Using this allows some users (me) to resolve a long standing issue caused by a UID that's not 1000. [1] https://packages.ubuntu.com/bionic/docker-compose [2] https://docs.docker.com/compose/compose-file/ Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: Remove bash aliasesStephen Finucane2018-04-26
| | | | | | | | These seem to be a hangover from the Vagrant days. I don't personally use them anymore and I'm not sure anyone else does. I think they can go. Signed-off-by: Stephen Finucane <stephen@that.guru> Cc: Daniel Axtens <dja@axtens.net>
* tests: Remove Selenium testsStephen Finucane2018-04-26
| | | | | | | | | | | | | | | | These were added quite some time ago in order to allow some level of UI testing. However, I've personally never used them, they're not used by the CI, and no one has shown any desire in extending them in their time here. It is time to bid these tests adieu. Removing these allows us to remove a whole load of wiring that existed just to enable these. Some of this, like the '--quick-tox' option for the Dockerfile, is retained so we don't need to use different commands for various versions of Patchwork, but the majority is just stripped out. Signed-off-by: Stephen Finucane <stephen@that.guru> Cc: Daniel Axtens <dja@axtens.net>
* docker: Replace tabs with spacesStephen Finucane2018-04-26
| | | | | | Maintain your chill, people. Signed-off-by: Stephen Finucane <stephen@that.guru>
* docker: set timezone to Australia/CanberraDaniel Axtens2018-04-05
| | | | | | | | | | | The tzinfo package isn't installed in docker, which makes the default timezone UTC. This is unfortunate: the Django TZ in settings/base.py is Australia/Canberra, and having a non-UTC TZ is good for exposing faulty assumptions about what is and isn't UTC. Signed-off-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Stephen Finucane <stephen@that.guru>
* tools: drop vagrantDaniel Axtens2018-02-27
| | | | | | | | | It served us well, but it's now outdated (Trusty, Python 3.4, etc) There is no indication that anyone uses it or keeps it up to date. Signed-off-by: Daniel Axtens <dja@axtens.net> Acked-by: Stephen Finucane <stephen@that.guru> Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
* docker: add Python3.6 to imageDaniel Axtens2018-01-26
| | | | | | | | | | | | | | | | | | | This is needed to support py3.6-django111 in tox - otherwise tox fails. Python3.6 is not in Xenial, so this - irritatingly - requires pulling in either a PPA, or the package from Artful. PPAs are icky, so pull it in from Artful. We can either add an Artful repo (like we do for Trusty to pull in python3.4), or move the image to Artful and add in the Xenial repo to get python3.5. It's more efficient to move the entire image to Artful and pull in 3.5 from Xenial - otherwise most packages get downloaded from Artful anyway. It does mean we're going to need to move again to Bionic in a few months, but we'll just have to deal. Signed-off-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Stephen Finucane <stephen@that.guru>
* post-receive.hook: Handle failure to find patch numberTom Rini2018-01-04
| | | | | | | | | | | When pwclient info -h fails to come up with the number for the change in question it will exit with a non-zero exit code. This failure will propagate upwards and exit the script there. Make our call to get_patch_id or in true so that our script here will see an empty id and we continue on with the list. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Stephen Finucane <stephen@that.guru>
* Support testing with PostgreSQLDaniel Axtens2017-10-28
| | | | | | | | | | | | | | | | This allows us to easily test against PostgreSQL using the same tooling we normally use. This is helpful in (for example) shaking out the test failures that were observed on ozlabs.org To use it: docker-compose -f docker-compose-pg.yml <usual argument> (You may find in necessary to do a 'docker-compose down' first, depending on what state the system is in and what command you're running.) Signed-off-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Stephen Finucane <stephen@that.guru>
* Simplify docker-compose MySQL setupDaniel Axtens2017-10-28
| | | | | | | | This moves the config from a separate Dockerfile to something integrated into the docker-compose.yml file. Signed-off-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Stephen Finucane <stephen@that.guru>
* docker: pass additional args to manage.py testSean Farley2017-07-12
| | | | | Signed-off-by: Sean Farley <sean@farley.io> Reviewed-by: Stephen Finucane <stephen@that.guru>
* docker: increase database connection timeoutAndrew Donnellan2017-05-26
| | | | | | | | | | | | | | | When starting the Docker environment, if the web container can't see the database immediately, it waits 5 seconds, tries again, then waits 15 seconds more to account for first-time start-ups where it takes a bit longer for the database to be initialised. Some of us, unfortunately, have slow computers with slow mechanical hard drives which take just a bit longer. Increase the second timeout from 15 seconds to 60 seconds, testing every 5 seconds. Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> Acked-by: Daniel Axtens <dja@axtens.net> Reviewed-by: Stephen Finucane <stephen@that.guru>
* templates: Add Patchwork versionStephen Finucane2017-03-01
| | | | | | | | | | | | This is managed using a combination of hardcoded string, for installations from tarball, and 'git describe', for installations from a Git repo. This includes installing Git in the Docker environment, to enable this in the development environment. Signed-off-by: Stephen Finucane <stephen@that.guru> Acked-by: Daniel Axtens <dja@axtens.net>
* trivial: Standardize variable naming in scriptsStephen Finucane2017-02-06
| | | | | | | Just so we can interact with them as expected. Signed-off-by: Stephen Finucane <stephen@that.guru> Reviewed-by: Daniel Axtens <dja@axtens.net>
* tools: Run scripts through shellcheckStephen Finucane2017-02-06
| | | | | | | This mostly results in the addition of quotes to prevent globbing. Signed-off-by: Stephen Finucane <stephen@that.guru> Reviewed-by: Daniel Axtens <dja@axtens.net>
* tools: Update to use 'hasher'Stephen Finucane2016-12-01
| | | | | | | | | | | The old 'parser' module used to extract diffs from their surrounding mbox fluff before hashing this. Seeing as this was only used in the context of an actual git repo, avoid all of that rigmarole by just using 'git diff', which produces a plain diff, rather than 'git show'. Signed-off-by: Stephen Finucane <stephen@that.guru> Tested-by: Tom Rini <trini@konsulko.com> Closes-bug: #63
* tools: Trivial formatting fixesStephen Finucane2016-12-01
| | | | | | | | | | | These tools are currently broken, but before beginning surgery let's clean things up. Use standard 4 spaces and the longer, but easier to read, if-else-fi syntax for comparison. Missing license headers are added for completeness sake. Signed-off-by: Stephen Finucane <stephen@that.guru> Tested-by: Tom Rini <trini@konsulko.com>
* docker: Install dependencies for Python 2 alsoStephen Finucane2016-09-20
| | | | | | | | | | Aspects of both Patchwork and Django, such as the 'makemigrations' management command, function differently under Python 3. It should be possible to run these commands under Python 2. Install dependencies in the Python 2 environment to make this a possibility. Signed-off-by: Stephen Finucane <stephenfinucane@hotmail.com> Acked-by: Daniel Axtens <dja@axtens.net>
* docker: Install Python 3.4Daniel Axtens2016-09-01
| | | | | | | | | | | | | | | | Currently, we tox test against Python 3.4. Python 3.4 is included with Ubuntu 14.04, which is supported for several years to come, so we want to keep supporting it. However, Python 3.4 isn't included with Ubuntu 16.04, which is what the Docker image is based on. We could downgrade the container to 14.04, but then we'd struggle to get Python 3.5 into the container. Python 3.5 is the most recent in the Python 3 series, so we should also be supporting it. Add the apt sources for Trusty and pull in Python 3.4 from there. Signed-off-by: Daniel Axtens <dja@axtens.net> Signed-off-by: Stephen Finucane <stephenfinucane@hotmail.com>
* docs: Update readthedocs URLsStephen Finucane2016-09-01
| | | | | | | 'readthedocs.io' is preferred to 'readthedocs.org'. Update all relevant links. Signed-off-by: Stephen Finucane <stephenfinucane@hotmail.com>
* docs: Document SELinux issuesStephen Finucane2016-09-01
| | | | | | | | Initial Docker setup caused me some heartache on Fedora. Briefly document the issues encountered to help other users. Signed-off-by: Stephen Finucane <stephenfinucane@hotmail.com> Reviewed-by: Daniel Axtens <dja@axtens.net>
* docker: Move 'docker' directory to 'tools'Stephen Finucane2016-09-01
| | | | | | | ...like the Vagrant scripts (which have been renamed also). Signed-off-by: Stephen Finucane <stephenfinucane@hotmail.com> Acked-by: Daniel Axtens <dja@axtens.net>
* post-receive: Use correct default installation pathSven Eckelmann2016-05-09
| | | | | | | | | The documentation recommends to use /opt/patchwork instead of /srv/patchwork since version 1.1. This change should be reflected in the PWDIR variable of the post-receive hook. Signed-off-by: Sven Eckelmann <sven@narfation.org> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com>
* post-receive.hook: rename detectionJan Remmet2016-05-09
| | | | | | | | patches which descripes renamed files show different hashes with git show and pwclient. Use git show -C (Detect copies as well as renames.) Signed-off-by: Jan Remmet <j.remmet@phytec.de> Reviewed-by: Stephen Finucane <stephen.finucane@intel.com>
* tools: Use 'Patchwork' consistentlyStephen Finucane2016-03-29
| | | | | | | The docs referred to both 'patchwork' and 'Patchwork'. Use the title case variant consistently. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com>
* docs: Refer to fixtures by name, not pathStephen Finucane2016-03-13
| | | | | | | It's not necessary to use paths for fixtures, so update the docs and Vagrant install scripts to remove these. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com>
* vagrant: Add Vagrant-based development environmentStephen Finucane2016-02-10
| | | | | | | | | | | Integrate Vagrant by way of a Vagrantfile and a simple install script. This follows many of the instructions found in the development guide with the exceptions of the superuser creation, which is optional, the loading of archives, which requires per-user authentication, and the use of virtual environments, which are unnecessary in a teardown environment such as this. Signed-off-by: Stephen Finucane <stephen.finucane@intel.com>
* Move to a more recent django project structureJeremy Kerr2015-05-27
| | | | | | | | | | This change updates patchwor to the newer project struture: we've moved the actual application out of the apps/ directory, and the patchwork-specific templates to under the patchwork application. This gives us the manage.py script in the top-level now. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* post-receive: exclude commits from the patch update stepBrian Norris2014-07-24
| | | | | | | | | | | | | | | | | | When merging upstream work related to other projects into your own project repository, you probably don't want to check for (and try to update) the status on every change-set in the merge. So add a list of references (branches, tags, commits, etc.) whose commits should be ignored in the patch update step. This could be used, for example, to set: EXCLUDE="refs/heads/upstream" Then when you're ready to merge in new upstream code, you first update the 'upstream' branch before pushing your own. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* post-receive: Fix error message when pushing to an unmapped branchCarl Worth2014-01-29
| | | | | | | | | | | | | | | | Previously, if STATE_MAP contained only refs/heads/master and a user pushed to a branch such as refs/heads/stable, the hook emitted a misleading error message: E: no mapping for refname refs/heads/master Fix this by correctly printing the reference being looked for, rather than the reference most recently found in STATE_MAP. Also, reword the message slightly to point the user to STATE_MAP and to use an actual word "branch" instead of the non-word "refname". Signed-off-by: Carl Worth <cworth@cworth.org> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>