Search code examples
pharo

What's wrong with Iceberg/Pharo8 in Windows?


I'm trying to setup a Pharo8 image in Windows 10, using a git repo I cloned manually, but pharo gives a strange error. The following code works fine on linux, but fails in Windows (I've tried both Git Bash or msys2-mingw64). It clones my repo, downloads a Pharo 8 image+vm in a subdir, copies it to a new image where it adds an Iceberg repo and tries to install a metacello package:

$ git clone git@github.com:powerlang/powerlang.git powerlang
$ cd powerlang/bootstrap
$ curl https://get.pharo.org/64/80+vm | bash
$ ./pharo Pharo.image save bootstrap
$ ./pharo bootstrap.image eval --save "(IceRepositoryCreator new location: '..' asFileReference; createRepository) register"
$ ./pharo bootstrap.image metacello install tonel://./src BaselineOfPowerlang
MetacelloNotification: Fetched -> BaselineOfPowerlang-tonel.1 --- tonel://C:\dev\powerlang\bootstrap\src --- tonel://C:\dev\powerlang\bootstrap\src
MetacelloNotification: Loaded -> BaselineOfPowerlang-tonel.1 --- tonel://C:\dev\powerlang\bootstrap\src --- tonel://C:\dev\powerlang\bootstrap\src
MetacelloNotification: Loading baseline of BaselineOfPowerlang...
3. using HTTPS instead SSH (Just use an url in the form HTTPS://etc.git). I will try to clone the HTTPS variant.
3. using HTTPS instead SSH (Just use an url in the form HTTPS://etc.git). I will try to clone the HTTPS variant.
3. using HTTPS instead SSH (Just use an url in the form HTTPS://etc.git). I will try to clone the HTTPS variant.
3. using HTTPS instead SSH (Just use an url in the form HTTPS://etc.git). I will try to clone the HTTPS variant.
3. using HTTPS instead SSH (Just use an url in the form HTTPS://etc.git). I will try to clone the HTTPS variant.
[infinite loop]

Am I doing something wrong? How can I fix the problem?


Solution

  • It seems the problems had to do with paths.

    I could finally work around them by manually telling Iceberg where the .ssh files are (which it should already know :/ as they are in the standard directory). Changing to the line below solved the problem:

    $ ./pharo bootstrap.image eval --save "IceCredentialsProvider useCustomSsh: true. IceCredentialsProvider sshCredentials publicKey: '`cygpath -w ~/.ssh/id_rsa.pub`'; privateKey: '`cygpath -w ~/.ssh/id_rsa`'. (IceRepositoryCreator new location: '..' asFileReference; createRepository) register"
    

    Iceberg doesn't support using ~ for the ssh path, nor the /c/Users/xxx notation, so instead we pass it translated to a Windows styled path (cygwin -w ~/.ssh/id_rsa gets converted to C:\Users\xxx\.ssh\id_rsa).