// install cmake // install llvm // install gcc // install gtest EXISTS(gcc) = function(){ exec("gcc -v") :: ExpectNoErrors; log("Check gcc"). } function():: provide(gcc) { exec("sudo apt-get install gcc"):: log("[GCC] Installation"). } function():: TestEnvironment(exists(cmake)){ exec("cmake /V"):: ExpectNoErrors; log("Check cmake"). } function():: provide(cmake) { exec("sudo apt-get install cmake"):: log("[CMake] Installation"). } function():: TestEnvironment(exists(subversion)){ exec("svn --version"):: ExpectNoErrors; log("Check svn"). } function():: provide(subversion) { exec("sudo apt-get install subversion"):: log("[Subversion] Installation"). } function():: TestEnvironment(exists(scons)){ exec("scons -v"):: ExpectNoErrors; log("Check scons"). } function():: provide(scons) { exec("sudo apt-get install scons"):: log("[Scons] Installation"). } function():: TestEnvironment(exists(bison)){ exec("bison --version"):: ExpectNoErrors; log("Check bison"). } function():: provide(bison) { exec("sudo apt-get install bison"):: log("[Bison] Installation"). } //FEATURE dependent packages: Subversion function():: provide(gringo) { exec("cd /opt"). //FEATURE states: dir("/opt") exec("svn://svn.code.sf.net/p/potassco/code/trunk") :: log("[Potassco] cloning latest version"); require(svn); require(rights("/opt", WRITE)). //"sudo chown -R user ./potassco" // exec("scons --build-dir=release"):: require(scons) } function()::depends(env(gringo)){ } exec(cmd::string) = procedure { system(cmd)::ErrorCodeResult. } procedure :: EnvironmentTest(gcc) { exec("gcc -v")::ExpectNoErrors. } EnvironmentProvider(gcc) = procedure { exec("sudo apt-get install gcc"):: log("[GCC] Installation"). }