]> git.tdb.fi Git - builder.git/commitdiff
Use ExternalTask rather than run_command for running pkg-config
authorMikko Rasa <tdb@tdb.fi>
Wed, 30 May 2012 19:29:33 +0000 (19:29 +0000)
committerMikko Rasa <tdb@tdb.fi>
Sun, 8 Jul 2012 21:08:52 +0000 (00:08 +0300)
source/builder.cpp

index b3e096848f5de0db856a644450f2482ca90e20bc..ed749f818e464bb7df7ba8d00d44d11e6f16e313 100644 (file)
 #include "binarypackage.h"
 #include "builder.h"
 #include "copy.h"
+#include "externaltask.h"
 #include "gnuarchiver.h"
 #include "gnuccompiler.h"
 #include "gnucxxcompiler.h"
 #include "gnulinker.h"
 #include "installedfile.h"
-#include "misc.h"
 #include "package.h"
 #include "pkgconfigfile.h"
 #include "pkgconfiggenerator.h"
@@ -305,7 +305,7 @@ int Builder::main()
 
 string Builder::run_pkgconfig(const string &pkg, const string &what)
 {
-       list<string> argv;
+       vector<string> argv;
        argv.push_back("pkg-config");
        if(what=="cflags" || what=="libs")
                argv.push_back("--"+what);
@@ -321,12 +321,17 @@ string Builder::run_pkgconfig(const string &pkg, const string &what)
        if(verbose>=4)
                IO::print("Running %s\n", join(argv.begin(), argv.end()));
 
-       int status;
-       string res = run_command(argv, &status);
-       if(status)
+       ExternalTask task(argv, FS::Path());
+       task.set_stdout(ExternalTask::CAPTURE);
+       task.set_stderr(ExternalTask::IGNORE);
+       task.start();
+       Task::Status status;
+       while((status=task.check())==Task::RUNNING)
+               Time::sleep(10*Time::msec);
+       if(status==Task::ERROR)
                throw runtime_error(format("pkg-config for package %s failed", pkg));
 
-       return res;
+       return task.get_output();
 }
 
 Package *Builder::get_package(const string &name)