discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!


From: Nicola Pero
Subject: Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!
Date: Tue, 28 Oct 2008 15:32:19 +0000

Actually I was referring to the location into which the Makefiles
directory gets installed to.
ie:
/usr/GNUstep/System/Library/Makefiles
vs.
/usr/GNUstep/Local/Library/Makefiles

Which would also have a direct impact from where GNUstep.sh should be
sourced from.

The location of Makefiles is actually independent of the domain roots, so even if make is installed in Local, the makefiles will probably end
up in System. This totally depends on the FS layout in use, however,
so Makefiles could be anywhere if a custom layout was used. In the
end, you will always need to know its location before you can source
GNUstep.sh.

I am referring to the location to which -make should install it's
makefiles and it's tools. If -base/-gui/-core are to be installed into
the LOCAL domain if built from source, then it seems the same should
apply to -make ie. the Makefiles directory in my view.

gnustep-make's makefiles and scripts are installed into GNUSTEP_MAKEFILES, which
is a separate location from SYSTEM or LOCAL or NETWORK or USER. ;-)

Most of the times the filesystem layout puts GNUSTEP_MAKEFILES inside
SYSTEM (as you mention), but it could also put in a completely unrelated
location - without any adverse effects on anything (I do that all the time btw). :-)

The only tool that is installed by gnustep-make is gnustep-config which is
installed into SYSTEM_TOOLS.  There are also openapp and opentool,
again installed into SYSTEM_TOOLS, which are unused unless you're
using library-combos.

It's actually quite easy to have multiple installations of gnustep- make and switch between them (I do it all the time), but I kind of wonder how relevant that is to the average user's experience (or even to an "experienced" user's experience). ;-)

Maybe we should have a separate, configurable location for gnustep- config ? I just wonder if this is not too much complexity since I've never heard of anyone
needing that apart from me, but I can deal with that myself. ;-)


I guess the most "correct" way with the current make system is to
source `gnustep-config --variable=GNUSTEP_MAKEFILES`/GNUstep.sh

OK, granted, so once you know GNUSTEP_MAKEFILES then then that's fine...
but gnustep-config get's installed into Domain of -make
(i.e. /usr/GNUstep/System/Tools currently but with Nicola's proposal I'd
expect it be installed to /usr/GNUstep/Local/Tools in the future).

So where does -make install it to by default if GNUSTEP_MAKEFILES is not
set and we default to the GNUstep file system layout?

You're totally right that there is some confusion here in the sense that we only
have a single GNUSTEP_MAKEFILES location, instead of having a SYSTEM
vs LOCAL vs NETWORK vs USER one, so basically if you're using a specific
filesystem layout, gnustep-make will always install in the same location (potentially
overwriting an existing gnustep-make).

Eg, GNUSTEP_MAKEFILES is defined in the filesystem layout, and for the GNUstep filesystem layout, GNUSTEP_MAKEFILES is {prefix}/System/Library/ Makefiles.

So if you already have gnustep-make-2.x.x.rpm installed on your GNU/ Linux box, and you now try to install gnustep-make, it may end up overwriting your system
RPM, which I agree is not great! :-(

I can think of solutions, but none which strikes me as great. Installing into /usr/GNUstep/Local by default is good, but every traditional GNUstepper expects it to install into /usr/GNUstep/System instead - and might have hardcoded that path everywhere in startup scripts as ". /usr/GNUstep/System/Library/Makefiles/GNUstep.sh" or something equivalent.

Btw, once you have your "distribution/System" gnustep-make installed into /usr/GNUstep/System, and your "own/Local" gnustep-make installed into /usr/GNUstep/Local, you still have the problem that /etc/GNUstep/GNUstep.conf's GNUSTEP_MAKEFILES will point to one or the other - but not both, since we don't have 'GNUSTEP_LOCAL_MAKEFILES' and 'GNUSTEP_SYSTEM_MAKEFILES', we only have one GNUSTEP_MAKEFILES. So you probably also want to have two GNUstep.conf files ... and switch between the two gnustep-makes by changing your GNUSTEP_CONFIG_FILE shell variable (IIRC) ... which is good and all works but at that point it's not easy to do anyway so maybe we just expect people to know what they are doing and use ./ configure --prefix=xxx when
they install their local version of gnustep-make.

Maybe we make it possible to change GNUSTEP_MAKEFILES as a separate option in gnustep-make's ./configure ... not sure we can go as far as having it default to LOCAL_LIBRARY/Makefiles though - it would default to SYSTEM_LIBRARY/Makefiles to avoid breaking all the startup scripts ... but maybe we could emit a warning if you're about to overwrite an existing gnustep- make installation ?

Suggestions welcome.


Question to Nicola; maybe gnustep-config should be in /usr/local/bin
to successfully provide a bridge from standard Unix hierarchy to
whatever layout the GNUstep installation is using? The -make package
would then need two different --prefix options, which is a bit of a
problem.

And that proposal (installing into /usr/local/bin) was originally
rejected... well at least it wasn't followed at the time it was
introduced.

Well, it's currently installed into SYSTEM_TOOLS, so if SYSTEM_TOOLS is /usr/local/bin,
it will end up there. ;-)

If we want to be able to install gnustep-config somewhere else (eg, have GNUstep stuff in /usr/GNUstep, but also gnustep-config in /usr/local/bin or even / usr/bin) we need to add maybe a gnustep-make's ./configure option to put it somewhere else ? That's easy to add, and I can add it no problem (and it will apply to openapp and opentool too).
I hope it will be more helpful than confusing though. ;-)

Thanks




reply via email to

[Prev in Thread] Current Thread [Next in Thread]