[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [GSWHackers] [PATCH/RFC] gsweb Patches I
From: |
Nicola Pero |
Subject: |
Re: [GSWHackers] [PATCH/RFC] gsweb Patches I |
Date: |
Mon, 9 Dec 2002 13:00:37 +0000 (GMT) |
> Hello everyone,
>
> here are some patches that are actually unrelated to the GSW/WO names
> change but I would like to get them in anyway:
>
> Makefile.preamble:
> remove usage of INSTALL_ROOT_DIR as this isn't used consistently
> (any vetos?)
Hmmm - sorry to answer late - been away for a few days.
I suspect you want to remove 'INSTALL_ROOT_DIR' because it might have
looked like a relict of some old past ... but it's actually quite a
'modern' thing :-)
I'd say it's better to keep it. Removing it would break building RPMs of
GNUstepWeb, which might not be an issue as I don't know if building RPMs
of GNUstepWeb actually works :-) but you might want to try it out: when
building RPMs work, it is a great help to quickly package stuff for
distribution / deployment.
==
Long explanation: INSTALL_ROOT_DIR is used typically when you build an RPM
(or a DEB, or actually any package, since the logic used is the same).
When you build a package, typically, the project will be compiled/built,
then installed into a temporary build directory, something like
/tmp/xxx/usr/GNUstep/Local/. (You don't want to install it in
/usr/GNUstep/Local, as it would wipe out your own copy on your local
machine! You are just building a package, you need to install the files
to know where they would be installed, but you do it in a separate
temporary dir, you don't want to wipe away your own local packages).
The package is then built by tar-gzipping everything from /tmp/xxx/ (or
maybe not tar-gzipping, it's a find plus other custom operations,
depending on the package type - it doesn't matter, the concept is always
the same - you build inside /tmp/xxx/ the binary files in the final
installation tree, then you build the package from that).
Now if everything is installed into GNUSTEP_INSTALLATION_DIR, it's easy to
have it be installed into /tmp/xxx/ in order to build a package. You
manually fixup GNUSTEP_INSTALLATION_DIR prefixing it with /tmp/xxx/. For
example, the rpm.make in gnustep-make itself does it.
But, if a file is installed outside GNUSTEP_INSTALLATION_DIR, you can't do
this. For example, if you install a makefile inside GNUSTEP_MAKEFILES,
the package building script can't change GNUSTEP_MAKEFILES in order to
prefix it with /tmp/xxx/, else the makefiles needed to build wouldn't be
found (since GNUSTEP_MAKEFILES is also used in 'include
$(GNUSTEP_MAKEFILES)/common.make'!)!
To work around this problem, we have INSTALL_ROOT_DIR. Whenever you are
installing something in somewhere which is not inside
GNUSTEP_INSTALLATION_DIR, you need to add INSTALL_ROOT_DIR (which is
usually empty) before it, so that it is still possible to write scripts
which can automatically build an RPM (or a DEB or any other package)
without changing the makefiles.
This explanation was very general, but in very practical terms,
gnustep-make can build an RPM of any project built using gnustep-make when
a few conditions are met. One of them is that anything which is not
installed inside GNUSTEP_INSTALLATION_DIR has to be installed into
$(INSTALL_ROOT_DIR)xxx, so that by defining INSTALL_ROOT_DIR, gnustep-make
can redirect those files to be installed into a temporary package building
directory.
==
Finally, sorry for providing criticism for the patch - I think it's very
nice that you are tidying up the gnustep-web makefiles, and you seem to be
doing a very intelligent job and a good task. Keep on with the good work!
:-)