summaryrefslogtreecommitdiff
path: root/Tools/qt/make-release.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/qt/make-release.pl')
-rwxr-xr-xTools/qt/make-release.pl69
1 files changed, 69 insertions, 0 deletions
diff --git a/Tools/qt/make-release.pl b/Tools/qt/make-release.pl
new file mode 100755
index 000000000..facc3124f
--- /dev/null
+++ b/Tools/qt/make-release.pl
@@ -0,0 +1,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?