summaryrefslogtreecommitdiffstats
path: root/scripts/lib/bsp/kernel.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/bsp/kernel.py')
-rw-r--r--scripts/lib/bsp/kernel.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
index ac6861e14b..fc1e6bdd08 100644
--- a/scripts/lib/bsp/kernel.py
+++ b/scripts/lib/bsp/kernel.py
@@ -910,6 +910,85 @@ def yocto_kernel_feature_create(scripts_path, machine, feature_items):
910 print "\t%s" % feature_dirname + "/" + feature 910 print "\t%s" % feature_dirname + "/" + feature
911 911
912 912
913def feature_in_use(scripts_path, machine, feature):
914 """
915 Determine whether the specified feature is in use by the BSP.
916 Return True if so, False otherwise.
917 """
918 features = read_features(scripts_path, machine)
919 for f in features:
920 if f == feature:
921 return True
922 return False
923
924
925def feature_remove(scripts_path, machine, feature):
926 """
927 Remove the specified feature from the available recipe-space
928 features defined for the BSP.
929 """
930 features = read_features(scripts_path, machine)
931 new_features = []
932 for f in features:
933 if f == feature:
934 continue
935 new_features.append(f)
936 write_features(scripts_path, machine, new_features)
937
938
939def yocto_kernel_feature_destroy(scripts_path, machine, feature):
940 """
941 Remove a recipe-space kernel feature from a BSP.
942 """
943 if not check_feature_name(feature):
944 sys.exit(1)
945
946 if feature_in_use(scripts_path, machine, "features/" + feature) or \
947 feature_in_use(scripts_path, machine, "cfg/" + feature):
948 print "Feature %s is in use (use 'feature rm' to un-use it first), exiting" % feature
949 sys.exit(1)
950
951 filesdir = find_filesdir(scripts_path, machine)
952 if not filesdir:
953 print "Couldn't destroy feature (%s), no 'files' dir found" % feature
954 sys.exit(1)
955
956 feature_dirname = "features"
957 featdir = os.path.join(filesdir, feature_dirname)
958 if not os.path.exists(featdir):
959 print "Couldn't find feature directory (%s)" % feature_dirname
960 sys.exit(1)
961
962 feature_fqn = os.path.join(featdir, feature)
963 if not os.path.exists(feature_fqn):
964 feature_dirname = "cfg"
965 featdir = os.path.join(filesdir, feature_dirname)
966 if not os.path.exists(featdir):
967 print "Couldn't find feature directory (%s)" % feature_dirname
968 sys.exit(1)
969 feature_fqn = os.path.join(featdir, feature_filename)
970 if not os.path.exists(feature_fqn):
971 print "Couldn't find feature (%s)" % feature
972 sys.exit(1)
973
974 f = open(feature_fqn, "r")
975 lines = f.readlines()
976 for line in lines:
977 s = line.strip()
978 if s.startswith("patch ") or s.startswith("kconf "):
979 split_line = s.split()
980 filename = os.path.join(featdir, split_line[-1])
981 if os.path.exists(filename):
982 os.remove(filename)
983 f.close()
984 os.remove(feature_fqn)
985
986 feature_remove(scripts_path, machine, feature)
987
988 print "Removed feature:"
989 print "\t%s" % feature_dirname + "/" + feature
990
991
913def base_branches(context): 992def base_branches(context):
914 """ 993 """
915 Return a list of the base branches found in the kernel git repo. 994 Return a list of the base branches found in the kernel git repo.