[openwrt/openwrt] scripts: add clean of build dir to dl_cleanup script

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 13 16:34:53 PDT 2022


ansuel pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/cf2c9498bed5e2f34170ada394be26348949f107

commit cf2c9498bed5e2f34170ada394be26348949f107
Author: Ansuel Smith <ansuelsmth at gmail.com>
AuthorDate: Tue Jul 6 03:28:55 2021 +0200

    scripts: add clean of build dir to dl_cleanup script
    
    Improve dl_cleanup by adding an option to also clean the build directory
    related to the downloaded package.
    The script will check every directory in build_dir/ and check if any
    old package is present there. If outdated package are found, the old
    one are cleared leaving only the last one.
    
    Signed-off-by: Ansuel Smith <ansuelsmth at gmail.com>
---
 scripts/dl_cleanup.py | 38 +++++++++++++++++++++++++++++++++++---
 1 file changed, 35 insertions(+), 3 deletions(-)

diff --git a/scripts/dl_cleanup.py b/scripts/dl_cleanup.py
index c3b427c436..f7232b78c9 100755
--- a/scripts/dl_cleanup.py
+++ b/scripts/dl_cleanup.py
@@ -13,6 +13,7 @@ import sys
 import os
 import re
 import getopt
+import shutil
 
 # Commandline options
 opt_dryrun = False
@@ -140,15 +141,18 @@ class EntryParseError(Exception):
 
 
 class Entry:
-    def __init__(self, directory, filename):
+    def __init__(self, directory, builddir, filename):
         self.directory = directory
         self.filename = filename
+        self.builddir = builddir
         self.progname = ""
         self.fileext = ""
+        self.filenoext = ""
 
         for ext in extensions:
             if filename.endswith(ext):
                 filename = filename[0 : 0 - len(ext)]
+                self.filenoext = filename
                 self.fileext = ext
                 break
         else:
@@ -168,12 +172,27 @@ class Entry:
     def getPath(self):
         return (self.directory + "/" + self.filename).replace("//", "/")
 
+    def getBuildPaths(self):
+        paths = []
+        for subdir in os.scandir(self.builddir):
+            package_build_dir = os.path.join(subdir.path, self.filenoext)
+            if os.path.exists(package_build_dir):
+                paths.append(package_build_dir)
+        return paths
+
     def deleteFile(self):
         path = self.getPath()
         print("Deleting", path)
         if not opt_dryrun:
             os.unlink(path)
 
+    def deleteBuildDir(self):
+        paths = self.getBuildPaths()
+        for path in paths:
+            print("Deleting BuildDir", path)
+            if not opt_dryrun:
+                    shutil.rmtree(path)
+
     def __ge__(self, y):
         return self.version >= y.version
 
@@ -188,6 +207,9 @@ def usage():
     print(
         " -D|--download-dir       Provide path to dl dir to clean also the build directory"
     )
+    print(
+        " -b|--build-dir          Provide path to build dir to clean also the build directory"
+    )
 
 
 def main(argv):
@@ -196,13 +218,14 @@ def main(argv):
     try:
         (opts, args) = getopt.getopt(
             argv[1:],
-            "hdBwD:",
+            "hdBwDb:",
             [
                 "help",
                 "dry-run",
                 "show-blacklist",
                 "whitelist=",
                 "download-dir=",
+                "build-dir=",
             ],
         )
     except getopt.GetoptError as e:
@@ -210,6 +233,7 @@ def main(argv):
         return 1
 
     directory = "dl/"
+    builddir = "build_dir/"
 
     for (o, v) in opts:
         if o in ("-h", "--help"):
@@ -235,11 +259,17 @@ def main(argv):
             return 0
         if o in ("-D", "--download-dir"):
             directory = v
+        if o in ("-b", "--build-dir"):
+            builddir = v
 
     if not os.path.exists(directory):
         print("Can't find dl path", directory)
         return 1
 
+    if not os.path.exists(builddir):
+        print("Can't find dl path", builddir)
+        return 1
+
     # Create a directory listing and parse the file names.
     entries = []
     for filename in os.listdir(directory):
@@ -252,7 +282,7 @@ def main(argv):
                 break
         else:
             try:
-                entries.append(Entry(directory, filename))
+                entries.append(Entry(directory, builddir, filename))
             except EntryParseError as e:
                 pass
 
@@ -277,6 +307,8 @@ def main(argv):
             for version in versions:
                 if version is not lastVersion:
                     version.deleteFile()
+                    if builddir:
+                        version.deleteBuildDir()
             if opt_dryrun:
                 print("Keeping", lastVersion.getPath())
 




More information about the lede-commits mailing list