diff options
Diffstat (limited to 'scripts')
| -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)) |
