[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
- Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!,
Nicola Pero <=
- Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!, David Ayers, 2008/10/28
- Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!, Nicola Pero, 2008/10/28
- Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!, Nicola Pero, 2008/10/28
- Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!, Truls Becken, 2008/10/28
- Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!, Nicola Pero, 2008/10/29
- Re: Please do not hardcode GNUSTEP_INSTALLATION_DOMAIN in GNUmakefiles!, Richard Frith-Macdonald, 2008/10/29