NetBSD Problem Report #45329

From www@NetBSD.org  Mon Sep  5 07:38:22 2011
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id AA14663C7A8
	for <gnats-bugs@gnats.NetBSD.org>; Mon,  5 Sep 2011 07:38:22 +0000 (UTC)
Message-Id: <20110905073822.25DB763C789@www.NetBSD.org>
Date: Mon,  5 Sep 2011 07:38:22 +0000 (UTC)
From: joern.clausen@uni-bielefeld.de
Reply-To: joern.clausen@uni-bielefeld.de
To: gnats-bugs@NetBSD.org
Subject: x11/pixman not compiling on Solaris/sparc
X-Send-Pr-Version: www-1.0

>Number:         45329
>Category:       pkg
>Synopsis:       x11/pixman not compiling on Solaris/sparc
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    solaris-pkg-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Sep 05 07:40:00 +0000 2011
>Last-Modified:  Wed Oct 12 15:05:02 +0000 2011
>Originator:     Jörn Clausen
>Release:        
>Organization:
University of Bielefeld
>Environment:
>Description:
Compiling x11/pixman on Solaris/sparc with lang/gcc34 fails with

  CCLD   libpixman-1.la
Undefined                       first referenced
 symbol                             in file
pixman_fill_mmx                     .libs/libpixman-1.so.0.22.2.exp
ld: warning: Symbol referencing errors

The package compiles using the same toolchain on Solaris/i86. And it compiles when compiling outside pkgsrc on sparc, but using the same tools. So the problem is somewhere in the pkgsrc files, but I can't pinpoint it.

I can provide config.log and output of "make" for all three cases on request.
>How-To-Repeat:

>Fix:

>Release-Note:

>Audit-Trail:
From: "OBATA Akio" <obache@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: pkg/45329: x11/pixman not compiling on Solaris/sparc
Date: Mon, 05 Sep 2011 16:55:34 +0900

 On Mon, 05 Sep 2011 16:40:00 +0900, <joern.clausen@uni-bielefeld.de> wrote:

 >> Description:
 > Compiling x11/pixman on Solaris/sparc with lang/gcc34 fails with
 >
 >   CCLD   libpixman-1.la
 > Undefined                       first referenced
 >  symbol                             in file
 > pixman_fill_mmx                     .libs/libpixman-1.so.0.22.2.exp
 > ld: warning: Symbol referencing errors
 >
 > The package compiles using the same toolchain on Solaris/i86. And it compiles when compiling outside pkgsrc on sparc, but using the same tools. So the problem is somewhere in the pkgsrc files, but I can't pinpoint it.

 It probably came from x11/pixman/files/pixman.sym.

 I feel that mmx option should be introduced and add pixman_fill_mmx to pixman.sym conditionally.

 -- 
 OBATA Akio / obache@NetBSD.org

From: =?ISO-8859-1?Q?J=F6rn_Clausen?= <joern.clausen@uni-bielefeld.de>
To: gnats-bugs@NetBSD.org
Cc: OBATA Akio <obache@NetBSD.org>, pkg-manager@NetBSD.org,
 gnats-admin@NetBSD.org, pkgsrc-bugs@NetBSD.org
Subject: Re: pkg/45329: x11/pixman not compiling on Solaris/sparc
Date: Mon, 05 Sep 2011 16:37:16 +0200

 On 09/05/11 10:00 AM, OBATA Akio wrote:
 >   It probably came from x11/pixman/files/pixman.sym.
 >
 >   I feel that mmx option should be introduced and add pixman_fill_mmx to pixman.sym conditionally.

 What platform/compiler (still?) needs pixman.sym? I simply removed 
 patch-aa, patch-ab and all references to pixman.sym from Makefile, and 
 the package compiled both on Sparc and i86.

 -- 
   Jörn Clausen                             joern.clausen@uni-bielefeld.de
   Hochschulrechenzentrum                 http://www.uni-bielefeld.de/hrz/
   Universität Bielefeld

Responsible-Changed-From-To: pkg-manager->solaris-pkg-people
Responsible-Changed-By: obache@NetBSD.org
Responsible-Changed-When: Wed, 12 Oct 2011 11:33:58 +0000
Responsible-Changed-Why:
Problem on Solaris.


From: Tim Zingelman <tez@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: pkg/45329 (x11/pixman not compiling on Solaris/sparc)
Date: Wed, 12 Oct 2011 08:24:51 -0500

 The pixman.sym is needed because pkgsrc's patch-ad removes the check
 for and use of -fvisibility=hidden so that it can be used with gcc<4.
 I can't see how you compiled with gcc34 outside pkgsrc without that
 patch included.

From: =?ISO-8859-1?Q?J=F6rn_Clausen?= <joern.clausen@uni-bielefeld.de>
To: gnats-bugs@NetBSD.org
Cc: Tim Zingelman <tez@NetBSD.org>, solaris-pkg-people@NetBSD.org,
 gnats-admin@NetBSD.org, pkgsrc-bugs@NetBSD.org
Subject: Re: pkg/45329 (x11/pixman not compiling on Solaris/sparc)
Date: Wed, 12 Oct 2011 15:57:27 +0200

 Just checked again: At the moment I have

 --- Makefile    2011/09/05 08:59:48     1.1
 +++ Makefile    2011/09/05 09:10:49
 @@ -36,11 +36,7 @@
   ###
   ###    Please, do not forget to ensure the currency of this file!

 -MAKE_ENV+=     PIXMAN_SYMFILE=${PIXMAN_SYMFILE:Q}
 -PIXMAN_SYMFILE=        ${WRKDIR}/pixman.sym
 -
   post-extract:
 -       ${CP} ${FILESDIR}/pixman.sym ${WRKDIR}
          ${CP} ${FILESDIR}/solaris-hwcap.mapfile ${WRKSRC}/pixman

   .include "../../mk/bsd.pkg.mk"

 and I removed the entries for patch-aa and patch-ab from distfiles, i.e. 
 I get

 => Applying pkgsrc patches for pixman-0.22.2nb1
 **************************************
 Ignoring patch file /pkgsrc/source/pkgsrc/x11/pixman/patches/patch-aa: 
 no checksum found
 **************************************
 **************************************
 Ignoring patch file /pkgsrc/source/pkgsrc/x11/pixman/patches/patch-ab: 
 no checksum found
 **************************************
 ===> Creating toolchain wrappers for pixman-0.22.2nb1

 The package compiles both on i86 and sparc with gcc34. And it seems to 
 work, at least depending programs like emacs or gnuplot work fine.

 And I don't know why I was able to compile the package outside pkgsrc, 
 but I still have the files:

  From config.log:

 hostname = pkgsrc-10sparc
 uname -m = sun4u
 uname -r = 5.10
 uname -s = SunOS
 uname -v = Generic_142900-03
 [...]
 configure:21770: checking whether the compiler supports -fvisibility=hidden
 configure:21797: gcc -o conftest -Werror -fvisibility=hidden 
 -I/usr/pkgsrc/head/include  conftest.c  >&5
 cc1: error: unrecognized command line option "-fvisibility=hidden"
 configure:21804: $? = 1
 configure: failed program was:
 | #if defined(__GNUC__) && (__GNUC__ >= 4)
 | #ifdef _WIN32
 | #error Have -fvisibility but it is ignored and generates a warning
 | #endif
 | #else
 | error Need GCC 4.0 for visibility
 | #endif
 |
 |                int main(int c, char **v) { (void)c; (void)v; return 0; }
 |
 configure:21842: result: no

 Yet

 $ ldd ./pixman/.libs/libpixman-1.so
          libpthread.so.1 =>       /lib/libpthread.so.1
          libm.so.2 =>     /lib/libm.so.2
          libc.so.1 =>     /lib/libc.so.1
          libgcc_s.so.1 => 
 /usr/pkgsrc/20110809/gcc34/lib/libgcc_s.so.1
          /platform/SUNW,Sun-Fire-880/lib/libc_psr.so.1


 -- 
   Jörn Clausen                             joern.clausen@uni-bielefeld.de
   Hochschulrechenzentrum                 http://www.uni-bielefeld.de/hrz/
   Universität Bielefeld

From: Tim Zingelman <tez@netbsd.org>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: pkg/45329 (x11/pixman not compiling on Solaris/sparc)
Date: Wed, 12 Oct 2011 10:03:09 -0500

 I guess the danger of not having -fvisibility=hidden and not using
 pixman.sym is that ALL symbols in the oixman code will be exposed in
 the shared library, and this may result in name collisions.  The gcc4+
 man page says of this feature: Using this feature can very
 substantially improve linking and load times of shared object
 libraries, produce more optimized code, provide near-perfect API
 export and prevent symbol clashes.

 In this case I have no idea how important or not this is, but it is
 probably not a good idea to rip out the support.

 Either the pixman_fill_mmx needs to be conditional in pixman.sym or a
 non-mmx processor alternate pixman.sym is needed.
 Not sure the best way to do that... it also looks like configure
 disables MMX for gcc<3.4 so anybody using old gcc will also fail due
 to pixman_fill_mmx in pixman.sym.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.