[comp.soft-sys.andrew] Failing to create DESTDIR subdirectories

root@cs.flinders.oz.au (Operator) (08/22/90)

Well I finally had Andrew ready to go.

Brought X11R4 up to patchlevel 14.
Built all the Andrew Makefiles.

make dependInstall

barf
.....: no such file or directory

The build process is not creating subdirectories under DESTDIR.

I am building Andrew from a clean slate so those of you who simply(?) updated
from patchlevel 5 probably did not encounter this problem.

For a time I just waited for the build to die, created whatever directory it
complained about and then restarted the build however some things did not
worry about the lack of a suitable directory so at one stage I had a file
called $(DESTDIR)/bin which was not a directory but a sparc executable.
Interesting concept that -- an executable directory.

If there is a simple fix to this problem I would appreciate it. If not then
could somebody mail me a list of subdirectories and I will create them by hand
before I try building again. In this case assume that I am building everything
(ODA,AMS,contrib,...).

Thanks
-Cameron

Cameron Humphries
Discipline of Computer Science                 email: cameron@cs.flinders.oz.au
School of Information Science and Technology   phone: +61 +8 201 2874
The Flinders University of South Australia     fax  : +61 +8 201 2904

ghoti+@ANDREW.CMU.EDU (Adam Stoller) (08/22/90)

Excerpts from internet.info-andrew: 22-Aug-90 Failing to create DESTDIR
s.. Operator@cs.flinders.oz. (1235)

> Well I finally had Andrew ready to go.

> Brought X11R4 up to patchlevel 14.
> Built all the Andrew Makefiles.

> make dependInstall

> barf	
> .....: no such file or directory

> The build process is not creating subdirectories under DESTDIR.

> I am building Andrew from a clean slate so those of you who simply(?) updated
> from patchlevel 5 probably did not encounter this problem.


Try using

	make World

not

	make dependInstall

The former takes care of making the destination directories.  -- If you
are not working from a "clean slate", you have the option of skipping
the World and going straight to the dependInstall stage.


Apparently (a) the README file is not clear about this, and/or (b) the
top-level Imakefile was changed so that the directories only got created
via World and should possibly be changed back.

--fish

cameron@cs.flinders.oz.au (Cameron Humphries) (08/23/90)

}Excerpts from internet.info-andrew: 22-Aug-90 Failing to create DESTDIR
}s.. Operator@cs.flinders.oz. (1235)
}
}> make dependInstall
}
}> barf
}> .....: no such file or directory
}
}
}Is there more to the error message than ".....: no such file or directory" ?

[root]kurango [/ada/andrew] ==> make dependInstall
Checking that BASEDIR is not the location of the source files.
make DESTDIR=/sunsrc/andrew_dir install
Checking Destination Directories....
Making directory dirs
Checking Destination Directories....
install  -c -m 0444 config/ImakeMacros.d  /sunsrc/andrew_dir/doc/ImakeMacros.d
install: /sunsrc/andrew_dir/doc/ImakeMacros.d: No such file or directory
*** Error code 1
make: Fatal error: Command failed for target `install.time'
Current working directory /ada/andrew
*** Error code 1
make: Fatal error: Command failed for target `dependInstall'
[root]kurango [/ada/andrew] ==> cd /sunsrc/
[root]kurango [/sunsrc] ==> ls
ImageMagick/    andrew_dir/     flinders        lost+found/     unify/
PostScript0     craig/          list            sql_cache/
[root]kurango [/sunsrc] ==> cd andrew_dir/
[root]kurango [/sunsrc/andrew_dir] ==> ls

Now I don't expect any comments about the partition names. They are
just something you learn to live with. I am pushing for an andrew
partition but I have to get it built and installed first.

I handmade the doc subdirectory and tried dependInstall again. This
time it installed Imakemacros.d but failed on the next one.

install -c -m 0444 config/andyenv.h /sunsrc/andrew_dir/include/andyenv.h
install: /sunsrc/andrew_dir/include/andyenv.h: No such file or directory
*** Error code 1

}Perhaps the top-level destination directory does not exist ? (i.e.
}DESTDIR = /foo/bar/baz, and /foo/bar does not exist)

As you can see above /sunsrc/andrew_dir does indeed exist.

Also permissions should not be causing a problem since I was
building Andrew as "root".

-Cameron

Cameron Humphries
Discipline of Computer Science                 email: cameron@cs.flinders.oz.au
School of Information Science and Technology   phone: +61 +8 201 2874
The Flinders University of South Australia     fax  : +61 +8 201 2904

ghoti+@ANDREW.CMU.EDU (Adam Stoller) (08/23/90)

Excerpts from internet.info-andrew: 23-Aug-90 Re: Failing to create
DESTD.. Cameron Humphries@cs.fli (2156)

> make DESTDIR=/sunsrc/andrew_dir install
> Checking Destination Directories....
> Making directory dirs
> Checking Destination Directories....


Something is definitely wrong here - if the directory
/sunsrc/andrew_dir/ is empty - then not only should you see "Checking
Destination Directories...", but you should also see messages like the
following:

"Making directory /sunsrc/andrew_dir/bin"
"Making directory /sunsrc/andrew_dir/config"
"Making directory /sunsrc/andrew_dir/etc"
[...]

----------------
Your top-level Imakefile should have (around line 27) the following:

    DIRS = $(DESTDIR)  \
        $(DESTDIR)/bin \
        $(DESTDIR)/config \
        $(DESTDIR)/etc \
        $(DESTDIR)/include \
        $(DESTDIR)/lib \
        $(DESTDIR)/doc \
        $(DESTDIR)/doc/atk \
        $(DESTDIR)/doc/ams \
        $(DESTDIR)/help \
        $(DESTDIR)/man \
        $(DESTDIR)/dlib \
        $(DESTDIR)/examples

And (around line 63):

    MkdirTarget($(DIRS))

The latter should be expanded in your Makefile (around line 271 ?) to
look like:

    install.time:: makedirs
        @echo -n ''
    install.doc:: makedirs
        @echo -n ''
    makedirs::
        @echo "Checking Destination Directories...."
        @sh -c 'for i in $(DIRS);  do  \
                if [ -f $$i ]; then  \
                        echo MkdirTarget: $$i is a FILE; \
                        exit 1; \
                elif [ ! -d $$i ]; then  \
                        echo Making directory $$i; \
                        mkdir $$i; \
                fi; \
        done; \
        exit 0'

(there may be extra lines in the expansion consisting solely of '\' -
depending on Imake's translation of the macro)

If the first two do not check out - it sounds like you need a new
top-level Imakefile.

If the last one does not check out - it sounds like you need to remake
the top-level Makefile.

If they all check out - and /sunsrc/andrew_dir/ is indeed an empty, and
writable directory - and you don't see the messages saying "Making
directory [...]" then it sounds like there may be something wrong with
your SHELL or filesystem, or something like that (i.e. I don't really
have the foggiest...)

As a sample - you might want to take an excerpt of the top level
Imakefile and create one that says something like:

----------------
DA = /tmp/foo_a /tmp/foo_b /tmp/foo_c /tmp/foo_d
DB = /tmp/bar_a \
	/tmp/bar_b \
	/tmp/bar_c

MkdirTarget($(DA))
MkdirTarget($(DB))
----------------
generate the Makefile for this against the Andrew config files (in the
"normal" manner?) and then try running make on it -- It's about the only
thing I can think of to try and really narrow down the problem.

Hope this helps, at least a little....

--fish

cameron@cs.flinders.oz.au (Cameron Humphries) (08/24/90)

Well it finally works thanks to Gary Keim <gk5g+@andrew.cmu.edu>.

Here is an extract from his message:

Here is my advice:  (1) rm -rf /sunsrc/andrew_dir/{*,.*}; (2) make Clean
in the andrew top-level; (3) chown cameron /sunsrc/andrew_dir; (3) exit
from root; (4) start the whole build process from scratch.

I was building Andrew on an RS/6000 yesterday and this problem was
happening to me.  It turned out to be that the cpp didn't define  the
proper symbolic for that platform.  Things break in wonderous ways
beyond our comprehension.

I have done this and it has succeeded so far (except the machine ran
out of processes but this is a minor detail).

-Cameron

Cameron Humphries
Discipline of Computer Science                 email: cameron@cs.flinders.oz.au
School of Information Science and Technology   phone: +61 +8 201 2874
The Flinders University of South Australia     fax  : +61 +8 201 2904