Skip to content

Commit ccfd93f

Browse files
committed
Improve single package building.
1 parent 811e6d0 commit ccfd93f

3 files changed

Lines changed: 37 additions & 4 deletions

File tree

src/client/build.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,34 @@ int build_packages(const String &name, const std::set<Package> &pkgs, const path
222222
int build_package(const String &target_name, const path &settings_fn, const String &config)
223223
{
224224
Settings::get_local_settings().copy_all_libraries_to_output = true;
225-
auto p = extractFromString(target_name);
225+
226+
String target = target_name;
227+
bool added_suffix = false;
228+
if (target.rfind('-') == target.npos)
229+
{
230+
target += "-*"; // add the latest version
231+
added_suffix = true;
232+
}
233+
auto p = extractFromString(target);
234+
try
235+
{
236+
p = resolve_dependencies({ { p.ppath.toString(), p } })[p];
237+
}
238+
catch (const std::exception &)
239+
{
240+
if (!added_suffix)
241+
throw;
242+
243+
target = target_name + "-master"; // add the master version
244+
p = extractFromString(target);
245+
p = resolve_dependencies({ { p.ppath.toString(), p } })[p];
246+
247+
// TODO: if no master version, try to get first branch from local db
248+
// (another try ... catch)
249+
//target = target_name + "-master"; // add the master version
250+
//p = extractFromString(target);
251+
//resolved_deps = resolve_dependencies({ { p.ppath.toString(), p } });
252+
253+
}
226254
return build_packages(p.ppath.back(), { p }, settings_fn, config);
227255
}

src/common/resolver.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@ Resolver::Dependencies getDependenciesFromRemote(const Packages &deps, const Rem
4747
Resolver::Dependencies getDependenciesFromDb(const Packages &deps, const Remote *current_remote);
4848
Resolver::Dependencies prepareIdDependencies(const IdDependencies &id_deps, const Remote *current_remote);
4949

50-
void resolve_dependencies(const Packages &deps)
50+
std::map<Package, Package> resolve_dependencies(const Packages &deps)
5151
{
5252
Resolver r;
5353
r.resolve_dependencies(deps);
54+
return r.resolved_packages;
5455
}
5556

5657
void resolve_and_download(const Package &p, const path &fn)
@@ -90,11 +91,13 @@ void Resolver::resolve_dependencies(const Packages &dependencies)
9091
{
9192
if (d.second.ppath == dl.second.ppath && dl.second.flags[pfDirectDependency])
9293
{
93-
rd.resolved_packages[d.second] = dl.second;
94+
resolved_packages[d.second] = dl.second;
9495
break;
9596
}
9697
}
9798
}
99+
// push to global
100+
rd.resolved_packages.insert(resolved_packages.begin(), resolved_packages.end());
98101

99102
// other related stuff
100103
read_configs();

src/common/resolver.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class Resolver
2525
using Dependencies = DownloadDependency::Dependencies;
2626

2727
public:
28+
std::map<Package, Package> resolved_packages;
29+
2830
void resolve_dependencies(const Packages &deps);
2931
void resolve_and_download(const Package &p, const path &fn);
3032
void assign_dependencies(const Package &p, const Packages &deps); // why such name?
@@ -45,4 +47,4 @@ class Resolver
4547
};
4648

4749
void resolve_and_download(const Package &p, const path &fn);
48-
void resolve_dependencies(const Packages &deps);
50+
std::map<Package, Package> resolve_dependencies(const Packages &deps);

0 commit comments

Comments
 (0)