Delay logger creation until after obtaining lock. The logfile was being rolled over before the lock was ready, so apps with extensions had issues when Xcode called bazel_build multiple times. Also remove Timer around obtaining lock file, since the logger is created afterward. PiperOrigin-RevId: 187662685
diff --git a/src/TulsiGenerator/Scripts/bazel_build.py b/src/TulsiGenerator/Scripts/bazel_build.py index 559df0b..c4f4812 100755 --- a/src/TulsiGenerator/Scripts/bazel_build.py +++ b/src/TulsiGenerator/Scripts/bazel_build.py
@@ -50,7 +50,7 @@ 'XCTest', ] -_logger = tulsi_logging.Logger() +_logger = None def _PrintXcodeWarning(msg): @@ -98,7 +98,12 @@ Returns: A Timer instance. + + Raises: + RuntimeError: if Timer is created without initializing _logger. """ + if _logger is None: + raise RuntimeError('Attempted to create Timer without a logger.') self.action_name = action_name self.action_id = action_id self._start = None @@ -124,9 +129,9 @@ Args: lock_path: Path to the lock file. """ + # TODO(b/74119354): Add lockfile timer back and lazily instantiate logger. sys.stdout.write('Queuing Tulsi build...\n') sys.stdout.flush() - locktimer = Timer('Acquiring %s' % lock_path, 'tulsi_build_lock').Start() # TODO(b/69414272): See if we can improve this for multiple WORKSPACEs. lockfile = open(lock_path, 'w') # Register "fclose(...)" as early as possible, before acquiring lock. @@ -140,7 +145,6 @@ raise else: time.sleep(0.1) - locktimer.End() class CodesignBundleAttributes(object): @@ -1886,6 +1890,7 @@ if __name__ == '__main__': _LockFileAcquire('/tmp/tulsi_bazel_build.lock') + _logger = tulsi_logging.Logger() _timer = Timer('Everything', 'complete_build').Start() signal.signal(signal.SIGINT, _InterruptHandler) _exit_code = BazelBuildBridge().Run(sys.argv)