From: Michael G. <mg...@ti...> - 2007-08-28 09:47:52
|
> is it still possible to explicitly set libdir though? It looks like the=20 > env object is just a python dict and we're overwriting whatever the=20 > user sepcifies. I'm no scons hacker, but something like the following=20 > would be better: >=20 > if not env.has_key('libdir'): > env['libdir'] =3D os.path.join(env['PREFIX'], 'lib') >=20 > (and the same for bindir, includedir, etc). I can do up a patch for this= =20 > if it's the right way to go. Yes, certainly. I didn't add anythign along that line because the current SConstruct doesn't do that though. As a sidenote: env[] is explicitly populated by scons. If you wish to test for shell environment variables you should use os.environ['variablename'] > My argument is that there is no code to add, instead we leave the=20 > defaults 'as-is', and let the user/distro specify where things should=20 > go, if they vary from the default. Less work for everybody! :D The SConstruct did explicitly decide to install into PREFIX/lib regardless of whatever I did. There was no code that honored any external specification whatsoever (read: some code is required either way). Applying a change like the one I suggested how chooses PREFIX/lib64 for all x86_64 systems which IMO is an improvement. > That'll tell you the architecture of the system, but it won't tell you=20 > what kind of binaries will be produced by default. >=20 > For example, on my 32-bit powerbook: >=20 > powerpc-unknown-linux-gnu >=20 > And on a 64-bit g5, using ubuntu feisty (ie, defaulting to 32-bit=20 > userspace) >=20 > powerpc64-unknown-linux-gnu So we have powerpc and powerpc64, the former presumably 32bit at least in a linux kernel context. Would a 64bit binary work on your ubuntu feisty ? If yes then I don't understand why it should claim 'powerpc64'. Apart from that both your distros should provide a proper config.guess that does not give 'unknown'. Last not least one might decide using config.guess isn't the best idea anyway because that's part of the autotools. Or one decides to provide a local copy of it to be sure it's there. > In the latter case, even though it's a 64-bit CPU, you still probably=20 > want to build 32-bit binaries (which the default gcc produces), and put=20 > them in $PREFIX/lib. We have other machines that have the same =20 > config.guess output, but which we need to build 64-bit binaries for=20 > (and the default compiler does this). I'm happy with adding options to allow for particular build scenarios. I know the autotools have it OOTB and I expect this problem to be solved for scons as well (after all this project can't be the first to have it :) > So... since, by default, the user is using the default compiler, using=20 > the default flags, shouldn't libs go in the default location=20 > ($prefix/lib) ? > > I think we can assume that $PREFIX/lib is the preferred location for=20 > default builds, even if it may be a symlink to lib32 or lib64. On openSUSE 10.2 (and previous SuSE Linux) this definitely isn't true. Don't know whether that'll change with openSUSE 10.3 (but I will check these days). > If the user starts using a different compiler (ie, one which produces=20 > binaries which aren't the default system arch, so don't belong in=20 > $prefix/lib), shouldn't they be responsible for specifing somewhere=20 > specific for the install location (eg, lib64) ? Well, yes. So far I know of no way to specify that with the current SConstruct (i.e. someone would have to add it). > > I don't see why the script shouldn't try an educated guess when there > > is one. And at least for x86_64 there is. >=20 > This still depends on the distro though, not the machine's architecture.= =20 > You'll be guessing incorrectly if the user only has a 32-bit userland=20 > on their x86_64 machine. I'm not sure I understand what you mean. I'm not claiming my proposed snippet solves all problems for all users. So far it leaves everything but x86_64 alone (i.e. e.g. ppc does see no change for better or worse). I don't know what x86_64 systems that are installed to default to 32bit do provide -- these are the only systems that might suffer a regression. =46or all other it is either "no change" or an improvement, regardless of the distribution AFAICT. Best, Michael =2D-=20 Vote against SPAM - see http://www.politik-digital.de/spam/ !tagline Michael Gerdau email: mg...@ti... GPG-keys available on request or at public keyserver |