Login  Register

Re: OSProcess fork issue with Debian built VM

Posted by Max Leske on May 19, 2017; 2:32pm
URL: https://forum.world.st/OSProcess-fork-issue-with-Debian-built-VM-tp4947326p4947650.html

 

On 19 May 2017, at 03:36, [hidden email] wrote:

On Fri, May 19, 2017 at 2:58 AM, Eliot Miranda <[hidden email]>
wrote:

BTW, for all people installing and building their own please note this:

On Tue, May 16, 2017 at 5:57 AM, Max Leske <[hidden email]> wrote:
[snip]

/usr/local/lib/phcogspurlinux/lib/pharo/5.0-/pharo
Pharo VM version: 5.0-$URL$  Tue May 16 12:22:16 UTC 2017 gcc 4.9.2
[Production Spur ITHB VM]
Built from: CoInterpreter VMMaker.oscog-eem.2207 uuid:
8da5de9b-33d7-478b-9081-58591f7da69a May 16 2017
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2208 uuid:
4877be7d-941d-4e15-b6df-4f1b8c7072a8 May 16 2017
Revision: VM: $URL$ $Date$ Date: $Rev$ Plugins:  $Rev$
Build host: Linux nuc 4.10.0-20-generic #22-Ubuntu SMP Thu Apr 20
09:22:42 UTC 2017 i686 GNU/Linux
plugin path: /usr/local/lib/phcogspurlinux/lib/pharo/5.0-/ [default:
/usr/local/lib/phcogspurlinux/lib/pharo/5.0-/]


The way to get rid of the " Revision: VM: $URL$ $Date$ Date: $Rev$
Plugins:  $Rev$" nonsense in the version report is to make sure to run
scripts/updateSCCSVersions

Even though I know this, I usually forget for the first run on a new
machine.
Is there some reason this can't be run as part of make?


exactly once before you build.  From then on the checkin script
scrips/gitci
makes sure that this is up-to-date.  You'll get something more useful
such as

VM: 201705161708 eliot@Sisyphus:oscogvm $ Date: Tue May 16 10:08:12 2017
-0700 $

which allows me to identify this VM as one I build myself on my Mac Mini
Sisyphus in directory oscogvm, which contrasts with the official binary VMs.

Ideally the script would be run automatically after the repository was
cloned.  Do git mavens know if a post-clone hook is available to make this
happen?  If so, can someone make it so?

The blocker to this is that clone does not install the hooks.
Maybe the hooks be installed by make?
Of course, everyone should look at the README, but unfortunate human nature
its a bit TL;DR.
The alternative could be a SETUP or QUICKSTART file in the root directory,
to make it more obvious it should be run.


btw, could someone actually explain how this works...
 git config --local include.path ../.gitconfig

tell git to respect a specific .gitconfig file

 git stash -q || true

stash all changes, i.e. don't throw them away but make the repository clean

 echo "//" >> platforms/Cross/vm/sqSCCSVersion.h
 echo "//" >> platforms/Cross/plugins/sqPluginsSCCSVersion.h

this appends a comment to both files, don't know why though, it doesn't seem to have any effect other than making those versions dirty

 git checkout HEAD -- platforms/Cross/vm/sqSCCSVersion.h
 git checkout HEAD -- platforms/Cross/plugins/sqPluginsSCCSVersion.h

replace those two files just modified with the versions from HEAD (makes sense if the repository hasn't been pulled, but I don't see why that would be the case...)

 git stash pop -q || true

again, clean the repository be without throwing away the changes (so all the modifications we made before are now gone... wtf...)

I can't grok its magic.

+1 :)

Hopefully that highlights why its the same script for each of
post-checkout, post-commit & post-merge


Also, at https://github.com/OpenSmalltalk/opensmalltalk-vm
if you click on the green <Clone or download> button and then on "Download
ZIP"
I found (from memory) that running mvm seems to successfully build a VM on
a Mac
(but I didn't validate the version info).  However on Linux the build fails
in a way that seems similar to when
updateSCCSVersions hasn't been run.  But that script depends on git,
whereas
I presume it would be good to be able to build from the ZIP download
without git - particularly
for Linux distributions that source compile their packages.
Indeed, I think Alistair bumped into this packing the VM for nixos.

So I notice that this file...
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/platforms/Cross/vm/sqSCCSVersion.h
is dated 16 Dec 2016.  Why isn't this file kept synchronised to identify
the checked in build?
So that compiling from the ZIP download would have correct version info?

cheers -ben