[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: make build failure on httpd (solved.)

Hi again,

About make build failing at httpd with:

$ sudo make build
[lots of stuff deleted]
===> usr.sbin/httpd
cd /usr/src/usr.sbin/httpd/obj && make clean
===> src
make: don't know how to make clean. Stop
*** Error code 2

Stop in /usr/src/usr.sbin/httpd/obj (line 731 of ./Makefile).
*** Error code 1

Stop in /usr/src/usr.sbin/httpd/obj (line 724 of Makefile).
*** Error code 1

Stop in /usr/src/usr.sbin/httpd (line 515 of
*** Error code 1

Stop in /usr/src/usr.sbin.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src (line 79 of Makefile).

This was happening in a fresh src tree, and a completely empty /usr/obj
directory, so there was no extra cruft lying around.

What I had to do was

  sudo chmod a+x /usr/src/usr.sbin/httpd/src/helpers/*

Checking a fresh tree out of a cvs repository that was constructed by ctm
lost the +x permissions on these files.  Also, I needed

  sudo chmod u+x /usr/src/gnu/usr.bin/lynx/cfg_defs.sh

but the error message pointing to that was a bit clearer.

It seems that httpd gets configured fairly early in the build (when libssl
is being cleaned?).  So because there is no execute permission on
helpers/*, httpd configuration produces an empty Makefile.  This doesn't
get noticed until make build tries to clean httpd/src.

The commit log for httpd/src/Makefile.bsd-wrapper says

  Nasty hack to add execute permission to helper scripts if they don't
  have it.  I don't think hacking apache's configure mechanism is the
  correct approach for us, since it would just have to be redone for every
  import (and it requires more than just changing Configure). I don't think
  the read-only case is an issue since on a CD-ROM the permissions should be
  correct (I believe it is only ctm that doesn't update modes).

at version 1.10.  But that file is now in the Attic, and I got bitten by
ctm not updating modes.  I think this happened at the import of Apache
1.3.12, on 19 March 2000.  Was removing that file deliberate, or a
side-effect of the 1.3.12 import?  The name on the cvs logs around that
time is beck (@openbsd.org?).

Now I know a lot more about cvs and make build.  Long live open source.


On Sat, Apr 22, 2000 at 11:09:59AM -0600, Todd C. Miller wrote:
> Try this:
>     1) completely remove the contents of your obj dirs + the links
>     2) cd /usr/src/usr.sbin/httpd && cvs -PAd -I ! -I CVS -I obj
>        You should remove any files marked with '?' and if
>        there are files marked with 'M' you probably want
>        to remove and re-update those (unless they contain local
>        changes you want to preserve).
>     3) make -f Makefile.bsd-wrapper obj
>     4) rebuild
> I recently started adding "-I ! -I CVS -I obj" to my cvs updates
> and found all kinds of crufty bits lurking around...
>  - todd
Russell Steicke

-- Fortune says:
In Italy, for thirty years under the Borgias, they had warfare, terror,
murder, and bloodshed, but they produced Michaelangelo, Leonardo da Vinci
and the Renaissance.  In Switzerland, they had brotherly love, they had
five hundred years of democracy and peace -- and what did they produce?
The cuckoo-clock.
		-- Orson Welles, "The Third Man"