|
37 | 37 |
|
38 | 38 | Moving extensions from php-src to PECL:
|
39 | 39 |
|
40 |
| - * Checkout the pecl directory, most likely you want a sparse-root checkout |
| 40 | + * Ask someone with Git admin access to create a new empty repository on |
| 41 | + https://git.php.net under the PECL projects and a belonging GitHub mirror. |
41 | 42 |
|
42 |
| - ``` |
43 |
| - svn co --depth=empty https://svn.php.net/repository/pecl |
| 43 | + * Clone a new copy of the php-src repository (it will rewrite history, keep |
| 44 | + contributors commits and include only the extension folder): |
| 45 | + |
| 46 | + ```sh |
| 47 | + git clone https://git.php.net/repository/php-src.git ext-name |
| 48 | + cd ext-name |
| 49 | + git filter-branch --prune-empty --subdirectory-filter ext/ext-name master |
44 | 50 | ```
|
45 | 51 |
|
46 |
| - * Create a directory for the extension including branch and tag structure, |
47 |
| - no trunk at this point and commit this to svn |
| 52 | + * Set remote Git push URL for the PECL extension: |
48 | 53 |
|
49 |
| - ``` |
50 |
| - cd pecl; mkdir foo foo/tags foo/branches; svn add foo; svn commit |
51 |
| - ``` |
| 54 | + ```sh |
| 55 | + git remote set-url origin [email protected]:pecl/category/ext-name |
| 56 | + ``` |
52 | 57 |
|
53 |
| - * Move the extension from php-src to the new location |
| 58 | + * Create branch and tags structure appropriate for the extension and push: |
54 | 59 |
|
55 |
| - ``` |
56 |
| - svn mv https://svn.php.net/repository/php/php-src/trunk/ext/foo \ |
57 |
| - https://svn.php.net/repository/pecl/foo/trunk |
58 |
| - ``` |
| 60 | + ```sh |
| 61 | + git push -u origin master |
| 62 | + ``` |
59 | 63 |
|
60 | 64 | If the extension is still usable or not dead, in cooperation with the
|
61 | 65 | extension maintainers if any:
|
| 66 | + |
62 | 67 | * Create the pecl.php.net/foo package and its content, license, maintainer
|
63 | 68 | * Create the package.xml, commit
|
64 | 69 | * Release the package
|
65 | 70 |
|
66 |
| - For moving extensions from PECL to php-src the svn mv has to be done the |
67 |
| - other way round. |
| 71 | + For moving extensions from PECL to php-src the procedure needs to go through |
| 72 | + the RFC process and a new Git commit without rewriting the php-src Git |
| 73 | + commit history. |
| 74 | + |
| 75 | + 8. There is a PHP release Docker image https://github.com/sgolemon/php-release |
| 76 | + with forks available to help releasing. |
68 | 77 |
|
69 | 78 | ## Rolling a non stable release (alpha/beta/RC)
|
70 | 79 |
|
|
76 | 85 | 3. Run the `scripts/dev/credits` script in php-src and commit the changes in
|
77 | 86 | the credits files in ext/standard.
|
78 | 87 |
|
79 |
| - 4. Checkout the release branch for this release (e.g., PHP-5.4.2) from the main |
| 88 | + 4. Checkout the release branch for this release (e.g., PHP-7.4.2) from the main |
80 | 89 | branch.
|
81 | 90 |
|
82 | 91 | 5. Bump the version numbers in `main/php_version.h`, `Zend/zend.h`,
|
83 | 92 | `configure.ac` and possibly `NEWS`. Do not use abbreviations for alpha and
|
84 |
| - beta. Do not use dashes, you should `#define PHP_VERSION "5.4.22RC1"` and |
85 |
| - not `#define PHP_VERSION "5.4.22-RC1"` |
| 93 | + beta. Do not use dashes, you should `#define PHP_VERSION "7.4.22RC1"` and |
| 94 | + not `#define PHP_VERSION "7.4.22-RC1"` |
86 | 95 |
|
87 |
| - 6. Compile and run `make test`, with and without ZTS, using the right Bison |
88 |
| - version (for example, for PHP 7.4, minimum Bison 3.0.0 is used). |
| 96 | + 6. Compile and run `make test`, with and without ZTS, using the right Bison and |
| 97 | + re2c version (for PHP 7.4, minimum Bison 3.0.0 and re2c 0.13.4 are used). |
89 | 98 |
|
90 | 99 | 7. Check `./sapi/cli/php -v` output for version matching.
|
91 | 100 |
|
92 | 101 | 8. If all is right, commit the changes to the release branch:
|
93 | 102 |
|
94 |
| - ``` |
| 103 | + ```sh |
95 | 104 | git commit -a
|
96 | 105 | ```
|
97 | 106 |
|
98 | 107 | 9. Tag the repository release branch with the version, e.g.:
|
99 | 108 |
|
100 |
| - ``` |
101 |
| - git tag -u YOURKEYID php-5.4.2RC2 |
| 109 | + ```sh |
| 110 | + git tag -u YOURKEYID php-7.4.2RC2 |
102 | 111 | ```
|
103 | 112 |
|
104 | 113 | 10. Bump the version numbers in `main/php_version.h`, `Zend/zend.h`,
|
105 |
| - `configure.ac` and `NEWS` in the *main* branch (PHP-5.4 for example) to |
106 |
| - prepare for the **next** version. F.e. if the RC is "5.4.1RC1" then the new |
107 |
| - one should be `5.4.2-dev` - regardless if we get a new RC or not. This is to |
| 114 | + `configure.ac` and `NEWS` in the *main* branch (PHP-7.4 for example) to |
| 115 | + prepare for the **next** version. F.e. if the RC is "7.4.1RC1" then the new |
| 116 | + one should be `7.4.2-dev` - regardless if we get a new RC or not. This is to |
108 | 117 | make sure `version_compare()` can correctly work. Commit the changes to the
|
109 | 118 | main branch.
|
110 | 119 |
|
111 | 120 | 11. Push the changes to the main repo, the tag, the main branch and the release
|
112 |
| - branch: |
| 121 | + branch. Release branches for alpha/beta/.0RCx releases before to GA release |
| 122 | + don't need to be pushed (a local temporary branch should be used). |
113 | 123 |
|
114 |
| - ``` |
| 124 | + ```sh |
115 | 125 | git push --tags origin HEAD
|
116 | 126 | git push origin {main branch}
|
117 | 127 | git push origin {release branch}
|
|
139 | 149 |
|
140 | 150 | 1. Update `qa.git/include/release-qa.php` with the appropriate information. See
|
141 | 151 | the documentation within release-qa.php for more information, but all
|
142 |
| - releases and RCs are configured here. Only $QA_RELEASES needs to be edited. |
| 152 | + releases and RCs are configured here. Only `$QA_RELEASES` needs to be |
| 153 | + edited. |
143 | 154 |
|
144 |
| - Example: When rolling an RC, set the 'rc' with appropriate information for |
| 155 | + Example: When rolling an RC, set the `rc` with appropriate information for |
145 | 156 | the given version.
|
146 | 157 |
|
147 | 158 | Note: Remember to update the sha256 checksum information.
|
148 | 159 |
|
149 | 160 | 2. Skip this step for non stable releases after GA of minor or major versions
|
150 |
| - (e.g. announce 7.3.0RC1, but not 7.3.1RC1): |
| 161 | + (e.g. announce 7.4.0RC1, but not 7.4.1RC1): |
151 | 162 |
|
152 | 163 | Add a short notice to phpweb stating that there is a new release, and
|
153 | 164 | highlight the major important things (security fixes) and when it is
|
|
159 | 170 |
|
160 | 171 | * Add the content for the news entry. Be sure to include the text:
|
161 | 172 |
|
162 |
| - ``` |
163 |
| - "THIS IS A DEVELOPMENT PREVIEW - DO NOT USE IT IN PRODUCTION!" |
164 |
| - ``` |
| 173 | + ```text |
| 174 | + "THIS IS A DEVELOPMENT PREVIEW - DO NOT USE IT IN PRODUCTION!" |
| 175 | + ``` |
165 | 176 |
|
166 | 177 | 3. Commit and push changes to qa and web.
|
167 | 178 |
|
|
181 | 192 | setup as a moderator for `[email protected]` by having someone
|
182 | 193 | (Hannes, Dan, Derick) run the following commands for you:
|
183 | 194 |
|
184 |
| - ``` |
| 195 | + ```sh |
185 | 196 | ssh lists.php.net
|
186 | 197 | sudo -u ezmlm ezmlm-sub ~ezmlm/primary-qa-tester/mod moderator-email-address
|
187 | 198 | ```
|
|
194 | 205 |
|
195 | 206 | 2. If a CVE commit needs to be merged to the release, then have it committed to
|
196 | 207 | the base branches and merged upwards as usual (f.e commit the CVE fix to
|
197 |
| - 5.3, merge to 5.4, 5.5 etc...). Then you can cherry-pick it in your release |
| 208 | + 7.2, merge to 7.3, 7.4 etc...). Then you can cherry-pick it in your release |
198 | 209 | branch. Don't forget to update `NEWS` manually in an extra commit then.
|
199 | 210 |
|
200 | 211 | 3. Commit those changes. Ensure the tests at
|
|
203 | 214 | 4. Run the `scripts/dev/credits` script in php-src and commit the changes in
|
204 | 215 | the credits files in ext/standard.
|
205 | 216 |
|
206 |
| - 5. Compile and make test, with and without ZTS, using the right Bison version |
207 |
| - (for example, for PHP 7.4, minimum Bison 3.0.0 is used). |
| 217 | + 5. Compile and run `make test`, with and without ZTS, using the right Bison and |
| 218 | + re2c version (for PHP 7.4, minimum Bison 3.0.0 and re2c 0.13.4 are used). |
208 | 219 |
|
209 | 220 | 6. Check `./sapi/cli/php -v` output for version matching.
|
210 | 221 |
|
|
229 | 240 | `web/php-distributions.git`, then update the git submodule reference in
|
230 | 241 | `web/php.git`:
|
231 | 242 |
|
232 |
| - ``` |
| 243 | + ```sh |
233 | 244 | git submodule init
|
234 | 245 | git submodule update
|
235 | 246 | cd distributions
|
|
252 | 263 | 1. Update `phpweb/include/releases.inc` with the old release info (updates the
|
253 | 264 | download archives).
|
254 | 265 |
|
255 |
| - * You can run `php bin/bumpRelease 7 2` where the first number is the major |
256 |
| - version, and the second number is the minor version (7.2 in this example). |
| 266 | + * You can run `php bin/bumpRelease 7 4` where the first number is the major |
| 267 | + version, and the second number is the minor version (7.4 in this example). |
257 | 268 |
|
258 | 269 | * If that fails for any non-trivially fixable reason, you can manually copy
|
259 | 270 | the old information to `include/releases.inc`.
|
|
263 | 274 | * `$PHP_X_Y_VERSION` to the correct version
|
264 | 275 | * `$PHP_X_Y_DATE` to the release date
|
265 | 276 | * `$PHP_X_Y_SHA256` array and update all the SHA256 sums
|
266 |
| - * `$PHP_X_Y_TAGS` array should include 'security' if this is a security |
| 277 | + * `$PHP_X_Y_TAGS` array should include `security` if this is a security |
267 | 278 | release
|
268 | 279 | * Make sure there are no outdated "notes" or edited "date" keys in the
|
269 | 280 | `$RELEASES[X][$PHP_X_VERSION]["source"]` array.
|
270 | 281 |
|
271 |
| - 3. Create the release file (releases/x_y_z.php) |
| 282 | + 3. Create the release file (`releases/x_y_z.php`) |
272 | 283 |
|
273 | 284 | Usually we use the same content as for point 6, but included in php template
|
274 | 285 | instead of the release xml.
|
|
308 | 319 |
|
309 | 320 | 8. **Check website has been synced before announcing or pushing news**
|
310 | 321 |
|
311 |
| - Try, f.e. https://www.php.net/distributions/php-7.3.4.tar.xz |
| 322 | + Try, f.e. https://www.php.net/distributions/php-7.4.0.tar.xz |
312 | 323 |
|
313 | 324 | Website may update slowly (may take an hour).
|
314 | 325 |
|
|
428 | 439 |
|
429 | 440 | 5. Request moderation access to [email protected] and
|
430 | 441 | [email protected] lists, to be able to moderate your release
|
431 |
| - announcements. All the announcements should be sent from the @php.net alias. |
| 442 | + announcements. All the announcements should ideally be sent from the |
| 443 | + @php.net alias. Note, that for sending emails as @php.net alias a custom |
| 444 | + SMTP server needs to be used. |
0 commit comments