-
Notifications
You must be signed in to change notification settings - Fork 130
WindowsPerl5.12
This page describes the work required to port Misterhouse to run under Activestate Perl 5.12. Hopefully this page will be useful for Windows porting in the future. Disclaimer: I did not test very many of the features of Misterhouse and had only a handful of the common code files enabled. Please update this page if you find more issues that need to be resolved.
I made a basic install of the Activestate Perl 5.12 and didn't install any other packages http://www.activestate.com/activeperl/versions
code format="perl" Index: bin/mh
--- bin/mh (revision 1970) +++ bin/mh (working copy) @@ -192,9 +192,12 @@
elsif ($build < 800) { push @INC, "${Pgm_Path}/../lib/site_win56"; }
- else { + elsif ($build < 900) {
push @INC, "${Pgm_Path}/../lib/site_win58"; }
+ elsif ($build < 1300 and
} require 'handy_utilities.pl'; }
The versions of Win32::Registry and Win32API::Registry installed in the ./lib/site directory are too old for modules in Activestate Perl 5.12 and Win32::setupsup. These files were moved from ./lib/site to each of the existing ./lib/site_winXX directories for backwards compatibility. The affected files are: code format="bash" lib/site/Win32API/Registry.pm lib/site/Win32API/Registry lib/site/Win32API/Registry/cRegistry.pc lib/site/Win32/Registry.pm code
Activestate is no longer providing the Win32::setupsup package. I'm not sure why but it might be because there are compile errors. I decided to build it from CPAN and then create a ./lib/site_win512 folder in the repository so others will be spared. I have the instructions here for future builds on new Perl releases.
This is a real pain because setupsup will not compile with gcc and I don't own Visual Studio C++. However I did figure out how to compile under VS C++ Express with a "trick" to over come features missing from the Express version. Primarily MFC is not supported and this required a bit of trickery. Steps:
- Download and install VS C++ Express (I used Version 2010)
- Open the Visual Studio Command Prompt
- Now for the VS Express trick
- Prepare the installation directory in the MH code base
- Run cpan and download "but don't make" the setupsup package
- cd in to the cpan build directory:
- Apply the diff to setupsup.cpp if needed.
- Create the Makefile specifying a custom install dir
Oracle has really FUBARed the Berkeley DB by changing the license so that it is no longer compatible with Perl. Because of this Activestate will not provide a PPM for it. I'm not sure if we can distribute the compiled DB_File once it is linked to libdb because MH has the same incompatible license as Perl. So.... I didn't add these files to the repository, rather I built and installed them in my Activestate path. At a minimum we may need to make users go through this when installing the first time. We should also consider ripping DBM support out of MH replacing it with SQLite (DBD::SQLite and Tie::Hash::DBD); both are available from Activestate and CPAN. Install DB_File on Strawberry Perl - This is not exactly what I did but I based my process on it with some adaptions for ActiveState and CPAN.
- Find, download and install the Berkeley DB db-4.3.29 from Oracle
- Open a standard command prompt
- Run cpan and download "but don't make" the DB_File package
- cd in to the cpan build directory:
- Edit the config.in file adding correct paths and lib name
- Apply patch to C:\Program Files\Sleepycat Software\Berkeley DB 4.3.29\include\db.h
- Make and Install the Package
- Now we have a choice:
- Windows CPU and task mnoitor
- Out of environment space
config.sys: shell=command.com /e:8000 /p
autoexec.bat: set comspec=c:\command.com