discuss-gnustep
[Top][All Lists]
Advanced

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

Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!


From: Nicola Pero
Subject: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!
Date: Tue, 28 Oct 2008 09:16:10 +0000

This is just a reminder that GNUstep's full support of FHS makes even more important that all software must install into LOCAL unless told otherwise by the user. :-)

The rest of the email contains more details for people who are interested in this.

--

As you know, the variable GNUSTEP_INSTALLATION_DOMAIN can be used to control in which "domain" a piece of GNUstep software is to be installed. Valid values are SYSTEM,
LOCAL, NETWORK and USER.

As examples for the uninitiated,

* under the GNUstep filesystem layout, SYSTEM is /usr/GNUstep/ System, LOCAL is /usr/GNUstep/Local,etc.

* under a FHS filesystem layout, SYSTEM is /usr/bin, /usr/lib, etc.; LOCAL is /usr/local/bin, /usr/local/lib, etc.; NETWORK is the same as LOCAL and USER is /home/nicola/GNUstep/Tools, / home/nicola/GNUstep/Library/Libraries,etc.

By default, all GNUstep software installs into LOCAL unless told otherwise. If you're a Unix guy, you can think of that meaning that all GNUstep software installs into /usr/local/ by default.
Obviously the right thing to do. :-)

If you want to install GNUstep software somewhere else (eg, in SYSTEM because you're a packager - eg, a Unix packager and you need to install stuff into /usr/bin for your distribution), you do

 make install GNUSTEP_INSTALLATION_DOMAIN=SYSTEM

you could also do (assuming bash)

 export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM
 make
 make install

It's important to note that hardcoding a value of GNUSTEP_INSTALLATION_DOMAIN inside the GNUmakefile is very unfriendly towards users - particularly hardcoding a value of SYSTEM. If Joe Random Unix User downloads a GNUstep software tarball from the internet (eg, a new GNUstep application he wants to try, or even the latest cutting-edge version of an application he already has!), and types 'make; make install', he's expecting the software to install into /usr/local/. He'll be extremely upset if the software installs automatically into /usr/bin, /usr/lib, etc. overwriting any system stuff (eg, rpm/deb) he may have (I can tell you, I'd be furious). ;-)

Currently the "core" GNUstep software hardcodes GNUSTEP_INSTALLATION_DOMAIN=SYSTEM in their GNUmakefiles. That is a bug, and the only reason some of the packages install there is that we haven't finished working out the implications of, say, installing gnustep-base into LOCAL by default. gnustep-base is getting more and more relocatable and flexible and adaptable and it shouldn't be difficult at all to figure that out at this stage. Once we've done that, the support for FHS will be complete and people who require a strict Unix setup will be able to use gnustep-base like any other Unix library and expect that it behaves like any other Unix library (including installing into /usr/local/lib by default when you get a source tarball, while installing into /usr/lib if you get it from an RPM or a DEB or whatever your local Unix package management system is). :-)

Once we complete this "bug fixing" of the core stuff, people who are building their hand-made GNUstep system from source [including, eg, me and probably most people who read this far ;-)] and who are used to get all their "core" GNUstep stuff into SYSTEM locations by default so providing them with a nicely looking GNUstep distribution setup when compiling from source can still install the core stuff into SYSTEM from source by simply using

 export GNUSTEP_INSTALLATION_DOMAIN=SYSTEM

before compiling/installing the core libraries/applications - which really can't be such a big deal for a hardcode
GNUstepper. ;-)

I think it's rather more important that Joe Random Unix User who never tried GNUstep in his life gets everything working as he expects with the least possible effort the first time he tries compiling a bit of GNUstep software. Which means, unless he wants to do otherwise, everything should install into /usr/local by default. ;-)

Thanks




reply via email to

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