summaryrefslogtreecommitdiff
path: root/dgit
Commit message (Collapse)AuthorAge
* dgit build: Warn if --build-products-dir is not `..'.Ian Jackson2018-07-29
| | | | | | Closes:#904859. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Remove // from inside conditionalsIan Jackson2018-07-29
| | | | | | | | | | | This idiom is terse, but quite confusing. Instead, handle the undef case explicitly. While we are editing these: * Change two internal errors from die to confess * Fix a die in git-debrebase which ought to be badusage Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: move cmd_sbuildSean Whitton2018-07-28
| | | | | | No functional change. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: new 'pbuilder' and 'cowbuilder' subcommandsSean Whitton2018-07-28
| | | | Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: remove dead $need_split_build_invocation code pathSean Whitton2018-07-28
| | | | | | No functional change. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: factor out build_with_binary_builder()Sean Whitton2018-07-28
| | | | | | The pbuilder and cowbuilder subcommands will reuse this code. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: fix a reference to parent directorySean Whitton2018-07-28
| | | | Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: set $dscfn in build_or_push_prep_early()Sean Whitton2018-07-28
| | | | | | No functional change. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: opts_opt_multi_cmd: New @$extra featureIan Jackson2018-07-28
| | | | | | Adjust the existing call sites. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Update copyright yearsSean Whitton2018-07-27
| | | | | Signed-off-by: Sean Whitton <spwhitton@spwhitton.name> Acked-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Abolish move_dsc_to_bpdIan Jackson2018-07-26
| | | | | | | | | | | | | This subroutine only has one caller. It also contains a bit of duplication both within itself and compared to its caller - the calls to mv and its error handling - which is annoying to remove as it is. Instead, put its code into build_source, and break out a private subroutine $mv for the rename. No functional change other than to messages. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Revert "dgit: Move up $sourcechanges"Ian Jackson2018-07-26
| | | | | | This reverts commit 07437a3fe514da7990300b2fd594adff49685de5. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Move cmd_push_source down the fileIan Jackson2018-07-26
| | | | | | Pure code motion. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: push_source no longer cleans the tree.Ian Jackson2018-07-26
| | | | | | This is no longer needed because we always build in a playtree. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: build_source mostly uses a playtree, not $maindirIan Jackson2018-07-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular, it uses a playtree unless we are trying to include uncommitted changes in the source package (which is not supported in split brain mode). This change allows build_source to respect $buildproductsdir. It will also enable, later, building a source package from HEAD, or arbitrary git ref, when the working tree is dirty. This change also requires modifying build_prep to only conditionally clean $maindir. It should clean $maindir only when it's $maindir that we're packing into a source package, or when we are running any builder in $maindir. When we are using a playtree we must build the changes file there too, because dpkg-genchanges cannot be persuaded to look for the .dsc anywhere but ../. Right now build-source still cleans the tree needlessly. We need to change the test suite to not expect a clean unless running a builder: dgit now cleans the tree only when including uncommitted changes in a source package, and when running a builder in $maindir. The code in lib-build-modes does not test the including of uncommitted changes in a source package. Thus, it should expect the tree to be cleaned only when running a builder. Also, we need to not expect a clean with sbuild, for the same reason. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name> Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: Drop alwayssplit testsIan Jackson2018-07-26
| | | | | | | | | | Since dgit: make $need_split_build_invocation always true this option has had no effect, so these tests are redundant. And change the comment in dgit near the option parsing. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: build_prep: Provide it with $wantsrcIan Jackson2018-07-26
| | | | | | No functional change yet as it doesn't use it. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: build_source: drop call to build_prepIan Jackson2018-07-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | We want the callers to do this so they can control it better. They mostly already do. In detail: * cmd_push_source This one is most complicated. It already calls prep_push, which does a variety of things which overlap with build_prep. The things which are in build_prep but not in prep_push are: - notpushing (via build_prep_early), which seems to be a mistake - clean_tree(), which is needed, so we add it (for now...) - build_maybe_quilt_fixup, which is needed, so we add it - remove old changes, which is not actually needed * cmd_build, cmd_gbp_build build_prep was already called by the if arm which didn't call build_source; so we can just move it up outside the if. No functional change here. * cmd_build_source, cmd_sbuild We need to replace the call. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: build_source: Drop call to build_prep_earlyIan Jackson2018-07-26
| | | | | | | | | build_prep starts with a call to build_prep_early so this is redundant (and confusing). Effect is to sometimes no longer duplicate some effort. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Abolish build_source_for_pushIan Jackson2018-07-26
| | | | | | | | | This sub has only one caller and the indirection is not really helpful IMO. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: build_source_for_push does not try to unapply patchesSean Whitton2018-07-26
| | | | | | | | build_source_for_push should now always build in a worktree, so patches should never be applied dirtily to $maindir. Die if it turns out they were. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: Move up $sourcechangesIan Jackson2018-07-26
| | | | | | | | This is not really ideal, but cmd_push_source needs it. For now do it like this. I may move cmd_push_source further down the file, later, and then we can revert this. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: make $need_split_build_invocation always trueSean Whitton2018-07-26
| | | | | | | | | | | | | | | | | dgit will always build the source package. One minor consequence is that dgit will usualliy generate *_multi.changes rather than *_$arch.changes, so we need to update the one test that makes the contrary assumption. Bump the dgit major version number as this is quite a significant change in implementation and also a behavioural change. This change makes a lot of code dead. Removing that is left as a task for the future. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name> Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Move WANTSRC_* definitions up the fileIan Jackson2018-07-26
| | | | | | We are going to want these a bit earlier. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Disregard *_multi.changes for .changes ambiguity purposesIan Jackson2018-07-26
| | | | | | | | | | | | | | | | | | | | | | The changes file ambiguity problem arises because dgit does not know what architecture changes file the build is going to generate. (To know that it would have to delve even more into the command line options the user is passing through dgit to the builder.) dgit --always-split-build generally makes a _multi.changes file, because it merges source changes with binaries from the build. We are going to make --always-split-build the only way things are done. This would result in lots more situations where --rm-old-changes is needed. However, actually, we can assume that the builder does not generate a *_multi.changes. That will allow us to spot the builder-generated changes file even if there is already a dgit-generated *_multi.changes file from a previous build. So: disregard _multi.changes, both when pre-checking for confusing files, and when actually figuring out what the build produced. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: push-source dies if user tried to include uncommitted changesSean Whitton2018-07-26
| | | | | | | This does not make sense because you cannot dgit push uncommitted changes. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: don't let the user pass --include-dirty in split brain modeSean Whitton2018-07-26
| | | | | | | It is not supported. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name> Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Rename --ignore-dirty to --include-dirtyIan Jackson2018-07-26
| | | | | | Leaving the old name supported as a deprecated alias. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: linkorigs: Fix error handling when bpd missingIan Jackson2018-07-26
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: bpd_abs(): Fix return value when bpd is absolute.Ian Jackson2018-07-26
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: massage_dbp_args: Make names for $wantsrc valuesIan Jackson2018-07-25
| | | | | | | | | | | | | | | | 0 - source will NOT need to be built separately by caller +1 - source will need to be built separately by caller +2 - source will need to be built separately by caller AND So: 0 => WANTSRC_BUILDER +1 => WANTSRC_SOURCE | WANTSRC_BUILDER +2 => WANTSRC_SOURCE No functional change except to debugging output. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: rename $ignoredirty -> $includedirtySean Whitton2018-07-25
| | | | | | This better reflects the effects that the option has. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: rename two quilt_fixup_ functionsSean Whitton2018-07-25
| | | | | | | | They are useful for doing things other than quilt fixup. No functional change. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
* dgit: actually respect $buildproductsdir in many placesSean Whitton2018-07-25
| | | | | Signed-off-by: Sean Whitton <spwhitton@spwhitton.name> Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Provide $bpd_globIan Jackson2018-07-25
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: add dgit.default.build-products-dir git configuration keySean Whitton2018-07-25
| | | | | Signed-off-by: Sean Whitton <spwhitton@spwhitton.name> Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* messages: Be a lot more friendly about NEW in particularIan Jackson2018-07-25
| | | | | | And also add a couple of `please's. Closes:#904448. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* apt-get method: when apt does not update release files, print hintIan Jackson2018-07-23
| | | | | | | | | | | | Unconditionally print hint about noatime. This problem seems to occur quite rarely (noatime is out of fashion nowadays, and I haven't seen any other causes) so it doesn't seem worth fiddling about writing code to determine the mount options. Instead, print a hint and let the user investigate. Closes:#851873. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move debinatag_maintview from dgitIan Jackson2018-07-08
| | | | | | | git-debrebase is about to want this for convert-from-gbp dgit split brain fixup. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Break out parsechangelog_loop from dgitIan Jackson2018-07-08
| | | | | | | | git-debrebase is going to want this. No functional change except to some debugging messages. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move parsecontrol etc. out of dgitIan Jackson2018-07-08
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Fix a typo in a commentIan Jackson2018-07-08
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit, git-debrebase: Properly make patches with nasty .gitignores.Ian Jackson2018-07-06
| | | | | | | | | | | | | | | | | | | | | | | Specifically: * When running git status --porcelain, pass --ignored so it lists ignored files, and handle the ! output that it then produces. * Add missing -f to a few git add invocations. I have done some greps ('git.*add', 'git.*status', 'porcelain', etc.) to try to find other missed cases and none turned up. git diff is OK because normally we pass two treeish arguments, in which case the ignores are ignored by git diff. When we are asking it to look at the working tree, we are expecting it to ignore untracked files (whether ignored or not), and diff tracked ones, which is what it does. Closes:#903130. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Check that entirely-new uploads to Debian are not source-only-uploads.Ian Jackson2018-07-05
| | | | | | | | | | | | | | | | | | | | | | Avoids the user pushing things that will inevitably be REJECTed. We end up introducing some new config and force options to support this. We do not reuse test_source_only_changes, as it doesn't have quite the right shape (in particular, it sometimes blithers on stdout). Also arguably it is better to look, specifically, for .debs, for the purpose of this test. This requires a new archive protocol method. We implement it for ftpmasterapi (where it is actualliy needed) and dummycatapi (where we need it for tests.) Implementing it for madisonish methods would be easy. For aptget, it would probably involve iterating over suites, and not be adviseable. Closes:#801435. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: checkout: Do not leave detached HEAD!Ian Jackson2018-07-05
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: checkout: New command.Ian Jackson2018-07-04
| | | | | | Closes:#878443. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: fetch: Introduce new dofetch()Ian Jackson2018-07-04
| | | | | | | This actually does all that is needed. It replaces two now-identical calling patterns. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: fetch: Reorganise cmd_fetchIan Jackson2018-07-04
| | | | | | | | | | | This slightly odd construction is actually how the return value from fork_for_multisuite should be handled. It now looks much more like the calling pattern in pull(). No functional change: if $multi_fetched is falseish, we call fetch_one, and then, no matter what, we finish 0. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: fetch: Slightly refactor pull()Ian Jackson2018-07-04
| | | | | | | | | | | When for_for_multisuite returns '0', meaning we are a child and should do one suite, use finish 0 rather than returning, after doing the fetch. This has no functional change because the one call site is at the end of cmd_pull, after which we finish 0 anyway. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: fetch: Rename fetch_one from fetch (nfc)Ian Jackson2018-07-04
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>