Bugzilla – Attachment 5370 Details for
Bug 5602
Improve configurability of package building scripts
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 5602 - [3.4.x] Rewrite of package building script
Bug-5602---34x-Rewrite-of-package-building-script.patch (text/plain), 6.95 KB, created by
Robin Sheat
on 2011-09-09 03:49:56 UTC
(
hide
)
Description:
Bug 5602 - [3.4.x] Rewrite of package building script
Filename:
MIME Type:
Creator:
Robin Sheat
Created:
2011-09-09 03:49:56 UTC
Size:
6.95 KB
patch
obsolete
>From fe7eacfd627795368fd9dcf2b791dfced4f13f61 Mon Sep 17 00:00:00 2001 >From: Robin Sheat <robin@catalyst.net.nz> >Date: Fri, 9 Sep 2011 15:43:14 +1200 >Subject: [PATCH] Bug 5602 - [3.4.x] Rewrite of package building script > >Note: this is pulling in the most recent version from master. Working >with two different versions that have two different options was getting >painful, and it doesn't touch anything outside of debian/ >--- > debian/README.build | 13 +++ > debian/build-git-snapshot | 180 +++++++++++++++++++++++++++++++++------------ > 2 files changed, 147 insertions(+), 46 deletions(-) > create mode 100644 debian/README.build > >diff --git a/debian/README.build b/debian/README.build >new file mode 100644 >index 0000000..9d33726 >--- /dev/null >+++ b/debian/README.build >@@ -0,0 +1,13 @@ >+In order to build .deb packages, following debian packages need to be present >+(installed): >+devscripts >+pbuilder >+dh-make >+fakeroot >+ >+As root (or sudo) execute: >+pbuilder create >+ >+Executing build-git-snapshot without any arguments will leave package and the >+rest in some pbuilder dir, eg. /var/cache/pbuilder/result It is highly >+recommended that --buildresult option is used. >diff --git a/debian/build-git-snapshot b/debian/build-git-snapshot >index 3847024..91552ff 100755 >--- a/debian/build-git-snapshot >+++ b/debian/build-git-snapshot >@@ -1,64 +1,152 @@ >-#!/bin/sh >+#!/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. > # >-# This script will build a .deb from a git snapshot of koha. >-# Don't use it for building actual versions for uploading to Debian. >+# 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. > # >-# To use: >-# - commit any changes into git >-# - run this script >+# 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 <robin@catalyst.net.nz> and >+# Srdjan Jankovic <srdjan@catalyst.net.nz> >+# Based on an sh version by Lars Wirzenius. >+ >+use strict; >+use warnings; >+ >+use Getopt::Long; >+use POSIX qw/strftime/; > >-set -e >+my $buildresult; >+my $distribution='squeeze-dev'; >+my $git_checks='all'; >+my $version='3.5-1~git'; >+my $auto_version=1; >+my $need_help; >+my $debug; > >-die() >-{ >- echo "$@" >- exit 1 >+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>; > } > >-everything_is_commited() >-{ >- if git status --short | grep -q '^' >- then >- return 1 >- else >- return 0 >- fi >+sub sys_command_output_screen { >+ my ($command) = @_; >+ >+ print "$command\n" if $debug; >+ system($command); > } > >-latest_sha1() { >- git rev-parse --short=8 HEAD >+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; > } > >-newversion() { >- printf '3.5-1~git%s.%s' $(date +%Y%m%d%H%M%S) $(latest_sha1) >+sub help_and_exit { >+ my $msg = shift; >+ if ($msg) { >+ print "$msg\n\n"; >+ } >+ print <<EOH; >+This builds Koha deb packages, from a git snapshot. It's not suitable for >+making upstreamable verions, but handy for your own local packages. >+ >+Options: >+ --buildresult, -r >+ the location that the resulting .deb, .changes, etc. will be placed in. >+ Default is whatever pdebuild uses. >+ --distribution, -D >+ the distribution value to set in the changelog when editing it. Default >+ is 'squeeze-dev'. >+ --git-checks, -g >+ what level of git checks are run to determine if the working copy is >+ clean enough. One of 'all' (any changes are bad), 'modified' (only >+ tracked files with untracked changes will cause an error), and 'none' >+ (checking git status is skipped totally.) Default is 'all'. >+ --version, -v >+ the version string for the resulting package. Default is '3.5-1~git'. >+ --(no)autoversion >+ whether or not to use the date and git commit ID in the version value. >+ Default is to include it. >+ --debug, -d >+EOH >+ exit; > } > >-adjust_debian_changelog() { >- dch --force-distribution -D squeeze-dev -v "$1" \ >- "Building git snapshot." >- dch -r "Building git snapshot." >+sub latest_sha1 { >+ return sys_command_output("git rev-parse --short=8 HEAD"); > } > >-reset_debian_changelog() { >- git checkout -- debian/changelog >+sub adjust_debian_changelog { >+ my ($newversion) = @_; >+ >+ sys_command_output( qq{dch --force-distribution -D "$distribution" -v "$newversion" "Building git snapshot."} ); >+ sys_command_output( qq{dch -r "Building git snapshot."} ); > } > >-build_package() { >- git archive --format=tar --prefix="koha-$1/" HEAD | >- gzip -9 > "../koha_$1.tar.gz" >- pdebuild $2 >+sub reset_debian_changelog { >+ sys_command_output( qq{git checkout -- debian/changelog} ); > } > >-if ! everything_is_commited >-then >- die "cannot build: uncommited changes" >-fi >- >-version="$(newversion)" >-if [ -n "$1" ] >-then >- pdebuildopts="--buildresult $1" >-fi >-adjust_debian_changelog "$version" >-build_package "$version" "$pdebuildopts" >-reset_debian_changelog >+sub build_package { >+ my ($newversion) = @_; >+ sys_command_output( qq{git archive --format=tar --prefix="koha-$newversion/" HEAD | gzip -9 > "../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(); >+ >-- >1.7.4.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 5602
:
4007
|
4338
|
4391
|
4392
| 5370