update information about giflib bugs
[imager.git] / README
1 ================================================================
2 Copyright (c) 1999-2001 Arnar M. Hrafnkelsson. All rights reserved.
3 Copyright (c) 2004 Anthony Cook.
4 This program is free software; you can redistribute it and/or
5 modify it under the same terms as Perl itself.
6 ================================================================
7
8 >> THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY WHATSOEVER <<
9 If you like or hate Imager, please let us know by sending mail 
10 to imager@imager.perl.org
11
12 ================================================================
13
14
15 ========================
16 1. Patent infringements?
17 ========================
18
19 Imager as such contains no patented algorithms.  The external
20 libraries (which are not written by me) may or may not contain
21 patented algorithms.  YOU ARE SOLELY RESPONSIBLE FOR OBTAINING
22 LICENSE(S) TO USE SUCH LIBRARIES SHOULD YOU NEED ANY.
23
24
25 ========================
26 2. Compiling and testing
27 ========================
28
29 Some care has been taken to make the installation as smooth as
30 possible.  This is rather hard due to the difference between operating
31 systems and site setups.  To get started just type
32
33 $ perl Makefile.PL
34
35 It should blurb out a list of which libraries were found and which
36 not.  If you add a library to the machine after installing Imager it
37 does not automatically become available in Imager.  It only uses the
38 libraries that are found.  If the list of found libraries is not what
39 you expected, then the Makefile.PL is either not searching in the
40 right directories or your box does not have the libraries you think it
41 does.  For a list of where to get the libraries have a look at
42 3. External dependencies.  To widen the search path for libraries and
43 include files set the IM_INCPATH and IM_LIBPATH variables.  The
44 environment variables that matter when Makefile.PL is run are
45
46 IM_INCPATH      colon separated list of paths to extra include files
47 IM_LIBPATH      colon separated list of paths to extra library files
48
49 IM_VERBOSE      turns on verbose mode for the library scanning and such
50 IM_MANUAL       to manually select which libraries are used and which not
51 IM_NOLOG        if true logging will not be compiled into the module
52 IM_DEBUG_MALLOC if true malloc debugging will be compiled into the module
53                 do not use IM_DEBUG_MALLOC in production - this slows
54                 everything down
55
56 IM_CFLAGS       Extra flags to pass to the compiler
57 IM_LFLAGS       Extra flags to pass to the linker
58 IM_DFLAGS       Extra flags to pass to the preprocessor
59
60
61
62 When finding the libraries has been sorted out it's time for
63
64 $ make 
65
66 and if that works then do
67
68 $ make test
69
70 If either fails do take a peek at the file errep.perl.  It's creates a
71 file report.txt.  This is some information which will help me discover
72 where the problem is so I can try to fix it in future releases.  If
73 you find running it ok (just remember - no warranty!) please send the
74 report.txt via email to addi@umich.edu .
75
76 Troubleshooting tips:
77
78 A common problem is that libgif/libungif are sometimes linked to the X
79 libraries and then running the tests fails.  In that case something
80 like:
81
82 $ IM_LFLAGS="-L/usr/X11R6/lib -lX11" perl Makefile.PL
83
84 Which simply sets the environment variables for the extra libraries 
85 to include the X libraries (which we do not use at all, but must
86 included since libgif has been linked with it).
87
88 Otherwise you could just build giflib without any X11 dependencies:
89
90   # must be a clean tree
91   cd giflib-4.1.0
92   ./configure --without-x ...
93
94 Also note that libgif has a few bugs: You can run something like
95
96 $ perl -Iblib/lib -Iblib/arch t/t105gif.t
97
98 This way you can see what comments the test script prints out.
99 t/t105gif.t checks for an bug in libgif and prints out a patch
100 if that bug is present, note that this bug only affects the more
101 "advanced" features of libgif.
102
103 If for some reason you have libungif-devel package installed but
104 not libungif on RedHat then you will probably get lots of errors
105 like undefined symbol: FreeSavedImages when running make test.
106 Install libungif package to fix it.
107
108 Stock libungif 4.1.2 or later seems to fix all of the bugs, if you
109 have a problem that version of linungif (or later), let us know and
110 we'll look into it.
111
112 Imager needs to have a libtiff version of at least 3.5.5.  In the
113 future we might consider supporting older libtiff versions.  For
114 now you can either configure Imager manually (by
115 setting the IM_MANUAL environment variable to 1, in sh:
116
117 $ IM_MANUAL=1 perl Makefile.PL
118
119 and simply say no to tiff support when asked if you want it, the same thing
120 can be used to circumvent problems in gifs to get Imager going.
121
122
123 If it worked just continue with the installation as normally 
124 (with make install).
125
126 ========================
127 3. External dependencies
128 ========================
129
130 Some hints about getting the Imager module to find the libraries it
131 needs for specific features.  The libraries it uses are:
132
133  jpeg: http://www.ijg.org/files/
134        ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
135
136 ftp.uu.net is still linked from many places, including the Independent
137 JPEG Groups's home page, but it is non-functional.
138
139   png: http://www.libpng.org/pub/png/libpng.html
140
141   you also need zlib to use png:  http://www.gzip.org/zlib/
142 We have encountered problems with libpng 1.0.1, which were fixed in 1.0.5
143 Note: you should probably be using zlib 1.1.4, since 1.1.3 has a 
144 potential security problem.
145
146   gif: http://sourceforge.net/projects/libungif
147
148 giflib/libungif has come a long way since the buggy versions around
149 when Imager's gif support code was written.  Preferably you should get
150 at least version 4.1.3.  If you have a recent Linux distribution you
151 should be safe with whatever giflib it provides, but if you're
152 building from source, please try to use the latest version.
153
154 If you download giflib (as opposed to libungif) 4.1.3 from
155 sourceforge, make sure you apply the patch referenced at:
156
157 https://sourceforge.net/tracker/index.php?func=detail&aid=981255&group_id=102202&atid=631306
158
159 libungif 4.1.3 does not need this patch.
160
161 At the time of writing you will need to manually select to install the
162 4.1.2-1 of cygwin's libungif package.
163
164  tiff: http://www.libtiff.org/
165
166    t1: http://www.ibiblio.org/pub/Linux/libs/graphics/
167
168    tt: http://www.freetype.org/
169
170 Precompiled versions of some of the libraries might be found at:
171
172 AIX:
173    http://www.bullfreeware.com/
174
175
176
177 ========================
178 4. Logging and debugging
179 ========================
180
181 Logging is compiled in by default - if you should want to get of it
182 from the binaries you can do so by setting the env IMAGER_NOLOG 
183 to something. If you want to enable malloc debugging to check for leaks
184 then set IMAGER_DEBUG_MALLOC to something.  Needless to say it is
185 pretty pointless to have malloc debug enabled with no logging since you 
186 can never see the malloc information that way.
187
188
189 =================
190 5. Win32 Support
191 =================
192
193 Imager can be installed on Win32 systems.  This was ported and tested
194 with Microsoft Visual C++ 6.0 with build 623 of ActivePerl.  You can
195 use all of the features of Imager.  You can also use Win32 GDI fonts
196 directly by supplying the 'face' parameter to Imager::Font->new(...).
197
198 I've tested with both MSVC++ 6.0 and cygwin (perl 5.6.1).
199
200 If you see an error under cygwin during testing along the lines of:
201
202   C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\...some dll to the 
203     same address as parent (0x...) != 0x....
204
205 you will need to install the cygwin rebase package and run:
206
207   $ rebaseall -v
208
209 Under cygwin you will need at least libungif 4.1.2 installed to
210 prevent lockups in the gif test scripts.  At the time of writing you
211 need to select libungif-4.1.2-1 manually in the setup.exe installation
212 tool.
213
214 If you have any problems with the Win32 support, please email
215 tony@develop-help.com (don't forget to use nmake instead of make).
216
217 =======================
218 6. General information
219 =======================
220
221 The Imager module homepage is currently at:
222
223  http://imager.perl.org/
224
225 The current docs are rather bad as I've been busy adding features
226 but hopefully they will be updated soon.  Until then you'll just
227 have to use the source. The test scripts might also be a good idea.
228 By activating the the #init_log lines in the test script you can get
229 rather verbose debugging output from the C code.
230
231
232 ========================
233 7. Thanks
234 ========================
235
236 Thanks go to:
237   Tony Cook           ( TonyC )
238   Claes Jacobson      ( Claes )
239   Philip Gwyn         ( Leolo )
240   Michael Slade       ( Micksa )
241                       ( Cogent )
242   Brad Murray         ( HalfJack )
243   Nicholas Dronen     ( Veblen )
244   Michael G Schwern   ( Schwern )
245   Rocco Caputo        ( Dngor )
246   Graham barr         ( Gbarr )
247   Mark-Jason Dominus  ( Mjd )
248   Jerome
249   Jason Alexander     ( Jalex )
250   Randal R. Schwartz  ( Merlyn )
251   Tkil                ( )
252   Artur Bergman       ( Sky )
253   Luc St-Louis        ( Lucs )
254   PerlJam             ( )
255   Roderick Schertler  ( Roderick )
256   Nathan Torkington   ( gnat )
257
258 (and just to play it safe) all those I forgot to mention.