NOTES ON BUILDING TLPERL 2011 BUILD PLATFORM 32-bits Windows XP Professional SP3 running under VirtualBox on Linux. The user is no administrator. GETTING THE PERL SOURCE I downloaded from CPAN: the latest stable Perl source 5.12.3 COLLECTING A NATIVE BUILD ENVIRONMENT I found in the root of the distribution a file README.win32 containing compilation instructions, which listed both the older mingw32 from mingw.org and the newer mingw64 from mingw-w64.sf.net as possible compilers. I downloaded and ran the automated downloader/installer x86-mingw32-build-1.0-sh.tar.bz2. I selected gcc, g++ and, probably unnecessarily, the MinGW developer toolkit. I skipped Fortran, Ada and Objective C. I added the mingw32 bin subdirectory to the searchpath. Based on the same README.win32 from the Perl source, I downloaded dmake-4.12-2009-SHAY.zip from http://search.cpan.org/dist/dmake. Following the file readme.txt in the root of this archive, I created a directory dmake somewhere and copied to it the file dmake.exe and the entire startup subdirectory. I also added the dmake directory to the searchpath. BUILDING I went to the win32 subdirectory of the Perl source. In makefile.mk I edited CCHOME to point to the root of my mingw installation: CCHOME *= X:\mingw32 and uncommented the lines GCC_4XX *= define GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_dw2-1.dll Then I typed dmake and dmake install These actions did not change the searchpath. If dmake tried to do so and failed then I missed it. No other symptoms of system integration either. However, there were hard-coded paths in lib/Config.pm and lib/Config_heavy.pl, which were likely to cause problems. I edited lib/Config.pm and lib/Config_heavy.pl to compute Perl's location dynamically. To both I add the code my $rootdir = __FILE__; $rootdir =~ s![\\/][^\\/]*[\\/][^\\/]*$!!; $rootdir =~ s!/!\\!g; and used this in Config.pm for the definition of %Config, taking care to replace single-quoted strings with double-quoted ones and escaping backslashes where necessary. Config_heavy.pl got a similar treatment: in single-quoted here-documents with markers !END! (very long) and EOVIRTUAL I replaced the hard-coded Perl paths. Because the $rootdir variable needed to be interpolated, I shifted from single- to double-quoting, which required escaping backslashes, existing dollar characters (e.g. in 'Id=$Id') and an `@'. No need to escape single- or double quotes. I left the hard-coded paths for the mingw compiler alone. The original versions are still present under the names Config.pmold and Config_heavy.plold. Diffs are here. To verify relocatability, I moved the tree elsewhere and added the bin directory of the new location to my searchpath. Next some Windows-specific modules and Tk. I downloaded from CPAN: Windows-specific: Win32-API-0.59.tar.gz Win32-Shortcut-0.07.tar.gz Win32API-Registry-0.32.tar.gz Win32-TieRegistry-0.26.tar.gz Perl/Tk: Tk-804.029.tar.gz LWP and dependencies: HTML-Tagset-Tagset-3.20.tar.gz HTML-Parser-3.68.tar.gz URI-1.58.tar.gz libwww-perl-5.837.tar.gz Support for third-party scripts in TeX Live: Digest-SHA1-2.13.tar.gz File-Which-1.09.tar.gz They were all configured, compiled and installed with perl Makefile.PL dmake dmake install Finally, for help in debugging: Carp-Always-0.09.tar.gz This can be installed the same way, but instead I placed Always.pm manually in lib/Carp/ By adding an option -MCarp::Always to the perl command-line you get a backtrace when your script dies with a fatal error. MODIFICATIONS FOR TEXLIVE - lib/Config.pm and lib/Config_heavy.pl now compute the location of tlperl dynamically; see above. - The html directory has been removed. - The site/lib subdirectory is folded into lib. - The bin subdirectory now only contains exe- and dll files. Batch files and Perl scripts have been removed. - Copied from mingw/bin to tlperl/bin: libgcc_s_dw2_1.dll and libstdc++-6.dll. TESTING WITH TEXLIVE For testing the new Perl with the installer, I did an advanced installation from the Master repository with the old tlperl replaced with the new one. The Master repository is on a network share. I selected scheme basic without source/doc but with format generation. A lot of complaints about missing Perl files (to be expected) but otherwise uneventful. For testing the new Perl with the installed TeX Live, I copied it into the fresh installation. tlmgr appeared to work as intended, both from the command-line and in gui mode, except that quitting took up to 20 seconds, but this does not seem to be specific to this Perl. I also successfully ran epstopdf, updmap-sys and the uninstaller. Siep Kroonenberg Last revision: May 11 2011