[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

To work around this problem, we have INSTALL_ROOT_DIR.  Whenever you are
installing something in somewhere which is not inside
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


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!

reply via email to

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