]> git.ipfire.org Git - ipfire-3.x.git/commitdiff
naoki: Cron needs to rebuild packages that have been altered since last build.
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 30 Apr 2010 23:30:40 +0000 (01:30 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 30 Apr 2010 23:30:40 +0000 (01:30 +0200)
naoki/__init__.py
naoki/backend.py

index c95a52867bafb9b5e87fb41da36bd703a870dfb2..ddda5cf066a972c1b98fd64a0e087b9801d2173a 100644 (file)
@@ -350,18 +350,22 @@ Release       : %(release)s
                                packages_must.append(package)
                                continue
 
+                       # If package was altered since last build
+                       if package.last_change >= package.last_build:
+                               packages_must.append(package)
+                               continue
+
                        if package.buildable:
                                packages_may.append(package)
 
                packages += packages_must
 
+               packages_may = sorted(packages_may, key=lambda p: p.last_build)
+
                while len(packages) < 10 and packages_may:
-                       package = random.choice(packages_may)
-                       packages_may.remove(package)
+                       package = packages_may.pop(0)
                        packages.append(package)
 
-               random.shuffle(packages)
-
                # Bad hack because we lack a _build method
                args.packages = [p.name for p in packages]
                args.onlydeps = False
index 1c7f69074e476d8de3493b287bbf7ed03226926f..ca12b3ac1c11ad60f0f3e2dbcb3465969d4f1707 100644 (file)
@@ -353,7 +353,7 @@ class PackageInfo(object):
 
        @property
        def fingerprint(self):
-               return "%d" % os.stat(self.filename).st_mtime
+               return "%d" % self.last_change
 
        @property
        def group(self):
@@ -363,6 +363,18 @@ class PackageInfo(object):
        def id(self):
                return "%s-%s-%s" % (self.name, self.version, self.release)
 
+       @property
+       def last_build(self):
+               file = os.path.join(PACKAGESDIR, self.package_files[0])
+               if not os.path.exists(file):
+                       return 0
+
+               return os.stat(file).st_mtime
+
+       @property
+       def last_change(self):
+               return os.stat(self.filename).st_mtime
+
        @property
        def license(self):
                return self._data.get("PKG_LICENSE")