]> git.tdb.fi Git - builder.git/blobdiff - source/tarball.cpp
Split class Package into SourcePackage and BinaryPackage
[builder.git] / source / tarball.cpp
index 348272f064689e473610cb14f4ae17b4358317e7..5d7678d28a79e33f55a076166b8886915365f5c2 100644 (file)
@@ -7,26 +7,33 @@ Distributed under the LGPL
 
 #include "builder.h"
 #include "file.h"
-#include "package.h"
+#include "sourcepackage.h"
 #include "tar.h"
 #include "tarball.h"
 
 using namespace std;
 
-TarBall::TarBall(Builder &b, const Package &p, const string &ev):
+TarBall::TarBall(Builder &b, const SourcePackage &p, const string &ev):
        Target(b, &p, create_target_name(p, ev))
 {
        buildable=true;
 }
 
+const SourcePackage *TarBall::get_package() const
+{
+       return static_cast<const SourcePackage *>(package);
+}
+
 void TarBall::find_depends()
 {
+       const SourcePackage *spkg=dynamic_cast<const SourcePackage *>(package);
+
        const TargetMap &targets=builder.get_targets();
        for(TargetMap::const_iterator i=targets.begin(); i!=targets.end(); ++i)
                if(i->second->get_package()==package && i->second!=this && !i->second->get_buildable())
                        add_depend(i->second);
 
-       const PathList &tar_files=package->get_tar_files();
+       const PathList &tar_files=spkg->get_tar_files();
        for(PathList::const_iterator i=tar_files.begin(); i!=tar_files.end(); ++i)
        {
                Target *tgt=builder.get_target(i->str());
@@ -43,7 +50,7 @@ Action *TarBall::build()
        return Target::build(new Tar(builder, *this));
 }
 
-string TarBall::create_target_name(const Package &pkg, const string &extra_ver)
+string TarBall::create_target_name(const SourcePackage &pkg, const string &extra_ver)
 {
        string basename=pkg.get_name()+"-"+pkg.get_version();
        if(!extra_ver.empty())