ID: | 869 |
From: | ge...@igor2.repo.hu |
Date: | Sun, 10 Sep 2017 08:31:34 +0200 (CEST) |
Subject: | [pcb-rnd] lesstif HID: should work everywhere, no more BadWindow |
Hi all, As of r11396, the lesstif HID should work on every system, with both lesstif and motif. If you can, please install the lesstif or motif devel package and reconfigure pcb-rnd so you can test the lesstif HID if needed. It's a good way to cross-check GUI bugs to decide whether it's gtk-specific or not. Boring details: The long standing bug was a rather tricky one to figure. I never experienced it on my main systems but only one box while other users/developers consistently reported it. I thought it was a motif version problem, maybe something changed recently and others use a too new or too old version compared to my system. Then I started to work on the attribute dialog upgrade and for some of the lesstif code I decided to set up a smallish test bench in work/ to try out ideas without having to compile and run pcb-rnd. And the minimal "hello world" test program immediately produced the same runtime error. I went on and copied the official test programs from motif and lesstif, and boom, the same error! That's when I started to investigate the build parameters. It turned out the order of linking must be -lXm _before_ -lXt. If the order is wrong, there is no link time error, but the misleading runtime error. And the difference between my systems and everyone else's? Opengl. I don't have it, so my link list had lesstif libs before gtk libs and within the lesstif lib link set the order is -lXm -lXt. With opengl, -lXt got on the list with opengl libs, way before lesstif, that's how we ended up with "-lXt <a_lot_of_other_stuff> -lXm -lXt", from which the second -lXt got removed as redundant. Solutuin: this is a very special case. I've been coding C on various UNIX systems since about 1999, and never seen a link order causing such runtime error. Nevertheless, we may later on have other link order problems which would cause linking error, so I decided to go for a generic/proper solution. I've added a new feature in scconfig so that two items in a list can be reordered to meet a specific requirement. It does that by minimal change to the list, e.g. moving the out-of-order item only, right before (or after) the target word. Thw two lines that got added to src/Makefile.in: # Lesstif requires that -lXm is before -lXt or else there is a runtime BadWindow order /local/pcb/LDFLAGS {-lXm} {before} {-lXt} This moves -lXm to right before -lXt if both are present on LDFLAGS and are in the wrong order. Regards, Igor2
Reply subtree:
869 [pcb-rnd] lesstif HID: should work everywhere, no more BadWindow from ge...@igor2.repo.hu