#!/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 strict; use warnings; use Getopt::Long; use POSIX qw/strftime/; my $buildresult; my $distribution='squeeze-dev'; my $git_checks='all'; my $version='3.21~git'; my $auto_version=1; my $need_help; my $debug; GetOptions( 'buildresult|r=s' => \$buildresult, 'distribution|D=s' => \$distribution, 'git-checks|g=s' => \$git_checks, 'version|v=s' => \$version, 'autoversion!' => \$auto_version, '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.tar.gz"} ); my $pdebuildopts = $buildresult ? "--buildresult $buildresult" : ""; sys_command_output_screen( "pdebuild $pdebuildopts" ); } everything_is_committed() or die "cannot build: uncommited 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 ); build_package( $newversion ); reset_debian_changelog();