Update:

I downloaded MinGW and MSYS and tried to install the GLUT library.  I
just can't get the thing to work, and I feel like I'm sitting in my
own little section of Hell.

I have tried everything I could think of so far, and it still doesn't work.

Today I tried to sanitize my machine and start over.  Here is my
sequence of steps.  Can anyone tell me what I'm doing wrong?

-- Ron

1. Try to sanitize the machine.
 * Uninstall GHC, then delete C:\ghc and C:\Program Files\Haskell
 * Uninstall MSYS-DTK, MSYS, MinGW, then delete C:\MinGW and C:\MSYS
 * Verify that there is no glut*.dll in C:\Windows\System[32]
 * Delete C:\freeglut and C:\GLUT

2. Reboot.

3. Obtain the following files:

     Note: If I already downloaded a file, I saved it to avoid
     downloading again.

[1] GHC windows executable
   http://haskell.org/ghc/dist/6.6.1/ghc-6.6.1-i386-windows.exe

[2] FreeGlut
http://superb-west.dl.sourceforge.net/sourceforge/freeglut/freeglut-2.4.0.tar.gz

[3] Haskell GLUT library
   http://hackage.haskell.org/packages/archive/GLUT/2.0/GLUT-2.0.tar.gz

[4] Automated MinGW installer
http://downloads.sourceforge.net/mingw/MinGW-5.1.3.exe?modtime=1168811236&big_mirror=1

[5] MSYS: Minimal System installer
http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe?modtime=1079444447&big_mirror=1

[6] MSYS: Supplementary Tools installer
http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe?modtime=1041430674&big_mirror=1

[7] The RotatingCubes example, modified by adding an actionOnWindowClose
   in order to verify that FreeGlut is actually being used.
   http://hpaste.org/2632

3. Install GHC by running [1].

4. Open a command window (Start->Run, type "cmd", click OK)

5. See what packages came with GHC.

C:\Documents and Settings\Ron> ghc-pkg list
C:/ghc/ghc-6.6.1\package.conf:
   Cabal-1.1.6.2, GLUT-2.1.1, HUnit-1.1.1, OpenGL-2.2.1,
   QuickCheck-1.0.1, Win32-2.1.1, base-2.1.1, cgi-3001.1.1, fgl-5.4.1,
   filepath-1.0, (ghc-6.6.1), haskell-src-1.0.1, haskell98-1.0,
   html-1.0.1, mtl-1.0.1, network-2.0.1, parsec-2.0, regex-base-0.72,
   regex-compat-0.71, regex-posix-0.71, rts-1.0, stm-2.0,
   template-haskell-2.1, time-1.1.1, xhtml-3000.0.2

** Puzzle: Why does GHC have GLUT-2.2.1 if the latest verion of the
  GLUT library [3] is GLUT-2.0?

6. Try to run the modified RotatingCubes example [7], it should fail
  because I have neither GLUT not FreeGlut installed.

C:\Documents and Settings\Ron> cd C:\RotatingCube

C:\RotatingCube>ghci RotatingCube.lhs
  ___         ___ _
 / _ \ /\  /\/ __(_)
/ /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( RotatingCube.lhs, interpreted )
Ok, modules loaded: Main.
*Main> :main
Loading package haskell98 ... linking ... done.
Loading package OpenGL-2.2.1 ... linking ... done.
Loading package GLUT-2.1.1 ... can't load .so/.DLL for: glut32 (addDLL: unknown
error)
*Main> :q
Leaving GHCi.

7. Unzip the freeglut package [2] into C:\freeglut and then open the
  C:\freeglut\freeglut-2.4.0\freeglut.dsw file with Microsoft Visual
  Studio 2003.  Select "Yes to all" when asked to convert to 2003
  format.

8. In VS 2003 main menu: select Build -> Batch Build, then click
  "Select All", then click "Build".

     VS 2003: Build: 4 succeeded, 0 failed, 0 skipped

9. Close VS 2003.

10. Copy and rename
   from: C:\freeglut\freeglut-2.4.0\Release\freeglut.dll
   to:   C:\WINDOWS\SYSTEM32\glut32.dll

11. Try to run the modified RotatingCubes example [7] again.

C:\RotatingCube>ghci RotatingCube.lhs
  ___         ___ _
 / _ \ /\  /\/ __(_)
/ /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( RotatingCube.lhs, interpreted )
Ok, modules loaded: Main.
*Main> :main
Loading package haskell98 ... linking ... done.
Loading package OpenGL-2.2.1 ... linking ... done.
Loading package GLUT-2.1.1 ... linking ... done.
*** Exception: user error (unknown GLUT call glutSetOption, check for freeglut)
*Main> :q
Leaving GHCi.

12. Copy C:\freeglut\freeglut-2.4.0\include\GL\*.h
   to   C:\ghc\ghc-6.6.1\include\mingw\GL\
   Note: glut.h will be overwritten

13. Try to run the modified RotatingCubes example [7] again.
   (It fails, exactly as in step 11.)

14. Run the MinGW installer [4].  Select "Full Install", leave
   everything else at its default value.

15. Run the MSYS installer [5].  Leave everything at default values.
 * Post Install Q & A:
     Do you wish to continue with the post install? [yn ] y

     Do you have MinGW installed? [yn ] y

     Please answer the following in the form of c:/foo/bar.
     Where is your MinGW installation? c:/MinGW

16. Run the MSYS Supplementary Tools installer [6].  Leave everything
   at default values.

17. Unzip the Haskell GLUT library into C:\GLUT; this creates the
   folder C:\GLUT\GLUT-2.0.

18. Start MSYS using the desktop shortcut installed in step 15.

19. Execute the following commands in the MSYS shell.
 $ cd /c/GLUT/GLUT-2.0/

 $ runghc Setup.hs configure
configure: WARNING: no GLUT header found, so this package will not be built
configure: creating ./config.status

 $ runghc Setup.hs build
Setup.hs: Package GLUT-2.0 can't be built on this system.

20. Copy C:\freeglut\freeglut-2.4.0\include\GL\*.h
   to   C:\MinGW\include\GL

21. Execute the following commands in the MSYS shell.
 $ cd /c/GLUT/GLUT-2.0/

 $ runghc Setup.hs configure

 $ runghc Setup.hs build
Warning: resolving [EMAIL PROTECTED] by linking to _hs_GLUT_getProcAddress
Use --enable-stdcall-fixup to disable these warnings
Use --disable-stdcall-fixup to disable these fixups

 $ runghc Setup.hs install
Installing: C:\Program Files\Haskell\GLUT-2.0\ghc-6.6.1 & C:\Program Files\Haskell\bin GLUT-2.0...
Registering GLUT-2.0...
Reading package info from ".installed-pkg-config" ... done.
Saving old package config file... done.
Writing new package config file... done.

22. Try to run the modified RotatingCubes example [7] again.

C:\RotatingCube>ghci RotatingCube.lhs
  ___         ___ _
 / _ \ /\  /\/ __(_)
/ /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( RotatingCube.lhs, interpreted )
Ok, modules loaded: Main.
*Main> :main
Loading package haskell98 ... linking ... done.
Loading package OpenGL-2.2.1 ... linking ... done.
Loading package GLUT-2.1.1 ... linking ... done.
*** Exception: user error (unknown GLUT call glutSetOption, check for freeglut)
*Main> :q
Leaving GHCi.

22-b. Scratch head.

23. Copy from C:\Program Files\Haskell\GLUT-2.0\ghc-6.6.1\
          to C:\ghc\ghc-6.6.1\
       files HSGLUT-2.0.o and libHSGLUT-2.0.a

24. Copy C:\Program Files\Haskell\GLUT-2.0\ghc-6.6.1\include\HsGLUT.h
     to C:\ghc\ghc-6.6.1\include
   Note: This will overwrite the previous file.

25. Copy the C:\Program Files\Haskell\GLUT-2.0\ghc-6.6.1\Graphics\UI
   directory to C:\ghc\ghc-6.6.1\imports\Graphics.
   This will overwrite lots of files.

26. Try to run the modified RotatingCubes example [7] again.

C:\RotatingCube>ghci RotatingCube.lhs
  ___         ___ _
 / _ \ /\  /\/ __(_)
/ /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( RotatingCube.lhs, interpreted )

RotatingCube.lhs:4:1:
   Bad interface file: C:/ghc/GHC-66~1.1\imports/Graphics/UI/GLUT.hi
Something is amiss; requested module GLUT-2.1.1:Graphics.UI.GLUT differ
s from name found in the interface file GLUT-2.0:Graphics.UI.GLUT
Failed, modules loaded: none.
Prelude> :q
Leaving GHCi.

26-b. Pull hair in frustration.  Try re-building GLUT-2.0.

27. Delete C:\GLUT\GLUT-2.0 and C:\Program Files\Haskell\GLUT-2.0

28. Unzip the Haskell GLUT library into C:\GLUT; this creates the
   folder C:\GLUT\GLUT-2.0.

29. Start MSYS using the desktop shortcut installed in step 15.

30. Execute the following commands in the MSYS shell.
 $ cd /c/GLUT/GLUT-2.0/

 $ runghc Setup.hs configure

 $ runghc Setup.hs build
Warning: resolving [EMAIL PROTECTED] by linking to _hs_GLUT_getProcAddress
Use --enable-stdcall-fixup to disable these warnings
Use --disable-stdcall-fixup to disable these fixups

 $ runghc Setup.hs install
Installing: C:\Program Files\Haskell\GLUT-2.0\ghc-6.6.1 & C:\Program Files\Haskell\bin GLUT-2.0...
Registering GLUT-2.0...
Reading package info from ".installed-pkg-config" ... done.
Saving old package config file... done.
Writing new package config file... done.

31. Try to run the modified RotatingCubes example [7] again.

C:\RotatingCube>ghci RotatingCube.lhs
  ___         ___ _
 / _ \ /\  /\/ __(_)
/ /_\// /_/ / /  | |      GHC Interactive, version 6.6.1, for Haskell 98.
/ /_\\/ __  / /___| |      http://www.haskell.org/ghc/
\____/\/ /_/\____/|_|      Type :? for help.

Loading package base ... linking ... done.
[1 of 1] Compiling Main             ( RotatingCube.lhs, interpreted )

RotatingCube.lhs:4:1:
   Bad interface file: C:/ghc/GHC-66~1.1\imports/Graphics/UI/GLUT.hi
Something is amiss; requested module GLUT-2.1.1:Graphics.UI.GLUT differ
s from name found in the interface file GLUT-2.0:Graphics.UI.GLUT
Failed, modules loaded: none.
Prelude> :q
Leaving GHCi.

32. Give up and beg for help :)

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to