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
=== modified file 'cmds.py'
--- cmds.py 2011-12-16 14:55:04 +0000
+++ cmds.py 2012-01-02 17:08:23 +0000
@@ -21,18 +21,9 @@
21# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA21# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22#22#
2323
24import commands
25import os24import os
26import shutil25import shutil
27import subprocess
28import tempfile26import tempfile
29import urlparse
30
31try:
32 from debian.changelog import Version
33except ImportError:
34 # Prior to 0.1.15 the debian module was called debian_bundle
35 from debian_bundle.changelog import Version
3627
37from bzrlib import (28from bzrlib import (
38 urlutils,29 urlutils,
@@ -61,32 +52,8 @@
61 BUILD_TYPE_NATIVE,52 BUILD_TYPE_NATIVE,
62 BUILD_TYPE_SPLIT,53 BUILD_TYPE_SPLIT,
63 )54 )
64from bzrlib.plugins.builddeb.errors import (
65 BuildFailedError,
66 DchError,
67 MissingChangelogError,
68 NoPreviousUpload,
69 PackageVersionNotPresent,
70 StrictBuildFailed,
71 )
72from bzrlib.plugins.builddeb.hooks import run_hook
73from bzrlib.plugins.builddeb.util import (55from bzrlib.plugins.builddeb.util import (
74 FORMAT_3_0_QUILT,
75 FORMAT_3_0_NATIVE,
76 component_from_orig_tarball,
77 debuild_config,56 debuild_config,
78 dget_changes,
79 find_changelog,
80 find_last_distribution,
81 find_previous_upload,
82 get_source_format,
83 guess_build_type,
84 lookup_distribution,
85 md5sum_filename,
86 open_file,
87 open_file_via_transport,
88 tarball_name,
89 tree_contains_upstream_source,
90 )57 )
9158
92dont_purge_opt = Option('dont-purge',59dont_purge_opt = Option('dont-purge',
@@ -189,6 +156,7 @@
189 result_compat_opt, package_merge_opt]156 result_compat_opt, package_merge_opt]
190157
191 def _get_tree_and_branch(self, location):158 def _get_tree_and_branch(self, location):
159 import urlparse
192 if location is None:160 if location is None:
193 location = "."161 location = "."
194 is_local = urlparse.urlsplit(location)[0] in ('', 'file')162 is_local = urlparse.urlsplit(location)[0] in ('', 'file')
@@ -298,12 +266,18 @@
298 quick=False, reuse=False, native=None,266 quick=False, reuse=False, native=None,
299 source=False, revision=None, result=None, package_merge=None,267 source=False, revision=None, result=None, package_merge=None,
300 strict=False):268 strict=False):
269 import commands
301 from bzrlib.plugins.builddeb.source_distiller import (270 from bzrlib.plugins.builddeb.source_distiller import (
302 FullSourceDistiller,271 FullSourceDistiller,
303 MergeModeDistiller,272 MergeModeDistiller,
304 NativeSourceDistiller,273 NativeSourceDistiller,
305 )274 )
306 from bzrlib.plugins.builddeb.builder import DebBuild275 from bzrlib.plugins.builddeb.builder import DebBuild
276 from bzrlib.plugins.builddeb.errors import (
277 NoPreviousUpload,
278 StrictBuildFailed
279 )
280 from bzrlib.plugins.builddeb.hooks import run_hook
307 from bzrlib.plugins.builddeb.upstream.branch import (281 from bzrlib.plugins.builddeb.upstream.branch import (
308 LazyUpstreamBranchSource,282 LazyUpstreamBranchSource,
309 )283 )
@@ -317,6 +291,13 @@
317 from bzrlib.plugins.builddeb.upstream.pristinetar import (291 from bzrlib.plugins.builddeb.upstream.pristinetar import (
318 PristineTarSource,292 PristineTarSource,
319 )293 )
294 from bzrlib.plugins.builddeb.util import (
295 dget_changes,
296 find_changelog,
297 find_previous_upload,
298 guess_build_type,
299 tree_contains_upstream_source,
300 )
320301
321 if result is not None:302 if result is not None:
322 warning(gettext("--result is deprecated, use --result-dir instead"))303 warning(gettext("--result is deprecated, use --result-dir instead"))
@@ -476,6 +457,9 @@
476 from bzrlib.plugins.builddeb.upstream.pristinetar import (457 from bzrlib.plugins.builddeb.upstream.pristinetar import (
477 PristineTarSource,458 PristineTarSource,
478 )459 )
460 from bzrlib.plugins.builddeb.util import (
461 find_changelog,
462 )
479 tree = WorkingTree.open_containing(directory)[0]463 tree = WorkingTree.open_containing(directory)[0]
480 config = debuild_config(tree, tree)464 config = debuild_config(tree, tree)
481465
@@ -582,6 +566,9 @@
582 changelog):566 changelog):
583 from bzrlib.plugins.builddeb.merge_upstream import (567 from bzrlib.plugins.builddeb.merge_upstream import (
584 changelog_add_new_version)568 changelog_add_new_version)
569 from bzrlib.plugins.builddeb.errors import (
570 DchError,
571 )
585 try:572 try:
586 changelog_add_new_version(tree, version, distribution_name,573 changelog_add_new_version(tree, version, distribution_name,
587 changelog, package)574 changelog, package)
@@ -598,6 +585,9 @@
598 DistributionBranch,585 DistributionBranch,
599 DistributionBranchSet,586 DistributionBranchSet,
600 )587 )
588 from bzrlib.plugins.builddeb.util import (
589 component_from_orig_tarball,
590 )
601 db = DistributionBranch(tree.branch, tree.branch, tree=tree)591 db = DistributionBranch(tree.branch, tree.branch, tree=tree)
602 dbs = DistributionBranchSet()592 dbs = DistributionBranchSet()
603 dbs.add_branch(db)593 dbs.add_branch(db)
@@ -611,6 +601,7 @@
611601
612 def _fetch_tarball(self, package, version, orig_dir, locations, v3):602 def _fetch_tarball(self, package, version, orig_dir, locations, v3):
613 from bzrlib.plugins.builddeb.repack_tarball import repack_tarball603 from bzrlib.plugins.builddeb.repack_tarball import repack_tarball
604 from bzrlib.plugins.builddeb.util import tarball_name
614 ret = []605 ret = []
615 format = None606 format = None
616 for location in locations:607 for location in locations:
@@ -642,6 +633,14 @@
642 locations, v3)633 locations, v3)
643634
644 def _get_changelog_info(self, tree, last_version, package, distribution):635 def _get_changelog_info(self, tree, last_version, package, distribution):
636 from bzrlib.plugins.builddeb.util import (
637 find_changelog,
638 find_last_distribution,
639 lookup_distribution,
640 )
641 from bzrlib.plugins.builddeb.errors import (
642 MissingChangelogError,
643 )
645 current_version = last_version644 current_version = last_version
646 try:645 try:
647 (changelog, top_level) = find_changelog(tree, False, max_blocks=2)646 (changelog, top_level) = find_changelog(tree, False, max_blocks=2)
@@ -677,13 +676,28 @@
677 distribution=None, package=None,676 distribution=None, package=None,
678 directory=".", revision=None, merge_type=None,677 directory=".", revision=None, merge_type=None,
679 last_version=None, force=None, snapshot=False, launchpad=False):678 last_version=None, force=None, snapshot=False, launchpad=False):
679 try:
680 from debian.changelog import Version
681 except ImportError:
682 # Prior to 0.1.15 the debian module was called debian_bundle
683 from debian_bundle.changelog import Version
684
685 from bzrlib.plugins.builddeb.errors import PackageVersionNotPresent
686 from bzrlib.plugins.builddeb.hooks import run_hook
680 from bzrlib.plugins.builddeb.upstream import (687 from bzrlib.plugins.builddeb.upstream import (
681 TarfileSource,688 TarfileSource,
682 UScanSource,689 UScanSource,
683 )690 )
684 from bzrlib.plugins.builddeb.upstream.branch import (691 from bzrlib.plugins.builddeb.upstream.branch import (
685 UpstreamBranchSource,692 UpstreamBranchSource,
686 )693 )
694 from bzrlib.plugins.builddeb.util import (
695 FORMAT_3_0_QUILT,
696 FORMAT_3_0_NATIVE,
697 get_source_format,
698 guess_build_type,
699 tree_contains_upstream_source,
700 )
687701
688 tree, _ = WorkingTree.open_containing(directory)702 tree, _ = WorkingTree.open_containing(directory)
689 tree.lock_write()703 tree.lock_write()
@@ -873,9 +887,12 @@
873887
874 def import_many(self, db, files_list, orig_target):888 def import_many(self, db, files_list, orig_target):
875 from bzrlib.plugins.builddeb.import_dsc import (889 from bzrlib.plugins.builddeb.import_dsc import (
876 DscCache,890 DscCache,
877 DscComp,891 DscComp,
878 )892 )
893 from bzrlib.plugins.builddeb.util import (
894 open_file_via_transport,
895 )
879 cache = DscCache()896 cache = DscCache()
880 files_list.sort(cmp=DscComp(cache).cmp)897 files_list.sort(cmp=DscComp(cache).cmp)
881 if not os.path.exists(orig_target):898 if not os.path.exists(orig_target):
@@ -899,10 +916,17 @@
899 db.import_package(os.path.join(orig_target, filename))916 db.import_package(os.path.join(orig_target, filename))
900917
901 def run(self, files_list, file=None):918 def run(self, files_list, file=None):
919 from bzrlib.plugins.builddeb.errors import (
920 MissingChangelogError,
921 )
902 from bzrlib.plugins.builddeb.import_dsc import (922 from bzrlib.plugins.builddeb.import_dsc import (
903 DistributionBranch,923 DistributionBranch,
904 DistributionBranchSet,924 DistributionBranchSet,
905 )925 )
926 from bzrlib.plugins.builddeb.util import (
927 find_changelog,
928 open_file,
929 )
906 try:930 try:
907 tree = WorkingTree.open_containing('.')[0]931 tree = WorkingTree.open_containing('.')[0]
908 except NotBranchError:932 except NotBranchError:
@@ -1009,10 +1033,18 @@
1009 takes_args = ['version', 'location', 'upstream_branch?']1033 takes_args = ['version', 'location', 'upstream_branch?']
10101034
1011 def run(self, version, location, upstream_branch=None, revision=None):1035 def run(self, version, location, upstream_branch=None, revision=None):
1036 try:
1037 from debian.changelog import Version
1038 except ImportError:
1039 # Prior to 0.1.15 the debian module was called debian_bundle
1040 from debian_bundle.changelog import Version
1012 from bzrlib.plugins.builddeb.import_dsc import (1041 from bzrlib.plugins.builddeb.import_dsc import (
1013 DistributionBranch,1042 DistributionBranch,
1014 DistributionBranchSet,1043 DistributionBranchSet,
1015 )1044 )
1045 from bzrlib.plugins.builddeb.util import (
1046 md5sum_filename,
1047 )
1016 # TODO: search for similarity etc.1048 # TODO: search for similarity etc.
1017 version = version.encode('utf8')1049 version = version.encode('utf8')
1018 branch, _ = Branch.open_containing('.')1050 branch, _ = Branch.open_containing('.')
@@ -1105,6 +1137,10 @@
1105 aliases = ['bd-do']1137 aliases = ['bd-do']
11061138
1107 def run(self, command_list=None):1139 def run(self, command_list=None):
1140 import subprocess
1141 from bzrlib.plugins.builddeb.errors import (
1142 BuildFailedError,
1143 )
1108 from bzrlib.plugins.builddeb.source_distiller import (1144 from bzrlib.plugins.builddeb.source_distiller import (
1109 MergeModeDistiller,1145 MergeModeDistiller,
1110 )1146 )
@@ -1120,6 +1156,10 @@
1120 from bzrlib.plugins.builddeb.upstream.pristinetar import (1156 from bzrlib.plugins.builddeb.upstream.pristinetar import (
1121 PristineTarSource,1157 PristineTarSource,
1122 )1158 )
1159 from bzrlib.plugins.builddeb.hooks import run_hook
1160 from bzrlib.plugins.builddeb.util import (
1161 find_changelog,
1162 )
1123 t = WorkingTree.open_containing('.')[0]1163 t = WorkingTree.open_containing('.')[0]
1124 config = debuild_config(t, t)1164 config = debuild_config(t, t)
1125 if config.build_type != BUILD_TYPE_MERGE:1165 if config.build_type != BUILD_TYPE_MERGE:
@@ -1207,6 +1247,9 @@
1207 DistributionBranch,1247 DistributionBranch,
1208 DistributionBranchSet,1248 DistributionBranchSet,
1209 )1249 )
1250 from bzrlib.plugins.builddeb.util import (
1251 find_changelog,
1252 )
1210 t = WorkingTree.open_containing('.')[0]1253 t = WorkingTree.open_containing('.')[0]
1211 t.lock_write()1254 t.lock_write()
1212 try:1255 try:
12131256
=== modified file 'debian/changelog'
--- debian/changelog 2011-12-17 16:43:38 +0000
+++ debian/changelog 2012-01-02 17:08:23 +0000
@@ -1,8 +1,10 @@
1bzr-builddeb (2.8.1) UNRELEASED; urgency=low1bzr-builddeb (2.8.1) UNRELEASED; urgency=low
22
3 * New revision specifier 'upstream:'. LP: #9057283 * New revision specifier 'upstream:'. LP: #905728
4 * Imports are now deferred in command definitions, to speed up
5 commands like 'bzr bash-completion'. LP: #903650
46
5 -- Jelmer Vernooij <jelmer@debian.org> Sat, 17 Dec 2011 17:41:19 +01007 -- Jelmer Vernooij <jelmer@debian.org> Mon, 02 Jan 2012 17:57:33 +0100
68
7bzr-builddeb (2.8.0) unstable; urgency=low9bzr-builddeb (2.8.0) unstable; urgency=low
810

Subscribers

People subscribed via source and target branches