from os import path
from benchbuild.utils.wrapping import wrap
from benchbuild.projects.benchbuild.group import BenchBuildGroup
from benchbuild.utils.compiler import lt_clang, lt_clang_cxx
from benchbuild.utils.downloader import Git, Wget
from benchbuild.utils.run import run
from benchbuild.utils.cmd import cp, find, tar, make, rm, head, grep, sed, sh
from benchbuild.utils.cmd import mkdir
from plumbum import FG, local
[docs]class Povray(BenchBuildGroup):
""" povray benchmark """
NAME = 'povray'
DOMAIN = 'multimedia'
SRC_FILE = 'povray.git'
src_uri = "https://github.com/POV-Ray/povray"
boost_src_dir = "boost_1_59_0"
boost_src_file = boost_src_dir + ".tar.bz2"
boost_src_uri = \
"http://sourceforge.net/projects/boost/files/boost/1.59.0/" + \
boost_src_file
[docs] def download(self):
Wget(self.boost_src_uri, self.boost_src_file)
Git(self.src_uri, self.SRC_FILE)
tar("xfj", self.boost_src_file)
[docs] def build(self):
povray_binary = path.join(self.SRC_FILE, "unix", self.name)
with local.cwd(self.SRC_FILE):
rm("-f", povray_binary)
run(make["clean", "all"])
[docs] def prepare(self):
super(Povray, self).prepare()
cp("-ar", path.join(self.testdir, "cfg"), '.')
cp("-ar", path.join(self.testdir, "etc"), '.')
cp("-ar", path.join(self.testdir, "scenes"), '.')
cp("-ar", path.join(self.testdir, "share"), '.')
cp("-ar", path.join(self.testdir, "test"), '.')
[docs] def run_tests(self, experiment, run):
povray_binary = path.join(self.SRC_FILE, "unix", self.name)
tmpdir = "tmp"
povini = path.join("cfg", ".povray", "3.6", "povray.ini")
scene_dir = path.join("share", "povray-3.6", "scenes")
mkdir(tmpdir, retcode=None)
povray = wrap(povray_binary, experiment)
pov_files = find(scene_dir, "-name", "*.pov").splitlines()
for pov_f in pov_files:
with local.env(POVRAY=povray_binary,
INSTALL_DIR='.',
OUTPUT_DIR=tmpdir,
POVINI=povini):
options = ((((head["-n", "50", "\"" + pov_f + "\""] |
grep["-E", "'^//[ ]+[-+]{1}[^ -]'"]) |
head["-n", "1"]) | sed["s?^//[ ]*??"]) & FG)
run(povray["+L" + scene_dir, "+L" + tmpdir, "-i" + pov_f,
"-o" + tmpdir, options, "-p"],
retcode=None)