chiark / gitweb /
build: log the start time of the current build session
[fdroidserver.git] / fdroidserver / build.py
index e2866fbd37c946a6ff5349fff4ebbad6239e1b59..8bbe8aab75d68bb82e97877c94e4e9b0a47bbd36 100644 (file)
@@ -288,6 +288,10 @@ def force_gradle_build_tools(build_dir, build_tools):
                                path)
 
 
+def _get_build_timestamp():
+    return time.strftime("%Y-%m-%d %H:%M:%SZ", time.gmtime())
+
+
 def transform_first_char(string, method):
     """Uses method() on the first character of string."""
     if len(string) == 0:
@@ -414,7 +418,12 @@ def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, ext
                 raise BuildException("Error running sudo command for %s:%s" %
                                      (app.id, build.versionName), p.output)
 
-        p = FDroidPopen(['sudo', 'apt-get', '-y', 'purge', 'sudo'])
+        p = FDroidPopen(['sudo', 'passwd', '--lock', 'root'])
+        if p.returncode != 0:
+            raise BuildException("Error locking root account for %s:%s" %
+                                 (app.id, build.versionName), p.output)
+
+        p = FDroidPopen(['sudo', 'SUDO_FORCE_REMOVE=yes', 'dpkg', '--purge', 'sudo'])
         if p.returncode != 0:
             raise BuildException("Error removing sudo for %s:%s" %
                                  (app.id, build.versionName), p.output)
@@ -957,7 +966,7 @@ def trybuild(app, build, build_dir, output_dir, log_dir, also_check_dir,
     if server:
         # When using server mode, still keep a local cache of the repo, by
         # grabbing the source now.
-        vcs.gotorevision(build.commit)
+        vcs.gotorevision(build.commit, refresh)
 
         build_server(app, build, vcs, build_dir, output_dir, log_dir, force)
     else:
@@ -1050,6 +1059,7 @@ def parse_commandline():
 options = None
 config = None
 buildserverid = None
+starttime = _get_build_timestamp()
 
 
 def main():
@@ -1119,7 +1129,7 @@ def main():
 
     # Read all app and srclib metadata
     pkgs = common.read_pkg_args(options.appid, True)
-    allapps = metadata.read_metadata(not options.onserver, pkgs, sort_by_time=True)
+    allapps = metadata.read_metadata(not options.onserver, pkgs, options.refresh, sort_by_time=True)
     apps = common.read_app_args(options.appid, allapps, True)
 
     for appid, app in list(apps.items()):
@@ -1159,12 +1169,17 @@ def main():
     # Build applications...
     failed_apps = {}
     build_succeeded = []
+    max_apps_per_run = 10
     for appid, app in apps.items():
+        max_apps_per_run -= 1
+        if max_apps_per_run < 1:
+            break
 
         first = True
 
         for build in app.builds:
             wikilog = None
+            build_starttime = _get_build_timestamp()
             tools_version_log = ''
             if not options.onserver:
                 tools_version_log = get_android_tools_version_log(build.ndk_path())
@@ -1261,7 +1276,7 @@ def main():
                     f.write('versionCode: %s\nversionName: %s\ncommit: %s\n' %
                             (build.versionCode, build.versionName, build.commit))
                     f.write('Build completed at '
-                            + time.strftime("%Y-%m-%d %H:%M:%SZ", time.gmtime()) + '\n')
+                            + _get_build_timestamp() + '\n')
                     f.write('\n' + tools_version_log + '\n')
                     f.write(str(e))
                 logging.error("Could not build app %s: %s" % (appid, e))
@@ -1286,7 +1301,9 @@ def main():
                     newpage = site.Pages[lastbuildpage]
                     with open(os.path.join('tmp', 'fdroidserverid')) as fp:
                         fdroidserverid = fp.read().rstrip()
-                    txt = "* build completed at " + time.strftime("%Y-%m-%d %H:%M:%SZ", time.gmtime()) + '\n' \
+                    txt = "* build session started at " + starttime + '\n' \
+                          + "* this build started at " + build_starttime + '\n' \
+                          + "* this build completed at " + _get_build_timestamp() + '\n' \
                           + '* fdroidserverid: [https://gitlab.com/fdroid/fdroidserver/commit/' \
                           + fdroidserverid + ' ' + fdroidserverid + ']\n\n'
                     if options.onserver: