dopush();
}
-our $sourcechanges;
-
-sub cmd_push_source {
- prep_push();
- fail "dgit push-source: --include-dirty/--ignore-dirty does not make".
- "sense with push-source!" if $includedirty;
- build_maybe_quilt_fixup();
- if ($changesfile) {
- my $changes = parsecontrol("$buildproductsdir/$changesfile",
- "source changes file");
- unless (test_source_only_changes($changes)) {
- fail "user-specified changes file is not source-only";
- }
- } else {
- # Building a source package is very fast, so just do it
- build_source();
- die "er, patches are applied dirtily but shouldn't be.."
- if $patches_applied_dirtily;
- $changesfile = $sourcechanges;
- }
- dopush();
-}
-
#---------- remote commands' implementation ----------
sub pre_remote_push_build_host {
#---------- building etc. ----------
our $version;
+our $sourcechanges;
our $dscfn;
#----- `3.0 (quilt)' handling -----
}
sub cmd_git_build { cmd_gbp_build(); } # compatibility with <= 1.0
-sub move_dsc_to_bpd ($) {
- my ($dscfn) = @_;
- printdebug "moving $dscfn and all referenced files to ".bpd_abs()."\n";
- $dsc = parsecontrol($dscfn, "source package");
- foreach my $l (split /\n/, getfield $dsc, 'Files') {
- $l =~ m/\S+$/ or next;
- $l =~ s/.* //;
- printdebug "found $l - renaming\n";
- rename "$l", bpd_abs()."/$l"
- or fail "put in place new source file ($l): $!";
- }
- printdebug "moving $dscfn to ".bpd_abs()."/$dscfn\n";
- rename "$dscfn", bpd_abs()."/$dscfn"
- or fail "put in place new source file ($dscfn): $!";
-}
-
sub building_source_in_playtree {
# If $includedirty, we have to build the source package from the
# working tree, not a playtree, so that uncommitted changes are
'exec >../$1; shift; exec "$@"','x', $sourcechanges,
@dpkggenchanges, qw(-S), changesopts();
changedir '..';
- move_dsc_to_bpd($dscfn);
- rename "$sourcechanges", bpd_abs()."/$sourcechanges"
- or fail "put in place source changes file ($sourcechanges): $!";
+
+ printdebug "moving $dscfn, $sourcechanges, etc. to ".bpd_abs()."\n";
+ $dsc = parsecontrol($dscfn, "source package");
+
+ my $mv = sub {
+ my ($why, $l) = @_;
+ printdebug " renaming ($why) $l\n";
+ rename "$l", bpd_abs()."/$l"
+ or fail "put in place new built file ($l): $!";
+ };
+ foreach my $l (split /\n/, getfield $dsc, 'Files') {
+ $l =~ m/\S+$/ or next;
+ $mv->('Files', $&);
+ }
+ $mv->('dsc', $dscfn);
+ $mv->('changes', $sourcechanges);
+
changedir $maindir;
}
printdone "source built, results in $dscfn and $sourcechanges";
}
+sub cmd_push_source {
+ prep_push();
+ fail "dgit push-source: --include-dirty/--ignore-dirty does not make".
+ "sense with push-source!" if $includedirty;
+ build_maybe_quilt_fixup();
+ if ($changesfile) {
+ my $changes = parsecontrol("$buildproductsdir/$changesfile",
+ "source changes file");
+ unless (test_source_only_changes($changes)) {
+ fail "user-specified changes file is not source-only";
+ }
+ } else {
+ # Building a source package is very fast, so just do it
+ build_source();
+ die "er, patches are applied dirtily but shouldn't be.."
+ if $patches_applied_dirtily;
+ $changesfile = $sourcechanges;
+ }
+ dopush();
+}
+
sub cmd_sbuild {
build_prep(WANTSRC_SOURCE); # not BUILDER because sbuild uses the .dsc
build_source();