[OpenAFS] RedHat Enterprise 3 srpm compile errors
John Koyle
jkoyle@rfpdepot.com
Fri, 24 Oct 2003 10:02:51 -0600
I've included lots of info.
Looking at /boot/kernel.h shows this:
/* This file is automatically generated at boot time. */
#ifndef __BOOT_KERNEL_H_
#define __BOOT_KERNEL_H_
/* Kernel type i686 */
#ifndef __MODULE_KERNEL_i686
#define __MODULE_KERNEL_i686 1
#endif
#ifndef __BOOT_KERNEL_ENTERPRISE
#define __BOOT_KERNEL_ENTERPRISE 0
#endif
#ifndef __BOOT_KERNEL_BIGMEM
#define __BOOT_KERNEL_BIGMEM 0
#endif
#ifndef __BOOT_KERNEL_HUGEMEM
#define __BOOT_KERNEL_HUGEMEM 0
#endif
#ifndef __BOOT_KERNEL_SMP
#define __BOOT_KERNEL_SMP 0
#endif
#ifndef __BOOT_KERNEL_UP
#define __BOOT_KERNEL_UP 1
#endif
#endif
This conflicts with the included rehda-fix.h which #undef's i686 and
#defines i386 like this:
#ifndef REDHAT_FIX_H
#define REDHAT_FIX_H
#undef __BOOT_KERNEL_ENTERPRISE
#define __BOOT_KERNEL_ENTERPRISE 1
#undef __BOOT_KERNEL_BIGMEM
#define __BOOT_KERNEL_BIGMEM 0
#undef __BOOT_KERNEL_SMP
#define __BOOT_KERNEL_SMP 0
#undef __BOOT_KERNEL_UP
#define __BOOT_KERNEL_UP 0
#undef __BOOT_KERNEL_BOOT
#define __BOOT_KERNEL_BOOT 0
#undef __BOOT_KERNEL_BOOTSMP
#define __BOOT_KERNEL_BOOTSMP 0
#include "/boot/kernel.h"
#ifndef __MODULE_KERNEL_i386
#define __MODULE_KERNEL_i386 1
#endif
#undef __MODULE_KERNEL_i586
#undef __MODULE_KERNEL_i686
#undef __MODULE_KERNEL_athlon
#endif
When I modified the redhat-fix.h to #undef i386 and #define i686 then it
was able to compile. So it may just be some logic in the SPEC file.
Here's the relevent parts of mm.h
union {
struct pte_chain *chain;/* Reverse pte mapping pointer.
* protected by PG_chainlock */
pte_addr_t direct;
} pte;
unsigned char age; /* Page aging counter. */
struct page **pprev_hash; /* Complement to *next_hash. */
struct buffer_head * buffers; /* Buffer maps us to a disk
block. */
[joe@test include]# uname -a
Linux test.localhost 2.4.21-3.EL #1 Fri Sep 19 14:14:57 EDT 2003 i686
i686 i386 GNU/Linux
Thanks,
John
On Fri, 2003-10-24 at 09:52, Derek Atkins wrote:
> John Koyle <jkoyle@rfpdepot.com> writes:
>
> > In file included from ../afs/sysincludes.h:71,
> > from ../afs/afs_analyze.c:19:
> > linux/mm.h:203: syntax error before "pte_addr_t"
>
> What's around lines 200-205 in linux/mm.h?
>
> > Removing the REDHAT_FIX define allows the system to compile without
> > errors, but I assume that it's there for a reason, and given that it's
> > causing an error in the memory mapping I don't want to assume anything.
>
> Well, REDHAT_FIX is used because with RHL we needed to define our own
> "/boot/kernel.h" to build for different kernels other than the
> currenly-running version. It's QUITE possible that the enterprise
> distribution does things somewhat differently such that this RHL
> workaround no longer works, or works differently.
>
> Another thing to do is take a look at /boot/kernel.h on your system
> and see what it says?
>
> > Any ideas?
> > Thanks,
> > John
>
> -derek