public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Anthony G. Basile" <blueness@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/grss:master commit in: grs/
Date: Tue, 14 Jul 2015 21:02:00 +0000 (UTC)	[thread overview]
Message-ID: <1436907839.cbe8e606b84a9a2e028646a686565df5ccd48db4.blueness@gentoo> (raw)

commit:     cbe8e606b84a9a2e028646a686565df5ccd48db4
Author:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 14 20:58:00 2015 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Tue Jul 14 21:03:59 2015 +0000
URL:        https://gitweb.gentoo.org/proj/grss.git/commit/?id=cbe8e606

grs/Interpret.py: add documentation.

 grs/Interpret.py | 49 ++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 40 insertions(+), 9 deletions(-)

diff --git a/grs/Interpret.py b/grs/Interpret.py
index 4749561..a941f3e 100644
--- a/grs/Interpret.py
+++ b/grs/Interpret.py
@@ -20,15 +20,16 @@ from grs.TarIt import TarIt
 
 
 class Interpret(Daemon):
-    """ doc here
-        more doc
-    """
+    """ This is the main daemon class. """
 
     def run(self):
-        """ doc here
-            more doc
+        """ This overrides the empty Daemon run method and is started when .start()
+            is executed.  This first daemonizes the process and then runs this method.
+            Note that the Daemon class does not set up any signal handles and expects
+            that to be done in the subclass.
         """
 
+        # First we set up some inner methods:
         def handler(signum, frame):
             """ On SIGTERM, propagate the signal to all processes in the cgroup/subcgroup
                 except yourself.  If a process won't terminate nicely, then kill it.
@@ -60,10 +61,14 @@ class Interpret(Daemon):
                 pass
             sys.exit(signum + 128)
 
-        signal.signal(signal.SIGINT,  handler)
-        signal.signal(signal.SIGTERM, handler)
 
         def smartlog(l, obj, has_obj = True):
+            """ This logs whether or not we have a grammatically incorrect
+                directive, or we are doing a mock run, and returns whether
+                or not we should execute the directive:
+                    True  = skip this directive
+                    False = don't skip it
+            """
             if (has_obj and not obj) or (not has_obj and obj):
                 lo.log('Bad command: %s' % l)
                 return True
@@ -72,9 +77,19 @@ class Interpret(Daemon):
                 return True
             return False
 
+
         def stampit(progress):
+            """ Create an empty file to mark the progress through the
+                build script.
+            """
             open(progress, 'w').close()
 
+
+        # Register the signals to terminate the entire process cgroup
+        signal.signal(signal.SIGINT,  handler)
+        signal.signal(signal.SIGTERM, handler)
+
+        # Grab all the GRS namespace variables
         nameserver  = CONST.nameservers[self.run_number]
         repo_uri    = CONST.repo_uris[self.run_number]
         stage_uri   = CONST.stage_uris[self.run_number]
@@ -88,6 +103,9 @@ class Interpret(Daemon):
         kernelroot  = CONST.kernelroots[self.run_number]
         portage_configroot = CONST.portage_configroots[self.run_number]
 
+        # Initialize all the classes that will run the directives from
+        # the build script.  Note that we expect these classes to just
+        # initialize some variables but not do any work in their initializers.
         lo = Log(logfile)
         sy = Synchronize(repo_uri, name, libdir, logfile)
         se = Seed(stage_uri, tmpdir, portage_configroot, package, logfile)
@@ -98,12 +116,15 @@ class Interpret(Daemon):
         ke = Kernel(libdir, portage_configroot, kernelroot, package, logfile)
         bi = TarIt(name, portage_configroot, logfile)
 
+        # Just in case /var/tmp/grs doesn't already exist.
         os.makedirs(tmpdir, mode=0o755, exist_ok=True)
 
+        # Rotate any prevously existing logs and make unmount any existing
+        # bind mounts from a previous run that were not cleaned up.
         lo.rotate_logs()
         md.umount_all()
 
-        # Both sync() + seed() are not scripted steps.
+        # Both sync() + seed() do not need build script directives.
         # sync() is done unconditionally for an update run.
         progress = os.path.join(tmpdir, '.completed_sync')
         if not os.path.exists(progress) or self.update_run:
@@ -116,13 +137,14 @@ class Interpret(Daemon):
             se.seed()
             stampit(progress)
 
+        # Read the build script and execute a line at a time.
         build_script = os.path.join(libdir, 'build')
         with open(build_script, 'r') as s:
             line_number = 0
             for l in s.readlines():
                 line_number += 1
 
-                # Skip lines with initial # as comments
+                # Skip lines with initial # as comments.
                 m = re.search('^(#).*$', l)
                 if m:
                     continue
@@ -155,6 +177,8 @@ class Interpret(Daemon):
                     verb = l.strip()
                     obj = None
 
+                # This long concatenated if is where the semantics of the
+                # build script are implemented.
                 if verb == '':
                     stampit(progress)
                     continue
@@ -214,3 +238,10 @@ class Interpret(Daemon):
                     lo.log('Bad command: %s' % l)
 
                 stampit(progress)
+
+        # Just in case the build script lacks a final unmount, if we
+        # are done, then let's make sure we clean up after ourselves.
+        try:
+            md.umount_all()
+        except NameError:
+            pass


             reply	other threads:[~2015-07-14 21:02 UTC|newest]

Thread overview: 139+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-14 21:02 Anthony G. Basile [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-20  2:22 [gentoo-commits] proj/grss:master commit in: grs/ Anthony G. Basile
2022-07-20  1:49 Anthony G. Basile
2022-07-19 20:22 Anthony G. Basile
2022-07-19 20:18 Anthony G. Basile
2022-07-18 21:13 Anthony G. Basile
2019-04-19 12:29 Anthony G. Basile
2018-11-18 19:09 Anthony G. Basile
2018-11-12  3:08 Anthony G. Basile
2018-11-11 23:57 Anthony G. Basile
2018-11-11 23:35 Anthony G. Basile
2018-11-11 23:16 Anthony G. Basile
2018-06-25 20:32 Anthony G. Basile
2018-04-14 14:53 Anthony G. Basile
2018-04-10  3:14 Anthony G. Basile
2018-02-20  2:27 Anthony G. Basile
2018-02-20  2:04 Anthony G. Basile
2018-02-18 22:38 Anthony G. Basile
2018-02-18 16:37 Anthony G. Basile
2018-02-06 11:57 Anthony G. Basile
2018-02-06 11:42 Anthony G. Basile
2018-02-06 11:33 Anthony G. Basile
2018-02-06 10:55 Anthony G. Basile
2018-01-28 12:31 Anthony G. Basile
2018-01-28 12:09 Anthony G. Basile
2018-01-15  1:31 Anthony G. Basile
2018-01-15  1:23 Anthony G. Basile
2018-01-14 18:22 Anthony G. Basile
2018-01-14 17:05 Anthony G. Basile
2018-01-14 15:02 Anthony G. Basile
2018-01-14 14:37 Anthony G. Basile
2018-01-14 14:07 Anthony G. Basile
2018-01-13 17:40 Anthony G. Basile
2018-01-10 21:02 Anthony G. Basile
2018-01-10 20:40 Anthony G. Basile
2017-12-28 17:54 Anthony G. Basile
2017-12-28 17:22 Anthony G. Basile
2017-12-27  9:25 Anthony G. Basile
2017-12-26 14:19 Anthony G. Basile
2017-12-26  0:04 Anthony G. Basile
2017-12-26  0:04 Anthony G. Basile
2017-12-26  0:04 Anthony G. Basile
2017-12-25 23:38 Anthony G. Basile
2017-12-25 23:24 Anthony G. Basile
2017-12-23 16:04 Anthony G. Basile
2017-12-23 14:15 Anthony G. Basile
2016-03-23 15:08 Anthony G. Basile
2016-03-23 15:05 Anthony G. Basile
2015-11-26 19:48 Anthony G. Basile
2015-10-10 20:20 Anthony G. Basile
2015-10-10 19:36 Anthony G. Basile
2015-10-10 19:07 Anthony G. Basile
2015-10-10 12:22 Anthony G. Basile
2015-10-10 11:44 Anthony G. Basile
2015-10-10 11:22 Anthony G. Basile
2015-10-10 11:20 Anthony G. Basile
2015-10-10 11:10 Anthony G. Basile
2015-10-10  1:46 Anthony G. Basile
2015-10-10  1:40 Anthony G. Basile
2015-10-10  1:34 Anthony G. Basile
2015-10-10  1:26 Anthony G. Basile
2015-10-10  1:23 Anthony G. Basile
2015-10-10  1:18 Anthony G. Basile
2015-10-10  0:34 Anthony G. Basile
2015-10-10  0:29 Anthony G. Basile
2015-10-09 23:33 Anthony G. Basile
2015-10-09 23:33 Anthony G. Basile
2015-10-09 23:30 Anthony G. Basile
2015-10-09 23:11 Anthony G. Basile
2015-10-09 23:06 Anthony G. Basile
2015-10-08 23:52 Anthony G. Basile
2015-10-08 18:03 Anthony G. Basile
2015-10-08 17:20 Anthony G. Basile
2015-10-07 11:28 Anthony G. Basile
2015-10-07 11:15 Anthony G. Basile
2015-10-07 11:07 Anthony G. Basile
2015-10-07 11:03 Anthony G. Basile
2015-10-07 10:57 Anthony G. Basile
2015-10-07  8:31 Anthony G. Basile
2015-10-07  8:01 Anthony G. Basile
2015-10-06 10:07 Anthony G. Basile
2015-09-16 22:08 Anthony G. Basile
2015-09-16  5:16 Anthony G. Basile
2015-09-16  0:37 Anthony G. Basile
2015-09-16  0:32 Anthony G. Basile
2015-09-14  7:17 Anthony G. Basile
2015-09-14  5:32 Anthony G. Basile
2015-09-14  5:25 Anthony G. Basile
2015-09-14  0:29 Anthony G. Basile
2015-09-13 17:31 Anthony G. Basile
2015-09-12 20:56 Anthony G. Basile
2015-09-12 20:56 Anthony G. Basile
2015-08-09 20:26 Anthony G. Basile
2015-08-08 20:06 Anthony G. Basile
2015-08-08 18:01 Anthony G. Basile
2015-08-08 17:51 Anthony G. Basile
2015-07-29  0:20 Anthony G. Basile
2015-07-28 22:44 Anthony G. Basile
2015-07-27 20:49 Anthony G. Basile
2015-07-25 22:36 Anthony G. Basile
2015-07-14 23:37 Anthony G. Basile
2015-07-14 23:29 Anthony G. Basile
2015-07-14 23:19 Anthony G. Basile
2015-07-14 23:16 Anthony G. Basile
2015-07-14 23:02 Anthony G. Basile
2015-07-14 22:39 Anthony G. Basile
2015-07-14 22:35 Anthony G. Basile
2015-07-14 21:45 Anthony G. Basile
2015-07-14 21:21 Anthony G. Basile
2015-07-14 20:55 Anthony G. Basile
2015-07-10 12:54 Anthony G. Basile
2015-07-10  2:37 Anthony G. Basile
2015-07-10  2:37 Anthony G. Basile
2015-07-10  2:01 Anthony G. Basile
2015-07-09 15:26 Anthony G. Basile
2015-07-09  1:44 Anthony G. Basile
2015-07-08 15:44 Anthony G. Basile
2015-07-08 10:28 Anthony G. Basile
2015-07-07 20:52 Anthony G. Basile
2015-07-07 20:34 Anthony G. Basile
2015-07-07 14:30 Anthony G. Basile
2015-07-07 12:54 Anthony G. Basile
2015-07-07 12:46 Anthony G. Basile
2015-07-07 12:44 Anthony G. Basile
2015-07-07 12:33 Anthony G. Basile
2015-07-07 11:26 Anthony G. Basile
2015-07-07  2:17 Anthony G. Basile
2015-07-06 20:13 Anthony G. Basile
2015-07-06 18:13 Anthony G. Basile
2015-07-05 16:49 Anthony G. Basile
2015-07-05 12:04 Anthony G. Basile
2015-07-02 22:30 Anthony G. Basile
2015-07-01 17:27 Anthony G. Basile
2015-07-01 17:03 Anthony G. Basile
2015-07-01 16:53 Anthony G. Basile
2015-07-01 16:52 Anthony G. Basile
2015-07-01 16:07 Anthony G. Basile
2015-07-01 12:30 Anthony G. Basile
2015-07-01 12:23 Anthony G. Basile

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1436907839.cbe8e606b84a9a2e028646a686565df5ccd48db4.blueness@gentoo \
    --to=blueness@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox