You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Martin Kraemer <Ma...@mch.sni.de> on 2000/01/07 16:16:34 UTC

Trouble with --shadow=

I tried the --shadow=<dir> feature and am having difficulties
understanding the philosophy behind it.

a)  why is there a two-step shadow tree in the first place?
    One copy of the tree ("external" shadow) plus one platform specific
    copy ("internal" shadow). IMO it would have been sufficient to have
    only one (the "internal") copy.

b)  *If* there is an external shadow, then there must be a way to use it
    for multiple architectures. In this case, it should *NOT* have
    another src/ directory which leads to the incorrect assumption that
    files in src/ may be used for compilation (and only their object
    files are stored in platform specific directories).
    And of course, there must be a way to create a shadow tree for more
    than one architecture. That however DOES NOT WORK at all, because an
    attempt to create a shadow tree for architecture B into an existing
    tree for architecture A will first erase everything in the common
    ( ;-) shadow directory, before installing a B-only shadow tree. The
    only workaround I see for this is:
	mkdir -p /nfs/apa/shadow/A
	mkdir    /nfs/apa/shadow/B
	rsh A 'cd apache_x.y.z/; ./configure --shadow=/nfs/apa/shadow/A'
	rsh B 'cd apache_x.y.z/; ./configure --shadow=/nfs/apa/shadow/B'
	mv /nfs/apa/shadow/A/*    /nfs/apa/shadow/
	mv /nfs/apa/shadow/B/*.B  /nfs/apa/shadow/
	rm -fr /nfs/apa/shadow/A /nfs/apa/shadow/B /nfs/apa/shadow/src
    But that's not something I would like to do manually.
    IMO, it's configure's job.

c)  config.status was intended as a way to re-configure apache with the
    same settings as before. There is a "config.status" generated into
    the external shadow; however, when you call it, it only produces
    errors because it immediately removes the old external shadow copy:

    Configuring for Apache, Version 1.3.9
     + using installation path layout: Apache (config.layout)
     + creating external package shadow tree (/tmp/apa)
    ./configure: src/helpers/mkshadow.sh: nicht gefunden
     + switching to external package shadow tree (/tmp/apa)
    ./configure: src/helpers/GuessOS: nicht gefunden
     + creating Makefile (shadow wrapper)
     + creating internal platform shadow tree (src.)
    ./configure: src/helpers/mkshadow.sh: nicht gefunden
    ./configure: src./helpers/getuid.sh: nicht gefunden
    ./configure: src./helpers/buildinfo.sh: nicht gefunden
    ./configure: src./helpers/buildinfo.sh: nicht gefunden
    Creating Makefile.
    ./configure: Makefile.tmpl: kann nicht eroeffnet werden
    ./configure: src./apaci: kann nicht erzeugt werden
    Exit 1

    The correct way to re-run the configuration should be described
    (currently, there doesn't seem to be any, as re-running
    "configure --shadow=..." deletes not the platform specific directory
    only, but *ALL* directories.

d)  configure should make sure that no more than the original apache
    files are copied into the shadow tree. If you decide to put the
    shadow within the apache_x.y.z/ tree, then this is not guaranteed:
    you will get another copy of your external and internal shadow trees
    into your shadow trees. :-(
    OTOH, mkshadow takes great pains to detect relative paths (which in
    most cases are used within the source tree).

    Martin
-- 
  <Ma...@MchP.Siemens.De>      |       Fujitsu Siemens
       <ma...@apache.org>              |   81730  Munich,  Germany

Re: Trouble with --shadow=

Posted by Martin Kraemer <Ma...@Mch.SNI.De>.
On Fri, Jan 07, 2000 at 04:16:34PM +0100, Martin Kraemer wrote:
> I tried the --shadow=<dir> feature and am having difficulties
> understanding the philosophy behind it.

e) ...and when building the patform specific shadow tree, mkshadow
   should also make sure that none of the generated header files or
   compiled helper tools remain in the symlinked shadow tree. Things
   like ap_config_auto.h and uri_delims.h are platform specific and must
   be deleted in the generated shadow tree. In a virgin apache tree,
   they don't exist. But nowhere does README.config say that you must
   use a virgin tree.

    Martin
-- 
  <Ma...@MchP.Siemens.De>      |       Fujitsu Siemens
       <ma...@apache.org>              |   81730  Munich,  Germany