gnustep-dev
[Top][All Lists]
Advanced

[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!
:-)




reply via email to

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