iPXE discussion forum

Full Version: Error blockdev.o build iPXE
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I trying make iPXE in Linux (probably Slackware 12). Build stops at:
Code:
[BUILD] bin/blockdev.o
In file included from include/ipxe/uaccess.h:27,
                 from include/ipxe/blockdev.h:14,
                 from core/blockdev.c:24:
./config/ioapi.h:17:32: error: config/local/ioapi.h: No such file or directory
make: *** [bin/blockdev.o] Error 1
(2013-04-18 10:45)Maniek Wrote: [ -> ]I trying make iPXE in Linux (probably Slackware 12). Build stop at:
Code:
[BUILD] bin/blockdev.o
In file included from include/ipxe/uaccess.h:27,
                 from include/ipxe/blockdev.h:14,
                 from core/blockdev.c:24:
./config/ioapi.h:17:32: error: config/local/ioapi.h: No such file or directory
make: *** [bin/blockdev.o] Error 1

That file should be automatically generated (as an empty file) by the Makefile rule:

Code:
config/local/%.h :
        $(Q)touch $@

No idea why your version of make isn't doing this. You could try creating the file manually using

Code:
touch config/local/ioapi.h

Michael
This not resolving problem :-(. After restart Linux have other errors:
Code:
[HOSTCC] util/zbin
util/zbin.c:1:19: error: stdio.h: No such file or directory
util/zbin.c:2:22: error: sys/stat.h: No such file or directory
In file included from util/zbin.c:6:
util/nrv2b.c:36:20: error: stdlib.h: No such file or directory
util/nrv2b.c:37:20: error: string.h: No such file or directory
util/nrv2b.c:38:19: error: ctype.h: No such file or directory
util/nrv2b.c:39:19: error: errno.h: No such file or directory
util/nrv2b.c:43:20: error: stdint.h: No such file or directory
In file included from /usr/lib/gcc/i486-slackware-linux/4.2.4/include/syslimits.h:7,

My OS have kernel 2.6.29.2-36-1 and support only package .tgz. This is probably Slackware 12.2 because 13.0 use .txz packages.
Installed packages from Slackware 12.0 mirror:
  • git-1.5.2.2-i486-1.tgz
  • binutils-2.17.50.0.17-i486-1.tgz
  • make-3.81-i486-1.tgz
  • perl-5.8.8-i486-4.tgz
  • gcc-4.2.4-i486-1.tgz - this is from Slackware 12.2
(2013-04-18 11:19)Maniek Wrote: [ -> ]This not resolving problem :-(. After restart Linux have other errors:
Code:
[HOSTCC] util/zbin
util/zbin.c:1:19: error: stdio.h: No such file or directory
util/zbin.c:2:22: error: sys/stat.h: No such file or directory
In file included from util/zbin.c:6:
util/nrv2b.c:36:20: error: stdlib.h: No such file or directory
util/nrv2b.c:37:20: error: string.h: No such file or directory
util/nrv2b.c:38:19: error: ctype.h: No such file or directory
util/nrv2b.c:39:19: error: errno.h: No such file or directory
util/nrv2b.c:43:20: error: stdint.h: No such file or directory

It looks as though your build environment is missing the glibc header files. Either that, or something is very badly misconfigured.

Michael
My OS is exactly Slackware 12.1.0:
Code:
cat /etc/*-version
Slackware 12.1.0
After installing glibc-solibs-2.5-i486-4.tgz still the same errors.
(2013-04-18 12:12)Maniek Wrote: [ -> ]My OS is exactly Slackware 12.1.0:
Code:
cat /etc/*-version
Slackware 12.1.0
After installing glibc-solibs-2.5-i486-4.tgz still the same errors.

I don't have a Slackware environment to test with, sorry. The problems you are seeing are definitely specific to your build environment, rather than problems with iPXE.

Michael
OK, I need test this with fresh Slackware 12.1.iso
Using a stock Debian 7 installation via netinst.iso, adding kernel-package for compiler tools, I also can't get the errors about ioapi.h, so I touch that, then I get config/local/nap.h don't exist, then I get config/local/console.h don't exist, then config/local/umalloc.h, config/local/timer.h, etc. etc.

hvisage@debian-lxde:~/ipxe/ipxe/src$ make --version
GNU Make 3.81
Copyright © 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
hvisage@debian-lxde:~/ipxe/ipxe/src$ cat /etc/debian_version
7.2


I guess that rule doesn't work with later GNU Make?
After some Makefile digging, I found the problem, a superfluous space before the : in the rule:

###############################################################################
#
# Local configs
#
+config/local/%.h:
-config/local/%.h :
$(Q)touch $@
hvisage: That's well spotted! Not sure which versions of make has issues with this, but I'd recommend you send an email to the mailing-list and report the bug. If you've got make version number that gave you issues, even better.
(2013-10-27 10:58)robinsmidsrod Wrote: [ -> ]hvisage: That's well spotted! Not sure which versions of make has issues with this, but I'd recommend you send an email to the mailing-list and report the bug. If you've got make version number that gave you issues, even better.

I've noticed the same issue with latest code and Ubuntu 14, GNU Make 3.81. Removing the space before ":" in Makefile.housekeeping, line 1233 resolved it.

Thanks for the pointer.
Reference URL's