mirror of https://github.com/ARMmbed/mbed-os.git
Correct exporter clean behavior
parent
6693b08cfc
commit
bd5b34f59c
|
|
@ -408,6 +408,12 @@ class CCES(Exporter):
|
||||||
|
|
||||||
print("CCES files generated.")
|
print("CCES files generated.")
|
||||||
|
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(_):
|
||||||
|
os.remove('cces.json')
|
||||||
|
os.remove('README.md')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def build(project_name, log_name='build_log.txt', cleanup=True):
|
def build(project_name, log_name='build_log.txt', cleanup=True):
|
||||||
"""
|
"""
|
||||||
|
|
@ -436,6 +442,7 @@ class CCES(Exporter):
|
||||||
# cleanup workspace
|
# cleanup workspace
|
||||||
if os.path.exists(workspace):
|
if os.path.exists(workspace):
|
||||||
shutil.rmtree(workspace, True)
|
shutil.rmtree(workspace, True)
|
||||||
|
CCES.clean(project_name)
|
||||||
|
|
||||||
# check return code for failure
|
# check return code for failure
|
||||||
if ret_code != 0:
|
if ret_code != 0:
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,15 @@ class CMake(Exporter):
|
||||||
except TemplateNotFound:
|
except TemplateNotFound:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(_):
|
||||||
|
remove("CMakeLists.txt")
|
||||||
|
# legacy .build directory cleaned if exists
|
||||||
|
if exists('.build'):
|
||||||
|
shutil.rmtree('.build')
|
||||||
|
if exists('BUILD'):
|
||||||
|
shutil.rmtree('BUILD')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def build(project_name, log_name="build_log.txt", cleanup=True):
|
def build(project_name, log_name="build_log.txt", cleanup=True):
|
||||||
""" Build Make project """
|
""" Build Make project """
|
||||||
|
|
@ -162,13 +171,8 @@ class CMake(Exporter):
|
||||||
|
|
||||||
# Cleanup the exported and built files
|
# Cleanup the exported and built files
|
||||||
if cleanup:
|
if cleanup:
|
||||||
remove("CMakeLists.txt")
|
|
||||||
remove(log_name)
|
remove(log_name)
|
||||||
# legacy .build directory cleaned if exists
|
CMake.clean(project_name)
|
||||||
if exists('.build'):
|
|
||||||
shutil.rmtree('.build')
|
|
||||||
if exists('BUILD'):
|
|
||||||
shutil.rmtree('BUILD')
|
|
||||||
|
|
||||||
if ret_code != 0:
|
if ret_code != 0:
|
||||||
# Seems like something went wrong.
|
# Seems like something went wrong.
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ class Exporter(object):
|
||||||
NAME = None
|
NAME = None
|
||||||
TARGETS = set()
|
TARGETS = set()
|
||||||
TOOLCHAIN = None
|
TOOLCHAIN = None
|
||||||
|
CLEAN_FILES = ("GettingStarted.html",)
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, target, export_dir, project_name, toolchain,
|
def __init__(self, target, export_dir, project_name, toolchain,
|
||||||
|
|
@ -217,12 +218,28 @@ class Exporter(object):
|
||||||
|
|
||||||
Returns -1 on failure and 0 on success
|
Returns -1 on failure and 0 on success
|
||||||
"""
|
"""
|
||||||
raise NotImplemented("Implement in derived Exporter class.")
|
raise NotImplementedError("Implement in derived Exporter class.")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(project_name):
|
||||||
|
"""Clean a previously exported project
|
||||||
|
This method is assumed to be executed at the same level as exporter
|
||||||
|
project files and project source code.
|
||||||
|
See uvision/__init__.py, iar/__init__.py, and makefile/__init__.py for
|
||||||
|
example implemenation.
|
||||||
|
|
||||||
|
Positional Arguments:
|
||||||
|
project_name - the name of the project to build; often required by
|
||||||
|
exporter's build command.
|
||||||
|
|
||||||
|
Returns nothing. May raise exceptions
|
||||||
|
"""
|
||||||
|
raise NotImplementedError("Implement in derived Exporter class.")
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def generate(self):
|
def generate(self):
|
||||||
"""Generate an IDE/tool specific project file"""
|
"""Generate an IDE/tool specific project file"""
|
||||||
raise NotImplemented("Implement a generate function in Exporter child class")
|
raise NotImplementedError("Implement a generate function in Exporter child class")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_target_supported(cls, target_name):
|
def is_target_supported(cls, target_name):
|
||||||
|
|
|
||||||
|
|
@ -299,6 +299,17 @@ class GNUARMEclipse(Exporter):
|
||||||
print
|
print
|
||||||
print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)
|
print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(_):
|
||||||
|
os.remove('.project')
|
||||||
|
os.remove('.cproject')
|
||||||
|
if exists('Debug'):
|
||||||
|
shutil.rmtree('Debug')
|
||||||
|
if exists('Release'):
|
||||||
|
shutil.rmtree('Release')
|
||||||
|
if exists('makefile.targets'):
|
||||||
|
os.remove('makefile.targets')
|
||||||
|
|
||||||
# override
|
# override
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def build(project_name, log_name="build_log.txt", cleanup=True):
|
def build(project_name, log_name="build_log.txt", cleanup=True):
|
||||||
|
|
@ -366,14 +377,6 @@ class GNUARMEclipse(Exporter):
|
||||||
if cleanup:
|
if cleanup:
|
||||||
if exists(log_name):
|
if exists(log_name):
|
||||||
os.remove(log_name)
|
os.remove(log_name)
|
||||||
os.remove('.project')
|
|
||||||
os.remove('.cproject')
|
|
||||||
if exists('Debug'):
|
|
||||||
shutil.rmtree('Debug')
|
|
||||||
if exists('Release'):
|
|
||||||
shutil.rmtree('Release')
|
|
||||||
if exists('makefile.targets'):
|
|
||||||
os.remove('makefile.targets')
|
|
||||||
|
|
||||||
# Always remove the temporary folder.
|
# Always remove the temporary folder.
|
||||||
if exists(tmp_folder):
|
if exists(tmp_folder):
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,17 @@ class IAR(Exporter):
|
||||||
self.gen_file('iar/ewd.tmpl', ctx, self.project_name + ".ewd")
|
self.gen_file('iar/ewd.tmpl', ctx, self.project_name + ".ewd")
|
||||||
self.gen_file('iar/ewp.tmpl', ctx, self.project_name + ".ewp")
|
self.gen_file('iar/ewp.tmpl', ctx, self.project_name + ".ewp")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(project_name):
|
||||||
|
os.remove(project_name + ".ewp")
|
||||||
|
os.remove(project_name + ".ewd")
|
||||||
|
os.remove(project_name + ".eww")
|
||||||
|
# legacy output file location
|
||||||
|
if exists('.build'):
|
||||||
|
shutil.rmtree('.build')
|
||||||
|
if exists('BUILD'):
|
||||||
|
shutil.rmtree('BUILD')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def build(project_name, log_name="build_log.txt", cleanup=True):
|
def build(project_name, log_name="build_log.txt", cleanup=True):
|
||||||
""" Build IAR project """
|
""" Build IAR project """
|
||||||
|
|
@ -179,14 +190,7 @@ class IAR(Exporter):
|
||||||
|
|
||||||
# Cleanup the exported and built files
|
# Cleanup the exported and built files
|
||||||
if cleanup:
|
if cleanup:
|
||||||
os.remove(project_name + ".ewp")
|
IAR.clean(project_name)
|
||||||
os.remove(project_name + ".ewd")
|
|
||||||
os.remove(project_name + ".eww")
|
|
||||||
# legacy output file location
|
|
||||||
if exists('.build'):
|
|
||||||
shutil.rmtree('.build')
|
|
||||||
if exists('BUILD'):
|
|
||||||
shutil.rmtree('BUILD')
|
|
||||||
|
|
||||||
if ret_code !=0:
|
if ret_code !=0:
|
||||||
# Seems like something went wrong.
|
# Seems like something went wrong.
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,15 @@ class Makefile(Exporter):
|
||||||
|
|
||||||
return flags
|
return flags
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(_):
|
||||||
|
remove("Makefile")
|
||||||
|
# legacy .build directory cleaned if exists
|
||||||
|
if exists('.build'):
|
||||||
|
shutil.rmtree('.build')
|
||||||
|
if exists('BUILD'):
|
||||||
|
shutil.rmtree('BUILD')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def build(project_name, log_name="build_log.txt", cleanup=True):
|
def build(project_name, log_name="build_log.txt", cleanup=True):
|
||||||
""" Build Make project """
|
""" Build Make project """
|
||||||
|
|
@ -178,13 +187,8 @@ class Makefile(Exporter):
|
||||||
|
|
||||||
# Cleanup the exported and built files
|
# Cleanup the exported and built files
|
||||||
if cleanup:
|
if cleanup:
|
||||||
remove("Makefile")
|
|
||||||
remove(log_name)
|
remove(log_name)
|
||||||
# legacy .build directory cleaned if exists
|
Makefile.clean(project_name)
|
||||||
if exists('.build'):
|
|
||||||
shutil.rmtree('.build')
|
|
||||||
if exists('BUILD'):
|
|
||||||
shutil.rmtree('BUILD')
|
|
||||||
|
|
||||||
if ret_code != 0:
|
if ret_code != 0:
|
||||||
# Seems like something went wrong.
|
# Seems like something went wrong.
|
||||||
|
|
|
||||||
|
|
@ -230,6 +230,17 @@ class MCUXpresso(GNUARMEclipse):
|
||||||
print
|
print
|
||||||
print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)
|
print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(_):
|
||||||
|
remove('.project')
|
||||||
|
remove('.cproject')
|
||||||
|
if exists('Debug'):
|
||||||
|
shutil.rmtree('Debug')
|
||||||
|
if exists('Release'):
|
||||||
|
shutil.rmtree('Release')
|
||||||
|
if exists('makefile.targets'):
|
||||||
|
remove('makefile.targets')
|
||||||
|
|
||||||
# override
|
# override
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def build(project_name, log_name="build_log.txt", cleanup=True):
|
def build(project_name, log_name="build_log.txt", cleanup=True):
|
||||||
|
|
@ -299,14 +310,7 @@ class MCUXpresso(GNUARMEclipse):
|
||||||
if cleanup:
|
if cleanup:
|
||||||
if exists(log_name):
|
if exists(log_name):
|
||||||
remove(log_name)
|
remove(log_name)
|
||||||
remove('.project')
|
MCUXpresso.clean(project_name)
|
||||||
remove('.cproject')
|
|
||||||
if exists('Debug'):
|
|
||||||
shutil.rmtree('Debug')
|
|
||||||
if exists('Release'):
|
|
||||||
shutil.rmtree('Release')
|
|
||||||
if exists('makefile.targets'):
|
|
||||||
remove('makefile.targets')
|
|
||||||
|
|
||||||
# Always remove the temporary folder.
|
# Always remove the temporary folder.
|
||||||
if exists(tmp_folder):
|
if exists(tmp_folder):
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import copy
|
import copy
|
||||||
|
import shutil
|
||||||
|
|
||||||
from os.path import relpath, join, exists, dirname, basename
|
from os.path import relpath, join, exists, dirname, basename
|
||||||
from os import makedirs
|
from os import makedirs
|
||||||
|
|
@ -275,6 +276,11 @@ class GNUARMNetbeans(Exporter):
|
||||||
print
|
print
|
||||||
print 'Done. Import the \'{0}\' project in Netbeans.'.format(self.project_name)
|
print 'Done. Import the \'{0}\' project in Netbeans.'.format(self.project_name)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(_):
|
||||||
|
shutil.rmtree("nbproject")
|
||||||
|
remove("Makefile")
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
|
||||||
|
|
@ -238,6 +238,16 @@ class Uvision(Exporter):
|
||||||
self.gen_file('uvision/uvision.tmpl', ctx, self.project_name+".uvprojx")
|
self.gen_file('uvision/uvision.tmpl', ctx, self.project_name+".uvprojx")
|
||||||
self.gen_file('uvision/uvision_debug.tmpl', ctx, self.project_name + ".uvoptx")
|
self.gen_file('uvision/uvision_debug.tmpl', ctx, self.project_name + ".uvoptx")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def clean(project_name):
|
||||||
|
os.remove(project_name + ".uvprojx")
|
||||||
|
os.remove(project_name + ".uvoptx")
|
||||||
|
# legacy .build directory cleaned if exists
|
||||||
|
if exists('.build'):
|
||||||
|
shutil.rmtree('.build')
|
||||||
|
if exists('BUILD'):
|
||||||
|
shutil.rmtree('BUILD')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def build(project_name, log_name='build_log.txt', cleanup=True):
|
def build(project_name, log_name='build_log.txt', cleanup=True):
|
||||||
""" Build Uvision project """
|
""" Build Uvision project """
|
||||||
|
|
@ -257,13 +267,7 @@ class Uvision(Exporter):
|
||||||
# Cleanup the exported and built files
|
# Cleanup the exported and built files
|
||||||
if cleanup:
|
if cleanup:
|
||||||
os.remove(log_name)
|
os.remove(log_name)
|
||||||
os.remove(project_name+".uvprojx")
|
Uvision.clean(project_name)
|
||||||
os.remove(project_name+".uvoptx")
|
|
||||||
# legacy .build directory cleaned if exists
|
|
||||||
if exists('.build'):
|
|
||||||
shutil.rmtree('.build')
|
|
||||||
if exists('BUILD'):
|
|
||||||
shutil.rmtree('BUILD')
|
|
||||||
|
|
||||||
# Returns 0 upon success, 1 upon a warning, and neither upon an error
|
# Returns 0 upon success, 1 upon a warning, and neither upon an error
|
||||||
if ret_code != 0 and ret_code != 1:
|
if ret_code != 0 and ret_code != 1:
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,14 @@ supported IDEs or project structures.
|
||||||
"""
|
"""
|
||||||
from __future__ import absolute_import, print_function
|
from __future__ import absolute_import, print_function
|
||||||
import sys
|
import sys
|
||||||
from os.path import join, abspath, dirname, exists, basename
|
from os.path import (join, abspath, dirname, exists, basename, normpath,
|
||||||
|
realpath, basename)
|
||||||
|
from os import remove
|
||||||
ROOT = abspath(join(dirname(__file__), ".."))
|
ROOT = abspath(join(dirname(__file__), ".."))
|
||||||
sys.path.insert(0, ROOT)
|
sys.path.insert(0, ROOT)
|
||||||
|
|
||||||
from shutil import move, rmtree
|
from shutil import move, rmtree
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from os.path import normpath, realpath
|
|
||||||
|
|
||||||
from tools.paths import EXPORT_DIR, MBED_HAL, MBED_LIBRARIES, MBED_TARGETS_PATH
|
from tools.paths import EXPORT_DIR, MBED_HAL, MBED_LIBRARIES, MBED_TARGETS_PATH
|
||||||
from tools.settings import BUILD_DIR
|
from tools.settings import BUILD_DIR
|
||||||
|
|
@ -247,7 +248,13 @@ def main():
|
||||||
args_error(parser, "%s not supported by %s"%(mcu,options.ide))
|
args_error(parser, "%s not supported by %s"%(mcu,options.ide))
|
||||||
profile = extract_profile(parser, options, toolchain_name, fallback="debug")
|
profile = extract_profile(parser, options, toolchain_name, fallback="debug")
|
||||||
if options.clean:
|
if options.clean:
|
||||||
rmtree(BUILD_DIR)
|
for cls in EXPORTERS.values():
|
||||||
|
try:
|
||||||
|
cls.clean(basename(abspath(options.source_dir[0])))
|
||||||
|
except (NotImplementedError, IOError, OSError):
|
||||||
|
pass
|
||||||
|
for f in EXPORTERS.values()[0].CLEAN_FILES:
|
||||||
|
remove(f)
|
||||||
try:
|
try:
|
||||||
export(mcu, options.ide, build=options.build,
|
export(mcu, options.ide, build=options.build,
|
||||||
src=options.source_dir, macros=options.macros,
|
src=options.source_dir, macros=options.macros,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue