develooper Front page | perl.perl5.porters | Postings from September 2010

[perl #77972] perl 5.12.2 cross-compile fail @ "xconfig.h : error: invalid preprocessing directive ..."

Thread Previous | Thread Next
From:
pgngw+dev001+perl5-porters @ f-m . fm
Date:
September 21, 2010 23:42
Subject:
[perl #77972] perl 5.12.2 cross-compile fail @ "xconfig.h : error: invalid preprocessing directive ..."
Message ID:
rt-3.6.HEAD-5116-1285097220-1125.77972-75-0@perl.org
# New Ticket Created by  pgngw+dev001+perl5-porters@f-m.fm 
# Please include the string:  [perl #77972]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=77972 >


hi,

i'm working on a port & cross-compiled build (for openwrt backfire
10.03/atheros AR71xx, on openSUSE 11.3/x86_64) of perl 5.12.2, digging
through issues/bugs one at a time.

i've started with the existing package for perl 5.10.x from the repo.

i'm stuck at a fail of "build target miniperl binary" in
'config_h_.SH'-generated 'xconfig.h'.

some, not all, of the generated #defines seem wrong; not yet clear why.

all i can say, atm, is that the following just gets me as far as I get
-- i can't yet say, whether i've an OK build process; here's what i've
done so far:


svn co svn://svn.openwrt.org/openwrt/branches/backfire openwrt_backfire
cd openwrt_backfire
make menuconfig

       Target System (Atheros AR71xx/AR7240/AR913x)  --->
       Target Profile (Buffalo WZR-HP-G300NH)  --->
       ...
       [*] Build the OpenWrt SDK
       ...
make -j8 V=99

./scripts/feeds update
cp -a feeds/packages/lang/perl package/perl512
./scripts/feeds install -p packages libdb47 libxml2 libgdbm


### MAKE PATCH FAILURE: " ... read-only; refusing to patch"
# https://forum.openwrt.org/viewtopic.php?pid=115258

vi scripts/patch-kernel.sh
       ...
       -    ${uncomp} ${i} | patch -p1 -E -d ${targetdir}
       +    ${uncomp} ${i} | patch -f -p1 -E -d ${targetdir}
       ...

make menuconfig
make -j8 package/libxml2/{clean,compile,install}   V=99
make -j8 package/db47/{clean,compile,install}      V=99
make -j8 package/gdbm/{clean,compile,install}      V=99


# [FIXED] BUG: https://bugzilla.novell.com/show_bug.cgi?id=640700
vi /usr/include/dbm.h
       ...
       -extern int     dbmclose __P((DBM *));
       +extern int     dbmclose __P((void));


rm package/perl512/patches/*
make -j8 package/perl512/{clean,compile} V=99

## FAIL

...
===> Stage 3: Configure target perl

...
Fetching answers from config.sh...

Doing variable substitutions on .SH files...
Extracting config.h (with variable substitutions)
Extracting cflags (with variable substitutions)
Not re-extracting config.h
Extracting makeaperl (with variable substitutions)
Extracting makedepend (with variable substitutions)
Extracting Makefile (with variable substitutions)
Extracting myconfig (with variable substitutions)
Extracting pod/Makefile (with variable substitutions)
Extracting Policy.sh (with variable substitutions)
Extracting runtests (with variable substitutions)
Extracting utils/Makefile (with variable substitutions)
Extracting writemain (with variable substitutions)
Extracting x2p/cflags (with variable substitutions)
Extracting x2p/Makefile (with variable substitutions)
Extraction done.
touch
/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2/.configured_-perl

===> Stage 4: Build target miniperl binary

install -m 0644
/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2/config.h
/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2/xconfig.h
rm -f
/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2/miniperl
make -C
/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2
miniperl
make[3]: Entering directory
`/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2'
`sh  cflags "optimize='-O2'" miniperlmain.o`  miniperlmain.c
         CCCMD =  mips-openwrt-linux-uclibc-gcc -DPERL_CORE -c -Os
         -pipe -mips32r2 -mtune=mips32r2 -funit-at-a-time
         -fhonour-copts -msoft-float -DUSE_CROSS_COMPILE
         -I/build/openwrt_backfire/staging_dir/target-mips_r2_uClibc-0.9.30.1/usr/include
         -I/build/openwrt_backfire/staging_dir/target-mips_r2_uClibc-0.9.30.1/include
         -I/build/openwrt_backfire/staging_dir/toolchain-mips_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/include
         -I/build/openwrt_backfire/staging_dir/toolchain-mips_r2_gcc-4.3.3+cs_uClibc-0.9.30.1/include
          -O2 -Wall
In file included from perl.h:40,
                from miniperlmain.c:40:
xconfig.h:774:3: error: invalid preprocessing directive #I_SYS_POLL
xconfig.h:879:3: error: invalid preprocessing directive #CAN_VAPROTO
xconfig.h:1084:3: error: invalid preprocessing directive
#HASATTRIBUTE_DEPRECATED
xconfig.h:2415:3: error: invalid preprocessing directive #I_GDBMNDBM
xconfig.h:2416:3: error: invalid preprocessing directive #I_GDBM_NDBM
xconfig.h:2417:3: error: invalid preprocessing directive
#NDBM_H_USES_PROTOTYPES
xconfig.h:2418:3: error: invalid preprocessing directive
#GDBMNDBM_H_USES_PROTOTYPES
xconfig.h:2419:3: error: invalid preprocessing directive
#GDBM_NDBM_H_USES_PROTOTYPES
xconfig.h:3304:3: error: invalid preprocessing directive #PERL_USE_DEVEL
xconfig.h:3576:3: error: invalid preprocessing directive
#HAS_GETADDRINFO
xconfig.h:3618:3: error: invalid preprocessing directive
#HAS_GETNAMEINFO
xconfig.h:3648:3: error: invalid preprocessing directive #HAS_INETNTOP
xconfig.h:3654:3: error: invalid preprocessing directive #HAS_INETPTON
xconfig.h:4048:3: error: invalid preprocessing directive #HAS_CTIME64
xconfig.h:4049:3: error: invalid preprocessing directive
#HAS_LOCALTIME64
xconfig.h:4050:3: error: invalid preprocessing directive #HAS_GMTIME64
xconfig.h:4051:3: error: invalid preprocessing directive #HAS_MKTIME64
xconfig.h:4052:3: error: invalid preprocessing directive #HAS_DIFFTIME64
xconfig.h:4053:3: error: invalid preprocessing directive #HAS_ASCTIME64
xconfig.h:4059:3: error: invalid preprocessing directive #HAS_TIMEGM
xconfig.h:4132:3: error: invalid preprocessing directive #I_ASSERT
xconfig.h:4210:3: error: invalid preprocessing directive #I_MALLOCMALLOC
xconfig.h:4587:3: error: invalid preprocessing directive #USE_DTRACE
make[3]: *** [miniperlmain.o] Error 1
make[3]: Leaving directory
`/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2'
make[2]: ***
[/build/openwrt_backfire/build_dir/target-mips_r2_uClibc-0.9.30.1/perl/perl-5.12.2/.built-perl]
Error 2
make[2]: Leaving directory `/build/openwrt_backfire/package/perl512'
make[1]: *** [package/perl512/compile] Error 2
make[1]: Leaving directory `/build/openwrt_backfire'
make: *** [package/perl512/compile] Error 2


i've posted the generated 'xconfig.h' @  http://pastebin.com/8iv6Sbtz

note that @ each of the id'd error line_nos, the #define looks wrong.
e.g., @ 774,

       ...
       #
       #define I_SYS_PARAM             /**/
       #

       #
       /* I_SYS_POLL:
       #
       *      This symbol, if defined, indicates that the program may
       include
       #
       *      <sys/poll.h>.  When I_POLL is also defined, it's probably
       safest
       #
       *      to only include <poll.h>.
       #
       */
       #
774     # I_SYS_POLL    /**/
       #

       #
       /* I_SYS_RESOURCE:
       #
       *      This symbol, if defined, indicates to the C program that
       it should
       #
       *      include <sys/resource.h>.
       #
       */
       #
       #define I_SYS_RESOURCE          /**/
       ...


looking at other instances in the file, I suspect (?) it should be
either,

       774     #define I_SYS_POLL    /**/

or

       774     /*#define I_SYS_POLL    / **/

not

       774     # I_SYS_POLL    /**/



fwiw, the install of exiting 5.10.x packages from the repo ends up with
a broken install.

otoh, a cross-compile build of perl 5.10.x from the repos works well.
.../ipkgs-install/ dirs & files scp'd from the build host to the openwrt
target work fine.

5.12.2 clearly has some differences ...

any help is appreciated.


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About