The Awesome Factor

Compiling Factor on Windows

Tuesday, November 14, 2006

#darcs #mingw #msys #programming-languages #windows

To compile Factor you will need:

  • MinGW
  • MSYS
  • darcs
  • freetype6.dll
  • zlib1.dll
  1. Download MinGW and install it.

  2. Download MSYS and install it. Make sure to tell the batch script about your MinGW install.

  3. Download the latest package version of darcs and unzip it to c:\darcsdir-w32. darcs 1.0.7 is broken on Windows, so you must also grab the 1.0.8 binary and copy it into your darcs install directory over the broken version.

  4. Set your path to include darcs. Run:

    start->Control Panel->System->Advanced->Environment Variables
    

    In System Variables, edit PATH, and append c:\darcsdir-w32 so that your path resembles:

    c:\Program Files\sqlite;c:\darcsdir-w32
    

    Start cmd.exe from the Run box and try out your darcs installation:

    C:\Documents and Settings\Administrator>darcs --version
    1.0.8 (release)
    
  5. (Optional) To push patches to a remote server, you will need to generate an RSA key with puttygen unless you already have a public key. Run puttygen (installed with the darcs bundle), click generate, and move the mouse around to make your key. Save both your public and private keys in c:\darcsdir-w32. Adding a passphrase is optional (I didn’t do it).

  6. (Optional) On your remote Linux box running sshd, edit the file ~/.ssh/authorized_keys2 and paste your public key so that it looks something like this (but all on one line):

    ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAgMPa1vvlSi4ZrS7hrk/XJNwd9trM+TyvJjhkMzf3fhks
    n8TFin7dhrRfFhVdjka0ep0+RGJrUI/ja6nDyG2SvzG1ka5Ml/Nes2PtpHWcwK7fwU9gBUZNzlvXCkOk
    UKO7X7N65LnyCPjJDZa+8LPqrBeESjbVmstG4cw7uh0= doug@windows
    
  7. (Optional) So that darcs can find your key, start Regedit and add a key for Pageant:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    Name: Pageant
    Data: c:\darcsdir-w32\pageant.exe c:\darcsdir-w32\private.ppk
    

    When you reboot or run the above command, pageant will find your key and you can begin using darcs to push patches to your Linux box.

  8. To get the Factor source, run this command wherever you want your local copy, perhaps from c:\

    darcs get http://factorcode.org/repos
    
  9. Additionally, put these dlls in your Factor directory (repos/Factor/ on a default checkout):

    freetype6.dll
    zlib1.dll
    
  10. Start MSYS (the blue M link) and change to your Factor directory. Mine is at c:\repos\Factor, so the command is:

    cd /c/repos/Factor
    
  11. From here you should be able to

    make windows
    
  12. From cmd.exe, change to the Factor directory and bootstrap with an image (x86) from factorcode.org:

    f -i=boot.image.x86
    

Now you can run Factor!

f

I recommend bootstrapping and running Factor from cmd.exe because MSYS messes up stderr–you will not notice for a while if Factor has an internal error because there will be no output.

As a final note, the latest version from darcs is usually the best. If the boot image of Factor is stale and bootstrap fails, contact one of the devs in #concatenative on irc.freenode.org.

Happy Windows Factoring!

Update: Troubleshooting

Q: When starting Factor, why do I get the error ‘alien-invoke-error-library “freetype”, alien-invoke-error-symbol “FT_Init_FreeType”’?

A: You forgot to put freetype6.dll and zlib1.dll in the Factor directory. Download these and bootstrap again.

Q: When I bootstrap, why does Factor spew “*** Data GC (5 minor, 24 cards)” and error out with ‘Word not found in current vocabulary search path delegate f no-word-name “\u000c”’?

A: On bootstrap you must pass the ‘-i’ command line argument. The correct command line is:

./f -i=boot.image.x86