#!/usr/bin/perl # Copyright 2010 Catalyst IT Ltd. # # This file is part of Koha. # # Koha is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # Koha is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Koha; if not, see . # Written by Robin Sheat and # Srdjan Jankovic # Based on an sh version by Lars Wirzenius. use Modern::Perl; use Getopt::Long qw(:config no_ignore_case); use POSIX qw/strftime/; my $basetgz; my $buildresult; my $distribution = 'testing'; my $git_checks = 'all'; my $version = '16.06~git'; my $auto_version = 1; my $auto_changelog = 1; my $need_help; my $incr; my $urgency = 'medium'; my $debug; my $release_str; GetOptions( 'basetgz|b=s' => \$basetgz, 'buildresult|r=s' => \$buildresult, 'distribution|D=s' => \$distribution, 'git-checks|g=s' => \$git_checks, 'version|v=s' => \$version, 'incr|i=s' => \$incr, 'urgency|u=s' => \$urgency, 'autoversion!' => \$auto_version, 'autochangelog!' => \$auto_changelog, 'help|h' => \$need_help, 'debug|d' => \$debug, ); help_and_exit() if $need_help; sub sys_command_output { my ($command) = @_; print "$command\n" if $debug; my $command_output; open( $command_output, "-|", "$command " ) or die qq{Cannot execute "$command": $!"}; return map { chomp; $_ } <$command_output>; } sub sys_command_output_screen { my ($command) = @_; print "$command\n" if $debug; system($command) == 0 or die "Command '$command' returns an error ($?)\n"; } sub everything_is_committed { my $filter; for ($git_checks) { $_ eq "none" and return 1; $_ eq "modified" and $filter = "no", last; $_ eq "all" and $filter = "normal", last; help_and_exit("$0: --git-checks/-g must be one of 'all', 'modified', or 'none'"); } my $has_changes = grep /^xxx/, sys_command_output("git status --porcelain -u${filter}"); return !$has_changes; } sub help_and_exit { my $msg = shift; if ($msg) { print "$msg\n\n"; } print < "../koha_$newversion.orig.tar.gz"}); my $pdebuildopts = $buildresult ? "--buildresult $buildresult" : ""; my $pdebuildbasetgz = $basetgz ? "-- --use-network yes --basetgz /var/cache/pbuilder/" . $basetgz . ".tgz" : ""; sys_command_output_screen("pdebuild --debbuildopts -sa $pdebuildbasetgz $pdebuildopts"); } everything_is_committed() or die "cannot build: uncommitted changes"; my $newversion = $auto_version ? sprintf( '%s%s.%s', $version, strftime( "+%Y%m%d%H%M%S", localtime ), latest_sha1() ) : $version; adjust_debian_changelog($newversion) if $auto_changelog; build_package($newversion); reset_debian_changelog();