Merge lp:~jelmer/bzr-builddeb/defer-imports into lp:bzr-builddeb

Proposed by Jelmer Vernooij
Status: Merged
Merged at revision: 676
Proposed branch: lp:~jelmer/bzr-builddeb/defer-imports
Merge into: lp:bzr-builddeb
Diff against target: 283 lines (+87/-42)
2 files modified
cmds.py (+84/-41)
debian/changelog (+3/-1)
To merge this branch: bzr merge lp:~jelmer/bzr-builddeb/defer-imports
Reviewer Review Type Date Requested Status
James Westby Approve
Review via email: mp+87272@code.launchpad.net

Description of the change

Defer imports in cmds - this helps speed up commands like "bzr bash-completion", which iterate over all commands.

To post a comment you must log in.
Revision history for this message
James Westby (james-w) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cmds.py'
2--- cmds.py 2011-12-16 14:55:04 +0000
3+++ cmds.py 2012-01-02 17:08:23 +0000
4@@ -21,18 +21,9 @@
5 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 #
7
8-import commands
9 import os
10 import shutil
11-import subprocess
12 import tempfile
13-import urlparse
14-
15-try:
16- from debian.changelog import Version
17-except ImportError:
18- # Prior to 0.1.15 the debian module was called debian_bundle
19- from debian_bundle.changelog import Version
20
21 from bzrlib import (
22 urlutils,
23@@ -61,32 +52,8 @@
24 BUILD_TYPE_NATIVE,
25 BUILD_TYPE_SPLIT,
26 )
27-from bzrlib.plugins.builddeb.errors import (
28- BuildFailedError,
29- DchError,
30- MissingChangelogError,
31- NoPreviousUpload,
32- PackageVersionNotPresent,
33- StrictBuildFailed,
34- )
35-from bzrlib.plugins.builddeb.hooks import run_hook
36 from bzrlib.plugins.builddeb.util import (
37- FORMAT_3_0_QUILT,
38- FORMAT_3_0_NATIVE,
39- component_from_orig_tarball,
40 debuild_config,
41- dget_changes,
42- find_changelog,
43- find_last_distribution,
44- find_previous_upload,
45- get_source_format,
46- guess_build_type,
47- lookup_distribution,
48- md5sum_filename,
49- open_file,
50- open_file_via_transport,
51- tarball_name,
52- tree_contains_upstream_source,
53 )
54
55 dont_purge_opt = Option('dont-purge',
56@@ -189,6 +156,7 @@
57 result_compat_opt, package_merge_opt]
58
59 def _get_tree_and_branch(self, location):
60+ import urlparse
61 if location is None:
62 location = "."
63 is_local = urlparse.urlsplit(location)[0] in ('', 'file')
64@@ -298,12 +266,18 @@
65 quick=False, reuse=False, native=None,
66 source=False, revision=None, result=None, package_merge=None,
67 strict=False):
68+ import commands
69 from bzrlib.plugins.builddeb.source_distiller import (
70 FullSourceDistiller,
71 MergeModeDistiller,
72 NativeSourceDistiller,
73 )
74 from bzrlib.plugins.builddeb.builder import DebBuild
75+ from bzrlib.plugins.builddeb.errors import (
76+ NoPreviousUpload,
77+ StrictBuildFailed
78+ )
79+ from bzrlib.plugins.builddeb.hooks import run_hook
80 from bzrlib.plugins.builddeb.upstream.branch import (
81 LazyUpstreamBranchSource,
82 )
83@@ -317,6 +291,13 @@
84 from bzrlib.plugins.builddeb.upstream.pristinetar import (
85 PristineTarSource,
86 )
87+ from bzrlib.plugins.builddeb.util import (
88+ dget_changes,
89+ find_changelog,
90+ find_previous_upload,
91+ guess_build_type,
92+ tree_contains_upstream_source,
93+ )
94
95 if result is not None:
96 warning(gettext("--result is deprecated, use --result-dir instead"))
97@@ -476,6 +457,9 @@
98 from bzrlib.plugins.builddeb.upstream.pristinetar import (
99 PristineTarSource,
100 )
101+ from bzrlib.plugins.builddeb.util import (
102+ find_changelog,
103+ )
104 tree = WorkingTree.open_containing(directory)[0]
105 config = debuild_config(tree, tree)
106
107@@ -582,6 +566,9 @@
108 changelog):
109 from bzrlib.plugins.builddeb.merge_upstream import (
110 changelog_add_new_version)
111+ from bzrlib.plugins.builddeb.errors import (
112+ DchError,
113+ )
114 try:
115 changelog_add_new_version(tree, version, distribution_name,
116 changelog, package)
117@@ -598,6 +585,9 @@
118 DistributionBranch,
119 DistributionBranchSet,
120 )
121+ from bzrlib.plugins.builddeb.util import (
122+ component_from_orig_tarball,
123+ )
124 db = DistributionBranch(tree.branch, tree.branch, tree=tree)
125 dbs = DistributionBranchSet()
126 dbs.add_branch(db)
127@@ -611,6 +601,7 @@
128
129 def _fetch_tarball(self, package, version, orig_dir, locations, v3):
130 from bzrlib.plugins.builddeb.repack_tarball import repack_tarball
131+ from bzrlib.plugins.builddeb.util import tarball_name
132 ret = []
133 format = None
134 for location in locations:
135@@ -642,6 +633,14 @@
136 locations, v3)
137
138 def _get_changelog_info(self, tree, last_version, package, distribution):
139+ from bzrlib.plugins.builddeb.util import (
140+ find_changelog,
141+ find_last_distribution,
142+ lookup_distribution,
143+ )
144+ from bzrlib.plugins.builddeb.errors import (
145+ MissingChangelogError,
146+ )
147 current_version = last_version
148 try:
149 (changelog, top_level) = find_changelog(tree, False, max_blocks=2)
150@@ -677,13 +676,28 @@
151 distribution=None, package=None,
152 directory=".", revision=None, merge_type=None,
153 last_version=None, force=None, snapshot=False, launchpad=False):
154+ try:
155+ from debian.changelog import Version
156+ except ImportError:
157+ # Prior to 0.1.15 the debian module was called debian_bundle
158+ from debian_bundle.changelog import Version
159+
160+ from bzrlib.plugins.builddeb.errors import PackageVersionNotPresent
161+ from bzrlib.plugins.builddeb.hooks import run_hook
162 from bzrlib.plugins.builddeb.upstream import (
163- TarfileSource,
164- UScanSource,
165- )
166+ TarfileSource,
167+ UScanSource,
168+ )
169 from bzrlib.plugins.builddeb.upstream.branch import (
170- UpstreamBranchSource,
171- )
172+ UpstreamBranchSource,
173+ )
174+ from bzrlib.plugins.builddeb.util import (
175+ FORMAT_3_0_QUILT,
176+ FORMAT_3_0_NATIVE,
177+ get_source_format,
178+ guess_build_type,
179+ tree_contains_upstream_source,
180+ )
181
182 tree, _ = WorkingTree.open_containing(directory)
183 tree.lock_write()
184@@ -873,9 +887,12 @@
185
186 def import_many(self, db, files_list, orig_target):
187 from bzrlib.plugins.builddeb.import_dsc import (
188- DscCache,
189- DscComp,
190- )
191+ DscCache,
192+ DscComp,
193+ )
194+ from bzrlib.plugins.builddeb.util import (
195+ open_file_via_transport,
196+ )
197 cache = DscCache()
198 files_list.sort(cmp=DscComp(cache).cmp)
199 if not os.path.exists(orig_target):
200@@ -899,10 +916,17 @@
201 db.import_package(os.path.join(orig_target, filename))
202
203 def run(self, files_list, file=None):
204+ from bzrlib.plugins.builddeb.errors import (
205+ MissingChangelogError,
206+ )
207 from bzrlib.plugins.builddeb.import_dsc import (
208 DistributionBranch,
209 DistributionBranchSet,
210 )
211+ from bzrlib.plugins.builddeb.util import (
212+ find_changelog,
213+ open_file,
214+ )
215 try:
216 tree = WorkingTree.open_containing('.')[0]
217 except NotBranchError:
218@@ -1009,10 +1033,18 @@
219 takes_args = ['version', 'location', 'upstream_branch?']
220
221 def run(self, version, location, upstream_branch=None, revision=None):
222+ try:
223+ from debian.changelog import Version
224+ except ImportError:
225+ # Prior to 0.1.15 the debian module was called debian_bundle
226+ from debian_bundle.changelog import Version
227 from bzrlib.plugins.builddeb.import_dsc import (
228 DistributionBranch,
229 DistributionBranchSet,
230 )
231+ from bzrlib.plugins.builddeb.util import (
232+ md5sum_filename,
233+ )
234 # TODO: search for similarity etc.
235 version = version.encode('utf8')
236 branch, _ = Branch.open_containing('.')
237@@ -1105,6 +1137,10 @@
238 aliases = ['bd-do']
239
240 def run(self, command_list=None):
241+ import subprocess
242+ from bzrlib.plugins.builddeb.errors import (
243+ BuildFailedError,
244+ )
245 from bzrlib.plugins.builddeb.source_distiller import (
246 MergeModeDistiller,
247 )
248@@ -1120,6 +1156,10 @@
249 from bzrlib.plugins.builddeb.upstream.pristinetar import (
250 PristineTarSource,
251 )
252+ from bzrlib.plugins.builddeb.hooks import run_hook
253+ from bzrlib.plugins.builddeb.util import (
254+ find_changelog,
255+ )
256 t = WorkingTree.open_containing('.')[0]
257 config = debuild_config(t, t)
258 if config.build_type != BUILD_TYPE_MERGE:
259@@ -1207,6 +1247,9 @@
260 DistributionBranch,
261 DistributionBranchSet,
262 )
263+ from bzrlib.plugins.builddeb.util import (
264+ find_changelog,
265+ )
266 t = WorkingTree.open_containing('.')[0]
267 t.lock_write()
268 try:
269
270=== modified file 'debian/changelog'
271--- debian/changelog 2011-12-17 16:43:38 +0000
272+++ debian/changelog 2012-01-02 17:08:23 +0000
273@@ -1,8 +1,10 @@
274 bzr-builddeb (2.8.1) UNRELEASED; urgency=low
275
276 * New revision specifier 'upstream:'. LP: #905728
277+ * Imports are now deferred in command definitions, to speed up
278+ commands like 'bzr bash-completion'. LP: #903650
279
280- -- Jelmer Vernooij <jelmer@debian.org> Sat, 17 Dec 2011 17:41:19 +0100
281+ -- Jelmer Vernooij <jelmer@debian.org> Mon, 02 Jan 2012 17:57:33 +0100
282
283 bzr-builddeb (2.8.0) unstable; urgency=low
284

Subscribers

People subscribed via source and target branches