예제 #1
0
def find_java_files(env, arg, dirpath, filenames):
    java_suffix = env.get('JAVASUFFIX', '.java')
    js = _my_normcase(java_suffix)

    java_files = sorted([n for n in filenames if _my_normcase(n).endswith(js)])
    mydir = dirnode.Dir(dirpath)
    java_paths = [mydir.File(f) for f in java_files]
    for jp in java_paths:
        arg[jp] = True
예제 #2
0
def find_java_files(env, arg, dirpath, filenames):
    java_suffix = env.get('JAVASUFFIX', '.java')
    js = _my_normcase(java_suffix)

    java_files = sorted([n for n in filenames
                           if _my_normcase(n).endswith(js)])
    mydir = dirnode.Dir(dirpath)
    java_paths = [mydir.File(f) for f in java_files]
    for jp in java_paths:
         arg[jp] = True
예제 #3
0
 def find_java_files(arg, dirpath, filenames):
     java_files = sorted([n for n in filenames
                            if _my_normcase(n).endswith(js)])
     mydir = dirnode.Dir(dirpath)
     java_paths = [mydir.File(f) for f in java_files]
     for jp in java_paths:
          arg[jp] = True
예제 #4
0
 def find_java_files(arg, dirpath, filenames):
     java_files = sorted([n for n in filenames
                            if _my_normcase(n).endswith(js)])
     mydir = dirnode.Dir(dirpath)
     java_paths = [mydir.File(f) for f in java_files]
     for jp in java_paths:
          arg[jp] = True
예제 #5
0
파일: javac.py 프로젝트: scanlime/picogui
 def visit(arg, dirname, names, js=js, dirnode=source[0].rdir()):
     java_files = filter(lambda n, js=js:
                                _my_normcase(n[-len(js):]) == js,
                         names)
     mydir = dirnode.Dir(dirname)
     java_paths = map(lambda f, d=mydir: d.File(f), java_files)
     arg.extend(java_paths)
예제 #6
0
 def visit(arg, dirname, names, js=js, dirnode=sdir.rdir()):
     java_files = filter(
         lambda n, js=js: _my_normcase(n[-len(js):]) == js, names)
     # The on-disk entries come back in arbitrary order.  Sort them
     # so our target and source lists are determinate.
     java_files.sort()
     mydir = dirnode.Dir(dirname)
     java_paths = map(lambda f, d=mydir: d.File(f), java_files)
     arg.extend(java_paths)
예제 #7
0
 def visit(arg, dirname, names, js=js, dirnode=sdir.rdir()):
     java_files = filter(lambda n, js=js:
                         _my_normcase(n[-len(js):]) == js,
                         names)
     # The on-disk entries come back in arbitrary order.  Sort them
     # so our target and source lists are determinate.
     java_files.sort()
     mydir = dirnode.Dir(dirname)
     java_paths = map(lambda f, d=mydir: d.File(f), java_files)
     arg.extend(java_paths)
예제 #8
0
def emit_java_classes(target, source, env):
    """Create and return lists of source java files
    and their corresponding target class files.
    """
    java_suffix = env.get('JAVASUFFIX', '.java')
    class_suffix = env.get('JAVACLASSSUFFIX', '.class')

    slist = []
    js = _my_normcase(java_suffix)
    for sdir in source:

        def visit(arg, dirname, names, js=js, dirnode=sdir.rdir()):
            java_files = filter(
                lambda n, js=js: _my_normcase(n[-len(js):]) == js, names)
            # The on-disk entries come back in arbitrary order.  Sort them
            # so our target and source lists are determinate.
            java_files.sort()
            mydir = dirnode.Dir(dirname)
            java_paths = map(lambda f, d=mydir: d.File(f), java_files)
            arg.extend(java_paths)

        os.path.walk(sdir.rdir().get_abspath(), visit, slist)

    tlist = []
    for f in slist:
        pkg_dir, classes = parse_java_file(f.get_abspath())
        if pkg_dir:
            for c in classes:
                t = target[0].Dir(pkg_dir).File(c + class_suffix)
                t.attributes.java_classdir = target[0]
                t.attributes.java_classname = classname(pkg_dir + os.sep + c)
                tlist.append(t)
        elif classes:
            for c in classes:
                t = target[0].File(c + class_suffix)
                t.attributes.java_classdir = target[0]
                t.attributes.java_classname = classname(c)
                tlist.append(t)
        else:
            # This is an odd end case:  no package and no classes.
            # Just do our best based on the source file name.
            base = str(f)[:-len(java_suffix)]
            t = target[0].File(base + class_suffix)
            t.attributes.java_classdir = target[0]
            t.attributes.java_classname = classname(base)
            tlist.append(t)

    return tlist, slist
예제 #9
0
def emit_java_classes(target, source, env):
    """Create and return lists of source java files
    and their corresponding target class files.
    """
    java_suffix = env.get('JAVASUFFIX', '.java')
    class_suffix = env.get('JAVACLASSSUFFIX', '.class')

    slist = []
    js = _my_normcase(java_suffix)
    for sdir in source:
        def visit(arg, dirname, names, js=js, dirnode=sdir.rdir()):
            java_files = filter(lambda n, js=js:
                                _my_normcase(n[-len(js):]) == js,
                                names)
            # The on-disk entries come back in arbitrary order.  Sort them
            # so our target and source lists are determinate.
            java_files.sort()
            mydir = dirnode.Dir(dirname)
            java_paths = map(lambda f, d=mydir: d.File(f), java_files)
            arg.extend(java_paths)
        os.path.walk(sdir.rdir().get_abspath(), visit, slist)

    tlist = []
    for f in slist:
        pkg_dir, classes = parse_java_file(f.get_abspath())
        if pkg_dir:
            for c in classes:
                t = target[0].Dir(pkg_dir).File(c+class_suffix)
                t.attributes.java_classdir = target[0]
                t.attributes.java_classname = classname(pkg_dir + os.sep + c)
                tlist.append(t)
        elif classes:
            for c in classes:
                t = target[0].File(c+class_suffix)
                t.attributes.java_classdir = target[0]
                t.attributes.java_classname = classname(c)
                tlist.append(t)
        else:
            # This is an odd end case:  no package and no classes.
            # Just do our best based on the source file name.
            base = str(f)[:-len(java_suffix)]
            t = target[0].File(base + class_suffix)
            t.attributes.java_classdir = target[0]
            t.attributes.java_classname = classname(base)
            tlist.append(t)

    return tlist, slist
예제 #10
0
파일: jar.py 프로젝트: CartoDB/mapnik
 def file_to_class(s):
     if(str(_my_normcase(s)).endswith(java_suffix)):
         return env.JavaClassFile(source = s, *args, **kw)
     else:
         return [env.fs.File(s)]
예제 #11
0
def emit_java_classes(target, source, env):
    """Create and return lists of source java files
    and their corresponding target class files.
    """
    java_suffix = env.get('JAVASUFFIX', '.java')
    class_suffix = env.get('JAVACLASSSUFFIX', '.class')

    target[0].must_be_same(SCons.Node.FS.Dir)
    classdir = target[0]

    s = source[0].rentry().disambiguate()
    if isinstance(s, SCons.Node.FS.File):
        sourcedir = s.dir.rdir()
    elif isinstance(s, SCons.Node.FS.Dir):
        sourcedir = s.rdir()
    else:
        raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % s.__class__)

    slist = []
    js = _my_normcase(java_suffix)
    for entry in source:
        entry = entry.rentry().disambiguate()
        if isinstance(entry, SCons.Node.FS.File):
            slist.append(entry)
        elif isinstance(entry, SCons.Node.FS.Dir):
            result = SCons.Util.OrderedDict()
            dirnode = entry.rdir()
            def find_java_files(arg, dirpath, filenames):
                java_files = sorted([n for n in filenames
                                       if _my_normcase(n).endswith(js)])
                mydir = dirnode.Dir(dirpath)
                java_paths = [mydir.File(f) for f in java_files]
                for jp in java_paths:
                     arg[jp] = True
            for dirpath, dirnames, filenames in os.walk(dirnode.get_abspath()):
               find_java_files(result, dirpath, filenames)
            entry.walk(find_java_files, result)

            slist.extend(list(result.keys()))
        else:
            raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % entry.__class__)

    version = env.get('JAVAVERSION', '1.4')
    full_tlist = []
    for f in slist:
        tlist = []
        source_file_based = True
        pkg_dir = None
        if not f.is_derived():
            pkg_dir, classes = parse_java_file(f.rfile().get_abspath(), version)
            if classes:
                source_file_based = False
                if pkg_dir:
                    d = target[0].Dir(pkg_dir)
                    p = pkg_dir + os.sep
                else:
                    d = target[0]
                    p = ''
                for c in classes:
                    t = d.File(c + class_suffix)
                    t.attributes.java_classdir = classdir
                    t.attributes.java_sourcedir = sourcedir
                    t.attributes.java_classname = classname(p + c)
                    tlist.append(t)

        if source_file_based:
            base = f.name[:-len(java_suffix)]
            if pkg_dir:
                t = target[0].Dir(pkg_dir).File(base + class_suffix)
            else:
                t = target[0].File(base + class_suffix)
            t.attributes.java_classdir = classdir
            t.attributes.java_sourcedir = f.dir
            t.attributes.java_classname = classname(base)
            tlist.append(t)

        for t in tlist:
            t.set_specific_source([f])

        full_tlist.extend(tlist)

    return full_tlist, slist
예제 #12
0
def emit_java_classes(target, source, env):
    """Create and return lists of source java files
    and their corresponding target class files.
    """
    java_suffix = env.get('JAVASUFFIX', '.java')
    class_suffix = env.get('JAVACLASSSUFFIX', '.class')

    target[0].must_be_same(SCons.Node.FS.Dir)
    classdir = target[0]

    s = source[0].rentry().disambiguate()
    if isinstance(s, SCons.Node.FS.File):
        sourcedir = s.dir.rdir()
    elif isinstance(s, SCons.Node.FS.Dir):
        sourcedir = s.rdir()
    else:
        raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % s.__class__)

    slist = []
    js = _my_normcase(java_suffix)
    for entry in source:
        entry = entry.rentry().disambiguate()
        if isinstance(entry, SCons.Node.FS.File):
            slist.append(entry)
        elif isinstance(entry, SCons.Node.FS.Dir):
            result = SCons.Util.OrderedDict()
            dirnode = entry.rdir()
            def find_java_files(arg, dirpath, filenames):
                java_files = sorted([n for n in filenames
                                       if _my_normcase(n).endswith(js)])
                mydir = dirnode.Dir(dirpath)
                java_paths = [mydir.File(f) for f in java_files]
                for jp in java_paths:
                     arg[jp] = True
            for dirpath, dirnames, filenames in os.walk(dirnode.get_abspath()):
               find_java_files(result, dirpath, filenames)
            entry.walk(find_java_files, result)

            slist.extend(list(result.keys()))
        else:
            raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % entry.__class__)

    version = env.get('JAVAVERSION', '1.4')
    full_tlist = []
    for f in slist:
        tlist = []
        source_file_based = True
        pkg_dir = None
        if not f.is_derived():
            pkg_dir, classes = parse_java_file(f.rfile().get_abspath(), version)
            if classes:
                source_file_based = False
                if pkg_dir:
                    d = target[0].Dir(pkg_dir)
                    p = pkg_dir + os.sep
                else:
                    d = target[0]
                    p = ''
                for c in classes:
                    t = d.File(c + class_suffix)
                    t.attributes.java_classdir = classdir
                    t.attributes.java_sourcedir = sourcedir
                    t.attributes.java_classname = classname(p + c)
                    tlist.append(t)

        if source_file_based:
            base = f.name[:-len(java_suffix)]
            if pkg_dir:
                t = target[0].Dir(pkg_dir).File(base + class_suffix)
            else:
                t = target[0].File(base + class_suffix)
            t.attributes.java_classdir = classdir
            t.attributes.java_sourcedir = f.dir
            t.attributes.java_classname = classname(base)
            tlist.append(t)

        for t in tlist:
            t.set_specific_source([f])

        full_tlist.extend(tlist)

    return full_tlist, slist
예제 #13
0
파일: jar.py 프로젝트: cmbodley/Bongo
 def file_to_class(s):
     if _my_normcase(str(s)).endswith(java_suffix):
         return env.JavaClassFile(source=s, *args, **kw)
     else:
         return [env.fs.File(s)]
예제 #14
0
def emit_java_classes(target, source, env):
    """Create and return lists of source java files
    and their corresponding target class files.
    """
    java_suffix = env.get('JAVASUFFIX', '.java')
    class_suffix = env.get('JAVACLASSSUFFIX', '.class')

    target[0].must_be_same(SCons.Node.FS.Dir)
    classdir = target[0]

    s = source[0].rentry().disambiguate()
    if isinstance(s, SCons.Node.FS.File):
        sourcedir = s.dir.rdir()
    elif isinstance(s, SCons.Node.FS.Dir):
        sourcedir = s.rdir()
    else:
        raise SCons.Errors.UserError(
            "Java source must be File or Dir, not '%s'" % s.__class__)

    slist = []
    js = _my_normcase(java_suffix)
    find_java = lambda n, js=js, ljs=len(js): _my_normcase(n[-ljs:]) == js
    for entry in source:
        entry = entry.rentry().disambiguate()
        if isinstance(entry, SCons.Node.FS.File):
            slist.append(entry)
        elif isinstance(entry, SCons.Node.FS.Dir):
            result = SCons.Util.OrderedDict()

            def visit(arg, dirname, names, fj=find_java, dirnode=entry.rdir()):
                java_files = filter(fj, names)
                # The on-disk entries come back in arbitrary order.  Sort
                # them so our target and source lists are determinate.
                java_files.sort()
                mydir = dirnode.Dir(dirname)
                java_paths = map(lambda f, d=mydir: d.File(f), java_files)
                for jp in java_paths:
                    arg[jp] = True

            os.path.walk(entry.rdir().get_abspath(), visit, result)
            entry.walk(visit, result)

            slist.extend(result.keys())
        else:
            raise SCons.Errors.UserError(
                "Java source must be File or Dir, not '%s'" % entry.__class__)

    version = env.get('JAVAVERSION', '1.4')
    full_tlist = []
    for f in slist:
        tlist = []
        source_file_based = True
        pkg_dir = None
        if not f.is_derived():
            pkg_dir, classes = parse_java_file(f.rfile().get_abspath(),
                                               version)
            if classes:
                source_file_based = False
                if pkg_dir:
                    d = target[0].Dir(pkg_dir)
                    p = pkg_dir + os.sep
                else:
                    d = target[0]
                    p = ''
                for c in classes:
                    t = d.File(c + class_suffix)
                    t.attributes.java_classdir = classdir
                    t.attributes.java_sourcedir = sourcedir
                    t.attributes.java_classname = classname(p + c)
                    tlist.append(t)

        if source_file_based:
            base = f.name[:-len(java_suffix)]
            if pkg_dir:
                t = target[0].Dir(pkg_dir).File(base + class_suffix)
            else:
                t = target[0].File(base + class_suffix)
            t.attributes.java_classdir = classdir
            t.attributes.java_sourcedir = f.dir
            t.attributes.java_classname = classname(base)
            tlist.append(t)

        for t in tlist:
            t.set_specific_source([f])

        full_tlist.extend(tlist)

    return full_tlist, slist
예제 #15
0
def emit_java_classes(target, source, env):
    """Create and return lists of source java files
    and their corresponding target class files.
    """
    java_suffix = env.get('JAVASUFFIX', '.java')
    class_suffix = env.get('JAVACLASSSUFFIX', '.class')

    target[0].must_be_same(SCons.Node.FS.Dir)
    classdir = target[0]

    s = source[0].rentry().disambiguate()
    if isinstance(s, SCons.Node.FS.File):
        sourcedir = s.dir.rdir()
    elif isinstance(s, SCons.Node.FS.Dir):
        sourcedir = s.rdir()
    else:
        raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % s.__class__)

    slist = []
    js = _my_normcase(java_suffix)
    find_java = lambda n, js=js, ljs=len(js): _my_normcase(n[-ljs:]) == js
    for entry in source:
        entry = entry.rentry().disambiguate()
        if isinstance(entry, SCons.Node.FS.File):
            slist.append(entry)
        elif isinstance(entry, SCons.Node.FS.Dir):
            result = SCons.Util.OrderedDict()
            def visit(arg, dirname, names, fj=find_java, dirnode=entry.rdir()):
                java_files = filter(fj, names)
                # The on-disk entries come back in arbitrary order.  Sort
                # them so our target and source lists are determinate.
                java_files.sort()
                mydir = dirnode.Dir(dirname)
                java_paths = map(lambda f, d=mydir: d.File(f), java_files)
                for jp in java_paths:
                     arg[jp] = True

            os.path.walk(entry.rdir().get_abspath(), visit, result)
            entry.walk(visit, result)

            slist.extend(result.keys())
        else:
            raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % entry.__class__)

    version = env.get('JAVAVERSION', '1.4')
    full_tlist = []
    for f in slist:
        tlist = []
        source_file_based = True
        pkg_dir = None
        if not f.is_derived():
            pkg_dir, classes = parse_java_file(f.rfile().get_abspath(), version)
            if classes:
                source_file_based = False
                if pkg_dir:
                    d = target[0].Dir(pkg_dir)
                    p = pkg_dir + os.sep
                else:
                    d = target[0]
                    p = ''
                for c in classes:
                    t = d.File(c + class_suffix)
                    t.attributes.java_classdir = classdir
                    t.attributes.java_sourcedir = sourcedir
                    t.attributes.java_classname = classname(p + c)
                    tlist.append(t)

        if source_file_based:
            base = f.name[:-len(java_suffix)]
            if pkg_dir:
                t = target[0].Dir(pkg_dir).File(base + class_suffix)
            else:
                t = target[0].File(base + class_suffix)
            t.attributes.java_classdir = classdir
            t.attributes.java_sourcedir = f.dir
            t.attributes.java_classname = classname(base)
            tlist.append(t)

        for t in tlist:
            t.set_specific_source([f])

        full_tlist.extend(tlist)

    return full_tlist, slist