From: Mikko Rasa Date: Mon, 30 Apr 2012 11:47:34 +0000 (+0300) Subject: Simplify InstalledFile::generate_target_path X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=608d496e0fbad60cc8a110b78c7fb46bad4d2b4a;p=builder.git Simplify InstalledFile::generate_target_path --- diff --git a/source/installedfile.cpp b/source/installedfile.cpp index 1750a15..a9c3473 100644 --- a/source/installedfile.cpp +++ b/source/installedfile.cpp @@ -14,7 +14,7 @@ using namespace std; using namespace Msp; InstalledFile::InstalledFile(Builder &b, const SourcePackage &p, FileTarget &s, const std::string &loc): - FileTarget(b, &p, generate_target_path(s, loc)), + FileTarget(b, &p, generate_target_path(b.get_prefix(), s, loc)), source(s) { buildable = true; @@ -43,13 +43,10 @@ void InstalledFile::check_rebuild() mark_rebuild(source.get_name()+" needs rebuilding"); } -FS::Path InstalledFile::generate_target_path(const FileTarget &tgt, const std::string &loc) +FS::Path InstalledFile::generate_target_path(const FS::Path &prefix, const FileTarget &tgt, const std::string &loc) { - if(!tgt.get_package()) - throw invalid_argument("Can't install package-less targets"); - - FS::Path base = tgt.get_package()->get_builder().get_prefix(); - string tgtname = FS::basename(tgt.get_path()); + if(!tgt.is_installable() && loc.empty()) + throw invalid_argument(tgt.get_name()+" is not installable"); string mid; if(!loc.empty()) @@ -57,8 +54,5 @@ FS::Path InstalledFile::generate_target_path(const FileTarget &tgt, const std::s else mid = tgt.get_install_location(); - if(mid.empty()) - throw invalid_argument("Don't know where to install "+tgtname); - - return base/mid/tgtname; + return prefix/mid/FS::basename(tgt.get_path()); } diff --git a/source/installedfile.h b/source/installedfile.h index 6c6a933..ef76ae7 100644 --- a/source/installedfile.h +++ b/source/installedfile.h @@ -22,7 +22,7 @@ public: private: virtual void check_rebuild(); - static Msp::FS::Path generate_target_path(const FileTarget &i, const std::string &); + static Msp::FS::Path generate_target_path(const Msp::FS::Path &, const FileTarget &i, const std::string &); }; #endif