From e8dfd6b6d8ddf11eb062eaff5eea2335f78acf2f Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 4 Nov 2016 12:31:55 -0400 Subject: update --- ...ent_5_bc7ab75bf3063bb09b0beb57b6cb4545._comment | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 doc/todo/spin_without_remote_compilation/comment_5_bc7ab75bf3063bb09b0beb57b6cb4545._comment (limited to 'doc/todo/spin_without_remote_compilation/comment_5_bc7ab75bf3063bb09b0beb57b6cb4545._comment') diff --git a/doc/todo/spin_without_remote_compilation/comment_5_bc7ab75bf3063bb09b0beb57b6cb4545._comment b/doc/todo/spin_without_remote_compilation/comment_5_bc7ab75bf3063bb09b0beb57b6cb4545._comment new file mode 100644 index 00000000..9d9fc2e2 --- /dev/null +++ b/doc/todo/spin_without_remote_compilation/comment_5_bc7ab75bf3063bb09b0beb57b6cb4545._comment @@ -0,0 +1,68 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 5""" + date="2016-11-04T16:25:13Z" + content=""" +Felix did a lot of work on his precompiled branch. But it's been stalled +on getting merged since June. + +The blocker has to do with switching a host between precompiled and not, +and vice-versa. The two ways to deploy propellor need different contents in +the `localdir`. Pasting in a couple of my last emails about it: + +---- + +I fear a rm -rf localdir because propellor writes/reads some files +inside it to store states between runs etc. In retrospect, it would have +been smart to limit all such stuff to a subdirectory of localdir. Moving +things now would be the best approach, but probably tricky to implement. + +Maybe you could get away with only deleting localdir/.git though. + +---- + +> In sendGitClone, we still need to "rm -rf localdir", to prevent "git +> clone" from failing, right? + +It seems wrong to do that for the same reason. + +I kind of have the feeling that making the local-build/no-local-build +decision check for .git was the wrong choice to make, because it's led +to all this complexity around deleting parts of /usr/local/propellor. + +If we had a better way to make that decision, then sendPrecompiled could +just overwrite any existing propellor binary, so conversion from +local-compilation to precompilation would be easy. + +(Conversion the other way would still be a little problimatic since git +clone would fail; it would need to clone to a temporary directory and +move everything into place, I suppose.) + +So, what would be a better way for propellor to decide if it needs to +rebuild itself when run? Could it get away with checking if the local +host is configured with precompiled? + +These are the cases: + +1. Propellor is run via a cron job or manually, on a precompiled host. + It looks at the info for the host, sees it is precompiled, and doesn't + rebuild, which is right. +2. Propellor is switching from not precompiled to precompiled; + the user is running propellor --spin $host + So, a propellor binary gets sent over, and it can see that the host + it's running on has the precompiled Info and not rebuild. +3. Propellor is switching from precompiled to not precompiled; + the user is running propellor --spin $host + Propellor sees that $host is not precompiled and does not send the + precompiled binary, but tries to do a git push to $host. + Which will probably fail (unless $host has the .git directory left + over from a previous configuration). + If it gets past the git push, it will run the old precompiled + propellor binary, which thinks it's still configured that way, and so + won't build. + +So, seems that case 3 needs to somehow detect that the remote host +has a precompiled binary on it, and delete that, as well as arranging +for the git push to succeed even when localdir already exists and +localdir/.git does not. +"""]] -- cgit v1.2.3