1*953605d5SPedro Giffuni#!/usr/bin/perl -w 2c9b362f6SAndre Fischer 3c9b362f6SAndre Fischer#************************************************************** 4c9b362f6SAndre Fischer# 5c9b362f6SAndre Fischer# Licensed to the Apache Software Foundation (ASF) under one 6c9b362f6SAndre Fischer# or more contributor license agreements. See the NOTICE file 7c9b362f6SAndre Fischer# distributed with this work for additional information 8c9b362f6SAndre Fischer# regarding copyright ownership. The ASF licenses this file 9c9b362f6SAndre Fischer# to you under the Apache License, Version 2.0 (the 10c9b362f6SAndre Fischer# "License"); you may not use this file except in compliance 11c9b362f6SAndre Fischer# with the License. You may obtain a copy of the License at 12c9b362f6SAndre Fischer# 13c9b362f6SAndre Fischer# http://www.apache.org/licenses/LICENSE-2.0 14c9b362f6SAndre Fischer# 15c9b362f6SAndre Fischer# Unless required by applicable law or agreed to in writing, 16c9b362f6SAndre Fischer# software distributed under the License is distributed on an 17c9b362f6SAndre Fischer# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18c9b362f6SAndre Fischer# KIND, either express or implied. See the License for the 19c9b362f6SAndre Fischer# specific language governing permissions and limitations 20c9b362f6SAndre Fischer# under the License. 21c9b362f6SAndre Fischer# 22c9b362f6SAndre Fischer#************************************************************** 23c9b362f6SAndre Fischer 24c9b362f6SAndre Fischeruse LWP::UserAgent; 25c9b362f6SAndre Fischer 26c9b362f6SAndre Fischeruse strict; 27c9b362f6SAndre Fischer 28c9b362f6SAndre Fischer=head1 NAME 29c9b362f6SAndre Fischer 30c9b362f6SAndre Fischer patch_make_releases_xml.pl - Create a section for the instsetoo_native/data/releases.xml file. 31c9b362f6SAndre Fischer 32c9b362f6SAndre Fischer=head1 SYNOPSIS 33c9b362f6SAndre Fischer 34c9b362f6SAndre Fischer patch_make_releases_xml.pl <version-number> 35c9b362f6SAndre Fischer 36c9b362f6SAndre Fischer version-number is the version number (eg 4.0.1) for which to create the releases.xml file. 37c9b362f6SAndre Fischer 38c9b362f6SAndre Fischer=head1 DESCRIPTION 39c9b362f6SAndre Fischer 40c9b362f6SAndre Fischer Will contact http://archive.apache.org/dist/openoffice/<version-number>/binaries/ and 41c9b362f6SAndre Fischer a) determine the set of languages 42c9b362f6SAndre Fischer b) collect sizes and sha256 check sums for all Windows installation sets. 43c9b362f6SAndre Fischer 44c9b362f6SAndre Fischer The result is printed to the console. It has to be added manually to releases.xml. 45c9b362f6SAndre Fischer 46c9b362f6SAndre Fischer=cut 47c9b362f6SAndre Fischer 48c9b362f6SAndre Fischer 49c9b362f6SAndre Fischerif (scalar @ARGV != 1) 50c9b362f6SAndre Fischer{ 51c9b362f6SAndre Fischer print STDERR "usage: $0 <version-number>\n"; 52c9b362f6SAndre Fischer die; 53c9b362f6SAndre Fischer} 54c9b362f6SAndre Fischer 55c9b362f6SAndre Fischermy $version = $ARGV[0]; 56c9b362f6SAndre Fischer 57c9b362f6SAndre Fischerprint <<EOT; 58c9b362f6SAndre Fischer<?xml version='1.0' encoding='UTF-8'?> 59c9b362f6SAndre Fischer<!--*********************************************************** 60c9b362f6SAndre Fischer * 61c9b362f6SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one 62c9b362f6SAndre Fischer * or more contributor license agreements. See the NOTICE file 63c9b362f6SAndre Fischer * distributed with this work for additional information 64c9b362f6SAndre Fischer * regarding copyright ownership. The ASF licenses this file 65c9b362f6SAndre Fischer * to you under the Apache License, Version 2.0 (the 66c9b362f6SAndre Fischer * "License"); you may not use this file except in compliance 67c9b362f6SAndre Fischer * with the License. You may obtain a copy of the License at 68c9b362f6SAndre Fischer * 69c9b362f6SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0 70c9b362f6SAndre Fischer * 71c9b362f6SAndre Fischer * Unless required by applicable law or agreed to in writing, 72c9b362f6SAndre Fischer * software distributed under the License is distributed on an 73c9b362f6SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 74c9b362f6SAndre Fischer * KIND, either express or implied. See the License for the 75c9b362f6SAndre Fischer * specific language governing permissions and limitations 76c9b362f6SAndre Fischer * under the License. 77c9b362f6SAndre Fischer * 78c9b362f6SAndre Fischer ***********************************************************--> 79c9b362f6SAndre FischerEOT 80c9b362f6SAndre Fischer 81c9b362f6SAndre Fischersub DownloadFile ($) 82c9b362f6SAndre Fischer{ 83c9b362f6SAndre Fischer my $url = shift; 84c9b362f6SAndre Fischer 85c9b362f6SAndre Fischer my $agent = LWP::UserAgent->new(); 86c9b362f6SAndre Fischer $agent->timeout(120); 87c9b362f6SAndre Fischer $agent->show_progress(0); 88c9b362f6SAndre Fischer 89c9b362f6SAndre Fischer my $file_content = ""; 90c9b362f6SAndre Fischer my $last_was_redirect = 0; 91c9b362f6SAndre Fischer my $bytes_read = 0; 92c9b362f6SAndre Fischer $agent->add_handler('response_redirect' 93c9b362f6SAndre Fischer => sub{ 94c9b362f6SAndre Fischer $last_was_redirect = 1; 95c9b362f6SAndre Fischer return; 96c9b362f6SAndre Fischer }); 97c9b362f6SAndre Fischer $agent->add_handler('response_data' 98c9b362f6SAndre Fischer => sub{ 99c9b362f6SAndre Fischer if ($last_was_redirect) 100c9b362f6SAndre Fischer { 101c9b362f6SAndre Fischer $last_was_redirect = 0; 102c9b362f6SAndre Fischer # Throw away the data we got so far. 103c9b362f6SAndre Fischer $file_content = ""; 104c9b362f6SAndre Fischer } 105c9b362f6SAndre Fischer my($response,$agent,$h,$data)=@_; 106c9b362f6SAndre Fischer $file_content .= $data; 107c9b362f6SAndre Fischer }); 108c9b362f6SAndre Fischer $agent->get($url); 109c9b362f6SAndre Fischer 110c9b362f6SAndre Fischer return $file_content; 111c9b362f6SAndre Fischer} 112c9b362f6SAndre Fischer 113c9b362f6SAndre Fischer 114c9b362f6SAndre Fischer 115c9b362f6SAndre Fischer 116c9b362f6SAndre Fischersub GetResponse ($) 117c9b362f6SAndre Fischer{ 118c9b362f6SAndre Fischer my $url = shift; 119c9b362f6SAndre Fischer 120c9b362f6SAndre Fischer my $agent = LWP::UserAgent->new(); 121c9b362f6SAndre Fischer $agent->timeout(120); 122c9b362f6SAndre Fischer $agent->show_progress(0); 123c9b362f6SAndre Fischer 124c9b362f6SAndre Fischer my $file_content = ""; 125c9b362f6SAndre Fischer my $last_was_redirect = 0; 126c9b362f6SAndre Fischer my $bytes_read = 0; 127c9b362f6SAndre Fischer $agent->add_handler('response_redirect' 128c9b362f6SAndre Fischer => sub{ 129c9b362f6SAndre Fischer $last_was_redirect = 1; 130c9b362f6SAndre Fischer return; 131c9b362f6SAndre Fischer }); 132c9b362f6SAndre Fischer $agent->add_handler('response_data' 133c9b362f6SAndre Fischer => sub{ 134c9b362f6SAndre Fischer if ($last_was_redirect) 135c9b362f6SAndre Fischer { 136c9b362f6SAndre Fischer $last_was_redirect = 0; 137c9b362f6SAndre Fischer # Throw away the data we got so far. 138c9b362f6SAndre Fischer $file_content = ""; 139c9b362f6SAndre Fischer } 140c9b362f6SAndre Fischer my($response,$agent,$h,$data)=@_; 141c9b362f6SAndre Fischer $file_content .= $data; 142c9b362f6SAndre Fischer }); 143c9b362f6SAndre Fischer return $agent->get($url, 'Range' => "bytes=0-0"); 144c9b362f6SAndre Fischer} 145c9b362f6SAndre Fischer 146c9b362f6SAndre Fischermy @languages = (); 147c9b362f6SAndre Fischermy @lines = split(/\n/, DownloadFile("http://archive.apache.org/dist/openoffice/".$version."/binaries/")); 148c9b362f6SAndre Fischerforeach my $line (@lines) 149c9b362f6SAndre Fischer{ 150c9b362f6SAndre Fischer next unless $line =~ /folder.gif/; 151c9b362f6SAndre Fischer if ($line =~ /a href=\"([^\"\/]+)\/\"/) 152c9b362f6SAndre Fischer { 153c9b362f6SAndre Fischer my $language = $1; 154c9b362f6SAndre Fischer next if $language eq "SDK"; 155c9b362f6SAndre Fischer next if $language =~ /^[A-Z]/; 156c9b362f6SAndre Fischer push @languages, $language; 157c9b362f6SAndre Fischer } 158c9b362f6SAndre Fischer} 159c9b362f6SAndre Fischer 160c9b362f6SAndre Fischerprint "<releases>\n"; 161c9b362f6SAndre Fischerprint " <release>\n"; 162c9b362f6SAndre Fischerprintf " <version>%s</version>\n", $version; 163c9b362f6SAndre Fischerprint " <download>\n"; 164c9b362f6SAndre Fischerprint " <package-format>msi</package-format>\n"; 165c9b362f6SAndre Fischerprint " <url-template>\n"; 166c9b362f6SAndre Fischerprintf " http://archive.apache.org/dist/openoffice/%s/binaries/%%L/Apache_OpenOffice_%s_Win_x86_install_%%L.exe\n",$version, $version; 167c9b362f6SAndre Fischerprint " </url-template>\n"; 168c9b362f6SAndre Fischerforeach my $language (sort @languages) 169c9b362f6SAndre Fischer{ 170c9b362f6SAndre Fischer print " <item>\n"; 171c9b362f6SAndre Fischer printf " <language>%s</language>\n", $language; 172c9b362f6SAndre Fischer my $name = sprintf( 173c9b362f6SAndre Fischer "Apache_OpenOffice_%s_Win_x86_install_%s.exe", 174c9b362f6SAndre Fischer $version, 175c9b362f6SAndre Fischer $language, 176c9b362f6SAndre Fischer $version, 177c9b362f6SAndre Fischer $language); 178c9b362f6SAndre Fischer 179c9b362f6SAndre Fischer my $content = DownloadFile( 180c9b362f6SAndre Fischer sprintf("http://archive.apache.org/dist/openoffice/%s/binaries/%s/%s.sha256", $version, $language, $name)); 181c9b362f6SAndre Fischer if ($content =~ /^([a-f0-9]+)/) 182c9b362f6SAndre Fischer { 183c9b362f6SAndre Fischer printf(" <checksum type=\"sha256\">%s</checksum>\n", $1); 184c9b362f6SAndre Fischer } 185c9b362f6SAndre Fischer my $response = GetResponse( 186c9b362f6SAndre Fischer sprintf("http://archive.apache.org/dist/openoffice/%s/binaries/%s/%s", $version, $language, $name)); 187c9b362f6SAndre Fischer my $content_range = $response->{'_headers'}->{'content-range'}; 188c9b362f6SAndre Fischer if ($content_range =~ /bytes 0-0\/(\d+)/) 189c9b362f6SAndre Fischer { 190c9b362f6SAndre Fischer printf(" <size>%s</size>\n", $1); 191c9b362f6SAndre Fischer } 192c9b362f6SAndre Fischer print " </item>\n"; 193c9b362f6SAndre Fischer} 194c9b362f6SAndre Fischer 195c9b362f6SAndre Fischerprint " </download>\n"; 196c9b362f6SAndre Fischerprint " </release>\n"; 197c9b362f6SAndre Fischerprint "</releases>\n"; 198