- Builder &builder = package.get_builder();
- const Toolchain &toolchain = builder.get_toolchain();
-
- PathList source_filenames = collect_source_files();
- list<Target *> inst_list;
-
- string inst_loc;
- if(type==TARBALL)
- {
- const Tool &tar = toolchain.get_tool("TAR");
-
- list<Target *> files;
- for(PathList::const_iterator i=source_filenames.begin(); i!=source_filenames.end(); ++i)
- {
- FileTarget *file = builder.get_vfs().get_target(*i);
- if(!file)
- file = new File(builder, package, *i);
- files.push_back(file);
- }
-
- string tarname = name;
- if(name=="@src")
- {
- tarname = package.get_name()+"-"+package.get_version();
- files.insert(files.begin(), &package.get_build_file());
-
- const Builder::TargetMap &targets = builder.get_targets();
- for(Builder::TargetMap::const_iterator i=targets.begin(); i!=targets.end(); ++i)
- if(i->second->get_package()==&package && !i->second->is_buildable())
- if(find(files.begin(), files.end(), i->second)==files.end())
- files.push_back(i->second);
- }
-
- Target *result = tar.create_target(files, tarname);
-
- builder.get_target("tarballs")->add_dependency(*result);
-
- return;
- }
- else if(type==INSTALL)