summaryrefslogtreecommitdiff
path: root/Master/source/tlperl/tlperl.README
blob: 1138b3f2bddc3cdf89b7d90a43b9dbbebd3afca4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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