diff options
Diffstat (limited to 'scripts/cleanup-workdir')
-rwxr-xr-x | scripts/cleanup-workdir | 54 |
1 files changed, 49 insertions, 5 deletions
diff --git a/scripts/cleanup-workdir b/scripts/cleanup-workdir index 1e9c56dcf6..156a2597c1 100755 --- a/scripts/cleanup-workdir +++ b/scripts/cleanup-workdir | |||
@@ -47,6 +47,19 @@ def run_command(cmd): | |||
47 | sys.exit(1) | 47 | sys.exit(1) |
48 | return output | 48 | return output |
49 | 49 | ||
50 | def get_cur_arch_dirs(workdir, arch_dirs): | ||
51 | pattern = workdir + '/(.*?)/' | ||
52 | |||
53 | # select thest 5 packages to get the dirs of current arch | ||
54 | pkgs = ['hicolor-icon-theme', 'base-files', 'acl-native', 'binutils-crosssdk', 'autoconf-nativesdk'] | ||
55 | |||
56 | for pkg in pkgs: | ||
57 | cmd = "bitbake -e " + pkg + " | grep ^IMAGE_ROOTFS=" | ||
58 | output = run_command(cmd) | ||
59 | output = output.split('"')[1] | ||
60 | m = re.match(pattern, output) | ||
61 | arch_dirs.append(m.group(1)) | ||
62 | |||
50 | def main(): | 63 | def main(): |
51 | global parser | 64 | global parser |
52 | parser = optparse.OptionParser( | 65 | parser = optparse.OptionParser( |
@@ -87,21 +100,52 @@ This script must be ran under BUILDDIR after source file \"oe-init-build-env\"." | |||
87 | version = parse_version(elems[2]) | 100 | version = parse_version(elems[2]) |
88 | pkg_cur_dirs.append(elems[0] + '-' + version) | 101 | pkg_cur_dirs.append(elems[0] + '-' + version) |
89 | 102 | ||
90 | cmd = "bitbake -e | grep ^TMPDIR" | 103 | cmd = "bitbake -e" |
91 | output = run_command(cmd) | 104 | output = run_command(cmd) |
92 | 105 | ||
93 | tmpdir = output.split('"')[1] | 106 | tmpdir = None |
94 | workdir = os.path.join(tmpdir, 'work') | 107 | image_rootfs = None |
95 | if not os.path.exists(workdir): | 108 | output = output.split('\n') |
96 | print "WORKDIR %s does NOT exist. Quit." % workdir | 109 | for line in output: |
110 | if tmpdir and image_rootfs: | ||
111 | break | ||
112 | |||
113 | if not tmpdir: | ||
114 | m = re.match('TMPDIR="(.*)"', line) | ||
115 | if m: | ||
116 | tmpdir = m.group(1) | ||
117 | |||
118 | if not image_rootfs: | ||
119 | m = re.match('IMAGE_ROOTFS="(.*)"', line) | ||
120 | if m: | ||
121 | image_rootfs = m.group(1) | ||
122 | |||
123 | # won't fail just in case | ||
124 | if not tmpdir or not image_rootfs: | ||
125 | print "Can't get TMPDIR or IMAGE_ROOTFS." | ||
126 | return 1 | ||
127 | |||
128 | pattern = tmpdir + '/(.*?)/(.*?)/' | ||
129 | m = re.match(pattern, image_rootfs) | ||
130 | if not m: | ||
131 | print "Can't get WORKDIR." | ||
97 | return 1 | 132 | return 1 |
98 | 133 | ||
134 | workdir = os.path.join(tmpdir, m.group(1)) | ||
135 | |||
136 | # we only deal the dirs of current arch, total numbers of dirs are 6 | ||
137 | cur_arch_dirs = [m.group(2)] | ||
138 | get_cur_arch_dirs(workdir, cur_arch_dirs) | ||
139 | |||
99 | for workroot, dirs, files in os.walk(workdir): | 140 | for workroot, dirs, files in os.walk(workdir): |
100 | # For the files, they should NOT exist in WORKDIR. Romve them. | 141 | # For the files, they should NOT exist in WORKDIR. Romve them. |
101 | for f in files: | 142 | for f in files: |
102 | obsolete_dirs.append(os.path.join(workroot, f)) | 143 | obsolete_dirs.append(os.path.join(workroot, f)) |
103 | 144 | ||
104 | for d in dirs: | 145 | for d in dirs: |
146 | if d not in cur_arch_dirs: | ||
147 | continue | ||
148 | |||
105 | for pkgroot, pkgdirs, filenames in os.walk(os.path.join(workroot, d)): | 149 | for pkgroot, pkgdirs, filenames in os.walk(os.path.join(workroot, d)): |
106 | for f in filenames: | 150 | for f in filenames: |
107 | obsolete_dirs.append(os.path.join(pkgroot, f)) | 151 | obsolete_dirs.append(os.path.join(pkgroot, f)) |