summaryrefslogtreecommitdiff
path: root/Tools/qt/make-release.pl
blob: facc3124f0c645ef58796291542c24c959f66337 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env perl
# Copyright (C) 2019 Konstantin Tokarev <annulen@yandex.ru>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.

use Cwd;
use File::Basename;
use strict;
use warnings;

sub usage {
    my $msg = shift || "";
    die $msg . "Usage: cd snapshot/repo/path; $0 <version>";
}

scalar @ARGV == 1 || usage();

my $version = shift;

-f "ChangeLog" && die "This script must be run in snapshots repository";
-d ".git" || usage();

`LC_ALL=C LANG=C git status` =~ "nothing to commit, working tree clean" or die "Snapshots working tree is dirty";

my $snapshotTag = "v$version";
my $originalTag = "qtwebkit-$version";

`git tag -l $snapshotTag` && print "Found $snapshotTag\n" || die "Tag $snapshotTag is not found";
`git tag -l $originalTag` && print "Found $originalTag\n" || die "Tag $originalTag is not found";

my $originalTagHash = `git log -1 --format=format:"%H" $originalTag`;
chomp $originalTagHash;

open (my $gitShow, "-|", "git show -s --format=%B $snapshotTag") or die "Failed to run git show: $!";
while (<$gitShow>) {
    if (/^Import WebKit commit ([0-9a-f]+)$/) {
        print "Snaphot imported tag = $1\n";
        unless ($1 eq $originalTagHash) {
            die "Imported tag '$snapshotTag' does not point to '$originalTag' ('$originalTagHash')";
        }
        last;
    }
}

# Now we are ok, let's finally make tarball
my $cmd = "git archive --prefix=$originalTag/ $snapshotTag | xz -9 > $originalTag.tar.xz";
print "$cmd\n";
system($cmd) == 0 or die "git archive failed: $!";

# TODO: Upload to GitHub?