check.php | 157 +++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 91 insertions(+), 66 deletions(-)
New commits: commit 0ed65fbe361503d7e33c642cfa66d24d5fff04c9 Author: Michael Meeks <michael.me...@suse.com> Date: Tue Apr 23 15:31:17 2013 +0100 add a hash -> version map, and an algorithmic update process. This should reduce the amount of touch needed to do a new release to one or two lines. diff --git a/check.php b/check.php index eb6e096..636069d 100644 --- a/check.php +++ b/check.php @@ -1,8 +1,12 @@ <?php -# License: MPL 1.1 / GPLv3+ / LGPLv3+ # -# Copyright (C) 2012 Jan Holesovsky <ke...@suse.cz>, SUSE (initial developer) +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# $debug = false; @@ -101,100 +105,100 @@ $localize_map = array( ) ); -# Map the id's of the versions we want to update to the target version +# Map the build id's into a large integer # Every released version has to be added here (all betas, RC's and final # versions) as soon as they are out -$update_versions = array( +$build_hash_to_version = array( ################## # 3.5.0 versions - '7362ca8-b5a8e65-af86909-d471f98-61464c4' => 'LO-4.0', # 3.5.0 Beta1 - '8589e48-760cc4d-f39cf3d-1b2857e-60db978' => 'LO-4.0', # 3.5.0 Beta2 - 'da8462e-760cc4d-f39cf3d-1b2857e-60db978' => 'LO-4.0', # 3.5.0 Beta2 (MacOSX) - 'e40af8c-10029e3-615e522-88673a2-727f724' => 'LO-4.0', # 3.5.0 Beta3 - 'b6c8ba5-8c0b455-0b5e650-d7f0dd3-b100c87' => 'LO-4.0', # 3.5.0 RC1 - 'e371a95-bf68a13-5a1aa2b-d3c1ae9-b938258' => 'LO-4.0', # 3.5.0 RC2 - '7e68ba2-a744ebf-1f241b7-c506db1-7d53735' => 'LO-4.0', # 3.5.0 RC3 / Final + '7362ca8-b5a8e65-af86909-d471f98-61464c4' => '3.5.0.0.b1', # 3.5.0 Beta1 + '8589e48-760cc4d-f39cf3d-1b2857e-60db978' => '3.5.0.0.b2', # 3.5.0 Beta2 + 'da8462e-760cc4d-f39cf3d-1b2857e-60db978' => '3.5.0.0.b2', # 3.5.0 Beta2 (MacOSX) + 'e40af8c-10029e3-615e522-88673a2-727f724' => '3.5.0.0.b3', # 3.5.0 Beta3 + 'b6c8ba5-8c0b455-0b5e650-d7f0dd3-b100c87' => '3.5.0.1', # 3.5.0 RC1 + 'e371a95-bf68a13-5a1aa2b-d3c1ae9-b938258' => '3.5.0.2', # 3.5.0 RC2 + '7e68ba2-a744ebf-1f241b7-c506db1-7d53735' => '3.5.0.3', # 3.5.0 RC3 / Final # 3.5.1 versions - '45a2874-aa8c38d-dff3b9c-def3dbd-62463c8' => 'LO-4.0', # 3.5.1 RC1 - 'dc9775d-05ecbee-0851ad3-1586698-727bf66' => 'LO-4.0', # 3.5.1 RC2 / Final + '45a2874-aa8c38d-dff3b9c-def3dbd-62463c8' => '3.5.1.1', # 3.5.1 RC1 + 'dc9775d-05ecbee-0851ad3-1586698-727bf66' => '3.5.1.2', # 3.5.1 RC2 / Final # 3.5.2 versions - '1488b14-519dc6f-43021d0-52136ea-8d338cc' => 'LO-4.0', # 3.5.2 RC1 - '281b639-6baa1d3-ef66a77-d866f25-f36d45f' => 'LO-4.0', # 3.5.2 RC2 / Final + '1488b14-519dc6f-43021d0-52136ea-8d338cc' => '3.5.2.1', # 3.5.2 RC1 + '281b639-6baa1d3-ef66a77-d866f25-f36d45f' => '3.5.2.2', # 3.5.2 RC2 / Final # 3.5.3 versions - '21cb047-d7e6025-9ba54fc-b4a51a8-f42372b' => 'LO-3.6', # 3.5.3 RC1 - '235ab8a-3802056-4a8fed3-2d66ea8-e241b80' => 'LO-3.6', # 3.5.3 RC2 / Final + '21cb047-d7e6025-9ba54fc-b4a51a8-f42372b' => '3.5.3.1', # 3.5.3 RC1 + '235ab8a-3802056-4a8fed3-2d66ea8-e241b80' => '3.5.3.2', # 3.5.3 RC2 / Final # 3.5.4 versions - '7306755-f4f605c-738527d-1cf4bc1-9930dc8' => 'LO-3.6', # 3.5.4 RC1 - '165a79a-7059095-e13bb37-fef39a4-9503d18' => 'LO-3.6', # 3.5.4 RC2 / Final + '7306755-f4f605c-738527d-1cf4bc1-9930dc8' => '3.5.4.1', # 3.5.4 RC1 + '165a79a-7059095-e13bb37-fef39a4-9503d18' => '3.5.4.2', # 3.5.4 RC2 / Final # 3.5.5 versions - 'c9944f7-48b7ff5-0507789-54a4c8a-8b242a8' => 'LO-3.6', # 3.5.5 RC1 - '24b32b4-b87ec2e-85c8e98-87a4e20-9a1b8c1' => 'LO-3.6', # 3.5.5 RC2 - '7122e39-92ed229-498d286-15e43b4-d70da21' => 'LO-3.6', # 3.5.5 RC3 / Final + 'c9944f7-48b7ff5-0507789-54a4c8a-8b242a8' => '3.5.5.1', # 3.5.5 RC1 + '24b32b4-b87ec2e-85c8e98-87a4e20-9a1b8c1' => '3.5.5.2', # 3.5.5 RC2 + '7122e39-92ed229-498d286-15e43b4-d70da21' => '3.5.5.3', # 3.5.5 RC3 / Final # 3.5.6 versions - '9cb76c3-dcba98b-297ab39-994e618-0f858f0' => 'LO-3.6', # 3.5.6 RC1 - 'e0fbe70-5879838-a0745b0-0cd1158-638b327' => 'LO-3.6', # 3.5.6 RC2 / Final + '9cb76c3-dcba98b-297ab39-994e618-0f858f0' => '3.5.6.1', # 3.5.6 RC1 + 'e0fbe70-5879838-a0745b0-0cd1158-638b327' => '3.5.6.2', # 3.5.6 RC2 / Final # 3.5.7 versions - '3fa2330-e49ffd2-90d118b-705e248-051e21c' => 'LO-3.6', # 3.5.7 RC1 - '3215f89-f603614-ab984f2-7348103-1225a5b' => 'LO-3.6', # 3.5.7 RC2 / Final + '3fa2330-e49ffd2-90d118b-705e248-051e21c' => '3.5.7.1', # 3.5.7 RC1 + '3215f89-f603614-ab984f2-7348103-1225a5b' => '3.5.7.2', # 3.5.7 RC2 / Final ################## # 3.6.0 versions - '1f1cdd8-e28082e-41df8bf-b153627-a97a84' => 'LO-4.0', # 3.6.0 Beta1 - 'f010139-41cc8cc-da4127d-d2bb4b0-f433b8' => 'LO-4.0', # 3.6.0 Beta2 - '3e2b862-dd05a58-d67668b-8ec3f67-dfb62d' => 'LO-4.0', # 3.6.0 Beta3 - '73f9fb6-115b9dc-d7b744e-21dd070-d656a7' => 'LO-4.0', # 3.6.0 RC1 - '815c576-a5d8898-9df72e7-b4d87fe-96ce64' => 'LO-4.0', # 3.6.0 RC2 - '61d5034-02759b5-145085a-056ecdd-4e8a3e' => 'LO-4.0', # 3.6.0 RC3 - '932b512-69e3009-7a10e5c-fc86223-a55908' => 'LO-4.0', # 3.6.0 RC4 / Final + '1f1cdd8-e28082e-41df8bf-b153627-a97a84' => '3.6.0.0.b1', # 3.6.0 Beta1 + 'f010139-41cc8cc-da4127d-d2bb4b0-f433b8' => '3.6.0.0.b2', # 3.6.0 Beta2 + '3e2b862-dd05a58-d67668b-8ec3f67-dfb62d' => '3.6.0.0.b3', # 3.6.0 Beta3 + '73f9fb6-115b9dc-d7b744e-21dd070-d656a7' => '3.6.0.1', # 3.6.0 RC1 + '815c576-a5d8898-9df72e7-b4d87fe-96ce64' => '3.6.0.2', # 3.6.0 RC2 + '61d5034-02759b5-145085a-056ecdd-4e8a3e' => '3.6.0.3', # 3.6.0 RC3 + '932b512-69e3009-7a10e5c-fc86223-a55908' => '3.6.0.4', # 3.6.0 RC4 / Final # 3.6.1 versions - '4db6344-f0536b8-bbcdb32-f398e1b-f43716' => 'LO-4.0', # 3.6.1.1 - 'e29a214-2bbed72-0621de6-a97528c-8f066d' => 'LO-4.0', # 3.6.1.2 / Final + '4db6344-f0536b8-bbcdb32-f398e1b-f43716' => '3.6.1.1', + 'e29a214-2bbed72-0621de6-a97528c-8f066d' => '3.6.1.2', # Final # 3.6.2 versions - 'ba822cc-88e2710-134b205-7cd8c5c-680b12' => 'LO-4.0', # 3.6.2.1 - 'da8c1e6-fd468f4-454e206-f42a4a9-143cfd' => 'LO-4.0', # 3.6.2.2 / Final + 'ba822cc-88e2710-134b205-7cd8c5c-680b12' => '3.6.2.1', + 'da8c1e6-fd468f4-454e206-f42a4a9-143cfd' => '3.6.2.2', # Final # 3.6.3 versions - 'f8fce0b-300fad7-0c1a2b6-334b928-da36a9' => 'LO-3.6', # 3.6.3.1 - '58f22d5-270d05a-e2abed1-ea17a85-9b5702' => 'LO-3.6', # 3.6.3.2 / Final + 'f8fce0b-300fad7-0c1a2b6-334b928-da36a9' => '3.6.3.1', + '58f22d5-270d05a-e2abed1-ea17a85-9b5702' => '3.6.3.2', # Final # 3.6.4 versions - 'a9a0717-273e462-768e6e3-978247f-65e65f' => 'LO-3.6', # 3.6.4.1 - '2ef5aff-a6fb0ff-166bdff-cf087ad-0f1389' => 'LO-3.6', # 3.6.4.3 / Final [3.6.4.2 was skipped] + 'a9a0717-273e462-768e6e3-978247f-65e65f' => '3.6.4.1', + '2ef5aff-a6fb0ff-166bdff-cf087ad-0f1389' => '3.6.4.3', # Final [3.6.4.2 was skipped] # 3.6.5 versions - '5b93205-6e6b3fc-7830f6d-c08ad66-1d9bf4' => 'LO-3.6', # 3.6.5.2 / Final [3.6.5.1 was skipped] + '5b93205-6e6b3fc-7830f6d-c08ad66-1d9bf4' => '3.6.5.2', # Final [3.6.5.1 was skipped] # 3.6.6 versions - 'a61ad19-949f691-349cf55-3bea8d1-2c85eb' => 'LO-3.6', # 3.6.6.1 + 'a61ad19-949f691-349cf55-3bea8d1-2c85eb' => '3.6.6.1', # To be uncommented when 3.6.7 Final is out - #'f969faf-c24b504-8c77064-174276e-40b382' => 'LO-3.6', # 3.6.6.2 / Final + #'f969faf-c24b504-8c77064-174276e-40b382' => '3.6.6.2', # Final ################## # 4.0.0 versions - '87906242e87d3ddb2ba9827818f2d1416d80cc7' => 'LO-4.0', # 4.0.0 Beta1 - '4104d660979c57e1160b5135634f732918460a0' => 'LO-4.0', # 4.0.0 Beta2 - '527dba6f6e0cfbbc71bd6e7b88a52699bb48799' => 'LO-4.0', # 4.0.0 RC1 - '408fe71bd18616c467b3dcd7ab6756528ffcae2' => 'LO-4.0', # 4.0.0 RC2 - '5991f37846fc3763493029c4958b57282c2597e' => 'LO-4.0', # 4.0.0 RC2 (Windows) - '7545bee9c2a0782548772a21bc84a9dcc583b89' => 'LO-4.0', # 4.0.0 RC3 / Final - '53fd80e80f44edd735c18dbc5b6cde811e0a15c' => 'LO-4.0', # 4.0.0 RC3 / Final (MacOSX) + '87906242e87d3ddb2ba9827818f2d1416d80cc7' => '4.0.0.0.b1', # 4.0.0 Beta1 + '4104d660979c57e1160b5135634f732918460a0' => '4.0.0.0.b2', # 4.0.0 Beta2 + '527dba6f6e0cfbbc71bd6e7b88a52699bb48799' => '4.0.0.1', # 4.0.0 RC1 + '408fe71bd18616c467b3dcd7ab6756528ffcae2' => '4.0.0.2', # 4.0.0 RC2 + '5991f37846fc3763493029c4958b57282c2597e' => '4.0.0.2', # 4.0.0 RC2 (Windows) + '7545bee9c2a0782548772a21bc84a9dcc583b89' => '4.0.0.3', # 4.0.0 RC3 / Final + '53fd80e80f44edd735c18dbc5b6cde811e0a15c' => '4.0.0.3', # 4.0.0 RC3 / Final (MacOSX) # 4.0.1 versions - '2c0c17a6e4bee0ee28131ea4bdc47edc700d659' => 'LO-4.0', # 4.0.1 RC1 - '84102822e3d61eb989ddd325abf1ac077904985' => 'LO-4.0', # 4.0.1 RC2 / Final + '2c0c17a6e4bee0ee28131ea4bdc47edc700d659' => '4.0.1.1', + '84102822e3d61eb989ddd325abf1ac077904985' => '4.0.1.2', # Final # 4.0.2 versions - '7e5467ff8f30d821f4fbf69cb2769163eb64c2c' => 'LO-4.0', # 4.0.2 RC1 - #'4c82dcdd6efcd48b1d8bba66bfe1989deee49c3' => 'LO-4.0', # 4.0.2 RC2 / Final + '7e5467ff8f30d821f4fbf69cb2769163eb64c2c' => '4.0.2.1', + #'4c82dcdd6efcd48b1d8bba66bfe1989deee49c3' => '4.0.2.2', # Final ); # Descriptions of the target versions @@ -207,14 +211,14 @@ $update_versions = array( # where '<type>' and '<lang>' will be substitued with the right value # NOTE: '&' in the URL has to be escaped as & $update_map = array( - 'LO-3.6' => array('gitid' => 'f969faf-c24b504-8c77064-174276e-40b382', + 'stable' => array('gitid' => 'f969faf-c24b504-8c77064-174276e-40b382', 'id' => 'LibreOffice 3.6.6', 'version' => '3.6.6', 'update_type' => 'text/html', 'update_src' => 'http://www.libreoffice.org/download/?type=<type>&lang=<lang>&version=3.6.6', 'substitute' => true ), - 'LO-4.0' => array('gitid' => '4c82dcdd6efcd48b1d8bba66bfe1989deee49c3', + 'latest' => array('gitid' => '4c82dcdd6efcd48b1d8bba66bfe1989deee49c3', 'id' => 'LibreOffice 4.0.2', 'version' => '4.0.2', 'update_type' => 'text/html', @@ -223,17 +227,34 @@ $update_map = array( # Print the update xml function print_update_xml($buildid, $os, $arch, $lang, $pkgfmt) { - global $update_versions, $update_map, $localize_map, $debug; + global $build_hash_to_version, $update_map, $localize_map, $debug; - if (!array_key_exists($buildid, $update_versions)) + if (!array_key_exists($buildid, $build_hash_to_version)) error('No update for your LibreOffice version.'); - $target_version = $update_versions[$buildid]; - - if (!array_key_exists($target_version, $update_map)) - error('Internal error of the update service.'); - - $new = $update_map[$target_version]; + # We upgrade X.Y.Z to X.Y+1.Z for all X iff Z < latest.Z + # If today we are at: old: 3.5.4, new: 3.6.1 + # 3.4 3.5 3.6 + # .0 N N N + # .1 N N *(N) + # .2 O O + # .3 O O + # .4 O O(*) + # .5 O + # + # ie. we have essentially two rectangular regions. + +# print "ver : " . $build_hash_to_version[$buildid] . " - " . +# $update_map['latest']['version'] . "\n"; + + $user_ver = explode( '.', $build_hash_to_version[$buildid] ); + $latest_ver = explode( '.', $update_map['latest']['version'] ); + + if ($latest_ver[2] >= $user_ver[2]) { # third digit at index 2 + $new = $update_map['latest']; + } else { + $new = $update_map['stable']; + } # try to localize $update_src = $new['update_src']; @@ -326,7 +347,11 @@ function print_update_xml($buildid, $os, $arch, $lang, $pkgfmt) { } # Main -#$info = get_update_info("LOdev 3.5 (7362ca8-b5a8e65-af86909-d471f98-61464c4; Windows; x86; BundledLanguages=en-US af ar as ast be bg bn bo br brx bs ca ca-XV cs cy da de dgo dz el en-GB en-ZA eo es et eu fa fi fr ga gd gl gu he hi hr hu id is it ja ka kk km kn ko kok ks ku lb lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc om or pa-IN pl pt pt-BR qtz ro ru rw sa-IN sat sd sh si sk sl sq sr ss st sv sw-TZ ta te tg th tn tr ts tt ug uk uz ve vi xh zh-CN zh-TW zu)"); +# to test me paste: +# +# HTTP_USER_AGENT='LibreOffice 3.5 (c9944f7-48b7ff5-0507789-54a4c8a-8b242a8; Windows; x86; BundledLanguages=en-US af ar as ast be bg bn bo br brx bs ca ca-XV cs cy da de dgo dz el en-GB en-ZA eo es et eu fa fi fr ga gd gl gu he hi hr hu id is it ja ka kk km kn ko kok ks ku lb lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc om or pa-IN pl pt pt-BR ro ru rw sa-IN sat sd sh si sk sl sq sr ss st sv sw-TZ ta te tg th tn tr ts tt ug uk uz ve vi xh zh-CN zh-TW zu)' HTTP_ACCEPT_LANGUAGE=cs-CZ php ./check.php +# + $info = get_update_info(); if (!array_key_exists('product', $info) || ($info['product'] != 'LibreOffice' && $info['product'] != 'LOdev')) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits