예제 #1
0
def installlapack(ctx):
    filen = version + ".tgz"
    atl.installsmthg_pre(ctx, "http://www.netlib.org/lapack/" + filen, filen)
    from waflib import Utils, Errors
    dii = {
        "FCC": ctx.env.FC,
        "FCFLAGS": " ".join(ctx.env.FCFLAGS + ctx.env.FCFLAGS_fcshlib),
        "FLINKFLAGS": " ".join(ctx.env.FCFLAGS + ctx.env.LINKFLAGS_fcshlib),
        "SO": ctx.env.shsuffix,
        "MFLAG": " ".join(ctx.env.FCFLAGS)
    }
    Logs.pprint("PINK", "build blas")
    f = open("build/%s/make.inc" % version, "w")
    print(make_inc_blas % dii, file=f)
    f.close()
    cmdline = "cd build/%s; make blaslib" % version
    if ctx.exec_command(cmdline) != 0:
        raise Errors.WafError("Cannot build %s" % version)
    Logs.pprint("PINK", "build lapack")
    f = open("build/%s/make.inc" % version, "w")
    print(make_inc_lapack % dii, file=f)
    f.close()
    cmdline = "cd build/%s; make lapacklib" % version
    if ctx.exec_command(cmdline) != 0:
        raise Errors.WafError("Cannot build %s" % version)

    import shutil
    shutil.copyfile(
        "build/%s/liblapack_clik.%s" % (version, ctx.env.shsuffix),
        osp.join(ctx.env.LIBDIR, "liblapack_clik.%s" % ctx.env.shsuffix))
    shutil.copyfile(
        "build/%s/libblas_clik.%s" % (version, ctx.env.shsuffix),
        osp.join(ctx.env.LIBDIR, "libblas_clik.%s" % ctx.env.shsuffix))

    do_include(ctx)
예제 #2
0
def installlapack(ctx):
  filen = version+".tgz"
  atl.installsmthg_pre(ctx,"http://www.netlib.org/lapack/"+filen,filen)
  from waflib import Utils,Errors
  dii = {"FCC":ctx.env.FC,"FCFLAGS":" ".join(ctx.env.FCFLAGS+ctx.env.FCFLAGS_fcshlib),"FLINKFLAGS":" ".join(ctx.env.FCFLAGS+ctx.env.LINKFLAGS_fcshlib),"SO":ctx.env.shsuffix,"MFLAG":" ".join(ctx.env.FCFLAGS) }
  Logs.pprint("PINK","build blas")
  f=open("build/%s/make.inc"%version,"w")
  print >>f,make_inc_blas%dii
  f.close()
  cmdline = "cd build/%s; make blaslib"%version
  if ctx.exec_command(cmdline)!=0:
    raise Errors.WafError("Cannot build %s"%version)
  Logs.pprint("PINK","build lapack")
  f=open("build/%s/make.inc"%version,"w")
  print >>f,make_inc_lapack%dii
  f.close()
  cmdline = "cd build/%s; make lapacklib"%version
  if ctx.exec_command(cmdline)!=0:
    raise Errors.WafError("Cannot build %s"%version)
  
  import shutil
  shutil.copyfile("build/%s/liblapack_clik.%s"%(version,ctx.env.shsuffix), osp.join(ctx.env.LIBDIR,"liblapack_clik.%s"%ctx.env.shsuffix))
  shutil.copyfile("build/%s/libblas_clik.%s"%(version,ctx.env.shsuffix), osp.join(ctx.env.LIBDIR,"libblas_clik.%s"%ctx.env.shsuffix))

  do_include(ctx)
예제 #3
0
def configure_python_module(ctx,
                            name,
                            url,
                            packtgz,
                            pack,
                            cmdline=None,
                            extracmd="",
                            forceinstall=False,
                            postinstall=None):
    import waflib.Logs
    import os
    from waflib import Errors
    import os.path as osp
    import autoinstall_lib as atl
    ctx.load("python")
    doit = False
    import sys

    iall = shouldIinstall_all(ctx, name)
    try:
        assert forceinstall == False and getattr(
            ctx.options, name + "_forceinstall") == False and iall == False
        check_python_module(ctx, name, extracmd)
    except Exception as e:
        if upgrade(ctx, name) or getattr(ctx.options, name + "_forceinstall",
                                         False) or iall:
            waflib.Logs.pprint("PINK", "Install python module '%s'" % name)
            atl.installsmthg_pre(ctx, url, packtgz)
            if not osp.exists(ctx.env.PYTHONDIR):
                os.makedirs(ctx.env.PYTHONDIR)
            if cmdline == None:
                cmdline = "cd build/%s; PYTHONPATH=%s:$PYTHONPATH %s setup.py build_ext -L=%s ;PYTHONPATH=%s:$PYTHONPATH %s setup.py install --install-lib=%s --install-scripts=%s" % (
                    pack, ctx.env.PYTHONDIR, ctx.env.PYTHON[0],
                    ctx.env.LIBPATH_PYEMBED[0], ctx.env.PYTHONDIR,
                    ctx.env.PYTHON[0], ctx.env.PYTHONDIR, ctx.env.BINDIR)
            waflib.Logs.pprint("PINK", cmdline)
            ret = ctx.exec_command(cmdline)
            if ret != 0:
                raise Errors.ConfigurationError("Cannot build %s" % name)
            # deal with eggs...
            if (not osp.exists(osp.join(ctx.env.PYTHONDIR, name))) and (
                    not osp.exists(osp.join(ctx.env.PYTHONDIR, name + ".py"))):
                eggdir = [
                    v for v in os.listdir(ctx.env.PYTHONDIR)
                    if name in v and osp.isdir(osp.join(ctx.env.PYTHONDIR, v))
                ][0]
                if eggdir != name and eggdir != name + ".py":
                    mdir = [
                        v for v in os.listdir(
                            osp.join(ctx.env.PYTHONDIR, eggdir)) if name in v
                    ][0]
                    import os
                    os.symlink(osp.join(ctx.env.PYTHONDIR, eggdir, mdir),
                               osp.join(ctx.env.PYTHONDIR, name))
            check_python_module(ctx, name, extracmd)
            if postinstall:
                postinstall()
        else:
            raise e
예제 #4
0
def install_cfitsio(ctx):
  atl.installsmthg_pre(ctx,"ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio3280.tar.gz","cfitsio3280.tar.gz")
  CCMACRO = "\"%s %s\""%(ctx.env.CC[0],ctx.env.mopt)
  CCMACRO = "CC=%s CXX=%s "%(CCMACRO,CCMACRO)
  CPPMACRO = "CPP=\"%s -E\" CXXCPP=\"g++ -E\" "%(ctx.env.CC[0])
  cmdline = "cd build/%s; ./configure --prefix=%s %s  %s %s; make clean;make -j %d ;make -j %d shared;make install"%("cfitsio",ctx.env.mprefix,"",CCMACRO, CPPMACRO,ctx.options.jobs,ctx.options.jobs)
  Logs.pprint("PINK",cmdline)
  if ctx.exec_command(cmdline)!=0:
    raise Errors.WafError("Cannot build %s"%"cfitsio")
예제 #5
0
def configure_python_module(ctx, name, url, packtgz, pack, cmdline=None, extracmd="", forceinstall=False):
    import waflib.Logs
    import os
    from waflib import Errors
    import os.path as osp
    import autoinstall_lib as atl

    ctx.load("python")
    doit = False
    import sys

    iall = shouldIinstall_all(ctx, name)
    try:
        assert forceinstall == False and getattr(ctx.options, name + "_forceinstall") == False and iall == False
        check_python_module(ctx, name, extracmd)
    except Exception, e:
        if upgrade(ctx, name) or getattr(ctx.options, name + "_forceinstall", False) or iall:
            waflib.Logs.pprint("PINK", "Install python module '%s'" % name)
            atl.installsmthg_pre(ctx, url, packtgz)
            if not osp.exists(ctx.env.PYTHONDIR):
                os.makedirs(ctx.env.PYTHONDIR)
            if cmdline == None:
                cmdline = (
                    "cd build/%s; PYTHONPATH=%s %s setup.py build_ext -L=%s ;PYTHONPATH=%s %s setup.py install --install-lib=%s --install-scripts=%s"
                    % (
                        pack,
                        ctx.env.PYTHONDIR,
                        ctx.env.PYTHON[0],
                        ctx.env.LIBPATH_PYEMBED[0],
                        ctx.env.PYTHONDIR,
                        ctx.env.PYTHON[0],
                        ctx.env.PYTHONDIR,
                        ctx.env.BINDIR,
                    )
                )
            waflib.Logs.pprint("PINK", cmdline)
            ret = ctx.exec_command(cmdline)
            if ret != 0:
                raise Errors.ConfigurationError("Cannot build %s" % name)
            # deal with eggs...
            if (not osp.exists(osp.join(ctx.env.PYTHONDIR, name))) and (
                not osp.exists(osp.join(ctx.env.PYTHONDIR, name + ".py"))
            ):
                eggdir = [
                    v for v in os.listdir(ctx.env.PYTHONDIR) if name in v and osp.isdir(osp.join(ctx.env.PYTHONDIR, v))
                ][0]
                if eggdir != name and eggdir != name + ".py":
                    mdir = [v for v in os.listdir(osp.join(ctx.env.PYTHONDIR, eggdir)) if name in v][0]
                    import os

                    os.symlink(osp.join(ctx.env.PYTHONDIR, eggdir, mdir), osp.join(ctx.env.PYTHONDIR, name))
            check_python_module(ctx, name, extracmd)
        else:
            raise e
예제 #6
0
파일: cfitsio.py 프로젝트: CosmoLike/cocoa
def install_cfitsio(ctx):
    url, tar = atl.get_lib_url(ctx, "cfitsio", (
        "https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio3280.tar.gz",
        "cfitsio3280.tar.gz"))
    atl.installsmthg_pre(ctx, url, tar)
    CCMACRO = "\"%s %s\"" % (ctx.env.CC[0], " ".join(ctx.env.mopt))
    CCMACRO = "CC=%s CXX=%s " % (CCMACRO, CCMACRO)
    CPPMACRO = "CPP=\"%s -E\" CXXCPP=\"g++ -E\" " % (ctx.env.CC[0])
    cmdline = "cd build/%s; ./configure --prefix=%s %s  %s %s; make clean;make -j %d ;make -j %d shared;make install" % (
        "cfitsio", ctx.env.mprefix, "", CCMACRO, CPPMACRO, ctx.options.jobs,
        ctx.options.jobs)
    Logs.pprint("PINK", cmdline)
    if ctx.exec_command(cmdline) != 0:
        raise Errors.WafError("Cannot build %s" % "cfitsio")
예제 #7
0
def configure(ctx):
    import waflib.Logs
    from waflib import Errors
    ctx.load("python")
    doit = False
    import sys
    sys.path += [ctx.env.PYTHONDIR]

    if ctx.options.h5py_install or ctx.options.upgrade_all_deps or ctx.options.install_all_deps:
        try:
            import h5py
            raise Exception()
        except Exception as e:
            doit = True
        if doit:
            import os.path as osp
            import autoinstall_lib as atl
            atl.installsmthg_pre(
                ctx, "http://h5py.googlecode.com/files/h5py-1.3.1.tar.gz",
                "h5py-1.3.1.tar.gz")
            if ctx.env.INCLUDES_hdf5:
                HDF5_DIR = osp.split(ctx.env.INCLUDES_hdf5[0])[0]
            else:
                fi = ctx.find_file("hdf5.h", ctx.env.INCLUDES_pmc)
                print(fi)
                HDF5_DIR = osp.split(osp.split(fi)[0])[0]
            HDF5_API = "18"
            print(HDF5_DIR)
            cmdline = "cd build/%s; HDF5_DIR=%s HDF5_API=%s python setup.py install --install-purelib=%s" % (
                "h5py-1.3.1", HDF5_DIR, HDF5_API, ctx.env.PYTHONDIR)
            waflib.Logs.pprint("PINK", cmdline)
            if ctx.cmd_and_log(cmdline) != 0:
                raise Errors.ConfigurationError("Cannot build h5py")
    try:
        import h5py
    except Exception as e:
        if not doit:
            waflib.Logs.pprint(
                "PINK",
                "You can install automatically h5py using cmdline option --h5py_install"
            )
        else:
            waflib.Logs.pprint("RED", "Autoinstall h5py has failed !")
        raise e
예제 #8
0
def install_healpix(ctx):
    if ctx.env.th:
        return
    import os
    hpdir = "Healpix_2.20a"
    atl.installsmthg_pre(
        ctx,
        "http://sourceforge.net/projects/healpix/files/Healpix_2.20a/Healpix_2.20a_2011Feb09.tar.gz/download",
        "Healpix_2.20a_2011Feb09.tar.gz")
    fpic_c = [vv for vv in ctx.env.CFLAGS_cshlib if "-fpic" in vv.lower()]
    fpic_f90 = [vv for vv in ctx.env.CFLAGS_cshlib if "-fpic" in vv.lower()]

    dii = {
        "CC":
        ctx.env.CC[0],
        "CFLAGS":
        " ".join(ctx.env.CCFLAGS + fpic_c + [" -DDONT_USE_PSHT"]),
        "LIBDIR":
        ctx.env.LIBDIR,
        "INCDIR":
        ctx.env.PREFIX + "/include",
        "FC":
        ctx.env.FC + " " +
        " ".join(ctx.env.FCFLAGS + fpic_f90 + [" -DDONT_USE_PSHT"]),
        "FFLAGS":
        " "
    }
    # if I am here, I found cfitsio
    # could it be somewhere else ?
    cfitsiopath = ""

    for pth in ctx.env.LIBPATH_cfitsio + [
            "/usr/local/lib", "/usr/lib", "/lib"
    ] + os.environ.get("LD_LIBRARY_PATH", "").split(":") + os.environ.get(
            "DYLD_LIBRARY_PATH", "").split(":"):
        # print pth
        # print osp.join(pth,ctx.env.cshlib_PATTERN%"cfitsio")
        if osp.exists(osp.join(pth, ctx.env.cshlib_PATTERN % "cfitsio")):
            cfitsiopath = pth
            break
    if not bool(cfitsiopath):
        raise Exception("cannot find cfitsio !")
    dii["CFITSIOPATH"] = cfitsiopath
    dii["CFITSIOPATHINC"] = osp.realpath(cfitsiopath + "/../include")
    # dii["CFITSIOPATH"]=ctx.env.LIBPATH_cfitsio[0]
    # dii["CFITSIOPATHINC"]=ctx.env.INCLUDES_cfitsio[0]
    # print dii

    f = open(osp.join("build", hpdir, "conf_1.cmd"), "w")
    print(cnf_tmpl_1 % dii, file=f)
    f.close()
    # prepare a few things
    try:
        os.mkdir(osp.join("build", hpdir, "lib"))
    except Exception as e:
        # print e
        pass
    try:
        os.mkdir(osp.join("build", hpdir, "include"))
    except Exception as e:
        # print e
        pass

    import re
    # first part
    cmdline = "cd build/%s; ./configure <conf_1.cmd" % hpdir
    Logs.pprint("PINK", cmdline)
    try:
        rr = ctx.cmd_and_log(cmdline, output=waflib.Context.BOTH)
    except Exception as e:
        Logs.pprint("PINK", "first pass failed. Keep going...")
        rr = ("", )
    addN = ""
    if re.findall("The following line should be inserted into your home",
                  rr[0]):
        addN = "n\n"

    dii["addN"] = addN
    f = open(osp.join("build", hpdir, "conf.cmd"), "w")
    print(cnf_tmpl % dii, file=f)
    f.close()

    cmdline = "cd build/%s; ./configure <conf.cmd" % hpdir
    Logs.pprint("PINK", cmdline)
    try:
        rr = ctx.cmd_and_log(cmdline, output=waflib.Context.BOTH)
    except Exception as e:
        raise Errors.WafError("Healpix configure failed. Cannot build healpix")
    if re.findall("Something\s+went\s+wrong", rr[0] + rr[1]):
        raise Errors.WafError("Healpix configure failed. Cannot build healpix")

    cmdline = "cd build/%s; make c-all f90-modules " % hpdir
    if ctx.exec_command(cmdline) != 0:
        raise Errors.WafError(
            "Cannot build healpix. Look in build/config.log to understand why")

    import shutil
    import os
    for fi in os.listdir(osp.join("build", hpdir, "lib")):
        # print "copy",osp.join("build",hpdir,"lib",fi),osp.join(ctx.env.LIBDIR,fi)
        shutil.copyfile(osp.join("build", hpdir, "lib", fi),
                        osp.join(ctx.env.LIBDIR, fi))
    for fi in os.listdir(osp.join("build", hpdir, "include")):
        # print "copy",osp.join("build",hpdir,"include",fi),osp.join(ctx.env.PREFIX,"include",fi)
        shutil.copyfile(osp.join("build", hpdir, "include", fi),
                        osp.join(ctx.env.PREFIX, "include", fi))

    ctx.env.th = True
예제 #9
0
def installfftw3(ctx):
    filen = version + ".tar.gz"
    atl.installsmthg_pre(ctx, "http://www.fftw.org/" + filen, filen)
    atl.installsmthg_post(ctx, filen, "fftw", "--enable-shared")
예제 #10
0
def installhdf5(ctx):
    filen = version + ".tar.gz"
    atl.installsmthg_pre(
        ctx, "http://www.hdfgroup.org/ftp/HDF5/prev-releases/" + version + "/src/" + filen, filen)
    atl.installsmthg_post(ctx, version, tool)
예제 #11
0
def installgsl(ctx):
    atl.installsmthg_pre(ctx,
                         "ftp://ftp.gnu.org/gnu/gsl/" + version + ".tar.gz",
                         version + ".tar.gz")
    atl.installsmthg_post(ctx, version, tool)