OpenSmalltalk / opensmalltalk-vm

Cross-platform virtual machine for Squeak, Pharo, Cuis, and Newspeak.
http://opensmalltalk.org/
Other
558 stars 111 forks source link

Build instructions fail #209

Closed melkyades closed 6 years ago

melkyades commented 6 years ago

The first step says to run

./scripts/updateSCCSVersions

The script fails because platforms/Cross/vm/sqSCCSVersion.h: doesn't exist

krono commented 6 years ago

Is that the only output? can you give the detailed output of the script?

melkyades commented 6 years ago

that's all the output:

/CogNOS/opensmalltalk-vm (Cog)$ ./scripts/updateSCCSVersions ./scripts/updateSCCSVersions: line 29: platforms/Cross/vm/sqSCCSVersion.h: No such file or directory

btw the file seems to exist

krono commented 6 years ago

what kind of shell do you use? because

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

should sure work

melkyades commented 6 years ago

plain bash, and that line works ok. Running it with bash -x shows more info. Removing the extra /.. at line 14, seems to fix it.

./scripts/updateSCCSVersions ++ dirname ./scripts/updateSCCSVersions

krono commented 6 years ago

ah, did you do a git checkout or do you use a zip?

melkyades commented 6 years ago

a checkout (more precisely, it is a submodule inside CogNOS)

krono commented 6 years ago

thats very strange, because then '[' -d ./scripts/../.git ']' must be true... From which directory do you run that?

melkyades commented 6 years ago

As this is a submodule, .git is not a directory but a file. Changing the line

if [ -d `dirname $0`/../.git ]; then

to

if [ -e `dirname $0`/../.git ]; then

makes the script work, but as I have no idea what this script does, I'm not sure if the change is correct

OpenSmalltalk-Bot commented 6 years ago

Hi Javier,

On Feb 2, 2018, at 11:50 AM, Javier Pimas notifications@github.com wrote:

As this is a submodule, .git is not a directory but a file. Changing the line

if [ -d dirname $0/../.git ]; then to

if [ -e dirname $0/../.git ]; then makes the script work, but as I have no idea what this script does, I'm not sure if the change is correct

The platforms/Cross/vm/sqSCCSVersion.h file is supposed to contain the information that identifies a particular commit. It stands for Source Code Control System Version. With many SCCS systems, including Subversion, which was used to manage the source before git, one can use a metalanguage in the source file that is recognized and replaced by commit information on each commit. Git doesn't support this (?!?!?!). So we have to do it manually with this script. The script gets run automatically by the commit script scripts/gitci, but if you do a fresh check out you'll need to run the script to get the VM's --version command to print meaningful commit information.

Ideally we would have rewritten the makefiles to do this automatically but not yet :-)

Anyway, your fix looks correct. Please feel free to commit. Also you might copy my opening paragraph above ("The platforms ... meaningful commit information.") as a comment at the start of the script.

Sorry for the mess. But most importantly, welcome!!! It's great to see you and Guido involved. I'm very excited. Thank you!

Eliot ,,,^..^,,, (phone)

fniephaus commented 6 years ago

https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/213 should fix this issue. Please re-open if it doesn't.

melkyades commented 6 years ago

Hi Eliot! sorry for the late answer. It seems it was overtaken by a slightly bigger issue now, but thanks for the explanation anyway.

Cheers, Pocho

On Sat, Feb 3, 2018 at 12:52 PM, OpenSmalltalk-Bot <notifications@github.com

wrote:

Hi Javier,

On Feb 2, 2018, at 11:50 AM, Javier Pimas notifications@github.com wrote:

As this is a submodule, .git is not a directory but a file. Changing the line

if [ -d dirname $0/../.git ]; then to

if [ -e dirname $0/../.git ]; then makes the script work, but as I have no idea what this script does, I'm not sure if the change is correct

The platforms/Cross/vm/sqSCCSVersion.h file is supposed to contain the information that identifies a particular commit. It stands for Source Code Control System Version. With many SCCS systems, including Subversion, which was used to manage the source before git, one can use a metalanguage in the source file that is recognized and replaced by commit information on each commit. Git doesn't support this (?!?!?!). So we have to do it manually with this script. The script gets run automatically by the commit script scripts/gitci, but if you do a fresh check out you'll need to run the script to get the VM's --version command to print meaningful commit information.

Ideally we would have rewritten the makefiles to do this automatically but not yet :-)

Anyway, your fix looks correct. Please feel free to commit. Also you might copy my opening paragraph above ("The platforms ... meaningful commit information.") as a comment at the start of the script.

Sorry for the mess. But most importantly, welcome!!! It's great to see you and Guido involved. I'm very excited. Thank you!

Eliot ,,,^..^,,, (phone)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/209#issuecomment-362825127, or mute the thread https://github.com/notifications/unsubscribe-auth/AATPaVcijxg2VuLMQvIJyCQAPPxhJMioks5tRIDUgaJpZM4R3brI .

-- Javier Pimás Ciudad de Buenos Aires