comparison PROBLEMS @ 448:3078fd1074e8 r21-2-39

Import from CVS: tag r21-2-39
author cvs
date Mon, 13 Aug 2007 11:38:25 +0200
parents abe6d1db359e
children 98528da0b7fc
comparison
equal deleted inserted replaced
447:4fc5f13f3bd3 448:3078fd1074e8
1256 compatible include files into the compilation. In particular this 1256 compatible include files into the compilation. In particular this
1257 affected virtually all ioctl() calls. 1257 affected virtually all ioctl() calls.
1258 1258
1259 1259
1260 ** Linux 1260 ** Linux
1261 *** Mandrake (all versions)
1262
1263 Cannot be fully supported by XEmacs developers because they insist on
1264 applying known broken patches.
1265
1266 One known issue is that on keyboards with both a Meta key (typically
1267 the Windows key on PCs) and an Alt key, XEmacs wants to bind the Meta
1268 modifier to the Meta key. Mandrake has a policy that XEmacs
1269 Meta-chords should use the Alt key, which they enforce by patching
1270 XEmacs's modifier-handling code, making the Meta and Alt modifiers
1271 synonymous. This will break planned upgrades to XEmacs to allow menu
1272 hotkeys; be warned. See next topic for how to implement Meta-on-Alt
1273 portably.
1274
1275 *** I want XEmacs to use the Alt key, not the XXX key, for Meta commands
1276
1277 For historical reasons, XEmacs looks for a Meta key, then an Alt key.
1278 It binds Meta commands to the X11 modifier bit attached to the first
1279 of these it finds. On PCs, the Windows key is often assigned the Meta
1280 bit, but many desktop environments go to great lengths to get all apps
1281 to use the Alt key, and reserve the Windows key to (sensibly enough)
1282 the window manager.
1283
1284 One correct way to implement this was suggested on comp.emacs.xemacs
1285 (by Kilian Foth and in more detail by Michael Piotrowski): unmap the
1286 Meta modifier using xmodmap or xkb, and then map the Meta/Windows key
1287 to the Super or Hyper modifier. XEmacs will not find the Meta keysym,
1288 and default to using the Alt key for Meta keybindings. Typically few
1289 applications use the (X11) Meta modifier (sawfish is one); it is
1290 tedious but not too much so to teach them to use Super instead of
1291 Meta. There may be further useful hints in the discussion of
1292 keymapping on non-Linux platforms.
1293
1261 *** You get crashes in a non-C locale with Linux GNU Libc 2.0. 1294 *** You get crashes in a non-C locale with Linux GNU Libc 2.0.
1262 1295
1263 Internationalization was not the top priority for GNU Libc 2.0. 1296 Internationalization was not the top priority for GNU Libc 2.0.
1264 As of this writing (1998-12-28) you may get crashes while running 1297 As of this writing (1998-12-28) you may get crashes while running
1265 XEmacs in a non-C locale. For example, `LC_ALL=en_US xemacs' crashes 1298 XEmacs in a non-C locale. For example, `LC_ALL=en_US xemacs' crashes
1283 XFree86 3.1.2 works. 1316 XFree86 3.1.2 works.
1284 1317
1285 *** Slow startup on Linux. 1318 *** Slow startup on Linux.
1286 1319
1287 People using systems based on the Linux kernel sometimes report that 1320 People using systems based on the Linux kernel sometimes report that
1288 startup takes 10 to 15 seconds longer than `usual'. 1321 startup takes 10 to 15 seconds longer than `usual'. There are two
1289 1322 problems, one older, one newer.
1290 This is because Emacs looks up the host name when it starts. 1323
1291 Normally, this takes negligible time; the extra delay is due to 1324 **** Old problem: IPv4 host lookup
1292 improper system configuration. This problem can occur for both 1325
1293 networked and non-networked machines. 1326 On older systems, this is because Emacs looks up the host name when it
1327 starts. Normally, this takes negligible time; the extra delay is due
1328 to improper system configuration. (Recent Linux distros usually have
1329 this configuration correct "out of the box".) This problem can occur
1330 for both networked and non-networked machines.
1294 1331
1295 Here is how to fix the configuration. It requires being root. 1332 Here is how to fix the configuration. It requires being root.
1296 1333
1297 **** Networked Case 1334 ***** Networked Case
1298 1335
1299 First, make sure the files `/etc/hosts' and `/etc/host.conf' both 1336 First, make sure the files `/etc/hosts' and `/etc/host.conf' both
1300 exist. The first line in the `/etc/hosts' file should look like this 1337 exist. The first line in the `/etc/hosts' file should look like this
1301 (replace HOSTNAME with your host name): 1338 (replace HOSTNAME with your host name):
1302 1339
1311 Any changes, permanent and temporary, to the host name should be 1348 Any changes, permanent and temporary, to the host name should be
1312 indicated in the `/etc/hosts' file, since it acts a limited local 1349 indicated in the `/etc/hosts' file, since it acts a limited local
1313 database of addresses and names (e.g., some SLIP connections 1350 database of addresses and names (e.g., some SLIP connections
1314 dynamically allocate ip addresses). 1351 dynamically allocate ip addresses).
1315 1352
1316 **** Non-Networked Case 1353 ***** Non-Networked Case
1317 1354
1318 The solution described in the networked case applies here as well. 1355 The solution described in the networked case applies here as well.
1319 However, if you never intend to network your machine, you can use a 1356 However, if you never intend to network your machine, you can use a
1320 simpler solution: create an empty `/etc/host.conf' file. The command 1357 simpler solution: create an empty `/etc/host.conf' file. The command
1321 `touch /etc/host.conf' suffices to create the file. The `/etc/hosts' 1358 `touch /etc/host.conf' suffices to create the file. The `/etc/hosts'
1322 file is not necessary with this approach. 1359 file is not necessary with this approach.
1360
1361 **** New problem: IPv6 CNAME lookup
1362
1363 A newer problem is due to XEmacs changing to use the modern
1364 getaddrinfo() interface from the older gethostbyname() interface. The
1365 solution above is insufficient, because getaddrinfo() by default tries
1366 to get IPv6 information for localhost. This always involves a dns
1367 lookup to get the CNAME, and the strategies above don't work. It then
1368 falls back to IPv4 behavior. This is good[tm]; trust us.
1369
1370 ***** Robust network case
1371
1372 Configure your network so that there are no nameservers configured
1373 until the network is actually running. getaddrinfo() will not try to
1374 access a nameserver that isn't configured.
1375
1376 ***** Flaky network case
1377
1378 If you have a flaky modem or DSL connection that can be relied on only
1379 to go down whenever you want to bring XEmacs up, you need to force
1380 IPv4 behavior. Explicitly setting DISPLAY=127.0.0.1:0.0 (or whatever
1381 is appropriate) works in most cases.
1382
1383 If you cannot or do not want to do that, you can hard code IPv4
1384 behavior in src/process-unix.c. This is bad[tm], on your own head be
1385 it. In the function unix_canonicalize_host_name() about ten lines
1386 down, change the statement
1387
1388 hints.ai_family = AF_UNSPEC;
1389
1390 to
1391
1392 hints.ai_family = PF_INET;
1393
1394 and rebuild XEmacs.
1395
1396 getaddrinfo() is also called in src/sysdep.c:init_system_name() and in
1397 src/process-unix.c:unix_open_network_stream(). It should not be
1398 useful to make this change in either of those places.
1323 1399
1324 1400
1325 ** IRIX 1401 ** IRIX
1326 *** On Irix, I don't see the toolbar icons and I'm getting lots of 1402 *** On Irix, I don't see the toolbar icons and I'm getting lots of
1327 entries in the warnings buffer. 1403 entries in the warnings buffer.