mirror of
https://github.com/php/web-php.git
synced 2026-03-24 07:12:16 +01:00
184 lines
8.0 KiB
PHP
184 lines
8.0 KiB
PHP
<?php
|
|
|
|
/*
|
|
What this file does:
|
|
- Generates the download links found at qa.php.net
|
|
- Determines which test results are emailed to news.php.net/php.qa.reports
|
|
- Defines $QA_RELEASES for internal and external (api.php) use, contains all qa related information for future PHP releases
|
|
|
|
Documentation:
|
|
$QA_RELEASES documentation:
|
|
Configuration:
|
|
- Key is future PHP version number
|
|
- Example: If 5.3.6 is the latest stable release, then use 5.3.7 because 5.3.7-dev is our qa version
|
|
- Typically, this is the only part needing changed
|
|
- active (bool):
|
|
- It's active and being tested here
|
|
- Meaning, the version will be reported to the qa.reports list, and be linked at qa.php.net
|
|
- File extensions .tar.gz and .tar.bz2 are assumed to be available
|
|
- release (array):
|
|
- type: RC, alpha, and beta are examples (case should match filename case)
|
|
- version: 0 if no such release exists, otherwise an integer of the rc/alpha/beta number
|
|
- sha256_bz2: sha256 checksum of this downloadable .tar.bz2 file
|
|
- sha256_gz: sha256 checksum of this downloadable .tar.gz file
|
|
- sha256_xz: sha256 checksum of this downloadble .xz file
|
|
- date: date of release e.g., 21 May 2011
|
|
- baseurl: base url of where these downloads are located
|
|
- Multiple checksums can be available, see the $QA_CHECKSUM_TYPES array below
|
|
Other variables within $QA_RELEASES are later defined including:
|
|
- reported: versions that make it to the qa.reports mailing list
|
|
- release: all current qa releases, including paths to dl urls (w/ sha256 info)
|
|
- dev_version: dev version
|
|
- $QA_RELEASES is made available at qa.php.net/api.php
|
|
|
|
TODO:
|
|
- Save all reports (on qa server) for all tests, categorize by PHP version (see buildtest-process.php)
|
|
- Consider storing rc downloads at one location, independent of release master
|
|
- Determine best way to handle rc baseurl, currently assumes .tar.gz/tar.bz2 will exist
|
|
- Determine if $QA_RELEASES is compatible with all current, and most future configurations
|
|
- Determine if $QA_RELEASES can be simplified
|
|
- Determine if alpha/beta options are desired
|
|
- Unify then create defaults for most settings
|
|
- Add option to allow current releases (e.g., retrieve current release info via daily cron, cache, check, configure ~ALLOW_CURRENT_RELEASES)
|
|
*/
|
|
|
|
|
|
$QA_RELEASES = [
|
|
|
|
'8.1.27' => [
|
|
'active' => true,
|
|
'release' => [
|
|
'type' => 'RC',
|
|
'number' => 0,
|
|
'sha256_gz' => '',
|
|
'sha256_bz2' => '',
|
|
'sha256_xz' => '',
|
|
'date' => '07 Nov 2023',
|
|
'baseurl' => 'https://downloads.php.net/',
|
|
],
|
|
],
|
|
|
|
'8.2.27' => [
|
|
'active' => true,
|
|
'release' => [
|
|
'type' => 'RC',
|
|
'number' => 0,
|
|
'sha256_bz2' => '',
|
|
'sha256_gz' => '',
|
|
'sha256_xz' => '',
|
|
'date' => '05 Dec 2024',
|
|
'baseurl' => 'https://downloads.php.net/',
|
|
],
|
|
],
|
|
|
|
'8.3.26' => [
|
|
'active' => true,
|
|
'release' => [
|
|
'type' => 'RC',
|
|
'number' => 1,
|
|
'sha256_bz2' => '9fd1963008e116ab2da513645381484e61c04c75a432e013b40f6607fb204c17',
|
|
'sha256_gz' => '6225da9473eeb04e8f0e30d10e0481999129d08e12b0467b2542f306b517e2c9',
|
|
'sha256_xz' => 'f8fa51d9e5b58186f415dc3f6e15b61459c50a01258d6c187bab5edfdd45d732',
|
|
'date' => '11 Sep 2025',
|
|
'baseurl' => 'https://downloads.php.net/~jakub/',
|
|
],
|
|
],
|
|
|
|
'8.4.13' => [
|
|
'active' => true,
|
|
'release' => [
|
|
'type' => 'RC',
|
|
'number' => 1,
|
|
'sha256_bz2' => '9b216cf2e32e0cb1189eac3213ebc3e695a2831b9ad23a41b5831d9de1b5f014',
|
|
'sha256_gz' => 'da738b85f7b6aad48073a93013eacb7fd275114c18b2c7ffac72a5801678ae9d',
|
|
'sha256_xz' => '806ba3a1f558dd508a93a182d7108b11a1136af07c37e1fcf05da87ae7d3e3f1',
|
|
'date' => '11 Sep 2025',
|
|
'baseurl' => 'https://downloads.php.net/~calvinb/',
|
|
],
|
|
],
|
|
|
|
'8.5.0' => [
|
|
'active' => true,
|
|
'release' => [
|
|
'type' => 'beta',
|
|
'number' => 3,
|
|
'sha256_bz2' => '897593d9fe0f5f6dd782e1e187323c407ef937a9e860e3552d3548621c260cc8',
|
|
'sha256_gz' => 'ff3f5a8c73c4b84883ef0e3870543c078d324c46ccef2eb85c66cb88124e7a55',
|
|
'sha256_xz' => 'ffde3f5c02187ff0bef28abad7fb0cfa389f47b79a324a8af6ae96b6b60f20cf',
|
|
'date' => '11 Sep 2025',
|
|
'baseurl' => 'https://downloads.php.net/~edorian/',
|
|
],
|
|
],
|
|
];
|
|
|
|
/*** End Configuration *******************************************************************/
|
|
|
|
// This is a list of the possible checksum values that can be supplied with a QA release. Any
|
|
// new algorithm is read from the $QA_RELEASES array under the 'release' index for each version
|
|
// in the form of "$algorithm_$filetype".
|
|
//
|
|
// For example, if SHA512 were to be supported, the following indices would have to be added:
|
|
//
|
|
// 'sha512_bz2' => 'xxx',
|
|
// 'sha512_gz' => 'xxx',
|
|
// 'sha512_xz' => 'xxx',
|
|
$QA_CHECKSUM_TYPES = ['sha256'];
|
|
|
|
// $QA_RELEASES eventually contains just about everything, also for external use
|
|
// release : These are encouraged for use (e.g., linked at qa.php.net)
|
|
// reported : These are allowed to report @ the php.qa.reports mailing list
|
|
|
|
(function(&$QA_RELEASES) use ($QA_CHECKSUM_TYPES) {
|
|
foreach ($QA_RELEASES as $pversion => $info) {
|
|
|
|
if (isset($info['active']) && $info['active']) {
|
|
|
|
// Allow -dev versions of all active types
|
|
// Example: 5.3.6-dev
|
|
$QA_RELEASES['reported'][] = "{$pversion}-dev";
|
|
$QA_RELEASES[$pversion]['dev_version'] = "{$pversion}-dev";
|
|
|
|
// Allow -dev version of upcoming qa releases (rc/alpha/beta)
|
|
// @todo confirm this php version format for all dev versions
|
|
if ((int)$info['release']['number'] > 0) {
|
|
$QA_RELEASES['reported'][] = "{$pversion}{$info['release']['type']}{$info['release']['number']}";
|
|
if (!empty($info['release']['baseurl'])) {
|
|
|
|
// php.net filename format for qa releases
|
|
// example: php-5.3.0RC2
|
|
$fn_base = 'php-' . $pversion . $info['release']['type'] . $info['release']['number'];
|
|
|
|
$QA_RELEASES[$pversion]['release']['version'] = $pversion . $info['release']['type'] . $info['release']['number'];
|
|
foreach ([ 'bz2', 'gz', 'xz' ] as $file_type) {
|
|
foreach ($QA_CHECKSUM_TYPES as $algo) {
|
|
if (isset($info['release'][$algo . '_' . $file_type])) {
|
|
$QA_RELEASES[$pversion]['release']['files'][$file_type][$algo] = $info['release'][$algo . '_' . $file_type];
|
|
}
|
|
}
|
|
if (!empty($QA_RELEASES[$pversion]['release']['files'][$file_type])) {
|
|
$QA_RELEASES[$pversion]['release']['files'][$file_type]['path']= $info['release']['baseurl'] . $fn_base . '.tar.' . $file_type;
|
|
}
|
|
}
|
|
|
|
if (empty($QA_RELEASES[$pversion]['release']['files'])) {
|
|
$QA_RELEASES[$pversion]['release']['enabled'] = false;
|
|
}
|
|
}
|
|
} else {
|
|
$QA_RELEASES[$pversion]['release']['enabled'] = false;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
// Sorted information for later use
|
|
// @todo need these?
|
|
// $QA_RELEASES['releases'] : All current versions with active qa releases
|
|
foreach ($QA_RELEASES as $pversion => $info) {
|
|
if (isset($info['active']) && $info['active'] && !empty($info['release']['number'])) {
|
|
$QA_RELEASES['releases'][$pversion] = $info['release'];
|
|
}
|
|
}
|
|
|
|
})($QA_RELEASES);
|