示例#1
0
    def build_arscons(self, sources=None):
        # TODO: remove tempdir
        tempdir = tmpdir(dir=tmpdir())

        SConstruct = Path(__file__).parent / "SConstruct"
        SConstruct.copy(tempdir / "SConstruct")

        allfiles = self.setup_sources(tempdir, sources)
        projname = self.guess_projname(allfiles)
        tempdir = rename(tempdir, tempdir.parent / projname)
        cmd = self.command_list()

        self.proc = Proc(cmd, cwd=tempdir).call()
        if not self.ok:
            raise ArduinoCompileError(cmd, sources, self.error_text)
        self.output = tempdir.files("*.elf")[0]
示例#2
0
    def build(self, sources=None, headers=None):
        ''' sources can be file name or code:
        sources=['x.c','int main(){}']
        or
        sources='int main(){}'
        '''
        tempdir = None
        strings, files = separate_sources(sources)
        if len(strings) or headers:
            # TODO: remove tempdir
            tempdir = tmpdir()

        temp_list = [tmpfile(x, tempdir, '.c') for x in strings]

        if headers:
            for n, s in headers.items():
                (Path(tempdir) / n).write_text(s)

        cmd = self.command_list(files + temp_list)
        if tempdir:
            cmd += ['-I' + tempdir]
        self.proc = Proc(cmd).call()
#        for x in temp_list:
#            os.remove(x)

        if not self.ok:
            raise AvrGccCompileError(cmd, sources, self.error_text)
示例#3
0
    def build_ino(self, sources=None):
        # TODO: remove tempdir
        tempdir = tmpdir(dir=tmpdir())
        lib = tempdir / "lib"
        src = tempdir / "src"
        build = tempdir / ".build"
        lib.mkdir()
        src.mkdir()

        self.setup_sources(src, sources)
        cmd = self.command_list()

        self.proc = Proc(cmd, cwd=tempdir).call()
        if not self.ok:
            raise ArduinoCompileError(cmd, sources, self.error_text)
        self.output = build.walkfiles("*.elf")[0]
示例#4
0
    def build_arscons(self, sources=None):
        # TODO: remove tempdir
        tempdir = tmpdir(dir=tmpdir())

        SConstruct = Path(__file__).parent / 'SConstruct'
        SConstruct.copy(tempdir / 'SConstruct')

        allfiles = self.setup_sources(tempdir, sources)
        projname = self.guess_projname(allfiles)
        tempdir = rename(tempdir, tempdir.parent / projname)
        cmd = self.command_list()

        self.proc = Proc(cmd, cwd=tempdir).call()
        if not self.ok:
            raise ArduinoCompileError(cmd, sources, self.error_text)
        self.output = tempdir.files('*.elf')[0]
示例#5
0
    def build_ino(self, sources=None):
        # TODO: remove tempdir
        tempdir = tmpdir(dir=tmpdir())
        lib = tempdir / 'lib'
        src = tempdir / 'src'
        build = tempdir / '.build'
        lib.mkdir()
        src.mkdir()

        self.setup_sources(src, sources)
        cmd = self.command_list()

        self.proc = Proc(cmd, cwd=tempdir).call()
        if not self.ok:
            raise ArduinoCompileError(cmd, sources, self.error_text)
        self.output = build.walkfiles('*.elf')[0]
示例#6
0
def test_more_files():
    d = tmpdir() / 'Foo'
    d.makedirs()
    f = d / 'Foo.pde'
    f.write_text('#include "x.h" \n int x=foo; \n' + Arduino.minprog)
    (d / 'x.h').write_text('#define foo 3')
    Arduino().build(f)
示例#7
0
    def build(self, sources=None, headers=None):
        ''' sources can be file name or code:
        sources=['x.c','int main(){}']
        or
        sources='int main(){}'
        '''
        tempdir = None
        strings, files = separate_sources(sources)
        if len(strings) or headers:
            # TODO: remove tempdir
            tempdir = tmpdir()

        temp_list = [tmpfile(x, tempdir, '.c') for x in strings]

        if headers:
            for n, s in headers.items():
                (Path(tempdir) / n).write_text(s)

        cmd = self.command_list(files + temp_list)
        if tempdir:
            cmd += ['-I' + tempdir]
        self.proc = Proc(cmd).call()
#        for x in temp_list:
#            os.remove(x)

        if not self.ok:
            raise AvrGccCompileError(cmd, sources, self.error_text)
示例#8
0
def test_file():
    d = tmpdir() / 'Foo'
    d.makedirs()
    f = d / 'Foo.pde'
    f.write_text(Arduino.minprog)
    Arduino().build(f)