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 20:55:50 +0000 (UTC) [thread overview]
Message-ID: <1436907480.af3901d60547e06f805dfc8ba22734d02ecfaf04.blueness@gentoo> (raw)
commit: af3901d60547e06f805dfc8ba22734d02ecfaf04
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 20:58:00 2015 +0000
URL: https://gitweb.gentoo.org/proj/grss.git/commit/?id=af3901d6
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
next reply other threads:[~2015-07-14 20:55 UTC|newest]
Thread overview: 139+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-14 20:55 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 21:02 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=1436907480.af3901d60547e06f805dfc8ba22734d02ecfaf04.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