Friday, July 21, 2017

Compiling FSV - the Jurassic Park program - on Windows 10 with MSYS2

Download the Source Code From https://github.com/genbtc/fsv/archive/master.zip
Github Repository @ https://github.com/genbtc/fsv
If this is what you are going after: http://fsv.sourceforge.net/screenshots/
You came to the right place.

Compiling FSV (File System Visualizer) for Windows takes a bit of effort. This is the tutorial. You need to set up the "MSYS2" development environment, which you can consider similar to Cygwin, if you dont know, it basically sets up a linux environment, and entire filesystem, with windows compatible .exe's compiled of everything, on your Windows machine under a subdirectory like C:\Software\MSYS32

INSTRUCTIONS:
STEP 1 - MSYS

On my machine, I dont like making too many root folders, so I make a C:\Software or C:\Code or whatever name, to put all my dev environment stuff in. Dont make the name too long and MAKE SURE IT DOESNT HAVE SPACES.

Download this version of MSYS2: msys2-i686-20161025.exe (its the latest 32 bit version)
It is available from sourceforge. https://sourceforge.net/projects/msys2/files/Base/i686/msys2-i686-20161025.exe/download

Install it, Pointing the installer to your C:\Software\MSYS32 directory.

We want the "launch after install" button when its done. (otherwise launch it from "C:\Software\msys32\mingw32.exe")
Note: the terminology MSYS, MSYS2, MSYS32 are all the same thing.
Note: However, now we want mingw32.exe (gray icon) don't confuse it with msys2.exe (purple icon)
You should now have this running:

Note: The following commands start with $ to indicate its a command at a command prompt. Dont retype it...

$ pacman -Syu

Hit enter to install the updates. After its done, it asks you to terminate it but you have to click the X until End Process shows and force end it. Also make sure pacman.exe is not running in task manager. Close it if it is.
Note: This requires internet access. If you are using Windows Firewall, you are going to want to disable it during the process because theres just too many .exe's that needs access to manually allow all of them. Dont get stuck on this step trying to do that...

Once again, open back up the MINGW32 shell ("C:\Software\msys32\mingw32.exe") and run the same command again:

$ pacman -Syu

Continue Installing Stuff, these are development packages:

$ pacman -S base-devel unzip mingw-w64-i686-toolchain mingw-w64-i686-gtk2 mingw-w64-i686-freeglut mingw-w64-i686-gtkglext

It will ask you some things, use the default, just press enter each time. Then it will take a while.
base-devel = provides autoconf/automake/pkg-config/tons of stuff.
toolchain = provides GCC,G++ stuff to compile.
GTK2 = a pre-requisite for the user interface (window dressings, menus etc).
Freeglut = an open source version of GLUT which is an API to OpenGL.
GTKGLext = the OpenGL extensions for GTK which we also need.

INSTRUCTIONS:
STEP 2 - Source Code

Download the Source Code From https://github.com/genbtc/fsv/archive/master.zip
(It has to be my repository, because that is where the changes for the Win32 port are)
Extract the FSV source code .zip file from github to your Home dir @ C:\Software\msys32\home\...\ so it lives in C:\Software\msys32\home\...\fsv-master\ (where ... is your username) and has the src/ subdirectory underneath.
Note: the screenshots show fsv-orig (but yours can be fsv-master or fsv)

STEP 2a - Compiling the source code of a gtkglarea-release (pre-req)
Execute the following:
Extract the source of gtkglarea-release-2-0-0.zip to gtkglarea-release-2-0-0 by typing:

$ cd fsv
$ unzip gtkglarea-release-2-0-0.zip

This package provides the required source and the library, and is not available through pacman, so I have provided it in original unmodified form.

Execute the following:

$ cd gtk[TAB](to tab complete)[ENTER]
$ ./autogen.sh

It will run, auto-generate, and auto-execute the configure script for you.
You should see this now:


$ make

You will see a whole ton of stuff scrolling past, this is the actual compiler GCC being run on all the source files. It shows some errors about libtool, but no problem.


$ make install

This will copy the files outputted from "make": libgtkgl-2.0-1.dll and libgtkgl-2.0.a (the linux version of a .dll) to a linux system-wide directory (I could have just provided this file but you wanted to compile stuff)



$ cd ../
$ ./autogen.sh

autogen.sh is the program that checks the autoconf file (configure.ac) and automake file (Makefile.am) input files and parses them into a ./configure script and ./Makefile script
You should see this now:


Execute the configure script.

$ ./configure



If this produces some kind of error, instead of ending happily, refer to Troubleshooting Error #1 below.


$ make



It will compile a ton of stuff, and then end unceremoniously.
But its done now! Now you can install the program by typing:

$ cp fsv.exe /mingw32/bin/

And run the program by typing:
$ fsv







Note: Errors? Read Troubleshooting Below.

Troubleshooting:
ERROR 1:

You did not compile or install the gtkglarea-release-2-0-0.zip properly. Re-read the instructions.
As a last resort, you can override that check by removing the word gtkgl-2.0 from "C:\Software\fsv\configure.ac" (find and delete only that word) and rerunning ./autogen.sh and rerunning ./configure. HOWEVER since you need this package to continue, I doubt that will help.

ERROR2:

                                      OR
ERROR3:

If it says the libgtkgl-2.0-1.dll is missing or you receive the message: " The procedure entry point g_malloc_n could not be located in the dynamic link library C:\..\libgtkgl-2.0-1.dll "
Make sure you place your fsv.exe INSIDE the MSYS binary dll directory (ex: C:\Software\msys32\mingw32\bin\ )
Then you can just make a shortcut to it, and run that.
Alternatively, you can add this C:\Software\msys32\mingw32\bin\ directory to your system environment PATH variable, in System settings as shown:

Alternate to this, you can also create a launcher .bat file. such as "LaunchFSV.bat",  file as a launcher. This sets the required Windows' System Environment "PATH" variable. When you are inside MSYS, it sets the PATH for you, so you can launch it from there no problem by typing ./fsv or ./fsv.exe , But when you try to launch it from Windows, you get libgtkgl-2.0-1.dll errors because it cannot find the all the .dlls we installed through MSYS (in addition to that specific one).
LaunchFSV.bat
PATH=%PATH%;C:/Software/msys32/mingw32/bin;./;
start fsv.exe


ERROR 4:
Disregard this error. It has no impact on the final outcome, and can safely be ignored.

ERROR 5:
You downloaded the source from the wrong repository. You need the genBTC repository (mine), because that is where the win32 fork changes are located. https://github.com/genbtc/fsv and https://github.com/genbtc/fsv/archive/master.zip
OTHER ERRORS NOT LISTED:
Report any bugs on the github repo. Everything will be handled through Github.

Using FSV:
It takes a CONSIDERABLE amount of time for the program to traverse the entire directory structure, (at anywhere from 300-6000 per second) and it does not display much until it does. For your first run, you should point it to a folder with a small amount of files and subdirectories.  FSV.exe takes path arguments, and the bat file does too, so you can put the .BAT file in your Windows SendTo folder, and then right click any directory and Send To LaunchFSV.bat, and it will launch starting in that dir.


Theres a bug in the "Change Root" command, 
You have to delete everything in the bottom text box, THEN click OK, for it to work. It will open to what it says in: "Selection". If you fail to do this, it will just rescan whatever dir you're in, and that sucks. I will work on fixing this soon.

SCREENSHOTS:

This is how it looks in Tree View:
This is how it looks in Map View:
This is how it looks in Disc View (very experimental):


Enjoy. I have not done anything significant enough to claim a copyright on this project, please refer to the original owner's repository and license documentation @ https://github.com/mcuelenaere/fsv

1 comment:

Blogger said...

Are you sick from looking for bitcoin faucets?
Triple your claiming speed with this new BITCOIN FAUCET ROTATOR.