XDG Compliant user (early) packages tree.
[sxemacs] / PROBLEMS
1                                                   -*- mode:outline -*-
2
3 At the time of this release (SXEmacs 22.1.15), SXEmacs has the
4 following idiosyncrasies: 
5
6 * File Locations
7 ================
8
9 ** User init file (C-h v user-init-file)
10
11 SXEmacs looks for user init files in `user-init-directory'.  The
12 preferred directory is: ${XDG_CONFIG_HOME}/sxemacs but it can fall
13 back to the old ~/.sxemacs directory.
14
15 The search order is:
16
17     ${XDG_CONFIG_HOME}/sxemacs
18     ${HOME}/.config/sxemacs     # if $XDG_CONFIG_HOME is not set
19     ${HOME}/.sxemacs            # if other dirs don't exist
20
21 You can also force the use of ~/.sxemacs regardless of the existence
22 of the XDG dir/var by setting $SXE_USE_LEGACY environment variable to
23 a non-nil value.
24
25 If you're coming from XEmacs, symlinking your old ~/.xemacs directory
26 to a SXEmacs location should be enough to get you up and running:
27
28     $ ln -svfn ${HOME}/.xemacs ${XDG_CONFIG_HOME}/sxemacs
29
30 BTW, unlike XEmacs, SXEmacs doesn't attempt to "migrate" your old init
31 file or Gnu/Emacs .emacs file.
32
33 ** Packages Hierarchy
34
35 The default location that SXEmacs searches for packages is
36 `$prefix/share/sxemacs/'.  The same as for the user-init-file, a
37 symlink is all you need to get up and running.
38
39     $ ln -s /usr/local/lib/xemacs /usr/local/share/sxemacs RET
40
41
42 * Build Quirks
43 ==============
44
45 ** FFI
46
47 *** FFI is not included with your distro
48
49 Sadly, some Linux distributions (hello Fedora) don't ship a libffi
50 package, and their GCC does NOT include libffi or FFI headers either.
51 In this instance you have 2 options...
52
53   1) Get the standalone package of libffi at
54      <http://sourceware.org/libffi/>.
55
56   2) Compile your own GCC from source, making sure you enable the java
57      compiler.  Enabling java in your GCC build is the only way to get
58      libffi built.
59
60 Obviously, option #1 there is the easiest and quickest path to
61 FFI-enabled SXEmacsen, and it is the option that we recommend.
62
63 Oh, and please nag your distro to have FFI included by default.
64
65 *** FFI is included in your GCC but you see missing header errors
66
67 Often libffi headers aren't completely installed.  If you are getting
68 errors in effi.c that seem to be hinged from something like...
69
70   /usr/include/ffi.h:63:23: ffitarget.h: No such file or directory
71
72 You need to find `ffitarget.h' and put it in the same directory as
73 your `ffi.h'.  Your libffi came with GCC, so you'll find it within
74 your GCC directories:
75
76   $ dirname $(gcc -print-libgcc-file-name)
77 /usr/lib/gcc-lib/i586-pc-linux-gnu/3.3.1
78
79 Using that example, ffitarget.h would be in...
80
81   /usr/lib/gcc-lib/i586-pc-linux-gnu/3.3.1/libffi/
82
83 Just copy or symlink the ffitarget.h there to /usr/include
84
85 *** FFI on SELinux enabled machines
86
87 If you are running with SELinux enabled and configure fails with
88 messages like the following in `config.log'...
89
90   error while loading shared libraries: /usr/local/lib/libffi.so.1:
91   cannot restore segment prot after reloc: Permission denied
92
93 You need to correct the default security context for `libffi.so'.
94
95   $ chcon -t textrel_shlib_t /usr/local/lib/libffi.so
96
97 ** PostgreSQL
98
99 The autoconf tests for PostgreSQL support have changed.  SXEmacs'
100 configure script now uses `pg_config' to determine whether or not to
101 enable PostgreSQL.  Because of this you may have to set you $PATH
102 environment to include the pgsql bin directory.  It is normally
103 `/usr/local/pgsql/bin/'.  Another popular directory on Solaris 9 is
104 `/opt/crw/postgresql/bin/'.  Check with your site administrator.
105
106 Bash users can do it like this...
107
108   export PATH=/usr/local/pgsql/bin:$PATH
109
110 *** Solaris 9 with 64-bit PostgreSQL
111
112 There has also been a report that on Solaris 9 you may also need to
113 configure with `--with-cflags='-mcpu=ultrasparc -m64''.  Apparently
114 GCC on Solaris 9 defaults to building 32-bit, so you lose if you have
115 64-bit PostgreSQL.
116
117 ** 64-bit test suite failure
118
119 We have had a couple of reports of the test suite failing on 64-bit
120 systems.  The error is like this (or similar)...
121
122 Testing /usr/src/sxemacs/modules/ase/ase-heap-tests.el...
123 Loading ase_heap v0.0.0 (SXEmacs module: ase-heap)
124 Loaded module ase_heap v0.0.0 (SXEmacs module: ase-heap)Fatal error: assertion failed, file alloc.c, line 298, block != (void*)0xCAFEBABEDEADBEEF
125 make[3]: *** [check-am] Aborted
126
127 At this point we are not too sure exactly what the issue is.  It looks
128 like it might be a bug in the malloc or free code of the libc.  We do
129 know that not all 64-bit systems are affected, so far, only Fedora
130 Core 7, and Gentoo on x86_64.
131
132 One user has reported that using `-O1' in CFLAGS prevents it.
133
134 But even with this test failure, SXEmacs still runs and operates
135 without incident.  In fact, the failure can't be reproduced when
136 running the test suite interactively.  With that in mind, it should be
137 safe to install if you see this failure.
138
139 We'll endeavour to get to the bottom of this one ASAP, if you think
140 you can help, let us know.
141
142 ** m4, libtool, autoconf, automake, and whatnot
143
144 SXEmacs tries to cope with any combination of versions of the above
145 programs.  However, there is one lower bound, autoconf 2.60, and
146 unfortunately this has an impact on the other parts of the build
147 tools.
148
149 To cut it really short, here is the minimum known-to-work combination:
150 - autoconf 2.62, automake 1.9.6, libtool 1.5.22, m4 1.4.6
151
152 In general we support (as of April, 2010):
153 - autoconf >= 2.62, including current git versions
154 - automake 1.9.6, 1.10, 1.10a, 1.11.1, and current git versions
155 - libtool 1.5.N with N >= 22, libtool >= 2.1a (current CVS version)
156 - m4 1.4.M with M >= 6 plus current git versions
157
158 Note that many libtool packages shipped with the distros (OpenSuSE,
159 Debian, just to name two) are _broken_.  Make sure you compile
160 your own libtool in case you want to rerun autogen.sh or bootstrap
161 the build chain, and double check that you use --enable-ltdl-install
162 when doing so.
163
164 If you are on a platform that has its own _non_gnu libtool (like OS/X
165 Leopard) add --program-prefix=g to your gnu libtool configure so it
166 installs as glibtool and doesn't clobber your other one.
167
168 Sometimes it helps just to copy over the libtool script manually:
169 cp -a $(type -p libtool) ${top_builddir}
170
171 *** ylwrap fails with sed errors
172
173 Some versions of the ylwrap script provided by autotools uses commas
174 as separators in sed commands. As such if your build path uses commas
175 the ylwrap will fail. 
176
177 Sample message (where the build path was /Users/njsf/Projects/SXEmacs/nsx-up/,,mac):
178
179 /Users/njsf/Projects/SXEmacs/nsx-up/,,mac/lib-src/make-docfile --modname cl-loop -E cl-loop.doc.c ../../../modules/cl/cl-loop.c
180 /bin/sh ../../../ylwrap ../../../modules/cl/cl-loop-parser.y y.tab.c cl-loop-parser.c y.tab.h cl-loop-parser.h y.output
181 cl-loop-parser.output -- bison -y  -d
182 sed: 1: "s,/Users/njsf/Projects/ ...": bad flag in substitute command: 'm'
183 sed: 1: "s,/Users/njsf/Projects/ ...": bad flag in substitute command: 'm'
184
185 The workaround is to use a path without commas in it.
186
187
188 *** Missing libltdl.la (Solaris 2.8)
189
190 We've had a report that missing libtool on Solaris 2.8 isn't detected
191 and so the included libtool still isn't used.  If you see an error
192 about a missing libltdl.la all you need to do is configure SXEmacs
193 with... 
194
195   --with-included-ltdl
196
197 ** configure
198
199 *** configure on FreeBSD, NetBSD, OpenBSD, etc.
200
201 Building SXEmacs on *BSD as far as we know requires the GNU Bourne
202 Again SHell (bash) versions 3 or 4.
203
204 bash is available for all tier 1 architectures as a binary package and 
205 and for tier 2/3 as a port.
206
207 To run configure successfully...
208
209     CONFIG_SHELL=/path/to/bash $CONFIG_SHELL configure [option, ...]
210
211 *** configure on FreeBSD
212
213 Turning on the use of libssp and -fstack-protector from configure
214 ( --with-error-checking=stack ) will result in a broken build. 
215
216 Do not, under any circumstances, add -fstack-protector to CFLAGS, even 
217 independently of the stack error checking option. 
218
219 ** bdwgc and gcc and code optimisation
220
221 There are some weird optimisation issues with the Boehm-Demers-Weiser
222 garbage collector (hereafter BDWGC) and the GCC C compilers of the 2 and
223 3 series.  The build will crash like this:
224
225   Loading build-autoloads.el...
226   Loading loadup-el.el...
227   Loading loadup.el...make[3]: *** [auto-autoloads.el] Segmentation fault
228   (core dumped)
229   make[3]: Leaving directory
230
231 The C backtrace will look like:
232
233   #0  0xbff9a2f0 in ?? ()
234   #1  0xb7eaf7d6 in GC_invoke_finalizers () at finalize.c:787
235   #2  0xb7eaf8ed in GC_notify_or_invoke_finalizers () at finalize.c:844
236   #3  0xb7eb2c8c in GC_generic_malloc (lb=32, k=0) at malloc.c:190
237
238 If this is true for you, you may want to try another optimisation level:
239
240   ./configure CFLAGS="-g -O2"
241
242 If this still does not work out either dispense with BDWGC support or
243 use a recent C compiler.  ATTOW, all GCC 4.x compilers (including SVN)
244 should work.
245
246 ** ENT
247
248 ENT is basically a conglomerate of internally and externally implemented
249 arithmetics.  Hence it supports a number of libraries, some of which
250 overlap in their functionality, some others do not but then break at the
251 compatibility layer.
252
253 One of the most likely problems is the GMP vs. MPFR issue.  In past
254 times, mpfr (a multiprecision library for floats with exact rounding
255 facilities) has been a part of the GMP distribution.  Later on, mpfr got
256 separated from it and has been developed independently while the version
257 of mpfr which ships with GMP stayed the same.  Now that scenario is
258 exactly the problem.
259
260 Inattentive distributions (like Fedora) still deliver packages of GMP
261 with the old'n'incompatible mpfr library.  SXEmacs will disable the MPFR
262 support on such systems by default (at configure time).  However, if you
263 install a supported version of mpfr in parallel to the packaged ones on
264 such a system SXEmacs autodetection correctly reports that a sane
265 version of mpfr is available and enables it.  Nonetheless, the according
266 build may fail (or the build may even succeed but calling the binary may
267 fail), like this:
268
269 number-mpfr.o: In function `ent_lt_BIGFR_T':
270 /home/martin/src/edit/sxemacs-main/src/number-mpfr.c:661: undefined
271 reference to `mpfr_less_p'
272 number-mpfr.o: In function `ent_gt_BIGFR_T':
273 /home/martin/src/edit/sxemacs-main/src/number-mpfr.c:671: undefined
274 reference to `mpfr_greater_p'
275 ...
276
277 Especially note that we _only_ support the standalone version of MPFR,
278 and not the one distributed with GMP.
279
280 Solution:
281 ---------
282 Either:
283    Badger your distributor and demand separate packages for GMP and
284    MPFR.
285 Or:
286    Remove the GMP package and install your own build -- available at
287    http://swox.com/gmp -- afterwards install your own build of mpfr (the
288    one from http://www.mpfr.org)
289
290 Reconfigure and rebuild SXEmacs afterwards.
291
292
293 ** Build fails because of missing makeinfo
294
295 Install the GNU texinfo package on your system. You'll need at least
296 version 4.8.
297
298
299 ** MacOS X warns of a crash during configure
300
301 This is normal, as one of the tests made during configure (for the
302 realpath call correctness) induces as crash.
303
304 If you are developing SXEmacs and will do lots of runs of configure
305 and that dialog annoys you, consider issuing:
306
307     # Disable crash reporting
308     sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.plist
309     # Redo last configure
310     ./config.status --recheck 
311     # Enable crash reporting
312     sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.plist
313
314 Another alternative (not recommended) is to launch
315
316         /Developer/Applications/Utilities/CrashReporterPrefs
317
318 and configure the mode to server, but you will loose notifications of
319 crashes on all applications.
320
321 In order to give SXEmacs developers with good diagnosis information it
322 is recommended the mode be Developer.
323
324 ** OpenIndiana
325
326 SXEmacs does build and run on OpenIndiana (151a) but you will need to
327 install a few files/packages beforehand.  Namely...
328
329     Common Name             OpenIndiana Package Name
330
331         GCC                     gcc-3
332         GNU M4                  gnu-m4
333         automake                automake-110
334         autoconf                autoconf
335         libtool                 libtool (also install libltdl)
336         pkg-config              gettext
337         math.h                  header-math
338         bison                   bison
339         gmp                     gmp
340         mpfr                    mpfr
341
342 Yes, you read that right... to get pkg-config you must install the
343 "gettext" package. :-)
344
345 In that list, `bison', `gmp', and `mpfr' are not critical, but you
346 will get extra functionality in your SXEmacs if you have them.
347
348 *** automake additional instructions for OpenIndiana
349
350 When you install the automake-110 OpenIndiana package it won't set up
351 the symlinks to /usr/bin/automake or /usr/bin/aclocal.  Fix that
352 with...
353
354         sudo ln -sv automake-1.10 /usr/bin/automake
355         sudo ln -sv aclocal-1.10 /usr/bin/aclocal
356
357 *** Running SXEmacs configure on OpenIndiana
358
359 There's one more quirk with OpenIndiana when you try to run SXEmacs'
360 configure... you MUST set $CONFIG_SHELL
361
362              CONFIG_SHELL=/bin/bash ../configure [opts]
363
364
365 ** make does not stop on subdirectory build failure
366
367 Due to a bug in the make argument parsing in code generated by
368 autoconf it is possible for make not to stop when a subdirectory fails.
369
370 This failure occurs for instance when the make command line has a variable
371 assignment which has a value with a - and k. Example:
372
373 make CFLAGS="-Wall -fpacked -fpedantic" build-report
374
375
376 * XEmacs Packages
377 =================
378
379 We have identified 2 packages so far that don't work "out of the box"
380 with SXEmacs.  In both of these the problem is with parsing version
381 information.  Patches have been sent to the appropriate maintainer to
382 fix the problem and are included here in case the packages haven't
383 been updated by the time you install SXEmacs.
384
385 Update:  The EFS, and Dired XEmacs packages that are currently
386 available from the "Pre-Releases" area of XEmacs package mirrors are
387 both now compatible with SXEmacs and do not need the patches mentioned
388 here.
389
390 * Problems with running SXEmacs
391 ===============================
392
393 ** FFI Related
394
395 *** ffi-wand.el refuses to load.
396
397 Can't load library `libMagickWand': libgomp.so.1: shared object cannot be
398 dlopen()ed
399
400 If you get that error when trying to load ffi-wand, it is because you
401 have a ImageMagick that is using OpenMP (currently only svn HEAD).  To
402 fix this you will need to rebuild ImageMagick, making sure that you
403 configure it using --disable-openmp.
404
405 See: <http://issues.sxemacs.org/show_bug.cgi?id=104>
406
407 ** Multimedia Goodness
408
409 *** SXEmacs hangs or crashes during (init-asynchronousity).
410
411 This is most likely a known effect (we do not want to call it bug,
412 since there is no definite location) with certain (g)libc and kernel
413 combinations under Linux.  If it crashes analyse the core file, it
414 should look like this:
415
416 #0  0x4014ebc4 in __sigsuspend (set=0xbffffbb4) at 
417 ../sysdeps/unix/sysv/linux/sigsuspend.c:48
418 #1  0x40101b34 in __pthread_wait_for_restart_signal (self=0x401116e0) at 
419 pthread.c:786
420 #2  0x40101138 in __pthread_create_2_1 (thread=0x206f8dc, attr=0xbffffc58, 
421 start_routine=0x20043ac <console>, arg=0xbffffd88) at restart.h:26
422
423 A definite fault-prone setup is using kernel 2.6.x in conjunction with
424 glibc-2.1.1.
425
426 *** SXEmacs hangs or crashes before it ought to playback sound.
427
428 As before, this is most likely a suspicious (g)libc/kernel
429 combination.
430
431 *** SXEmacs dumps core when using the ALSA audio device
432
433 This has been reported to happen with old ALSA libraries (1.0.3 to be
434 precise).  At the moment it is uncertain at which version these
435 problems disappear (no developer wants to downgrade to a non-working
436 ALSA :D).  We highly suggest to use the version 1.0.10 and above, or
437 not use ALSA at all.
438
439 *** SXEmacs in async mode does not play simultaneous sounds with ALSA
440
441 This is due to missing (hardware-)mixing capabilities of your
442 soundcard.  There is a user-space plugin called dmix, which can
443 effectively circumvent this issue.
444
445 *** SXEmacs crashes when using state sentinels with asynchronous sounds
446
447 This is a known bug (#13 in our bug database).  At the moment the only
448 advise we can give is: do not use sentinels before 22.1.7.
449 Also see our bug database at http://issues.sxemacs.org
450
451 *** make-media-stream seems to recognise any file as valid audio
452
453 This is a known issue with fully-featured ffmpeg builds.  The current
454 code in SXEmacs blindly relies on FFmpeg when it reports a file or
455 string as valid audio.  There is no way to double-check that at the
456 moment.  However, you can perform the additional check yourself if
457 you have taglib installed.  Use the included ffi-taglib.el.
458
459
460 * Original XEmacs PROBLEMS File
461 ===============================
462
463 The original XEmacs PROBLEMS file may be found in the SXEmacs 
464 source distribution as PROBLEMS.XEmacs - while many issues mentioned
465 have since been fixed, it is preserved for posterity.