Subject: Re: pkg/36778 (sysutils/strace fails to build on linux)
To: None <>
From: Yakovetsky Vladimir <>
List: pkgsrc-bugs
Date: 12/06/2007 17:27:22
On Wed, Dec 05, 2007 at 04:33:13PM +0000, wrote:
> Synopsis: sysutils/strace fails to build on linux
> State-Changed-From-To: open->feedback
> State-Changed-By:
> State-Changed-When: Wed, 05 Dec 2007 11:33:12 -0500
> State-Changed-Why:
> I imported a newer version of strace. Can you please check if it fixes
> your problems?
  Has checked up, failures+fixes for strace-4.5.15 in linux below.

1st failure (net.c sockpacketoptions):
% cd sysutils/strace && bmake
if gcc -DHAVE_CONFIG_H -I. -I. -I. -Ilinux/i386 -I./linux/i386 -Ilinux -I./linux    -Wall -O2 -march=native -mfpmath=sse -msse -finline-functions -fomit-frame-pointer -ffast-math -MT net.o -MD -MP -MF ".deps/net.Tpo" -c -o net.o net.c;  then mv -f ".deps/net.Tpo" ".deps/net.Po"; else rm -f ".deps/net.Tpo"; exit 1; fi
net.c:809: error: 'PACKET_ADD_MEMBERSHIP' undeclared here (not in a function)
net.c:810: error: 'PACKET_DROP_MEMBERSHIP' undeclared here (not in a function)

1st fix (based on strace/net.c,v 1.56 2007/11/1)
:r sysutils/strace/patches/patch-bf
--- net.c.~1~
+++ net.c
@@ -806,8 +806,12 @@
 #ifdef SOL_PACKET
 static const struct xlat sockpacketoptions[] = {
 #if defined(PACKET_RECV_OUTPUT)

2nd failure (probably `configure' with `linux-libc-dev' issue):
% cd sysutils/strace && bmake
checking for linux/if_packet.h... no
if gcc -DHAVE_CONFIG_H -I. -I. -I. -Ilinux/i386 -I./linux/i386 -Ilinux -I./linux    -Wall -O2 -march=native -mfpmath=sse -msse -finline-functions -fomit-frame-pointer -ffast-math -MT net.o -MD -MP -MF ".deps/net.Tpo" -c -o net.o net.c;  then mv -f ".deps/net.Tpo" ".deps/net.Po"; else rm -f ".deps/net.Tpo"; exit 1; fi
net.c: In function 'printsock':
net.c:964: error: field 'll' has incomplete type
net.c:967: error: field 'nl' has incomplete type

2nd fix (sysutils/strace/patches/patch-bg and sysutils/strace/Makefile.diff):
:r sysutils/strace/patches/patch-bg
@@ -202,7 +202,8 @@
 AC_CHECK_FUNCS(sigaction strerror strsignal pread sys_siglist _sys_siglist getdents mctl prctl sendmsg inet_ntop if_indextoname)
 AC_CHECK_HEADERS([sys/reg.h sys/filio.h sys/acl.h sys/asynch.h sys/door.h stropts.h sys/conf.h sys/stream.h sys/tihdr.h sys/tiuser.h sys/sysconfig.h ioctls.h sys/ioctl.h sys/ptrace.h termio.h linux/ptrace.h asm/reg.h sys/uio.h sys/aio.h poll.h sys/poll.h sys/vfs.h asm/sysmips.h linux/utsname.h sys/nscsys.h mqueue.h sys/epoll.h libaio.h inttypes.h], [], [])
 AC_CHECK_HEADERS([linux/icmp.h linux/in6.h linux/netlink.h linux/if_packet.h],
-                 [], [], [#include <linux/socket.h>])
+                 [], [], [#include <stddef.h>
+#include <linux/socket.h>])
 AC_CHECK_HEADERS([asm/sigcontext.h], [], [], [#include <signal.h>])
 AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>])

--- sysutils/strace/Makefile.~1~
+++ sysutils/strace/Makefile
@@ -22,4 +22,11 @@
 REPLACE_PERL=		strace-graph
+.include "../../mk/"
+.if ${OPSYS} == "Linux"
+USE_TOOLS+=		autoconf
+	cd ${WRKSRC} && autoconf
 .include "../../mk/"

3rd failure (patches/patch-ag issue in linux: PTRACE_PEEKUSER redefined as PTRACE_PEEKTEXT):
% cd sysutils/strace && bmake
if gcc -DHAVE_CONFIG_H -I. -I. -I. -Ilinux/i386 -I./linux/i386 -Ilinux -I./linux    -Wall -O2 -march=native -mfpmath=sse -msse -finline-functions -fomit-frame-pointer -ffast-math -MT process.o -MD -MP -MF ".deps/process.Tpo" -c -o process.o process.c;  then mv -f ".deps/process.Tpo" ".deps/process.Po"; else rm -f ".deps/process.Tpo"; exit 1; fi
process.c: In function 'sys_ptrace':
process.c:3030: error: duplicate case value
process.c:3029: error: previously used here
process.c:3046: error: duplicate case value
process.c:3045: error: previously used here

3rd fix (make new definitions from patch-ag conditional):
:r sysutils/strace/patches/patch-bh
--- defs.h.~1~
+++ defs.h
@@ -267,6 +267,7 @@
 #define PR_FAULTED      S_CORE
+#ifndef LINUX
 #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH)
@@ -297,6 +298,7 @@
 #if !defined(PTRACE_SETREGS) && defined(PT_SETREGS)
 /* Trace Control Block */
 struct tcb {

Kind Regards,

Yakovetsky Vladimir