]> git.tdb.fi Git - builder.git/commitdiff
Trim down the package preparation code
authorMikko Rasa <tdb@tdb.fi>
Mon, 16 Jul 2012 18:24:58 +0000 (21:24 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 16 Jul 2012 19:27:35 +0000 (22:27 +0300)
source/builder.cpp
source/component.cpp
source/component.h
source/config.cpp
source/config.h
source/package.cpp
source/package.h
source/sourcepackage.cpp
source/sourcepackage.h

index c08c3055795c233599904aeff7d9f91a25319ce7..c86c5dadaf9ffa2671abf97d73b557b7587fd12d 100644 (file)
@@ -263,8 +263,6 @@ int Builder::main()
                }
        }
 
-       main_pkg->configure(cmdline_options, conf_all?2:1);
-
        if(help)
        {
                usage(0, "builder", false);
@@ -293,7 +291,7 @@ int Builder::main()
        list<string> package_details;
        for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i)
        {
-               if(!i->second || !i->second->is_configured())
+               if(!i->second || !i->second->is_prepared())
                        continue;
 
                string line = i->second->get_name();
@@ -410,10 +408,7 @@ int Builder::create_targets()
        Target *tarballs = new VirtualTarget(*this, "tarballs");
        world->add_depend(*tarballs);
 
-       const PackageManager::PackageMap &packages = package_manager.get_packages();
-       for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i)
-               if(i->second && i->second->is_configured())
-                       i->second->create_targets();
+       main_pkg->prepare();
 
        // Make the cmdline target depend on all targets mentioned on the command line
        Target *cmdline = new VirtualTarget(*this, "cmdline");
@@ -456,6 +451,7 @@ int Builder::create_targets()
 
        if(!dry_run)
        {
+               const PackageManager::PackageMap &packages = package_manager.get_packages();
                for(PackageManager::PackageMap::const_iterator i=packages.begin(); i!=packages.end(); ++i)
                        i->second->save_caches();
        }
index 3ce6b14297a40bfb774846d4133e4bac389edeb5..3f8b004ce172af9a96b36ee6af13d7a586c6de75 100644 (file)
@@ -30,10 +30,10 @@ Component::Component(SourcePackage &p, Type t, const string &n):
        deflt(true)
 { }
 
-void Component::configure(const StringMap &opts, unsigned flag)
+void Component::prepare()
 {
        for(PackageList::const_iterator i=requires.begin(); i!=requires.end(); ++i)
-               (*i)->configure(opts, flag&2);
+               (*i)->prepare();
 }
 
 void Component::create_build_info()
index 140cca16f667a40def5f4497b1c772a66df5a6c0..561a25091381bb4eb5838d1aa0b34b4f9fb89793 100644 (file)
@@ -64,7 +64,7 @@ public:
        bool is_default() const { return deflt; }
        const InstallMap &get_install_map() const { return install_map; }
 
-       void configure(const StringMap &, unsigned);
+       void prepare();
 
        /** Prepares the build information for building.  Pulls build info from the
        parent and dependency packages, and adds any component-specific flags. */
index c6dcb70b25ee9a31f90fa0ffce557592ce36c850..8cabb56fa767dd64f8c199f309cbe0c6fe5c905c 100644 (file)
@@ -34,24 +34,6 @@ bool Config::is_option(const string &name) const
        return options.count(name);
 }
 
-bool Config::update(const StringMap &opts)
-{
-       bool changed_now = false;
-       for(StringMap::const_iterator i=opts.begin(); i!=opts.end(); ++i)
-       {
-               if(set_option(i->first, i->second) && i->first!="profile")
-                       changed_now = true;
-       }
-
-       if(changed_now)
-       {
-               mtime = Time::now();
-               changed = true;
-       }
-
-       return changed_now;
-}
-
 void Config::save() const
 {
        if(!changed)
index 9043208364b554e518feb8a74ff1a18e37df730e..8372af90f99c330c197a0343000b63d481df0013 100644 (file)
@@ -61,12 +61,6 @@ public:
        /** Checks whether an option exists. */
        bool is_option(const std::string &) const;
 
-       /** Processes options from the given raw option map.  Nonexistent options
-       are ignored.  If any options were changed, the mtime of the configuration is
-       updated to the current time.  Return value indicates whether any options
-       were changed. */
-       bool update(const StringMap &);
-
        void save() const;
        bool set_option(const std::string &, const std::string &);
        void load();
index f74b4a09bdda43e905df82ff8584009b2da0b9db..7ec986e1c2c2d4395d76c8e20d78a2d91235538d 100644 (file)
@@ -11,30 +11,23 @@ using namespace Msp;
 Package::Package(Builder &b, const string &n):
        builder(b),
        name(n),
-       conf_done(false),
+       prepared(false),
        use_pkgconfig(true)
 {
        builder.get_package_manager().add_package(this);
 }
 
-void Package::configure(const StringMap &opts, unsigned flag)
+void Package::prepare()
 {
-       if(conf_done)
+       if(prepared)
                return;
 
-       builder.get_logger().log("configure", format("Configuring %s", name));
-
-       do_configure(opts, flag);
-
-       requires.sort();
-       requires.unique();
-
-       for(PackageList::iterator i=requires.begin(); i!=requires.end(); ++i)
-               (*i)->configure(opts, flag&2);
+       for(PackageList::const_iterator i=requires.begin(); i!=requires.end(); ++i)
+               (*i)->prepare();
 
        create_build_info();
-
-       conf_done = true;
+       create_targets();
+       prepared = true;
 }
 
 
index 14b343d9687227599a865130fa6fbe28dbe596cf..e98f4e786f88b9d2fd4e674f1dcf76249e4965ee 100644 (file)
@@ -5,6 +5,7 @@
 #include <string>
 #include <msp/datafile/objectloader.h>
 #include "buildinfo.h"
+#include "config.h"
 
 class Builder;
 class Package;
@@ -34,7 +35,7 @@ protected:
 
        PackageList requires;
        BuildInfo export_binfo;
-       bool conf_done;
+       bool prepared;
 
        bool use_pkgconfig;
 
@@ -51,18 +52,17 @@ public:
        /// Indicates whether or not this package supports pkg-config
        bool get_use_pkgconfig() const { return use_pkgconfig; }
 
-       /** Processes configuration options that were most likely obtained from the
-       command line. */
-       void configure(const StringMap &, unsigned);
+       /** Prepares the package for building.  Recursively prepares all required
+       packages, populates build info and creates targets. */
+       void prepare();
 
-       bool is_configured() const { return conf_done; }
+       bool is_prepared() const { return prepared; }
 protected:
-       virtual void do_configure(const StringMap &, unsigned) { }
        virtual void create_build_info() { }
 
-public:
        virtual void create_targets() { }
 
+public:
        virtual void save_caches() { }
 };
 
index ca49976a9c95cddefe6b1e9d0e8fa54618c3e9ef..06ab5fe7441953a9652b9ae40b2c2df208755de9 100644 (file)
@@ -63,25 +63,6 @@ FS::Path SourcePackage::get_out_dir() const
                return source/arch.get_name()/detail;
 }
 
-void SourcePackage::do_configure(const StringMap &opts, unsigned flag)
-{
-       init_config();
-
-       config.load();
-
-       if(flag && config.update(opts))
-               builder.get_logger().log("configure", format("Configuration of %s changed", name));
-
-       deps_cache.load();
-
-       for(ComponentList::iterator i=components.begin(); i!=components.end(); ++i)
-               i->configure(opts, flag);
-}
-
-void SourcePackage::init_config()
-{
-}
-
 void SourcePackage::create_build_info()
 {
        if(build_type)
@@ -110,6 +91,7 @@ void SourcePackage::create_build_info()
 
        for(list<Component>::iterator i=components.begin(); i!=components.end(); ++i)
        {
+               i->prepare();
                i->create_build_info();
                if(i->get_type()==Component::LIBRARY)
                        export_binfo.libs.push_back(i->get_name());
@@ -118,6 +100,8 @@ void SourcePackage::create_build_info()
 
 void SourcePackage::create_targets()
 {
+       deps_cache.load();
+
        bool pc_needed = false;
        for(ComponentList::const_iterator i=components.begin(); i!=components.end(); ++i)
        {
index 23e376eb89393d12c51ac05840910490c68b054a..d55d373528dc329fc88bf2be82e82d0b6ee59447 100644 (file)
@@ -78,11 +78,6 @@ public:
 
        DependencyCache &get_deps_cache() const { return deps_cache; }
 private:
-       virtual void do_configure(const StringMap &, unsigned);
-
-       /** Initializes configuration options. */
-       void init_config();
-
        /** Fills in build info based on configuration.  All required packages must be
        configured when this is called. */
        virtual void create_build_info();