Subject: pkg/37360: lang/erlang doesn't compile on -current
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <degroote@netbsd.org>
List: pkgsrc-bugs
Date: 11/11/2007 21:15:01
>Number: 37360
>Category: pkg
>Synopsis: lang/erlang doesn't compile on -current
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Nov 11 21:15:01 +0000 2007
>Originator: A. Degroote
>Release: current
>Organization:
>Environment:
NetBSD Amilo.at.home 4.99.35 NetBSD 4.99.35 (AMILO) #9: Sat Nov 10 10:47:57 CET 2007 zul@Amilo.at.home:/home/zul/netbsd-dev/build_temp/objdir/sys/arch/i386/compile/AMILO i386
>Description:
The build of lang/erlang failed with the following error :
cc -I/usr/include -I/usr/pkgsrc/lang/erlang/work/otp_src_R11B-5/erts/i386--netbsdelf -I/usr/include -DHYBRID -DHAVE_CONFIG_H -Wall -Wstrict-prototypes -Wmissing-prototypes -Ibeam -Isys/unix -Isys/common -Ii386--netbsdelf/opt/hybrid -Ii386--netbsdelf -Izlib -Ihipe -I../include/internal -I../include/internal/i386--netbsdelf -c sys/common/erl_mseg.c -o obj/i386--netbsdelf/opt/hybrid/erl_mseg.o
sys/common/erl_mseg.c: In function 'mseg_recreate':
sys/common/erl_mseg.c:375: error: 'MREMAP_MAYMOVE' undeclared (first use in this function)
sys/common/erl_mseg.c:375: error: (Each undeclared identifier is reported only once
sys/common/erl_mseg.c:375: error: for each function it appears in.)
sys/common/erl_mseg.c:375: warning: passing argument 3 of 'mremap' makes pointer from integer without a cast
sys/common/erl_mseg.c:375: error: too few arguments to function 'mremap'
It is due to different prototype between GNU/Linux mremap and our implementation.
>How-To-Repeat:
cd /usr/pkgsrc/lang/erlang; make;
>Fix:
The following patch permit to compile on NetBSD but need more attention for other system.
$NetBSD$
--- erts/emulator/sys/common/erl_mseg.c.orig 2007-11-11 14:24:18.00000000
00 +0100
+++ erts/emulator/sys/common/erl_mseg.c
@@ -371,8 +371,9 @@ mseg_recreate(void *old_seg, Uint old_si
#elif HAVE_MREMAP
new_seg = (void *) mremap((void *) old_seg,
(size_t) old_size,
+ (void *) new_seg,
(size_t) new_size,
- MREMAP_MAYMOVE);
+ 0);
if (new_seg == (void *) MAP_FAILED)
new_seg = NULL;
#else