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
| Type of failure: | None/Unknown → Building GHC failed |
|---|
comment:2 Changed 7 years ago by
| Milestone: | → 7.0.2 |
|---|---|
| Owner: | set to igloo |
comment:3 Changed 7 years ago by
| Priority: | normal → high |
|---|
comment:4 Changed 7 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

Fixed in HEAD and 7.0 branch: