|
1 |
| -######################################## |
2 |
| -Building and uploading matplotlib wheels |
3 |
| -######################################## |
| 1 | +#################### |
| 2 | +Retired daily branch |
| 3 | +#################### |
4 | 4 |
|
5 |
| -We automate wheel building using this custom github repository that builds on |
6 |
| -the travis-ci OSX machines and the travis-ci Linux machines. |
7 |
| - |
8 |
| -The travis-ci interface for the builds is |
9 |
| -https://travis-ci.org/MacPython/matplotlib-wheels |
10 |
| - |
11 |
| -The driving github repository is |
12 |
| -https://github.com/MacPython/matplotlib-wheels |
13 |
| - |
14 |
| -How it works |
15 |
| -============ |
16 |
| - |
17 |
| -The wheel-building repository: |
18 |
| - |
19 |
| -* does a fresh build of any required C / C++ libraries; |
20 |
| -* builds a matplotlib wheel, linking against these fresh builds; |
21 |
| -* processes the wheel using delocate_ (OSX) or auditwheel_ ``repair`` |
22 |
| - (Manylinux1_). ``delocate`` and ``auditwheel`` copy the required dynamic |
23 |
| - libraries into the wheel and relinks the extension modules against the |
24 |
| - copied libraries; |
25 |
| -* uploads the built wheels to http://wheels.scipy.org (a Rackspace container |
26 |
| - kindly donated by Rackspace to scikit-learn). |
27 |
| - |
28 |
| -The resulting wheels are therefore self-contained and do not need any external |
29 |
| -dynamic libraries apart from those provided as standard by OSX / Linux as |
30 |
| -defined by the manylinux1 standard. |
31 |
| - |
32 |
| -The ``.travis.yml`` file in this repository has a line containing the API key |
33 |
| -for the Rackspace container encrypted with an RSA key that is unique to the |
34 |
| -repository - see http://docs.travis-ci.com/user/encryption-keys. This |
35 |
| -encrypted key gives the travis build permission to upload to the Rackspace |
36 |
| -directory pointed to by http://wheels.scipy.org. |
37 |
| - |
38 |
| -Triggering a build |
39 |
| -================== |
40 |
| - |
41 |
| -You will likely want to edit the ``.travis.yml`` file to specify the |
42 |
| -``BUILD_COMMIT`` before triggering a build - see below. |
43 |
| - |
44 |
| -You will need write permission to the github repository to trigger new builds |
45 |
| -on the travis-ci interface. Contact us on the mailing list if you need this. |
46 |
| - |
47 |
| -You can trigger a build by: |
48 |
| - |
49 |
| -* making a commit to the `matplotlib-wheels` repository (e.g. with `git |
50 |
| - commit --allow-empty`); or |
51 |
| -* clicking on the circular arrow icon towards the top right of the travis-ci |
52 |
| - page, to rerun the previous build. |
53 |
| - |
54 |
| -In general, it is better to trigger a build with a commit, because this makes |
55 |
| -a new set of build products and logs, keeping the old ones for reference. |
56 |
| -Keeping the old build logs helps us keep track of previous problems and |
57 |
| -successful builds. |
58 |
| - |
59 |
| -Which matplotlib commit does the repository build? |
60 |
| -=============================================== |
61 |
| - |
62 |
| -The `matplotlib-wheels` repository will build the commit specified in the |
63 |
| -``BUILD_COMMIT`` at the top of the ``.travis.yml`` and ``appveyor.yml`` files. |
64 |
| -This can be any naming of a commit, including branch name, tag name or commit |
65 |
| -hash. |
66 |
| - |
67 |
| -Uploading the built wheels to pypi |
68 |
| -================================== |
69 |
| - |
70 |
| -Be careful, http://wheels.scipy.org points to a container on a distributed |
71 |
| -content delivery network. It can take up to 15 minutes for the new wheel file |
72 |
| -to get updated into the container at http://wheels.scipy.org. |
73 |
| - |
74 |
| -The same contents appear at |
75 |
| -https://3f23b170c54c2533c070-1c8a9b3114517dc5fe17b7c3f8c63a43.ssl.cf2.rackcdn.com; |
76 |
| -you might prefer this address because it is https. |
77 |
| - |
78 |
| -When the wheels are updated, you can download them to your machine manually, |
79 |
| -and then upload them manually to pypi, or by using twine_. You can also use a |
80 |
| -script for doing this, housed at : |
81 |
| -https://github.com/MacPython/terryfy/blob/master/wheel-uploader |
82 |
| - |
83 |
| -For the ``wheel-uploader`` script, you'll need twine and `beautiful soup 4 |
84 |
| -<bs4>`_. |
85 |
| - |
86 |
| -You will typically have a directory on your machine where you store wheels, |
87 |
| -called a `wheelhouse`. The typical call for `wheel-uploader` would then |
88 |
| -be something like:: |
89 |
| - |
90 |
| - VERSION=2.0.0 |
91 |
| - CDN_URL=https://3f23b170c54c2533c070-1c8a9b3114517dc5fe17b7c3f8c63a43.ssl.cf2.rackcdn.com |
92 |
| - wheel-uploader -r warehouse -u $CDN_URL -s -v -w ~/wheelhouse -t macosx matplotlib $VERSION |
93 |
| - wheel-uploader -r warehouse -u $CDN_URL -s -v -w ~/wheelhouse -t manylinux1 matplotlib $VERSION |
94 |
| - |
95 |
| -where: |
96 |
| - |
97 |
| -* ``-r warehouse`` uses the upcoming Warehouse PyPI server (it is more |
98 |
| - reliable than the current PyPI service for uploads); |
99 |
| -* ``-u`` gives the URL from which to fetch the wheels, here the https address, |
100 |
| - for some extra security; |
101 |
| -* ``-s`` causes twine to sign the wheels with your GPG key; |
102 |
| -* ``-v`` means give verbose messages; |
103 |
| -* ``-w ~/wheelhouse`` means download the wheels from to the local directory |
104 |
| - ``~/wheelhouse``. |
105 |
| - |
106 |
| -``matplotlib`` is the root name of the wheel(s) to download / upload, and |
107 |
| -``2.0.0`` is the version to download / upload. |
108 |
| - |
109 |
| -In order to use the Warehouse PyPI server, you will need something like this |
110 |
| -in your ``~/.pypirc`` file:: |
111 |
| - |
112 |
| - [distutils] |
113 |
| - index-servers = |
114 |
| - pypi |
115 |
| - warehouse |
116 |
| - |
117 |
| - [pypi] |
118 |
| - username:your_user_name |
119 |
| - password:your_password |
120 |
| - |
121 |
| - [warehouse] |
122 |
| - repository: https://upload.pypi.io/legacy/ |
123 |
| - username: your_user_name |
124 |
| - password: your_password |
125 |
| - |
126 |
| -So, in this case, ``wheel-uploader`` will download all wheels starting with |
127 |
| -``matplotlib-2.0.0-`` from http://wheels.scipy.org to ``~/wheelhouse``, then |
128 |
| -upload them to PyPI. |
129 |
| - |
130 |
| -Of course, you will need permissions to upload to PyPI, for this to work. |
131 |
| - |
132 |
| -.. _manylinux1: https://www.python.org/dev/peps/pep-0513 |
133 |
| -.. _twine: https://pypi.python.org/pypi/twine |
134 |
| -.. _bs4: https://pypi.python.org/pypi/beautifulsoup4 |
135 |
| -.. _delocate: https://pypi.python.org/pypi/delocate |
136 |
| -.. _auditwheel: https://pypi.python.org/pypi/auditwheel |
| 5 | +This branch used to be the branch we used for daily cron builds on |
| 6 | +.travis.yml. Now we use the ``master`` branch. Please leave this branch to its pasture in meadows. |
0 commit comments