]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Trim down the package preparation code
[builder.git] / source / builder.cpp
index 03429cf8ffa0999723a767bbaf074ead6228a5cc..c86c5dadaf9ffa2671abf97d73b557b7587fd12d 100644 (file)
@@ -85,11 +85,11 @@ Builder::Builder(int argc, char **argv):
        getopt.add_option('C', "chdir",      work_dir,      GetOpt::REQUIRED_ARG).set_help("Change to DIR before doing anything else.", "DIR");
        getopt.add_option('P', "progress",   show_progress, GetOpt::NO_ARG).set_help("Display progress while building.");
        getopt.add_option('W', "what-if",    what_if,       GetOpt::REQUIRED_ARG).set_help("Pretend that FILE has changed.", "FILE");
-       getopt.add_option(     "arch",       arch,          GetOpt::REQUIRED_ARG).set_help("Architecture to build for.", "ARCH");
+       getopt.add_option(     "arch",       arch,          GetOpt::REQUIRED_ARG).set_help("Build for architecture ARCH.", "ARCH");
        getopt.add_option(     "conf-only",  conf_only,     GetOpt::NO_ARG).set_help("Stop after configuring packages.");
        getopt.add_option(     "full-paths", full_paths,    GetOpt::NO_ARG).set_help("Output full paths in analysis.");
-       getopt.add_option(     "max-depth",  max_depth,     GetOpt::REQUIRED_ARG).set_help("Maximum depth to show in analysis.", "NUM");
-       getopt.add_option(     "prefix",     prfx,          GetOpt::REQUIRED_ARG).set_help("Directory to install things to.", "DIR");
+       getopt.add_option(     "max-depth",  max_depth,     GetOpt::REQUIRED_ARG).set_help("Show up to NUM levels in analysis..", "NUM");
+       getopt.add_option(     "prefix",     prfx,          GetOpt::REQUIRED_ARG).set_help("Install things to DIR.", "DIR");
        getopt.add_option(     "tempdir",    temp_str,      GetOpt::REQUIRED_ARG).set_help("Store temporary files in DIR.", "DIR");
        getopt.add_option(     "warnings",   cmdline_warn,  GetOpt::REQUIRED_ARG).set_help("Compiler warnings to use.", "LIST");
        usagemsg = getopt.generate_usage(argv[0])+" [<target> ...]";
@@ -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();
        }
@@ -650,7 +646,11 @@ void Builder::Loader::package(const string &n)
        if(!obj.main_pkg)
                obj.main_pkg = pkg;
 
-       load_sub(*pkg);
+       if(obj.conf_all || pkg==obj.main_pkg)
+               load_sub(*pkg, obj.cmdline_options);
+       else
+               load_sub(*pkg);
+
        if(obj.build_type)
                pkg->set_build_type(*obj.build_type);
 }