[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