Opened 7 years ago

Closed 7 years ago

#4523 closed bug (fixed)

unix package does not check properly for sem_close

Reported by: bos Owned by: igloo
Priority: high Milestone: 7.0.2
Component: libraries/unix Version: 7.0.1
Keywords: Cc:
Operating System: Linux Architecture: Unknown/Multiple
Type of failure: Building GHC failed Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:

Description

On modern Linux systems (in my case, Fedora 13 and 14), the sem_close and other functions are in the rt and pthread libraries. This combination is not checked for properly by the unix package's autoconf script. As a result attempting to build the unix package will succeed, but linking applications against the misconfigured unix will result in undefined symbol errors for e.g. sem_close.

I believe that the C compiler needs to be invoked with -pthread for the right thing to happen, as unix.buildinfo contains a reference to rt that is nevertheless not enough:

buildable: True
cc-options: 
ld-options: 
extra-libraries:  rt util dl 

Here's my current workaround hack:

--- old-unix/configure.ac	2010-11-23 15:25:33.741849630 -0800
+++ new-unix/configure.ac	2010-11-23 15:25:33.760849987 -0800
@@ -215,6 +215,9 @@
 	PTHREAD_CFLAGS=-pthread
 	PTHREAD_LDFLAGS=-pthread
 	;;
+linux*)
+	PTHREAD_LIBS=pthread
+	;;
 esac
 AC_SUBST(PTHREAD_CFLAGS)
 AC_SUBST(PTHREAD_LDFLAGS)

Change History (4)

comment:1 Changed 7 years ago by bos

Type of failure: None/UnknownBuilding GHC failed

comment:2 Changed 7 years ago by igloo

Milestone: 7.0.2
Owner: set to igloo

comment:3 Changed 7 years ago by simonmar

Priority: normalhigh

comment:4 Changed 7 years ago by igloo

Resolution: fixed
Status: newclosed

Fixed in HEAD and 7.0 branch:

Sat Jan  1 20:11:50 GMT 2011  Ian Lynagh <igloo@earth.li>
  * Proper autoconf test for sem_close's library; fixes trac #4523
Note: See TracTickets for help on using tickets.