3 This file is part of builder
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
10 #include "sourcepackage.h"
16 TarBall::TarBall(Builder &b, const SourcePackage &p, const string &ev):
17 Target(b, &p, create_target_name(p, ev))
22 const SourcePackage *TarBall::get_package() const
24 return static_cast<const SourcePackage *>(package);
27 void TarBall::find_depends()
29 const SourcePackage *spkg=dynamic_cast<const SourcePackage *>(package);
31 const TargetMap &targets=builder.get_targets();
32 for(TargetMap::const_iterator i=targets.begin(); i!=targets.end(); ++i)
33 if(i->second->get_package()==package && i->second!=this && !i->second->get_buildable())
34 add_depend(i->second);
36 const PathList &tar_files=spkg->get_tar_files();
37 for(PathList::const_iterator i=tar_files.begin(); i!=tar_files.end(); ++i)
39 Target *tgt=builder.get_target(i->str());
41 tgt=new File(builder, i->str());
48 Action *TarBall::build()
50 return Target::build(new Tar(builder, *this));
53 string TarBall::create_target_name(const SourcePackage &pkg, const string &extra_ver)
55 string basename=pkg.get_name()+"-"+pkg.get_version();
56 if(!extra_ver.empty())
57 basename+="-"+extra_ver;
60 return (pkg.get_source()/basename).str();