#!/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 2 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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 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.13-1~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); } 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();