No subject


Fri Feb 29 13:31:58 UTC 2008


the include directory in two different ways, and things go wrong because
the two different ways create two different results.

I would suggest to try doing something like:

,----
| UNAME_MACHINE = $(shell uname -m)
| libNGStreams_INCLUDE_DIRS += \
|         -I$(UNAME_MACHINE)/$(GNUSTEP_TARGET_OS) \
`----

NOTE: big hack and completely untested!

Or else get configure to write out where it puts the headers.

-- 
Hubert Chathi <uhoreg at debian.org> -- Jabber: hubert at uhoreg.ca
PGP/GnuPG key: 1024D/124B61FA         http://www.uhoreg.ca/
Fingerprint: 96C5 012F 5F74 A5F7 1FF7  5291 AF29 C719 124B 61FA


From: "Sebastian Reitenbach" <sebastia at l00-bugdead-prods.de>
To: sogo at opengroupware.org
subject: Re: [SOGo] SOGO on Debian Lenny
Date: Thu, 15 May 2008 20:09:37 +0200

sogo at opengroupware.org wrote: 
> Mark Pavlichuk wrote:  
> >  I hadn't applied the gsmake-2 patches.  The compile works now.
> > Doh!  I spent DAYS looking over the same stuff and missing that.
> > I guess I was still in gsmake-1-mode after spending a lot of time
> > trying to get things working under Debian Etch
> ...
> 
>   I've been experimenting again with builds under Debian Lenny so I can 
> write documentation, but I'm having make problems again.  GNUSTEP_HOST 
> in config.make is i486-pc-linux-gnu even though I'm running an AMD64 
> kernel (with a 32bit i386 userspace).  If I switch to an i686 kernel the 
> compile works.
> 
>   I've applied the required patches to SOPE this time, so I'm unsure how 
> this seemed to fix the problem the first time.  


after a bit of digging, I think the problem is the following:

Your GNUstep environment is set like this:
GNUSTEP_FLATTENED=yes
GNUSTEP_HOST=i486-pc-linux-gnu
GNUSTEP_HOST_CPU=ix86
GNUSTEP_HOST_OS=linux-gnu
GNUSTEP_HOST_VENDOR=pc
GNUSTEP_IS_FLATTENED=yes
...

note the GNUSTEP_HOST_CPU

your GNUstep.sh contains the following, where I think, it gets set:

# If multi-platform support is disabled, just use the hardcoded cpu,
# vendor and os determined when gnustep-make was configured.  The
# reason using the hardcoded ones might be better is that config.guess
# and similar scripts might even require compiling test files to
# determine the platform - but then you can't source GNUstep.sh
# without having gcc, binutils, libc6-dev installed.  Which can be a
# problem for end-users who are not developers and have no development
# tools installed.  To prevent this problem, unless we were configured
# to determine the platform at run time, by default we use the
# hardcoded values of GNUSTEP_HOST*.
if [ -z "" ]; then
  GNUSTEP_HOST=i486-pc-linux-gnu
  GNUSTEP_HOST_CPU=ix86
  GNUSTEP_HOST_VENDOR=pc
  GNUSTEP_HOST_OS=linux-gnu
fi

how is GNUstep installed, I ran dpkg search gnustep, so it seems to be 
installed as package, but do you have any idea, with which parameteter the 
gnustep-make was configured. I don't know much about debian package 
management.


In the config.guess script, in SOPE/sope-core/NGStreams, when there 
configure is run, the following subdir


    i?86:Linux:*:*)
        # The BFD linker knows what the default object file format is, so
        # first see if it will tell us. cd to the root directory to prevent
        # problems with other programs or directories called `ld' in the 
path.
        ld_supported_emulations=`cd /; ld --help 2>&1 \
                         | sed -ne '/supported emulations:/!d
                                    s/[         ][      ]*/ /g
                                    s/.*supported emulations: *//
                                    s/ .*//
                                    p'`
        case "$ld_supported_emulations" in
          i?86linux)
                echo "${UNAME_MACHINE}-pc-linux-gnuaout"
                exit 0
                ;;
          elf_i?86)
                TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
                ;;
          i?86coff)
                echo "${UNAME_MACHINE}-pc-linux-gnucoff"
                exit 0
                ;;
        esac

but UNAME_MACHINE is set earlier:
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
which is x86_64, and then configure creates the x86_64/linux-gnu to create 
the config.h in it.

then, when you run make messages=yes in SOPE/sope-core/NGStreams, you will 
see, it will try to set the include dir: -Iix86/linux-gnu, instead of 
x86_64/linux-gnu.

This is done in the GNUmakefile.preamble:
libNGStreams_INCLUDE_DIRS += \
        -I$(GNUSTEP_TARGET_CPU)/$(GNUSTEP_TARGET_OS) \
...

the quick solution is, 
cd SOPE
./configure --with-gnustep --enable-debug --disable-strip
cd sope-core/NGStreams
ln -s x86_64 ix86
cd -
make && make install

I also tried to run ./configure --target=ix86, but that ended up even 
funnier, the path was set to ""/"" so that the config.h file ended up 
in /config.h.

cheers
Sebastian



More information about the pkg-GNUstep-maintainers mailing list