Example #1
0
def prepare(root,config):
    prefix=config.get('Main','prefix')
    dep_build_dir = config.get('Main','dependency_build_dir')
    dep_download_dir=config.get('Main','dependency_download_dir')
    arma_include_dir=prefix+"/bempp/include"

    print "Extracting Armadillo"
    extract_dir = dep_build_dir+"/"+arma_extract_dir
    tools.checkDeleteDirectory(extract_dir)
    try:
        tools.extract_file(dep_download_dir+"/"+arma_fname,dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root,config,force=True)
        tools.extract_file(dep_download_dir+"/"+arma_fname,dep_build_dir)
    subprocess.check_call("cp -R "+extract_dir+"/include/* "+
                          prefix+"/bempp/include/",shell=True)
    print "Patching Armadillo"
    patch=py_patch.fromfile(root+"/installer/patches/armadillo_config.patch")
    cwd=os.getcwd()
    os.chdir(prefix+"/bempp/include/armadillo_bits")
    patch.apply()
    os.chdir(cwd)

    tools.setDefaultConfigOption(config,"Armadillo","include_dir",
                                 prefix+"/bempp/include",overwrite=True)
Example #2
0
def prepare(root,config):
    dep_build_dir=config.get('Main','dependency_build_dir')
    dep_download_dir=config.get('Main','dependency_download_dir')

    trilinos_full_dir=dep_build_dir+"/"+trilinos_dir
    trilinos_download_name=dep_download_dir+"/"+trilinos_fname

    prefix=config.get('Main','prefix')

    tools.checkDeleteDirectory(trilinos_full_dir)

    print "Extracting Trilinos"
    try:
        tools.extract_file(dep_download_dir+"/"+trilinos_fname,dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root,config,force=True)
        tools.extract_file(dep_download_dir+"/"+trilinos_fname,dep_build_dir)
    os.rename(dep_build_dir+"/"+trilinos_extract_dir,
              dep_build_dir+"/"+trilinos_dir)
    shutil.copy(root+"/installer/build_scripts/posix/trilinos_build.sh",
                trilinos_full_dir+"/trilinos_build.sh")
    print "Patching Trilinos"
    cwd=os.getcwd()
    os.chdir(dep_build_dir+"/trilinos/packages/stratimikos/adapters/belos/src")
    patch=py_patch.fromfile(root+"/installer/patches/Thyra_BelosLinearOpWithSolve_def.patch")
    patch.apply()
    os.chdir(dep_build_dir+"/trilinos/packages/thyra/core/src/support/nonlinear/model_evaluator/client_support")
    patch=py_patch.fromfile(root+"/installer/patches/thyra_static_initialization_order.patch")
    patch.apply()
    os.chdir(cwd)

    tools.setDefaultConfigOption(config,'Trilinos','cmake_path',prefix+"/bempp/lib/cmake/Trilinos/",overwrite=True)

    tools.setCompilerOptions(config,'Trilinos')
Example #3
0
def bootstrap(root,config):


    # Check for OS X Mavericks
    have_mavericks = False
    import platform
    plat = platform.system()
    if plat == 'Darwin':
        have_mavericks = True if platform.mac_ver()[0]=='10.9' else False

    cleanUp(root,config)
    createDirectories(root,config)

    prefix = config.get('Main','prefix')
    cmake_path = prefix+'/bempp/bin/cmake'
    if config.has_option('CMake','exe'):
	cmake_executable = tools.which(config.get('CMake','exe'))
	if cmake_executable is None:
	    raise Exception("CMake command specified in [CMake] section not found.")
        else:
            tools.setDefaultConfigOption(config,"CMake","exe",cmake_executable,overwrite=True)
    else:
        if not have_mavericks:
            print "CMake not found. Downloading and installing CMake..."
            cmake.download(root,config)
            cmake.prepare(root,config)
            cmake.configure(root,config)
            cmake.build(root,config)
            cmake.install(root,config)
            tools.setDefaultConfigOption(config,"CMake","exe",cmake_path,overwrite=True)
        else:
            raise Exception("On OS X Mavericks 'cmake' must be manually specified in the config file.") 

    downloadDependencies(root,config)
Example #4
0
def prepare(root, config):
    prefix = config.get('Main', 'prefix')
    dep_build_dir = config.get('Main', 'dependency_build_dir')
    dep_download_dir = config.get('Main', 'dependency_download_dir')
    arma_include_dir = prefix + "/bempp/include"

    print "Extracting Armadillo"
    extract_dir = dep_build_dir + "/" + arma_extract_dir
    tools.checkDeleteDirectory(extract_dir)
    try:
        tools.extract_file(dep_download_dir + "/" + arma_fname, dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root, config, force=True)
        tools.extract_file(dep_download_dir + "/" + arma_fname, dep_build_dir)
    subprocess.check_call("cp -R " + extract_dir + "/include/* " + prefix +
                          "/bempp/include/",
                          shell=True)
    print "Patching Armadillo"
    patch = py_patch.fromfile(root +
                              "/installer/patches/armadillo_config.patch")
    cwd = os.getcwd()
    os.chdir(prefix + "/bempp/include/armadillo_bits")
    patch.apply()
    os.chdir(cwd)

    tools.setDefaultConfigOption(config,
                                 "Armadillo",
                                 "include_dir",
                                 prefix + "/bempp/include",
                                 overwrite=True)
Example #5
0
def prepare(root, config):
    dep_build_dir = config.get('Main', 'dependency_build_dir')
    dep_download_dir = config.get('Main', 'dependency_download_dir')

    trilinos_full_dir = dep_build_dir + "/" + trilinos_dir
    trilinos_download_name = dep_download_dir + "/" + trilinos_fname

    prefix = config.get('Main', 'prefix')

    tools.checkDeleteDirectory(trilinos_full_dir)

    print "Extracting Trilinos"
    try:
        tools.extract_file(dep_download_dir + "/" + trilinos_fname,
                           dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root, config, force=True)
        tools.extract_file(dep_download_dir + "/" + trilinos_fname,
                           dep_build_dir)
    os.rename(dep_build_dir + "/" + trilinos_extract_dir,
              dep_build_dir + "/" + trilinos_dir)
    shutil.copy(root + "/installer/build_scripts/posix/trilinos_build.sh",
                trilinos_full_dir + "/trilinos_build.sh")
    print "Patching Trilinos"
    cwd = os.getcwd()
    os.chdir(dep_build_dir +
             "/trilinos/packages/stratimikos/adapters/belos/src")
    patch = py_patch.fromfile(
        root + "/installer/patches/Thyra_BelosLinearOpWithSolve_def.patch")
    patch.apply()
    os.chdir(
        dep_build_dir +
        "/trilinos/packages/thyra/core/src/support/nonlinear/model_evaluator/client_support"
    )
    patch = py_patch.fromfile(
        root + "/installer/patches/thyra_static_initialization_order.patch")
    patch.apply()
    os.chdir(dep_build_dir + "/trilinos/cmake/tribits/modules")
    patch = py_patch.fromfile(
        root + "/installer/patches/trilinos_find_python_interp.patch")
    patch.apply()
    os.chdir(dep_build_dir + "/trilinos/packages/teuchos/src")
    patch = py_patch.fromfile(root +
                              "/installer/patches/Teuchos_LAPACK.hpp.patch")
    patch.apply()
    patch = py_patch.fromfile(root +
                              "/installer/patches/Teuchos_LAPACK.cpp.patch")
    patch.apply()

    os.chdir(cwd)

    tools.setDefaultConfigOption(config,
                                 'Trilinos',
                                 'cmake_path',
                                 prefix + "/bempp/lib/cmake/Trilinos/",
                                 overwrite=True)

    tools.setCompilerOptions(config, 'Trilinos')
Example #6
0
def prepare(root,config):

    debug=tools.setDefaultConfigOption(config,'Bempp','enable_debug','false')
    if tools.to_bool(debug):
        config.set('Bempp','build_type','Debug')
    else:
        config.set('Bempp','build_type','Release')

    tools.setDefaultConfigOption(config,'Bempp','build','true')

    tools.setCompilerOptions(config,'Bempp')
Example #7
0
def prepare(root,config):
    dep_build_dir=config.get('Main','dependency_build_dir')
    dep_download_dir=config.get('Main','dependency_download_dir')
    prefix=config.get('Main','prefix')

    print "Extracting Tbb"

    tools.checkDeleteDirectory(dep_build_dir+"/tbb")
    try:
        tools.extract_file(dep_download_dir+"/"+tbb_fname,dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root,config,force=True)
        tools.extract_file(dep_download_dir+"/"+tbb_fname,dep_build_dir)
    os.rename(dep_build_dir+"/"+tbb_extract_dir,dep_build_dir+"/tbb")
    print "Patching Tbb"
    cwd=os.getcwd()

    os.chdir(dep_build_dir+"/tbb")
    patch=py_patch.fromfile(root+"/installer/patches/tbb_pipeline.patch")
    patch.apply()
    os.chdir(cwd)

    subprocess.check_call("cp -R "+dep_build_dir+"/tbb/include/* "+
                          prefix+"/bempp/include/",shell=True)


    if sys.platform.startswith('darwin'):
        libdir_orig = dep_build_dir+"/tbb/lib"
        tbb_lib_name="libtbb.dylib"
        tbb_lib_name_debug="libtbb_debug.dylib"
        tbb_libmalloc_name="libtbbmalloc.dylib"
        tbb_libmalloc_name_debug="libtbbmalloc_debug.dylib"
    elif sys.platform.startswith('linux'):
        tbb_lib_name = "libtbb.so"
        tbb_lib_name_debug = "libtbb_debug.so"
        tbb_libmalloc_name = "libtbbmalloc.so"
        tbb_libmalloc_name_debug = "libtbbmalloc_debug.so"
        arch = config.get('Main','architecture')
        if arch in ('intel64','ia32','ia64'):
            libdir_orig = (dep_build_dir+"/tbb/lib/"+arch+
                           "/gcc4.4")
        else:
            raise Exception("Unrecognized architecture: '"+arch+"'")
    else:
        raise Exception("Platform not supported")

    subprocess.check_call("cp -R "+libdir_orig+"/* "+prefix+"/bempp/lib/",shell=True)

    tools.setDefaultConfigOption(config,"Tbb",'lib',prefix+"/bempp/lib/"+tbb_lib_name,overwrite=True)
    tools.setDefaultConfigOption(config,"Tbb","lib_debug",prefix+"/bempp/lib/"+tbb_lib_name_debug,overwrite=True)
    tools.setDefaultConfigOption(config,"Tbb",'libmalloc',prefix+"/bempp/lib/"+tbb_libmalloc_name,overwrite=True)
    tools.setDefaultConfigOption(config,"Tbb","libmalloc_debug",prefix+"/bempp/lib/"+tbb_libmalloc_name_debug,overwrite=True)
    tools.setDefaultConfigOption(config,"Tbb",'include_dir',prefix+"/bempp/include",overwrite=True)
Example #8
0
def prepare(root, config):
    dep_build_dir = config.get("Main", "dependency_build_dir")
    dep_download_dir = config.get("Main", "dependency_download_dir")

    trilinos_full_dir = dep_build_dir + "/" + trilinos_dir
    trilinos_download_name = dep_download_dir + "/" + trilinos_fname

    prefix = config.get("Main", "prefix")

    tools.checkDeleteDirectory(trilinos_full_dir)

    print "Extracting Trilinos"
    try:
        tools.extract_file(dep_download_dir + "/" + trilinos_fname, dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root, config, force=True)
        tools.extract_file(dep_download_dir + "/" + trilinos_fname, dep_build_dir)
    os.rename(dep_build_dir + "/" + trilinos_extract_dir, dep_build_dir + "/" + trilinos_dir)
    shutil.copy(root + "/installer/build_scripts/posix/trilinos_build.sh", trilinos_full_dir + "/trilinos_build.sh")
    print "Patching Trilinos"
    cwd = os.getcwd()
    os.chdir(dep_build_dir + "/trilinos")
    patch = py_patch.fromfile(root + "/installer/patches/Thyra_BelosLinearOpWithSolve_def.patch")
    patch.apply()
    os.chdir(cwd)
    # os.chdir(dep_build_dir+"/trilinos/packages/thyra/core/src/support/nonlinear/model_evaluator/client_support")
    # patch=py_patch.fromfile(root+"/installer/patches/thyra_static_initialization_order.patch")
    # patch.apply()
    # os.chdir(dep_build_dir+"/trilinos/cmake/tribits/modules")
    # patch=py_patch.fromfile(root+"/installer/patches/trilinos_find_python_interp.patch")
    # patch.apply()
    # os.chdir(dep_build_dir+"/trilinos/packages/teuchos/numerics/src")
    # patch=py_patch.fromfile(root+"/installer/patches/Teuchos_LAPACK.hpp.patch")
    # patch.apply()
    # patch=py_patch.fromfile(root+"/installer/patches/Teuchos_LAPACK.cpp.patch")
    # patch.apply()
    os.chdir(dep_build_dir + "/trilinos/packages/epetra/src")
    patch = py_patch.fromfile(root + "/installer/patches/Epetra_ConfigDefs.h.patch")
    patch.apply()
    os.chdir(cwd)

    tools.setDefaultConfigOption(
        config, "Trilinos", "cmake_path", prefix + "/bempp/lib/cmake/Trilinos/", overwrite=True
    )

    tools.setCompilerOptions(config, "Trilinos")
    trilinos_cxxflags = config.get("Trilinos", "cxxflags")
    trilinos_cxxflags = trilinos_cxxflags + " -Wno-c++11-narrowing"
    config.set("Trilinos", "cxxflags", trilinos_cxxflags)
Example #9
0
def prepare(root,config):

    enable_ahmed = tools.to_bool(tools.setDefaultConfigOption(config,'AHMED','enable_ahmed','false'))
    if enable_ahmed:
        if not config.has_option('AHMED','file_name'):
            raise Exception('Need to give full path of tar.gz archived file with AHMED 1.0 release')
        ahmed_fname=config.get('AHMED','file_name')
        ahmed_fname=tools.normalizePath(config,ahmed_fname)
        config.set('AHMED','with_ahmed','ON')
        prefix=config.get('Main','prefix')
        dep_build_dir = config.get('Main','dependency_build_dir')
        arch = config.get('Main','architecture')
        if arch == 'ia32':
            config.set('AHMED','enable64','OFF')
        else:
            config.set('AHMED','enable64','ON')
        ahmed_full_dir=dep_build_dir+"/ahmed"
        tools.checkDeleteDirectory(ahmed_full_dir)
        if sys.platform.startswith('darwin'):
            config.set('AHMED','lib',prefix+"/bempp/lib/libAHMED.dylib")
        elif sys.platform.startswith('linux'):
            config.set('AHMED','lib',prefix+"/bempp/lib/libAHMED.so")
        else:
            raise Exception("Platform not supported")
        config.set('AHMED','include_dir',prefix+"/bempp/include/AHMED")
        if not os.path.isfile(ahmed_fname):
            raise Exception("File '"+ahmed_fname+"' does not exist")
        print "Extracting AHMED"
        tools.extract_file(ahmed_fname,dep_build_dir)
        os.rename(dep_build_dir+"/AHMED_1.0",ahmed_full_dir)
        shutil.copy(root+"/installer/build_scripts/posix/ahmed_build.sh",ahmed_full_dir+"/ahmed_build.sh")
        print "Patching AHMED"
        cwd=os.getcwd()
        os.chdir(ahmed_full_dir)
        for s in ("ahmed_cmake.patch",
                  "ahmed_addGeHGeH_single_precision.patch",
                  "ahmed_changelog_H.h.patch",
                  "ahmed_pass_clusters_to_aca_matgen_apprx.h.patch",
                  "ahmed_generic_aca_apprx.h.patch",
                  "ahmed_check_error_apprx.h.patch",
                  "ahmed_bbx_apprx.h.patch",
                  "ahmed_pass_clusters_to_aca_matgen_ACA.h.patch",
                  "ahmed_frobenius_norm_ACA.h.patch",
                  "ahmed_zero_pu_pv_ACA.h.patch",
                  "ahmed_retry_if_zero_and_orig_cross_ACA.h.patch",
                  "ahmed_changelog_ACA.h.patch",
                  "ahmed_permuted_indices_bemcluster.h.patch",
                  "ahmed_changelog_bemcluster.h.patch",
		  "ahmed_omp.patch",
                  "ahmed_basmod_h.patch",
                  "ahmed_mblock.patch"):
            py_patch.fromfile(root+"/installer/patches/"+s).apply()
        shutil.copy(root+"/installer/patches/ahmed_bbx_bbxbemcluster.h",
                    "./Include/bbxbemcluster.h")
        shutil.copy(root+"/installer/patches/ahmed_bbx_bbxbemblcluster.h",
                    "./Include/bbxbemblcluster.h")
        os.chdir(cwd)
        tools.setCompilerOptions(config,'AHMED')
    else:
        config.set('AHMED','with_ahmed','OFF')
Example #10
0
def prepare(root, config):
    dep_build_dir = config.get('Main', 'dependency_build_dir')
    boost_full_dir = dep_build_dir + "/" + boost_dir
    dep_download_dir = config.get('Main', 'dependency_download_dir')
    boost_download_name = dep_download_dir + "/" + boost_fname

    prefix = config.get('Main', 'prefix')
    boost_include_dir = prefix + "/bempp/include"

    if sys.platform.startswith('darwin'):
        unit_test_lib_name = "libboost_unit_test_framework-mt.dylib"
    elif sys.platform.startswith('linux'):
        unit_test_lib_name = "libboost_unit_test_framework-mt.so"
    else:
        raise Exception("Platform not supported")

    boost_unit_test_lib = prefix + "/bempp/lib/" + unit_test_lib_name

    tools.checkDeleteDirectory(boost_full_dir)

    print "Extracting Boost"
    try:
        tools.extract_file(boost_download_name, dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root, config, force=True)
        tools.extract_file(boost_download_name, dep_build_dir)
    os.rename(dep_build_dir + "/" + boost_extract_dir, boost_full_dir)
    shutil.copy(root + "/installer/build_scripts/posix/boost_build.sh",
                boost_full_dir + "/boost_build.sh")

    tools.setDefaultConfigOption(config,
                                 "Boost",
                                 "unit_test_lib",
                                 boost_unit_test_lib,
                                 overwrite=True)
    tools.setDefaultConfigOption(config,
                                 "Boost",
                                 "include_dir",
                                 boost_include_dir,
                                 overwrite=True)

    tools.setCompilerOptions(config, 'Boost')
Example #11
0
def prepare(root, config):

    enable_ahmed = tools.to_bool(
        tools.setDefaultConfigOption(config, 'AHMED', 'enable_ahmed', 'false'))
    if enable_ahmed:
        if not config.has_option('AHMED', 'file_name'):
            raise Exception(
                'Need to give full path of tar.gz archived file with AHMED 1.0 release'
            )
        ahmed_fname = config.get('AHMED', 'file_name')
        ahmed_fname = tools.normalizePath(config, ahmed_fname)
        config.set('AHMED', 'with_ahmed', 'ON')
        prefix = config.get('Main', 'prefix')
        dep_build_dir = config.get('Main', 'dependency_build_dir')
        arch = config.get('Main', 'architecture')
        if arch == 'ia32':
            config.set('AHMED', 'enable64', 'OFF')
        else:
            config.set('AHMED', 'enable64', 'ON')
        ahmed_full_dir = dep_build_dir + "/ahmed"
        tools.checkDeleteDirectory(ahmed_full_dir)
        if sys.platform.startswith('darwin'):
            config.set('AHMED', 'lib', prefix + "/bempp/lib/libAHMED.dylib")
        elif sys.platform.startswith('linux'):
            config.set('AHMED', 'lib', prefix + "/bempp/lib/libAHMED.so")
        else:
            raise Exception("Platform not supported")
        config.set('AHMED', 'include_dir', prefix + "/bempp/include/AHMED")
        if not os.path.isfile(ahmed_fname):
            raise Exception("File '" + ahmed_fname + "' does not exist")
        print "Extracting AHMED"
        tools.extract_file(ahmed_fname, dep_build_dir)
        os.rename(dep_build_dir + "/AHMED_1.0", ahmed_full_dir)
        shutil.copy(root + "/installer/build_scripts/posix/ahmed_build.sh",
                    ahmed_full_dir + "/ahmed_build.sh")
        print "Patching AHMED"
        cwd = os.getcwd()
        os.chdir(ahmed_full_dir)
        for s in ("ahmed_cmake.patch",
                  "ahmed_addGeHGeH_single_precision.patch",
                  "ahmed_pass_clusters_to_aca_matgen_apprx.h.patch",
                  "ahmed_generic_aca_apprx.h.patch",
                  "ahmed_check_error_apprx.h.patch",
                  "ahmed_pass_clusters_to_aca_matgen_ACA.h.patch",
                  "ahmed_frobenius_norm_ACA.h.patch",
                  "ahmed_zero_pu_pv_ACA.h.patch",
                  "ahmed_retry_if_zero_and_orig_cross_ACA.h.patch",
                  "ahmed_permuted_indices_bemcluster.h.patch"):
            py_patch.fromfile(root + "/installer/patches/" + s).apply()
        os.chdir(cwd)
        tools.setCompilerOptions(config, 'AHMED')
    else:
        config.set('AHMED', 'with_ahmed', 'OFF')
Example #12
0
def prepare(root, config):
    dep_build_dir = config.get("Main", "dependency_build_dir")
    dep_download_dir = config.get("Main", "dependency_download_dir")
    prefix = config.get("Main", "prefix")

    swig_full_dir = dep_build_dir + "/" + swig_dir
    swig_download_name = dep_download_dir + "/" + swig_fname

    swig_executable = prefix + "/bempp/bin/swig"

    tools.checkDeleteDirectory(swig_full_dir)

    print "Extracting Swig"
    try:
        tools.extract_file(dep_download_dir + "/" + swig_fname, dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root, config, force=True)
        tools.extract_file(dep_download_dir + "/" + swig_fname, dep_build_dir)
    os.rename(dep_build_dir + "/" + swig_extract_dir, swig_full_dir)

    tools.setDefaultConfigOption(config, "Swig", "exe", swig_executable, overwrite=True)
    tools.setCompilerOptions(config, "Swig")
Example #13
0
File: boost.py Project: UCL/bempp
def prepare(root,config):
    dep_build_dir=config.get('Main','dependency_build_dir')
    boost_full_dir=dep_build_dir+"/"+boost_dir
    dep_download_dir=config.get('Main','dependency_download_dir')
    boost_download_name=dep_download_dir+"/"+boost_fname

    prefix=config.get('Main','prefix')
    boost_include_dir=prefix+"/bempp/include"

    if sys.platform.startswith('darwin'):
        unit_test_lib_name="libboost_unit_test_framework-mt.dylib"
    elif sys.platform.startswith('linux'):
        unit_test_lib_name="libboost_unit_test_framework-mt.so"
    else:
        raise Exception("Platform not supported")

    boost_unit_test_lib=prefix+"/bempp/lib/"+unit_test_lib_name

    tools.checkDeleteDirectory(boost_full_dir)

    print "Extracting Boost"
    try:
        tools.extract_file(boost_download_name,dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root,config,force=True)
        tools.extract_file(boost_download_name,dep_build_dir)
    os.rename(dep_build_dir+"/"+boost_extract_dir,boost_full_dir)
    shutil.copy(root+"/installer/build_scripts/posix/boost_build.sh",
                boost_full_dir+"/boost_build.sh")

    tools.setDefaultConfigOption(config,"Boost","unit_test_lib",
                                 boost_unit_test_lib,overwrite=True)
    tools.setDefaultConfigOption(config,"Boost","include_dir",
                                 boost_include_dir,overwrite=True)

    tools.setCompilerOptions(config,'Boost')
Example #14
0
def prepare(root,config):
    dep_build_dir=config.get('Main','dependency_build_dir')
    dep_download_dir=config.get('Main','dependency_download_dir')
    prefix=config.get('Main','prefix')

    swig_full_dir=dep_build_dir+"/"+swig_dir
    swig_download_name=dep_download_dir+"/"+swig_fname

    swig_executable=prefix+"/bempp/bin/swig"

    tools.checkDeleteDirectory(swig_full_dir)

    print "Extracting Swig"
    try:
        tools.extract_file(dep_download_dir+"/"+swig_fname,dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root,config,force=True)
        tools.extract_file(dep_download_dir+"/"+swig_fname,dep_build_dir)
    os.rename(dep_build_dir+"/"+swig_extract_dir,swig_full_dir)

    tools.setDefaultConfigOption(config,"Swig","exe",swig_executable,
                                 overwrite=True)
    tools.setCompilerOptions(config,'Swig')
Example #15
0
File: tbb.py Project: wsmigaj/bempp
def prepare(root, config):
    dep_build_dir = config.get('Main', 'dependency_build_dir')
    dep_download_dir = config.get('Main', 'dependency_download_dir')
    prefix = config.get('Main', 'prefix')

    print "Extracting Tbb"

    tools.checkDeleteDirectory(dep_build_dir + "/tbb")
    try:
        tools.extract_file(dep_download_dir + "/" + tbb_fname_short,
                           dep_build_dir)
    except IOError:
        # Possibly a corrupted/truncated file. Try to download once again
        download(root, config, force=True)
        tools.extract_file(dep_download_dir + "/" + tbb_fname_short,
                           dep_build_dir)
    os.rename(dep_build_dir + "/" + tbb_extract_dir, dep_build_dir + "/tbb")
    subprocess.check_call("cp -R " + dep_build_dir + "/tbb/include/* " +
                          prefix + "/bempp/include/",
                          shell=True)

    if sys.platform.startswith('darwin'):
        libdir_orig = dep_build_dir + "/tbb/lib"
        tbb_lib_name = "libtbb.dylib"
        tbb_lib_name_debug = "libtbb_debug.dylib"
    elif sys.platform.startswith('linux'):
        tbb_lib_name = "libtbb.so"
        tbb_lib_name_debug = "libtbb_debug.so"
        arch = config.get('Main', 'architecture')
        if arch in ('intel64', 'ia32', 'ia64'):
            libdir_orig = (dep_build_dir + "/tbb/lib/" + arch +
                           "/cc4.1.0_libc2.4_kernel2.6.16.21")
        else:
            raise Exception("Unrecognized architecture: '" + arch + "'")
    else:
        raise Exception("Platform not supported")

    subprocess.check_call("cp -R " + libdir_orig + "/* " + prefix +
                          "/bempp/lib/",
                          shell=True)

    tools.setDefaultConfigOption(config,
                                 "Tbb",
                                 'lib',
                                 prefix + "/bempp/lib/" + tbb_lib_name,
                                 overwrite=True)
    tools.setDefaultConfigOption(config,
                                 "Tbb",
                                 "lib_debug",
                                 prefix + "/bempp/lib/" + tbb_lib_name_debug,
                                 overwrite=True)
    tools.setDefaultConfigOption(config,
                                 "Tbb",
                                 'include_dir',
                                 prefix + "/bempp/include",
                                 overwrite=True)
Example #16
0
def prepare(root, config):
    # Test whether the main options are present
    if not config.has_option('Main', 'prefix'):
        raise Exception('prefix not defined')
    setDefaultConfigOption(config, 'Main', 'cc', 'gcc')
    setDefaultConfigOption(config, 'Main', 'cxx', 'g++')
    setDefaultConfigOption(config, 'Main', 'architecture', 'intel64')
    setDefaultConfigOption(config, 'Main', 'flags', "")
    setDefaultConfigOption(config, 'Main', 'libs', "")
    setDefaultConfigOption(config, 'Main', 'cflags', "")
    setDefaultConfigOption(config, 'Main', 'cxxflags', "")
    setDefaultConfigOption(config, 'Main', 'root_dir', root)
    setDefaultConfigOption(config, 'Main', 'build_jobs', "1")

    # Retrieve path to configuration file
    optfile = config.get('Main', 'optfile')

    # Retrieve build directory
    setDefaultConfigOption(config, 'Main', 'build_dir', root + '/build')
    build_dir = normalizePath(config, config.get('Main', 'build_dir'))
    # Set build directories for BEM++ and its dependencies
    config.set('Main', 'build_dir', build_dir)
    config.set('Bempp', 'build_dir', build_dir + '/bempp')
    config.set('Main', 'dependency_build_dir', build_dir + '/contrib')
    # Set
    config.set('Main', 'dependency_download_dir', root + '/installer/files')

    # Set default MKL/libs option
    setDefaultConfigOption(config, 'MKL', 'lib', "-lmkl_rt")

    # Set default MPI options

    setDefaultConfigOption(config, 'MPI', 'enable_mpi', 'false')
    setDefaultConfigOption(config, 'MPI', 'mpi_cxx_libs', '')
    setDefaultConfigOption(config, 'MPI', 'mpi_include_dir', '')
    enable_mpi = to_bool(config.get('MPI', 'enable_mpi'))

    if enable_mpi:
        mpi_include_dir = config.get('MPI', 'mpi_include_dir')
        cflags = config.get('Main', 'cflags')
        cxxflags = config.get('Main', 'cxxflags')
        config.set('Main', 'with_mpi', 'ON')
        config.set('Main', 'cflags', cflags + " -I" + mpi_include_dir)
        config.set('Main', 'cxxflags', cxxflags + " -I" + mpi_include_dir)
    else:
        config.set('MPI', 'with_mpi', 'OFF')

    # Set empty BLAS/Lapack options if none exist
    setDefaultConfigOption(config, 'BLAS', 'lib', "")
    setDefaultConfigOption(config, 'LAPACK', 'lib', "")

    # Add the correct architecture parameters
    cflags = config.get('Main', 'cflags')
    cxxflags = config.get('Main', 'cxxflags')

    arch = config.get('Main', 'architecture')
    if not arch in ['ia32', 'ia64', 'intel64']:
        raise Exception("Architecture '" + arch + "' is not supported. "
                        "Supported architectures: ia32, ia64, intel64.")

    if sys.platform.startswith('darwin'):
        if arch == 'intel64':
            param = '-arch x86_64'
        else:
            param = '-arch i386'
        config.set('Main', 'cflags', cflags + " " + param)
        config.set('Main', 'cxxflags', cxxflags + " " + param)
        setDefaultConfigOption(config, 'Main', 'optflags', '-O3 -march=core2')
    elif sys.platform.startswith('linux'):
        if arch == 'intel64' or arch == 'ia64':
            param = '-m64'
        else:
            param = '-m32'
        config.set('Main', 'cflags', cflags + " " + param)
        config.set('Main', 'cxxflags', cxxflags + " " + param)
        setDefaultConfigOption(config, 'Main', 'optflags', '-O3 -march=native')
    else:
        raise Exception("Platform '" + sys.platform + "' is not supported")

    # Add the correct Python options

    import numpy

    (py_exe, py_lib, py_include) = pythonInfo(config)
    setDefaultConfigOption(config, 'Python', 'exe', py_exe)
    setDefaultConfigOption(config, 'Python', 'lib', py_lib)
    setDefaultConfigOption(config, 'Python', 'include_dir', py_include)
    setDefaultConfigOption(config, 'Python', 'numpy_include_dir',
                           numpy.get_include())

    # Add the CMake configuration

    prefix = config.get('Main', 'prefix')
    setDefaultConfigOption(config,
                           "CMake",
                           "exe",
                           prefix + "/bempp/bin/cmake",
                           overwrite=True)
Example #17
0
def prepare(root,config):
    # Test whether the main options are present
    if not config.has_option('Main','prefix'): raise Exception('prefix not defined')
    setDefaultConfigOption(config,'Main','cc','gcc')
    setDefaultConfigOption(config,'Main','cxx','g++')
    setDefaultConfigOption(config,'Main','architecture','intel64')
    setDefaultConfigOption(config,'Main','flags',"")
    setDefaultConfigOption(config,'Main','libs',"")
    setDefaultConfigOption(config,'Main','cflags',"")
    setDefaultConfigOption(config,'Main','cxxflags',"")
    setDefaultConfigOption(config,'Main','root_dir',root)
    setDefaultConfigOption(config,'Main','build_jobs',"1")

    # Retrieve path to configuration file
    optfile = config.get('Main','optfile')

    # Retrieve build directory
    setDefaultConfigOption(config,'Main','build_dir',root+'/build')
    build_dir = normalizePath(config, config.get('Main','build_dir'))
    # Set build directories for BEM++ and its dependencies
    config.set('Main','build_dir',build_dir)
    config.set('Bempp','build_dir',build_dir+'/bempp')
    config.set('Main','dependency_build_dir',build_dir+'/contrib')
    # Set
    config.set('Main','dependency_download_dir',root+'/installer/files')

    # Set default MKL/libs option
    setDefaultConfigOption(config,'MKL','lib',"-lmkl_rt")

    # Set default MPI options

    setDefaultConfigOption(config,'MPI','enable_mpi','false')
    setDefaultConfigOption(config,'MPI','mpi_cxx_libs','')
    setDefaultConfigOption(config,'MPI','mpi_include_dir','')
    enable_mpi = to_bool(config.get('MPI','enable_mpi'))

    if enable_mpi:
        mpi_include_dir = config.get('MPI','mpi_include_dir')
        cflags = config.get('Main','cflags')
        cxxflags = config.get('Main','cxxflags')
        config.set('Main','with_mpi','ON')
        if len(mpi_include_dir)>0:
	        config.set('Main','cflags',cflags+" -I"+mpi_include_dir)
	        config.set('Main','cxxflags',cxxflags+" -I"+mpi_include_dir)
    else:
        config.set('MPI','with_mpi','OFF')

 


    # Set empty BLAS/Lapack options if none exist
    setDefaultConfigOption(config,'BLAS','lib',"")
    setDefaultConfigOption(config,'LAPACK','lib',"")

    # Add the correct architecture parameters
    cflags = config.get('Main','cflags')
    cxxflags = config.get('Main','cxxflags')

    arch = config.get('Main','architecture')
    if not arch in ['ia32','ia64','intel64']:
        raise Exception("Architecture '"+arch+"' is not supported. "
                        "Supported architectures: ia32, ia64, intel64.")

    if sys.platform.startswith('darwin'):
        if arch=='intel64':
            param = '-arch x86_64'
        else:
            param = '-arch i386'
        config.set('Main','cflags',cflags+" "+param)
        config.set('Main','cxxflags',cxxflags+" "+param)
        setDefaultConfigOption(config,'Main','optflags','-O3 -march=core2')
    elif sys.platform.startswith('linux'):
        if arch=='intel64' or arch=='ia64':
            param = '-m64'
        else:
            param = '-m32'
        config.set('Main','cflags',cflags+" "+param)
        config.set('Main','cxxflags',cxxflags+" "+param)
        setDefaultConfigOption(config,'Main','optflags','-O3 -march=native')
    else:
        raise Exception("Platform '"+sys.platform+"' is not supported")

    # Add the correct Python options

    import numpy

    (py_exe,py_lib,py_include) = pythonInfo(config)
    setDefaultConfigOption(config,'Python','exe',py_exe)
    setDefaultConfigOption(config,'Python','lib',py_lib)
    setDefaultConfigOption(config,'Python','include_dir',py_include)
    setDefaultConfigOption(config,'Python','numpy_include_dir',numpy.get_include())


    # Check for OS X Mavericks
    have_mavericks = False
    plat = platform.system()
    if plat == 'Darwin':
        have_mavericks = True if platform.mac_ver()[0]=='10.9' else False
        # Add the CMake configuration

    if config.has_option('CMake','exe'):
        cmake_executable = tools.which(config.get('CMake','exe'))
        if cmake_executable is None:
            raise Exception("CMake command specified in [CMake] section not found.")
        tools.setDefaultConfigOption(config,'CMake','exe',cmake_executable,overwrite=True)
    else:
        # CMake must have been or will be  downloaded by the bootstrap mechanism
        cmake_executable = prefix+'/bempp/bin/cmake'
        if os.path.isfile(cmake_executable):
            tools.setDefaultConfigOption(config,'CMake','exe',cmake_executable,overwrite=True)
Example #18
0
                   help="Build and install WHAT. Possible values for WHAT: "
                   "all (BEM++ and its dependencies), bempp (BEM++ only), " +
                   ", ".join(library_names) + " (particular BEM++ dependencies)")
 (options,args) = parser.parse_args()
 root=module_path()
 config=ConfigParser()
 if len(args) != 1:
     parser.error("Configuration file not specified")
 optfile = args[0]
 optfile_generated = root+"/"+os.path.basename(optfile)+".generated"
 try:
     optfileobj = open(optfile)
     config.readfp(optfileobj)
     optfileobj.close()
     optfile_full = os.path.abspath(os.path.expanduser(optfile))
     tools.setDefaultConfigOption(config,'Main','optfile',
                                  optfile_full,overwrite=True)
     prefix = normalizePath(config, config.get('Main','prefix'))
     tools.setDefaultConfigOption(config,'Main','prefix',prefix,
                                  overwrite=True)
 except Exception, e:
     print ("Parsing of configuration file '" + optfile +
            "' failed with error message:\n" + str(e))
     sys.exit(1)
 try:
     prepare(root,config)
     if options.resume_update:
         # Must be the first "if": the intention is that if this option
         # is present, the update procedure is resumed and all other work
         # modes are ignored.
         config = ConfigParser()
         if not os.path.exists(optfile_generated):
Example #19
0
def prepare(root,config):
    # Test whether the main options are present
    if not config.has_option('Main','prefix'): raise Exception('prefix not defined')
    setDefaultConfigOption(config,'Main','cc','gcc')
    setDefaultConfigOption(config,'Main','cxx','g++')
    setDefaultConfigOption(config,'Main','architecture','intel64')
    setDefaultConfigOption(config,'Main','flags',"")
    setDefaultConfigOption(config,'Main','libs',"")
    setDefaultConfigOption(config,'Main','cflags',"")
    setDefaultConfigOption(config,'Main','cxxflags',"")
    setDefaultConfigOption(config,'Main','root_dir',root)
    setDefaultConfigOption(config,'Main','build_jobs',"1")

    # Retrieve path to configuration file
    optfile = config.get('Main','optfile')

    # Retrieve build directory
    setDefaultConfigOption(config,'Main','build_dir',root+'/build')
    build_dir = normalizePath(config, config.get('Main','build_dir'))
    # Set build directories for BEM++ and its dependencies
    config.set('Main','build_dir',build_dir)
    config.set('Bempp','build_dir',build_dir+'/bempp')
    config.set('Main','dependency_build_dir',build_dir+'/contrib')
    # Set
    config.set('Main','dependency_download_dir',root+'/installer/files')

    # Set default MKL/libs option
    setDefaultConfigOption(config,'MKL','lib',"-lmkl_rt")

    # Set default MPI options

    setDefaultConfigOption(config,'MPI','enable_mpi','false')
    setDefaultConfigOption(config,'MPI','mpi_cxx_libs','')
    setDefaultConfigOption(config,'MPI','mpi_include_dir','')
    enable_mpi = to_bool(config.get('MPI','enable_mpi'))

    if enable_mpi:
        mpi_include_dir = config.get('MPI','mpi_include_dir')
        cflags = config.get('Main','cflags')
        cxxflags = config.get('Main','cxxflags')
        config.set('Main','with_mpi','ON')
        if len(mpi_include_dir)>0:
	        config.set('Main','cflags',cflags+" -I"+mpi_include_dir)
	        config.set('Main','cxxflags',cxxflags+" -I"+mpi_include_dir)
    else:
        config.set('MPI','with_mpi','OFF')

 


    # Set empty BLAS/Lapack options if none exist
    setDefaultConfigOption(config,'BLAS','lib',"")
    setDefaultConfigOption(config,'LAPACK','lib',"")

    # Add the correct architecture parameters
    cflags = config.get('Main','cflags')
    cxxflags = config.get('Main','cxxflags')

    arch = config.get('Main','architecture')
    if not arch in ['ia32','ia64','intel64']:
        raise Exception("Architecture '"+arch+"' is not supported. "
                        "Supported architectures: ia32, ia64, intel64.")

    if sys.platform.startswith('darwin'):
        if arch=='intel64':
            param = '-arch x86_64'
        else:
            param = '-arch i386'
        config.set('Main','cflags',cflags+" "+param)
        config.set('Main','cxxflags',cxxflags+" "+param)
        setDefaultConfigOption(config,'Main','optflags','-O3 -march=core2')
    elif sys.platform.startswith('linux'):
        if arch=='intel64' or arch=='ia64':
            param = '-m64'
        else:
            param = '-m32'
        config.set('Main','cflags',cflags+" "+param)
        config.set('Main','cxxflags',cxxflags+" "+param)
        setDefaultConfigOption(config,'Main','optflags','-O3 -march=native')
    else:
        raise Exception("Platform '"+sys.platform+"' is not supported")

    # Add the correct Python options

    import numpy

    (py_exe,py_lib,py_include) = pythonInfo(config)
    setDefaultConfigOption(config,'Python','exe',py_exe)
    setDefaultConfigOption(config,'Python','lib',py_lib)
    setDefaultConfigOption(config,'Python','include_dir',py_include)
    setDefaultConfigOption(config,'Python','numpy_include_dir',numpy.get_include())

    # Add the CMake configuration

    prefix = config.get('Main','prefix')
    setDefaultConfigOption(config,"CMake","exe",prefix+"/bempp/bin/cmake",overwrite=True)
Example #20
0
def prepare(root,config):
    prefix = config.get('Main','prefix')
    lib_dir = prefix+"/bempp/lib"

    if sys.platform.startswith('darwin'):
        extension = ".dylib"
    elif sys.platform.startswith('linux'):
        extension = ".so"
    else:
        raise Exception("Unsupported platform: '"+sys.platform+"'")

    enable_mkl = tools.to_bool(tools.setDefaultConfigOption(config,'MKL',
                                                            'enable_mkl','no'))
    if enable_mkl:
        if config.has_option('BLAS','lib') and config.get('BLAS','lib'):
            print ("Warning: contents of the option 'lib' in section 'BLAS' "
                   "will be ignored, since enable_mkl is set")
        if config.has_option('LAPACK','lib') and config.get('LAPACK','lib'):
            print ("Warning: contents of the option 'lib' in section 'LAPACK' "
                   "will be ignored, since enable_mkl is set")

        # Variables:
        # - mkl_dirs: list of directories with all MKL libraries
        # - mkl_libs: list of MKL libraries to link against, either as
        #   full paths or as '-l...' linker commands
        # - mkl_linker_args: list of MKL libraries to link against,
        #   either as full paths to files contained in lib_dir or as
        #   '-l...' linker commands

        # If mkl_source is not set, we'll get a sensible exception message
        mkl_source = config.get('MKL','source').lower()
        if mkl_source == "like_numpy":
            mkl_dirs,mkl_libs = get_mkl_dirs_and_libs_like_numpy(
                config,lib_dir,extension)
            if not mkl_libs:
                raise Exception(
                    "Your NumPy package does not seem to be linked to MKL. "
                    "Are you sure\nyou are using the correct version of Python? "
                    "If so, set the 'source'\noption in the 'MKL' section of "
                    "your configuration file to 'installed'\nand use the "
                    "options 'dir' and 'lib' to specify manually the location "
                    "of your\nMKL libraries.")
            create_symlinks(lib_dir,extension,mkl_dirs,mkl_libs)
        elif mkl_source == 'installed':
            mkl_dirs,mkl_libs = get_mkl_dirs_and_libs_installed(
                config,lib_dir,extension)
            create_symlinks(lib_dir,extension,mkl_dirs,mkl_libs)
        elif mkl_source == 'redistributable':
            mkl_dirs,mkl_libs = get_mkl_dirs_and_libs_redistributable(
                config,lib_dir,extension)
            # no need to create symlinks
        else:
            raise Exception("Option 'mkl_source' in section 'MKL' must be "
                            "either 'installed', 'redistributable' or "
                            "'like_numpy'")

        mkl_linker_args = get_linker_args(lib_dir,extension,mkl_dirs,mkl_libs)
        blas_libs = ";-lpthread;".join(mkl_linker_args)+";-lpthread"
        lapack_libs = blas_libs

        tools.setDefaultConfigOption(config,'BLAS','lib',blas_libs,
                                     overwrite=True)
        tools.setDefaultConfigOption(config,'LAPACK','lib',lapack_libs,
                                     overwrite=True)
    else: # enable_mkl is false
        # Create symbolic links to BLAS and LAPACK libraries in
        # lib_dir and replace original locations in the linking line
        # with these symbolic links
        for section in ('BLAS','LAPACK'):
            paths = config.get(section,'lib')
            paths = paths.split(";")
            paths = [s.strip() for s in paths]
            new_paths = []
            for path in paths:
                if os.path.isfile(path):
                    fname = os.path.basename(path)
                    new_path = os.path.join(lib_dir,fname)
                    if not os.path.exists(new_path):
                        os.symlink(path, new_path)
                    new_paths.append(new_path)
                else:
                    new_paths.append(path)
            new_setting = ";".join(new_paths)
            tools.setDefaultConfigOption(config,section,'lib',
                                         new_setting,overwrite=True)
Example #21
0
def prepare(root, config):
    prefix = config.get('Main', 'prefix')
    lib_dir = prefix + "/bempp/lib"

    if sys.platform.startswith('darwin'):
        extension = ".dylib"
    elif sys.platform.startswith('linux'):
        extension = ".so"
    else:
        raise Exception("Unsupported platform: '" + sys.platform + "'")

    enable_mkl = tools.to_bool(
        tools.setDefaultConfigOption(config, 'MKL', 'enable_mkl', 'no'))
    if enable_mkl:
        if config.has_option('BLAS', 'lib') and config.get('BLAS', 'lib'):
            print(
                "Warning: contents of the option 'lib' in section 'BLAS' "
                "will be ignored, since enable_mkl is set")
        if config.has_option('LAPACK', 'lib') and config.get('LAPACK', 'lib'):
            print(
                "Warning: contents of the option 'lib' in section 'LAPACK' "
                "will be ignored, since enable_mkl is set")

        # Variables:
        # - mkl_dirs: list of directories with all MKL libraries
        # - mkl_libs: list of MKL libraries to link against, either as
        #   full paths or as '-l...' linker commands
        # - mkl_linker_args: list of MKL libraries to link against,
        #   either as full paths to files contained in lib_dir or as
        #   '-l...' linker commands

        # If mkl_source is not set, we'll get a sensible exception message
        mkl_source = config.get('MKL', 'source').lower()
        if mkl_source == "like_numpy":
            mkl_dirs, mkl_libs = get_mkl_dirs_and_libs_like_numpy(
                config, lib_dir, extension)
            if not mkl_libs:
                raise Exception(
                    "Your NumPy package does not seem to be linked to MKL. "
                    "Are you sure\nyou are using the correct version of Python? "
                    "If so, set the 'source'\noption in the 'MKL' section of "
                    "your configuration file to 'installed'\nand use the "
                    "options 'dir' and 'lib' to specify manually the location "
                    "of your\nMKL libraries.")
            create_symlinks(lib_dir, extension, mkl_dirs, mkl_libs)
        elif mkl_source == 'installed':
            mkl_dirs, mkl_libs = get_mkl_dirs_and_libs_installed(
                config, lib_dir, extension)
            create_symlinks(lib_dir, extension, mkl_dirs, mkl_libs)
        elif mkl_source == 'redistributable':
            mkl_dirs, mkl_libs = get_mkl_dirs_and_libs_redistributable(
                config, lib_dir, extension)
            # no need to create symlinks
        else:
            raise Exception("Option 'mkl_source' in section 'MKL' must be "
                            "either 'installed', 'redistributable' or "
                            "'like_numpy'")

        mkl_linker_args = get_linker_args(lib_dir, extension, mkl_dirs,
                                          mkl_libs)
        blas_libs = ";-lpthread;".join(mkl_linker_args) + ";-lpthread"
        lapack_libs = blas_libs

        tools.setDefaultConfigOption(config,
                                     'BLAS',
                                     'lib',
                                     blas_libs,
                                     overwrite=True)
        tools.setDefaultConfigOption(config,
                                     'LAPACK',
                                     'lib',
                                     lapack_libs,
                                     overwrite=True)
    else:  # enable_mkl is false
        # Create symbolic links to BLAS and LAPACK libraries in
        # lib_dir and replace original locations in the linking line
        # with these symbolic links
        for section in ('BLAS', 'LAPACK'):
            paths = config.get(section, 'lib')
            paths = paths.split(";")
            paths = [s.strip() for s in paths]
            new_paths = []
            for path in paths:
                if os.path.isfile(path):
                    fname = os.path.basename(path)
                    new_path = os.path.join(lib_dir, fname)
                    if not os.path.exists(new_path):
                        os.symlink(path, new_path)
                    new_paths.append(new_path)
                else:
                    new_paths.append(path)
            new_setting = ";".join(new_paths)
            tools.setDefaultConfigOption(config,
                                         section,
                                         'lib',
                                         new_setting,
                                         overwrite=True)
Example #22
0
     ", ".join(library_names) + " (particular BEM++ dependencies)")
 (options, args) = parser.parse_args()
 root = module_path()
 config = ConfigParser()
 if len(args) != 1:
     parser.error("Configuration file not specified")
 optfile = args[0]
 optfile_generated = root + "/" + os.path.basename(optfile) + ".generated"
 try:
     optfileobj = open(optfile)
     config.readfp(optfileobj)
     optfileobj.close()
     optfile_full = os.path.abspath(os.path.expanduser(optfile))
     tools.setDefaultConfigOption(config,
                                  'Main',
                                  'optfile',
                                  optfile_full,
                                  overwrite=True)
     prefix = normalizePath(config, config.get('Main', 'prefix'))
     tools.setDefaultConfigOption(config,
                                  'Main',
                                  'prefix',
                                  prefix,
                                  overwrite=True)
 except Exception, e:
     print("Parsing of configuration file '" + optfile +
           "' failed with error message:\n" + str(e))
     sys.exit(1)
 try:
     prepare(root, config)
     if options.resume_update: