Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
6c68ec97
Kaydet (Commit)
6c68ec97
authored
Şub 12, 2014
tarafından
Andre Fischer
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
124142: Cleanup of data format and implementation.
üst
58a92efd
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
259 additions
and
104 deletions
+259
-104
build_release.pl
solenv/bin/build_release.pl
+259
-104
No files found.
solenv/bin/build_release.pl
Dosyayı görüntüle @
6c68ec97
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
#**************************************************************
#**************************************************************
use
strict
;
use
strict
;
use
warnings
;
use
XML::
LibXML
;
use
XML::
LibXML
;
use
open
OUT
=>
":utf8"
;
use
open
OUT
=>
":utf8"
;
use
LWP::
Simple
;
use
LWP::
Simple
;
...
@@ -219,7 +220,39 @@ my %EnUSBasedLanguages = (
...
@@ -219,7 +220,39 @@ my %EnUSBasedLanguages = (
);
);
sub
GetInstallationPackageName
($$$$$);
sub
ProcessCommandline
(@);
sub
PrintUsageAndExit
();
sub
Trim
($);
sub
ReadReleaseDescription
($$);
sub
ProcessBuildDescription
($$$);
sub
ProcessPlatformDescription
($$);
sub
ProcessDownloadDescription
($$);
sub
ProcessPackageDescription
($$);
sub
ProcessWikiPackageDescription
($$$);
sub
ProcessLanguageDescription
($$);
sub
PostprocessLanguageList
($$);
sub
PostprocessPlatformList
($$);
sub
CheckLanguageSet
($@);
sub
WriteMakefile
($$);
sub
Upload
($$);
sub
PrepareUploadArea
($@);
sub
UploadFilesViaRsync
($$@);
sub
CollectDownloadSets
($);
sub
ProvideChecksums
($@);
sub
IsOlderThan
($$);
sub
GetInstallationPackageName
($$$$);
sub
ResolveTemplate
($$$$$);
sub
GetCurrentPlatformDescriptor
($);
sub
Wiki
($$);
sub
GetTableList
($);
sub
GetPackagesForTable
($$);
sub
GetLanguagesForTable
($@);
sub
GetPlatformsForTable
($@);
sub
WriteDownloadLinks
($$$$$$$);
sub
FindDownload
($$$$$);
sub
CreateLink
($$$);
sub
CheckLink
($);
sub
SignFile
($$);
sub
ProcessCommandline
(@)
sub
ProcessCommandline
(@)
{
{
...
@@ -286,11 +319,11 @@ sub ProcessCommandline (@)
...
@@ -286,11 +319,11 @@ sub ProcessCommandline (@)
elsif
(
!
defined
$command
)
elsif
(
!
defined
$command
)
{
{
$command
=
$argument
;
$command
=
$argument
;
if
(
$command
eq
"build-missing"
)
if
(
$command
eq
"build-missing"
)
{
{
$command
=
"build"
;
$command
=
"build"
;
$build_only_missing
=
1
;
$build_only_missing
=
1
;
}
}
elsif
(
$command
!~
/^(build|build-missing|upload|wiki)$/
)
elsif
(
$command
!~
/^(build|build-missing|upload|wiki)$/
)
{
{
printf
STDERR
"unknown command '%s'\n"
,
$command
;
printf
STDERR
"unknown command '%s'\n"
,
$command
;
...
@@ -312,7 +345,12 @@ sub ProcessCommandline (@)
...
@@ -312,7 +345,12 @@ sub ProcessCommandline (@)
{
{
$error
=
1
;
$error
=
1
;
}
}
if
(
$command
=~
/^(wiki)$/
)
if
(
!
defined
$command
)
{
printf
STDERR
"ERROR: no command\n"
;
$error
=
1
;
}
elsif
(
$command
=~
/^(wiki)$/
)
{
{
if
(
!
defined
$output_filename
)
if
(
!
defined
$output_filename
)
{
{
...
@@ -398,6 +436,7 @@ sub ReadReleaseDescription ($$)
...
@@ -398,6 +436,7 @@ sub ReadReleaseDescription ($$)
my
$release
=
{
my
$release
=
{
'name'
=>
$root
->
getAttribute
(
"name"
),
'name'
=>
$root
->
getAttribute
(
"name"
),
'version'
=>
$root
->
getAttribute
(
"version"
),
'version'
=>
$root
->
getAttribute
(
"version"
),
'previous-version'
=>
$root
->
getAttribute
(
"previous-version"
),
'builds'
=>
[]
,
'builds'
=>
[]
,
'languages'
=>
{},
'languages'
=>
{},
'language-ids'
=>
[]
,
'language-ids'
=>
[]
,
...
@@ -434,6 +473,15 @@ sub ReadReleaseDescription ($$)
...
@@ -434,6 +473,15 @@ sub ReadReleaseDescription ($$)
}
}
printf
"%d packages\n"
,
scalar
keys
%
{
$release
->
{
'packages'
}};
printf
"%d packages\n"
,
scalar
keys
%
{
$release
->
{
'packages'
}};
# Platform specific the package descriptions.
for
my
$package_element
(
$root
->
getChildrenByTagName
(
"platform-package"
))
{
my
$package_descriptor
=
ProcessPlatformPackageDescription
(
$package_element
,
$context
);
my
$key
=
$package_descriptor
->
{
'platform-id'
}
.
"/"
.
$package_descriptor
->
{
'package-id'
};
$release
->
{
'platform-packages'
}
->
{
$key
}
=
$package_descriptor
;
}
printf
"%d platform packages\n"
,
scalar
keys
%
{
$release
->
{
'platform-packages'
}};
# Process the download descriptions.
# Process the download descriptions.
for
my
$download_element
(
$root
->
getChildrenByTagName
(
"download"
))
for
my
$download_element
(
$root
->
getChildrenByTagName
(
"download"
))
{
{
...
@@ -547,9 +595,12 @@ sub ProcessPlatformDescription ($$)
...
@@ -547,9 +595,12 @@ sub ProcessPlatformDescription ($$)
# Optional tags.
# Optional tags.
foreach
my
$id
(
"extension"
,
"add-package-type-to-archive-name"
)
foreach
my
$id
(
"extension"
,
"add-package-type-to-archive-name"
)
{
{
$descriptor
->
{
$id
}
=
$element
->
getAttribute
(
$id
);
my
$value
=
$element
->
getAttribute
(
$id
);
$descriptor
->
{
$id
}
=
$value
if
defined
$value
;
}
}
$descriptor
->
{
'add-package-type-to-archive-name'
}
=
0
unless
defined
$descriptor
->
{
'add-package-type-to-archive-name'
};
$descriptor
->
{
'package-types'
}
=
[
split
(
/;/
,
$descriptor
->
{
'package-types'
})];
$descriptor
->
{
'package-types'
}
=
[
split
(
/;/
,
$descriptor
->
{
'package-types'
})];
return
$descriptor
;
return
$descriptor
;
...
@@ -591,14 +642,14 @@ sub ProcessDownloadDescription ($$)
...
@@ -591,14 +642,14 @@ sub ProcessDownloadDescription ($$)
The corresponding package descriptor is returned as a hash.
The corresponding package descriptor is returned as a hash.
=cut
=cut
sub
ProcessPackageDescription
($$
$
)
sub
ProcessPackageDescription
($$)
{
{
my
(
$element
,
$context
,
$release_descriptor
)
=
@_
;
my
(
$element
,
$context
)
=
@_
;
my
$descriptor
=
{};
my
$descriptor
=
{};
# Mandatory tags.
# Mandatory tags.
foreach
my
$id
(
"id"
,
"target"
,
"archive-name"
,
"display-name"
)
foreach
my
$id
(
"id"
,
"target"
,
"archive-
path"
,
"archive-
name"
,
"display-name"
)
{
{
$descriptor
->
{
$id
}
=
$element
->
getAttribute
(
$id
);
$descriptor
->
{
$id
}
=
$element
->
getAttribute
(
$id
);
die
"release/package has no attribute $id"
unless
defined
$descriptor
->
{
$id
};
die
"release/package has no attribute $id"
unless
defined
$descriptor
->
{
$id
};
...
@@ -606,8 +657,46 @@ sub ProcessPackageDescription ($$$)
...
@@ -606,8 +657,46 @@ sub ProcessPackageDescription ($$$)
}
}
# Optional tags.
# Optional tags.
foreach
my
$id
(
"link-tooltip"
,
"link-URL"
,
"download-extension"
)
foreach
my
$id
(
"link-tooltip"
,
"link-URL"
,
"download-extension"
)
{
my
$value
=
$element
->
getAttribute
(
$id
);
$descriptor
->
{
$id
}
=
$value
if
defined
$value
;
}
return
$descriptor
;
}
=head2 ProcessPlatformPackageDescription ($element, $context)
Process one <platform-package> element.
The corresponding package descriptor is returned as a hash.
=cut
sub
ProcessPlatformPackageDescription
($$)
{
my
(
$element
,
$context
)
=
@_
;
my
$descriptor
=
{};
# Mandatory tags.
foreach
my
$id
(
"platform-id"
,
"package-id"
)
{
{
$descriptor
->
{
$id
}
=
$element
->
getAttribute
(
$id
);
$descriptor
->
{
$id
}
=
$element
->
getAttribute
(
$id
);
die
"release/package has no attribute $id"
unless
defined
$descriptor
->
{
$id
};
die
"release/package attribute $id is empty"
unless
$descriptor
->
{
$id
}
!~
/^\s*$/
;
}
# Optional tags.
foreach
my
$id
(
"extension"
,
"package-types"
)
{
my
$value
=
$element
->
getAttribute
(
$id
);
$descriptor
->
{
$id
}
=
$value
if
defined
$value
;
}
if
(
defined
$descriptor
->
{
'package-types'
})
{
$descriptor
->
{
'package-types'
}
=
[
split
(
/;/
,
$descriptor
->
{
'package-types'
})];
}
}
return
$descriptor
;
return
$descriptor
;
...
@@ -784,7 +873,7 @@ sub CheckLanguageSet ($@)
...
@@ -784,7 +873,7 @@ sub CheckLanguageSet ($@)
=head2 WriteMakefile ($release_descript
ion
, $context)
=head2 WriteMakefile ($release_descript
or
, $context)
Write a makefile with all targets that match the <build> elements.
Write a makefile with all targets that match the <build> elements.
...
@@ -799,7 +888,7 @@ sub CheckLanguageSet ($@)
...
@@ -799,7 +888,7 @@ sub CheckLanguageSet ($@)
=cut
=cut
sub WriteMakefile ($$)
sub WriteMakefile ($$)
{
{
my ($release_descript
ion
, $context) = @_;
my ($release_descript
or
, $context) = @_;
my $filename = $context->{'
output
-
filename
'};
my $filename = $context->{'
output
-
filename
'};
if ( ! defined $filename)
if ( ! defined $filename)
...
@@ -809,13 +898,18 @@ sub WriteMakefile ($$)
...
@@ -809,13 +898,18 @@ sub WriteMakefile ($$)
# Collect the targets to make.
# Collect the targets to make.
my @targets = ();
my @targets = ();
foreach my $build (@{$release_descript
ion
->{'
builds
'}})
foreach my $build (@{$release_descript
or
->{'
builds
'}})
{
{
my $platform_descriptor = GetCurrentPlatformDescriptor($release_description);
my $platform_descriptor = GetCurrentPlatformDescriptor($release_descriptor);
my $package_descriptor = $release_description->{'
packages
'}->{$build->{'
package
-
id
'}};
my $package_descriptor = $release_descriptor->{'
packages
'}->{$build->{'
package
-
id
'}};
my $platform_package_descriptor = GetPlatformPackage(
$release_descriptor,
$platform_descriptor,
$package_descriptor);
foreach my $language_id (@{$build->{'
language
-
list
'}})
foreach my $language_id (@{$build->{'
language
-
list
'}})
{
{
foreach my $package_format (@{$platform_descriptor->{'
package
-
types
'}})
foreach my $package_format (@{$platform_
package_
descriptor->{'
package
-
types
'}})
{
{
my $full_target = sprintf("%s_%s.%s",
my $full_target = sprintf("%s_%s.%s",
$package_descriptor->{'
target
'},
$package_descriptor->{'
target
'},
...
@@ -823,22 +917,21 @@ sub WriteMakefile ($$)
...
@@ -823,22 +917,21 @@ sub WriteMakefile ($$)
$package_format);
$package_format);
if ($context->{'
build
-
only
-
missing
'})
if ($context->{'
build
-
only
-
missing
'})
{
{
my $source_path = GetInstallationPackagePath(
my ($archive_path, $archive_name) = GetInstallationPackageName(
$platform_descriptor,
$release_descriptor,
$package_format,
$platform_package_descriptor,
$language_id);
my $archive_name = GetInstallationPackageName(
$release_description,
$package_descriptor,
$package_format,
$package_format,
$platform_descriptor,
$language_id);
$language_id);
my $candidate = $
sourc
e_path . "/" . $archive_name;
my $candidate = $
archiv
e_path . "/" . $archive_name;
if (-f $candidate)
if (-f $candidate)
{
{
printf "download set for %s already exists, skipping\n", $full_target;
printf "download set for %s already exists, skipping\n", $full_target;
next;
next;
}
}
else
{
printf "%s %s\n", $archive_path, $archive_name;
}
}
}
push @targets, $full_target;
push @targets, $full_target;
}
}
...
@@ -892,7 +985,7 @@ sub WriteMakefile ($$)
...
@@ -892,7 +985,7 @@ sub WriteMakefile ($$)
sub Upload ($$)
sub Upload ($$)
{
{
my ($release_descript
ion
, $context) = @_;
my ($release_descript
or
, $context) = @_;
if ( ! defined $context->{'
upload
-
destination
'})
if ( ! defined $context->{'
upload
-
destination
'})
{
{
...
@@ -900,7 +993,7 @@ sub Upload ($$)
...
@@ -900,7 +993,7 @@ sub Upload ($$)
PrintUsageAndExit();
PrintUsageAndExit();
}
}
my @download_sets = CollectDownloadSets($release_descript
ion
);
my @download_sets = CollectDownloadSets($release_descript
or
);
ProvideChecksums($context, @download_sets);
ProvideChecksums($context, @download_sets);
my $source_path = PrepareUploadArea($context, @download_sets);
my $source_path = PrepareUploadArea($context, @download_sets);
...
@@ -935,12 +1028,15 @@ sub PrepareUploadArea ($@)
...
@@ -935,12 +1028,15 @@ sub PrepareUploadArea ($@)
foreach my $extension ("", ".md5", ".sha256", ".asc")
foreach my $extension ("", ".md5", ".sha256", ".asc")
{
{
my $basename = sprintf("%s%s", $download_set->{'
archive
-
name
'}, $extension);
my $basename = sprintf("%s%s", $download_set->{'
archive
-
name
'}, $extension);
my $source = sprintf("%s/%s", $download_set->{'
source
-
path
'}, $basename);
my $source_path = $download_set->{'
source
-
path
'};
my $target_path = sprintf("%s/%s/%s", $tmpdir, $download_set->{'
destination
-
path
'});
my $source = sprintf("%s/%s", $source_path, $basename);
my $target_path = sprintf("%s/%s", $tmpdir, $download_set->{'
destination
-
path
'});
my $target = sprintf("%s/%s", $target_path, $basename);
my $target = sprintf("%s/%s", $target_path, $basename);
if ($context->{'
dry
-
run
'})
if ($context->{'
dry
-
run
'})
{
{
printf "would create link for %s\n", $basename;
printf "would create link for %s\n", $basename;
printf " %s\n", $source_path;
printf " to %s\n", $target_path;
}
}
else
else
{
{
...
@@ -1016,11 +1112,11 @@ sub UploadFilesViaRsync ($$@)
...
@@ -1016,11 +1112,11 @@ sub UploadFilesViaRsync ($$@)
sub CollectDownloadSets ($)
sub CollectDownloadSets ($)
{
{
my ($release_descript
ion
) = @_;
my ($release_descript
or
) = @_;
my @download_sets = ();
my @download_sets = ();
foreach my $platform_descriptor (values %{$release_descript
ion
->{'
platforms
'}})
foreach my $platform_descriptor (values %{$release_descript
or
->{'
platforms
'}})
{
{
my $platform_path = sprintf("%s/instsetoo_native/%s",
my $platform_path = sprintf("%s/instsetoo_native/%s",
$ENV{'
SOLARSRC
'},
$ENV{'
SOLARSRC
'},
...
@@ -1030,39 +1126,39 @@ sub CollectDownloadSets ($)
...
@@ -1030,39 +1126,39 @@ sub CollectDownloadSets ($)
printf "ignoring missing %s\n", $platform_path;
printf "ignoring missing %s\n", $platform_path;
next;
next;
}
}
for my $package_descriptor (values %{$release_descript
ion
->{'
packages
'}})
for my $package_descriptor (values %{$release_descript
or
->{'
packages
'}})
{
{
my $platform_package_descriptor = GetPlatformPackage(
$release_descriptor,
$platform_descriptor,
$package_descriptor);
my @package_formats = @{$platform_descriptor->{'
package
-
types
'}};
my @package_formats = @{$platform_descriptor->{'
package
-
types
'}};
for my $package_format (@package_formats)
for my $package_format (@package_formats)
{
{
for my $language_id (@{$release_descript
ion
->{'
language
-
ids
'}})
for my $language_id (@{$release_descript
or
->{'
language
-
ids
'}})
{
{
my $source_path = GetInstallationPackagePath(
my ($archive_path, $archive_name) = GetInstallationPackageName(
$platform_descriptor,
$release_descriptor,
$package_format,
$platform_package_descriptor,
$language_id);
my $archive_name = GetInstallationPackageName(
$release_description,
$package_descriptor,
$package_format,
$package_format,
$platform_descriptor,
$language_id);
$language_id);
my $candidate = $
sourc
e_path."/".$archive_name;
my $candidate = $
archiv
e_path."/".$archive_name;
if ( ! -f $candidate)
if ( ! -f $candidate)
{
{
# printf STDERR "ERROR: can not find download set '
%
s
'\n", $candidate;
# printf STDERR "ERROR: can not find download set '
%
s
'\n", $candidate;
next;
next;
}
}
printf "adding %s\n", $archive_name;
printf "adding %s\n", $archive_name;
push @download_sets,
{
my $download_set =
{
'
source
-
path
' => $
sourc
e_path,
'
source
-
path
' => $
archiv
e_path,
'
archive
-
name
' => $archive_name,
'
archive
-
name
' => $archive_name,
'
platform
' => $platform_descriptor->{'
pack
-
platform
'},
'
platform
' => $platform_descriptor->{'
archive
-
platform
'},
'
destination
-
path
' => sprintf("developer-snapshots/%s/%s",
'
destination
-
path
' => sprintf("developer-snapshots/%s/%s",
$release_descript
ion
->{'
name
'},
$release_descript
or
->{'
name
'},
$platform_descriptor->{'
pack
-
platform
'})
$platform_descriptor->{'
archive
-
platform
'})
};
};
printf " %s\n", $download_set->{'
destination
-
path
'};
push @download_sets, $download_set;
}
}
}
}
}
}
...
@@ -1101,12 +1197,12 @@ sub ProvideChecksums ($@)
...
@@ -1101,12 +1197,12 @@ sub ProvideChecksums ($@)
else
else
{
{
my $digest = Digest::MD5->new();
my $digest = Digest::MD5->new();
open my
$in
, $full_archive_name;
open my
($in)
, $full_archive_name;
$digest->addfile($in);
$digest->addfile($in);
my $checksum = $digest->hexdigest();
my $checksum = $digest->hexdigest();
close $in;
close $in;
open my
$out
, ">", $md5_filename;
open my
($out)
, ">", $md5_filename;
printf $out "%s *%s", $checksum, $download_set->{'
archive
-
name
'};
printf $out "%s *%s", $checksum, $download_set->{'
archive
-
name
'};
close $out;
close $out;
...
@@ -1128,12 +1224,12 @@ sub ProvideChecksums ($@)
...
@@ -1128,12 +1224,12 @@ sub ProvideChecksums ($@)
else
else
{
{
my $digest = Digest::SHA->new("sha256");
my $digest = Digest::SHA->new("sha256");
open my
$in
, $full_archive_name;
open my
($in)
, $full_archive_name;
$digest->addfile($in);
$digest->addfile($in);
my $checksum = $digest->hexdigest();
my $checksum = $digest->hexdigest();
close $in;
close $in;
open my
$out
, ">", $sha256_filename;
open my
($out)
, ">", $sha256_filename;
printf $out "%s *%s", $checksum, $download_set->{'
archive
-
name
'};
printf $out "%s *%s", $checksum, $download_set->{'
archive
-
name
'};
close $out;
close $out;
...
@@ -1190,45 +1286,80 @@ sub IsOlderThan ($$)
...
@@ -1190,45 +1286,80 @@ sub IsOlderThan ($$)
sub GetInstallationPackageName ($$$$
$
)
sub GetInstallationPackageName ($$$$)
{
{
my ($release_description, $package_descriptor, $package_format, $platform_descriptor, $language) = @_;
my ($release_descriptor, $platform_package_descriptor, $package_format, $language) = @_;
my $name = $package_descriptor->{'
archive
-
name
'};
my $archive_package_type = "";
my $path = ResolveTemplate(
if ($platform_descriptor->{'
add
-
package
-
type
-
to
-
archive
-
name
'} =~ /^(1|true|yes)$/i)
$platform_package_descriptor->{'
archive
-
path
'},
{
$release_descriptor,
$archive_package_type = "-".$package_format;
$platform_package_descriptor,
}
$package_format,
$language);
my $name = ResolveTemplate(
$platform_package_descriptor->{'
archive
-
name
'},
$release_descriptor,
$platform_package_descriptor,
$package_format,
$language);
$name =~ s/%V/$release_description->{'
version
'}/g;
return ($path, $name);
$name =~ s/%P/$platform_descriptor->{'
archive
-
platform
'}/g;
$name =~ s/%T/$archive_package_type/g;
$name =~ s/%L/$language/g;
$name =~ s/%E/$platform_descriptor->{'
extension
'}/g;
return $name;
}
}
sub
GetInstallationPackagePath (
$$$)
sub
ResolveTemplate ($$
$$$)
{
{
my ($
product
_descriptor, $package_format, $language) = @_;
my ($
template, $release_descriptor, $platform_package
_descriptor, $package_format, $language) = @_;
my $archive_package_type = "";
if ($platform_package_descriptor->{'
add
-
package
-
type
-
to
-
archive
-
name
'} =~ /^(1|true|yes)$/i)
{
$archive_package_type = "-".$package_format;
}
my $full_language = $language;
my $full_language = $language;
if ($EnUSBasedLanguages{$language})
if ($EnUSBasedLanguages{$language})
{
{
$full_language = "en-US_".$language;
$full_language = "en-US_".$language;
}
}
my $extension = $platform_package_descriptor->{'
download
-
extension
'};
if ( ! defined $extension)
{
$extension = $platform_package_descriptor->{'
extension
'};
}
return sprintf("%s/instsetoo_native/%s/Apache_OpenOffice%s/%s/install/%s_download",
my $old_to_new_version_dash = sprintf(
$ENV{'
SOLARSRC
'},
"v-%s_v-%s",
$ENV{'
INPATH
'},
$release_descriptor->{'
previous
-
version
'},
$product_descriptor->{'
product
-
name
-
tail
'},
$release_descriptor->{'
version
'});
$package_format,
$old_to_new_version_dash =~ s/\./-/g;
$full_language);
my $old_to_new_version_dots = sprintf(
"%s-%s",
$release_descriptor->{'
previous
-
version
'},
$release_descriptor->{'
version
'});
my $name = $template;
# Resolve %? template paramters.
$name =~ s/%V/$release_descriptor->{'
version
'}/g;
$name =~ s/%W/$old_to_new_version_dash/g;
$name =~ s/%w/$old_to_new_version_dots/g;
$name =~ s/%P/$platform_package_descriptor->{'
archive
-
platform
'}/g;
$name =~ s/%t/$archive_package_type/g;
$name =~ s/%T/$package_format/g;
$name =~ s/%l/$full_language/g;
$name =~ s/%L/$language/g;
$name =~ s/%E/$extension/g;
# Resolve $name environment references.
while ($name =~ /^(.*?)\$([a-zA-Z0-9_]+)(.*)$/)
{
$name = $1 . $ENV{$2} . $3;
}
return $name;
}
}
...
@@ -1236,9 +1367,9 @@ sub GetInstallationPackagePath ($$$)
...
@@ -1236,9 +1367,9 @@ sub GetInstallationPackagePath ($$$)
sub GetCurrentPlatformDescriptor ($)
sub GetCurrentPlatformDescriptor ($)
{
{
my ($release_descript
ion
) = @_;
my ($release_descript
or
) = @_;
my $platform_descriptor = $release_descript
ion
->{'
platforms
'}->{$ENV{'
INPATH
'}};
my $platform_descriptor = $release_descript
or
->{'
platforms
'}->{$ENV{'
INPATH
'}};
if ( ! defined $platform_descriptor)
if ( ! defined $platform_descriptor)
{
{
printf STDERR "ERROR: platform '
%
s
' is not supported\n", $ENV{'
INPATH
'};
printf STDERR "ERROR: platform '
%
s
' is not supported\n", $ENV{'
INPATH
'};
...
@@ -1249,6 +1380,29 @@ sub GetCurrentPlatformDescriptor ($)
...
@@ -1249,6 +1380,29 @@ sub GetCurrentPlatformDescriptor ($)
sub GetPlatformPackage ($$$)
{
my ($release_descriptor, $platform_descriptor, $package_descriptor) = @_;
my $key = sprintf("%s/%s", $platform_descriptor->{'
id
'}, $package_descriptor->{'
id
'});
my $platform_package = $release_descriptor->{'
platform
-
packages
'}->{$key};
$platform_package = {}
unless defined $platform_package;
my $joined_descriptor = {
%$platform_descriptor,
%$package_descriptor,
%$platform_package,
'
id
' => $key,
'
platform
-
id
' => $platform_descriptor->{'
id
'},
'
package
-
id
' => $package_descriptor->{'
id
'}
};
return $joined_descriptor;
}
sub Wiki ($$)
sub Wiki ($$)
{
{
my ($release_descriptor, $context) = @_;
my ($release_descriptor, $context) = @_;
...
@@ -1288,7 +1442,7 @@ sub Wiki ($$)
...
@@ -1288,7 +1442,7 @@ sub Wiki ($$)
if ($context->{'
check
-
links
'})
if ($context->{'
check
-
links
'})
{
{
$| = 1;
$| = 1;
printf "%-5
%
s: ", $language_descriptor->{'
id
'};
printf "%-5s: ", $language_descriptor->{'
id
'};
}
}
print $out "|-\n";
print $out "|-\n";
...
@@ -1323,16 +1477,20 @@ sub Wiki ($$)
...
@@ -1323,16 +1477,20 @@ sub Wiki ($$)
foreach my $platform_descriptor (@table_platforms)
foreach my $platform_descriptor (@table_platforms)
{
{
foreach my $package_type (@{$platform_descriptor->{'
package
-
types
'}})
my $platform_package_descriptor = GetPlatformPackage(
$release_descriptor,
$platform_descriptor,
$package_descriptor);
foreach my $package_type (@{$platform_package_descriptor->{'
package
-
types
'}})
{
{
WriteDownloadLinks(
WriteDownloadLinks(
$out,
$out,
$release_descriptor,
$release_descriptor,
$context,
$context,
$release_descriptor,
$language_descriptor,
$language_descriptor,
$wiki_package_descriptor,
$wiki_package_descriptor,
$platform_descriptor,
$platform_
package_
descriptor,
$package_type);
$package_type);
}
}
}
}
...
@@ -1472,42 +1630,39 @@ sub WriteDownloadLinks ($$$$$$$)
...
@@ -1472,42 +1630,39 @@ sub WriteDownloadLinks ($$$$$$$)
my ($out,
my ($out,
$release_descriptor,
$release_descriptor,
$context,
$context,
$release_descriptor,
$language_descriptor,
$language_descriptor,
$wiki_package_descriptor,
$wiki_package_descriptor,
$platform_descriptor,
$platform_
package_
descriptor,
$package_type) = @_;
$package_type) = @_;
my $package_descriptor = $wiki_package_descriptor->{'
package
'};
# Check if the current language and platform match the package.
# Check if the current language and platform match the package.
if (defined $wiki_package_descriptor->{'
platforms
'}->{$platform_descriptor->{'
id
'}}
my $platform_id = $platform_package_descriptor->{'
platform
-
id
'};
if (defined $wiki_package_descriptor->{'
platforms
'}->{$platform_id}
&& defined $wiki_package_descriptor->{'
languages
'}->{$language_descriptor->{'
id
'}})
&& defined $wiki_package_descriptor->{'
languages
'}->{$language_descriptor->{'
id
'}})
{
{
my $archive_package_name = "";
my $archive_package_name = "";
my $extension = $package_type;
my $extension = $package_type;
if (defined $platform_descriptor->{'
extension
'})
if (defined $platform_
package_
descriptor->{'
extension
'})
{
{
$extension = $platform_descriptor->{'
extension
'};
$extension = $platform_
package_
descriptor->{'
extension
'};
}
}
if (defined $package_descriptor->{'
download
-
extension
'})
if (defined $p
latform_p
ackage_descriptor->{'
download
-
extension
'})
{
{
$extension = $package_descriptor->{'
download
-
extension
'};
$extension = $p
latform_p
ackage_descriptor->{'
download
-
extension
'};
}
}
$archive_package_name = "-".$package_type if ($package_type =~ /deb|rpm/);
$archive_package_name = "-".$package_type if ($package_type =~ /deb|rpm/);
my
$archive_name
= GetInstallationPackageName(
my
($archive_path, $archive_name)
= GetInstallationPackageName(
$release_descriptor,
$release_descriptor,
$package_descriptor,
$p
latform_p
ackage_descriptor,
$package_type,
$package_type,
$platform_descriptor,
$language_descriptor->{'
id
'});
$language_descriptor->{'
id
'});
printf $out "| align=\"center\" | ";
printf $out "| align=\"center\" | ";
my $download = FindDownload(
my $download = FindDownload(
$context,
$context,
$release_descriptor,
$release_descriptor,
$platform_descriptor,
$platform_
package_
descriptor,
$package_type,
$package_type,
$archive_name);
$archive_name);
if (defined $download)
if (defined $download)
...
@@ -1537,14 +1692,14 @@ sub WriteDownloadLinks ($$$$$$$)
...
@@ -1537,14 +1692,14 @@ sub WriteDownloadLinks ($$$$$$$)
sub FindDownload ($$$$$)
sub FindDownload ($$$$$)
{
{
my ($context,
my ($context,
$release_descriptor,
$release_descriptor,
$platform
_descriptor,
$platform_package
_descriptor,
$package_type,
$package_type,
$archive_name) = @_;
$archive_name) = @_;
foreach my $download (@{$release_descriptor->{'
downloads
'}})
foreach my $download (@{$release_descriptor->{'
downloads
'}})
{
{
if ($download->{'
platform
-
id
'} eq $platform_
descriptor->{'
id
'})
if ($download->{'
platform
-
id
'} eq $platform_
package_descriptor->{'
platform
-
id
'})
{
{
my $url = $download->{'
base
-
url
'} . "/". $archive_name;
my $url = $download->{'
base
-
url
'} . "/". $archive_name;
if ($context->{'
check
-
links
'})
if ($context->{'
check
-
links
'})
...
@@ -1629,7 +1784,7 @@ sub CreateLink ($$$)
...
@@ -1629,7 +1784,7 @@ sub CreateLink ($$$)
This is determined by downloading only the header.
This is determined by downloading only the header.
=cut
=cut
my $LastCheckedURL =
undef
;
my $LastCheckedURL =
""
;
my $LastCheckedResult = undef;
my $LastCheckedResult = undef;
sub CheckLink ($)
sub CheckLink ($)
{
{
...
@@ -1662,16 +1817,16 @@ sub SignFile ($$)
...
@@ -1662,16 +1817,16 @@ sub SignFile ($$)
my $context = ProcessCommandline(@ARGV);
my $context = ProcessCommandline(@ARGV);
my $release_descript
ion
= ReadReleaseDescription($context->{'
filename
'}, $context);
my $release_descript
or
= ReadReleaseDescription($context->{'
filename
'}, $context);
if ($context->{'
command
'} eq "build")
if ($context->{'
command
'} eq "build")
{
{
WriteMakefile($release_descript
ion
, $context);
WriteMakefile($release_descript
or
, $context);
}
}
elsif ($context->{'
command
'} eq "upload")
elsif ($context->{'
command
'} eq "upload")
{
{
Upload($release_descript
ion
, $context);
Upload($release_descript
or
, $context);
}
}
elsif ($context->{'
command
'
}
eq
"wiki"
)
elsif ($context->{'
command
'
}
eq
"wiki"
)
{
{
Wiki
(
$release_descript
ion
,
$context
);
Wiki
(
$release_descript
or
,
$context
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment