Ticket #4523 (closed bug: fixed)

Opened 2 years ago

Last modified 2 years ago

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 Difficulty:
Test Case: Blocked By:
Blocking: Related Tickets:

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

Changed 2 years ago by bos

  • failure changed from None/Unknown to Building GHC failed

Changed 2 years ago by igloo

  • owner set to igloo
  • milestone set to 7.0.2

Changed 2 years ago by simonmar

  • priority changed from normal to high

Changed 2 years ago by igloo

  • status changed from new to closed
  • resolution set to fixed

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.