summaryrefslogtreecommitdiff
path: root/Master/source/tlperl/tlperl.README
diff options
context:
space:
mode:
Diffstat (limited to 'Master/source/tlperl/tlperl.README')
-rw-r--r--Master/source/tlperl/tlperl.README241
1 files changed, 141 insertions, 100 deletions
diff --git a/Master/source/tlperl/tlperl.README b/Master/source/tlperl/tlperl.README
index 774f5c418a6..a56c80b5a42 100644
--- a/Master/source/tlperl/tlperl.README
+++ b/Master/source/tlperl/tlperl.README
@@ -1,4 +1,4 @@
-NOTES ON BUILDING TLPERL 2012 November update
+NOTES ON BUILDING TLPERL 2015
BUILD PLATFORM
@@ -7,31 +7,67 @@ Linux.
GETTING THE PERL SOURCE
-Release version:
-I downloaded from CPAN: the latest stable Perl source 5.18.2
+I downloaded the latest stable Perl source 5.20.2 from CPAN.
THE COMPILER
-I found in the root of the distribution a file README.win32
-containing compilation instructions, which listed both mingw32 from
-mingw.org and the newer mingw64 from mingw-w64.sf.net as possible
-compilers, the latter one also being packaged with Strawberry
-Perl. I used this bundled mingw, but not the rest on SP. It includes
-dmake.
+The file README.win32 in the root of the distribution contains
+compilation instructions, which lists various supported MinGW
+distributions, including a trimmed-down version of MinGW64 offered
+by the Strawberry Perl project. I unzipped
+mingw64-w32-gcc4.8.3_20140727.zip from
+http://strawberryperl.com/package/kmx/32_gcctoolchain/ and
+32bit_dmake-4.12.2-bin_20140810.zip from
+http://strawberryperl.com/package/kmx/32_tools/
-BUILDING
+This MinGW compiler does not require installation; it is sufficient
+to prepend <root>\bin to the searchpath before use.
+
+BUILDING PERL
I went to the win32 subdirectory of the Perl source. In makefile.mk
I adjusted relevant settings to my build environment. As in the
-previous release, I turned off optimization to avoid some
-intractable failures. In addition, to avoid some errors while
-running the test suite, I applied a patch which I found at
-https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-perl/perl-5.18.0-add-missing-mingw-libs.patch
+previous release, I turned off optimization in the hope to avoid
+some intractable failures:
-*** makefile.mk.orig 2014-01-06 23:46:46.000000000 +0100
---- makefile.mk 2014-04-22 14:51:45.000000000 +0200
+*** makefile.mk.orig 2015-01-28 22:08:46.000000000 +0100
+--- makefile.mk 2015-04-24 14:02:38.037487500 +0200
+***************
+*** 27,33 ****
+ # newly built perl.
+ #
+ INST_DRV *= c:
+! INST_TOP *= $(INST_DRV)\perl
+
+ #
+ # Uncomment if you want to build a 32-bit Perl using a 32-bit compiler
+--- 27,33 ----
+ # newly built perl.
+ #
+ INST_DRV *= c:
+! INST_TOP *= $(INST_DRV)\tlperl
+
+ #
+ # Uncomment if you want to build a 32-bit Perl using a 32-bit compiler
***************
-*** 187,193 ****
+*** 144,150 ****
+ # If you are using GCC, 4.3 or later by default we add the -fwrapv option.
+ # See https://rt.perl.org/Ticket/Display.html?id=121505
+ #
+! #GCCWRAPV *= define
+
+ #
+ # If you are using Intel C++ Compiler uncomment this
+--- 144,150 ----
+ # If you are using GCC, 4.3 or later by default we add the -fwrapv option.
+ # See https://rt.perl.org/Ticket/Display.html?id=121505
+ #
+! GCCWRAPV *= define
+
+ #
+ # If you are using Intel C++ Compiler uncomment this
+***************
+*** 209,215 ****
# not be quoted)
#
.IF "$(CCTYPE)" == "GCC"
@@ -39,42 +75,37 @@ https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-perl/perl-5.18.0
.ELSE
CCHOME *= $(MSVCDIR)
.ENDIF
---- 187,193 ----
+--- 209,215 ----
# not be quoted)
#
.IF "$(CCTYPE)" == "GCC"
-! CCHOME *= x:\strawberry\c
+! CCHOME *= X:\mingw
.ELSE
CCHOME *= $(MSVCDIR)
.ENDIF
***************
-*** 434,440 ****
- OPTIMIZE = -g -O2 -DDEBUGGING
+*** 465,474 ****
+ -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
+
+ .IF "$(CFG)" == "Debug"
+! OPTIMIZE = -g -O2 -DDEBUGGING
LINK_DBG = -g
.ELSE
! OPTIMIZE = -s -O2
LINK_DBG = -s
.ENDIF
---- 434,440 ----
- OPTIMIZE = -g -O2 -DDEBUGGING
+--- 465,474 ----
+ -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
+
+ .IF "$(CFG)" == "Debug"
+! OPTIMIZE = -g -O0 -DDEBUGGING
LINK_DBG = -g
.ELSE
! OPTIMIZE = -s -O0
LINK_DBG = -s
.ENDIF
-
-***************
-*** 1505,1510 ****
---- 1505,1512 ----
- if exist $(CCDLLDIR)\libgcc_s_sjlj-1.dll $(XCOPY) $(CCDLLDIR)\libgcc_s_sjlj-1.dll ..\t\$(NULL)
- if exist $(CCDLLDIR)\libgcc_s_dw2-1.dll $(XCOPY) $(CCDLLDIR)\libgcc_s_dw2-1.dll ..\t\$(NULL)
- if exist $(CCDLLDIR)\libstdc++-6.dll $(XCOPY) $(CCDLLDIR)\libstdc++-6.dll ..\t\$(NULL)
-+ if exist $(CCDLLDIR)\libwinpthread-1.dll $(XCOPY) $(CCDLLDIR)\libwinpthread-1.dll ..\t\$(NULL)
-+ if exist $(CCDLLDIR)\libgcc_s_seh-1.dll $(XCOPY) $(CCDLLDIR)\libgcc_s_seh-1.dll ..\t\$(NULL)
- .ENDIF
-
- test : test-prep
+
[end of patch]
I compiled with
@@ -87,6 +118,70 @@ and installed with
`installbare' omits the generation of html.
+INSTALLING MODULES
+
+When adding modules, I added the new Perl bin directory to the
+searchpath. I downloaded all the modules from CPAN and added them with
+
+ perl Makefile.PL && dmake && dmake test && dmake install
+
+They are, in order of processing:
+
+Math::Int64 0.52
+IO::String 1.08
+Digest::SHA1 2.13
+File::Which 1.16
+Encode::compat 0.07
+Encode::Locale 1.04
+
+Windows-specific:
+
+Win32::API 0.80
+Win32::WinError 0.04 (just copying WinError.pm to lib/Win32)
+Win32API::Registry 0.33
+Win32::Console 0.10
+Win32::TieRegistry 0.29 (errors in testing, as always)
+Win32::Shortcut 0.08
+Win32::OLE 0.1712 - warnings
+
+LWP and dependencies, in order of compilation/installation:
+
+Socket 2.018
+Date::Parse 2.30 (file TimeDate-2.30.tar.gz)
+HTTP::Date 6.02
+File::Listing 6.04
+IO::HTML 1.001
+LWP::MediaTypes 6.02
+URI 1.67
+HTTP::Message 6.06
+HTML::Tagset 3.20
+HTML::Parser 3.71
+WWW::RobotRules 6.02
+HTTP::Negotiate 6.01
+Net::HTTP 6.07
+Mozilla::CA 20141217
+HTTP::Daemon 6.01
+HTTP::Cookies 6.01
+LWP 6.13 (file libwww-perl-6.13.tar.gz)
+
+Perl/Tk:
+
+Tk 804.033
+
+This module did not compile rightaway.
+
+1. In Tk-804.033/PNG/zlib/win32/zlib.def I had to remove the LIBRARY
+line at the start. I also removed - maybe unnecessarily - the lines
+starting with `;'.
+
+2. An entry '-limm32' somehow did not make it into LDLOADLIBS in the
+generated makefile. After manually adding this at the end of the
+LDLOADLIBS definition, the module compiled.
+
+Tk-DirSelect 1.12
+
+MAKING PERL PORTABLE
+
There were hard-coded paths in lib/Config.pm and
lib/Config_heavy.pl, which were likely to cause problems.
@@ -109,87 +204,33 @@ EOVIRTUAL.
The original versions are still present under the names Config.pm.orig
and Config_heavy.pl.orig.
-When adding modules, I added the new Perl bin directory to the
-searchpath. I downloaded all the modules from CPAN and added them with
-
- perl Makefile.PL
- dmake
- dmake install
-
-They are, in order of processing:
-
- Math-Int64-0.30.tar.gz
-
-Windows-specific:
-
- Win32-API-0.77.tar.gz
- Win32API-Registry-0.32.tar.gz
- Win32-TieRegistry-0.26.tar.gz
- Win32-Shortcut-0.08.tar.gz
- Win32-Process-Info-1.020.tar.gz
- Win32-OLE-0.1711.tar.gz - warnings
-
-Perl/Tk:
-
- Tk-804.032.tar.gz
-
-This module did not compile rightaway: an entry '-limm32' somehow
-did not make it into LDLOADLIBS in the generated makefile. After
-manually adding this at the end of the definition, the module
-compiled.
-
- Tk-DirSelect-1.12.tar.gz
-
-LWP and dependencies, in order of compilation/installation:
-
- HTML-Tagset-3.20.tar.gz
- HTML-Parser-3.71.tar.gz
- URI-1.60.tar.gz
- Encode-Locale-1.03.tar.gz
- HTTP-Date-6.02.tar.gz
- File-Listing-6.04.tar.gz
- LWP-MediaTypes-6.02.tar.gz
- IO-HTML-1.00.tar.gz
- HTTP-Message-6.06.tar.gz
- HTTP-Cookies-6.01.tar.gz
- HTTP-Daemon-6.01.tar.gz
- HTTP-Negotiate-6.01.tar.gz
- Net-HTTP-6.06.tar.gz
- WWW-RobotRules-6.02.tar.gz
- LWP-Protocol-https-6.06.tar.gz
- libwww-perl-6.06.tar.gz
-
-Other:
-
- IO-String-1.08.tar.gz
- Digest-SHA1-2.13.tar.gz (for 3rd-party scripts)
-
MODIFICATIONS FOR TEXLIVE
- as explained above: our versions of lib/Config.pm and lib/Config_heavy.pl
compute the location of tlperl dynamically.
- The site/lib subdirectory is folded into lib.
+- The lib/pods directory has been removed.
- 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_sjlj_1.dll, libstdc++-6.dll, libpng16-16_.dll and.
+ libgcc_s_sjlj_1.dll, libstdc++-6.dll and libwinpthread-1.dll
TESTING WITH TEXLIVE
For testing the new Perl with the installer, I unpacked the net
installer and replaced its tlperl with the new one.
-For testing the new Perl with the installed TeX Live, I copied it
-into the fresh installation.
-
-Both tests with 32-bits Windows XP Enterprise as regular user and
-64-bits Windows 7 Professional as admin user.
+For testing the new Perl with tlmgr-gui.exe from the installed TeX
+Live, I copied it into the fresh installation.
-These tests do not require a for perl updated texlive.tlpdb.
+Both tests were done with 32-bits Windows 7 Home Premium as regular
+user and 64-bits Windows 8 Professional as admin user.
-tlmgr appeared to work as intended. I also successfully ran
-the uninstaller.
+tlmgr-gui appeared to work as intended. I also successfully ran the
+uninstaller. However, later there turned out to be a transient
+problem with updating tlperl, whose update coincided with a tlmgr
+update.
Siep Kroonenberg
-Last revision: April 23 2014
+Last revision: May 5 2015