From a9dcee01b4d4d39d18db60092533dc2985d1c2d4 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 8 Mar 2018 18:55:41 +0300 Subject: Prefer dir repository type over others for pkg-build --- bpkg/pkg-build.cxx | 10 +++++----- bpkg/pkg-unpack.cxx | 12 ++++-------- 2 files changed, 9 insertions(+), 13 deletions(-) (limited to 'bpkg') diff --git a/bpkg/pkg-build.cxx b/bpkg/pkg-build.cxx index 3a301c8..efe7e20 100644 --- a/bpkg/pkg-build.cxx +++ b/bpkg/pkg-build.cxx @@ -1950,10 +1950,12 @@ namespace bpkg if (pl.repository.object_id () != "") // Special root? { + transaction t (db.begin ()); + // Go through package repositories to decide if we should fetch, // checkout or unpack depending on the available repository basis. - // Preferring a local one over the remotes seems like a sensible - // thing to do. + // Preferring a local one over the remotes and the dir repository + // type over the others seems like a sensible thing to do. // optional basis; @@ -1965,15 +1967,13 @@ namespace bpkg { basis = rl.basis (); - if (rl.local ()) + if (rl.directory_based ()) break; } } assert (basis); - transaction t (db.begin ()); - // All calls commit the transaction. // switch (*basis) diff --git a/bpkg/pkg-unpack.cxx b/bpkg/pkg-unpack.cxx index aa3390d..9bd3e03 100644 --- a/bpkg/pkg-unpack.cxx +++ b/bpkg/pkg-unpack.cxx @@ -192,21 +192,17 @@ namespace bpkg if (ap == nullptr) fail << "package " << n << " " << v << " is not available"; - // Pick a directory-based repository. Preferring a local one over the - // remotes seems like a sensible thing to do. + // Pick a directory-based repository. They are always local, so we pick + // the first one. // const package_location* pl (nullptr); for (const package_location& l: ap->locations) { - const repository_location& rl (l.repository.load ()->location); - - if (rl.directory_based () && (pl == nullptr || rl.local ())) + if (l.repository.load ()->location.directory_based ()) { pl = &l; - - if (rl.local ()) - break; + break; } } -- cgit v1.1