def _deploy_epics(self): run([ "rsync", "-lr", os.path.join(self.output, "../epics-base"), "root@{}:/opt".format(self.device), ])
def deploy(self): self.build() if self.device is not None: devcmd = "cat > m4image.bin && mount /dev/mmcblk0p1 /mnt && mv m4image.bin /mnt && umount /mnt" hostcmd = "test -f {img} && cat {img} | ssh root@{} '{}'".format( self.device, devcmd, img=os.path.join(self.output, "release/m4image.bin")) run(["bash", "-c", hostcmd])
def load(self, dstdir): if os.path.exists(dstdir): return run( [ "git", "clone", "https://github.com/varigit/freertos-variscite.git", "-b", "freertos_bsp_1.0.1_imx7d-var01", os.path.basename(dstdir), ], cwd=os.path.dirname(dstdir), )
def deploy(self): self.build() if self.device is not None: try: self._dev_run_cmd(["[[", "-d", "/opt/epics-base", "]]"]) except SubprocError: self._deploy_epics() else: if self.args["update_epics"]: self._deploy_epics() run([ "rsync", "-lr", os.path.join(self.output, "release"), "root@{}:/opt/ioc".format(self.device), ]) self._dev_run_cmd([ "sed", "-i", "'s/^epicsEnvSet(\"TOP\",.*)$/epicsEnvSet(\"TOP\",\"\\/opt\\/ioc\\/release\")/'", "/opt/ioc/release/iocBoot/iocPSC/envPaths" ])
def clone(path): run( [ "git", "clone", "https://github.com/epics-base/epics-base.git", os.path.basename(path) ], cwd=os.path.dirname(path), ) run( ["git", "checkout", "R7.0.3.1"], cwd=path, ) run( ["git", "submodule", "update", "--init", "--recursive"], cwd=path, )
def build(self): run(["mkdir", "-p", self.output]) run( [ "cmake", "-DCMAKE_TOOLCHAIN_FILE={}".format( os.path.join( self.tools["freertos"].path, "tools/cmake_toolchain_files/armgcc.cmake", )), "-G", "Unix Makefiles", "-DCMAKE_BUILD_TYPE=Release", self.path, ], add_env={ "FREERTOS_DIR": self.tools["freertos"].path, "ARMGCC_DIR": self.tools["armgcc_mcu"].path, }, cwd=self.output, ) run(["make", "-j4"], cwd=self.output)
def clean(self): run(["rm", "-rf", self.output])
def load(self, outdir): if os.path.exists(outdir): return root, name = os.path.split(outdir) run(["mkdir", "-p", root]) if not os.path.exists(os.path.join(root, self.archive)): try: run(["wget", self.url], cwd=root) except: run(["rm", self.archive], cwd=root) raise try: run(["tar", "xvf", self.archive], cwd=root) except: run(["rm", "-rf", self.name], cwd=root) raise run(["mv", self.name, name], cwd=root)
def _dev_run_cmd(self, args): run(["ssh", "root@{}".format(self.device)] + args)
def clean(epicsdir): try: run(["make", "clean", "uninstall"], cwd=epicsdir) except SubprocError: run(["git", "clean", "-dfX"], cwd=epicsdir)
def build(epicsdir): run(["make"], cwd=epicsdir)