Opened 2 years ago
Closed 7 months ago
#65464 closed defect (fixed)
gpac 2.0.0: error: use of undeclared identifier 'CLOCK_MONOTONIC'
Reported by: | sambthompson (Sam Thompson) | Owned by: | mohd-akram (Mohamed Akram) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.2 |
Keywords: | elcapitan | Cc: | mascguy (Christopher Nielsen) |
Port: | gpac |
Description
gpac fails to build on OS X 10.11:
quickjs/quickjs-libc.c:2058:5: warning: implicit declaration of function 'clock_gettime' is invalid in C99 [-Wimplicit-function-declaration] :info:build clock_gettime(CLOCK_MONOTONIC, &ts); :info:build ^ :info:build quickjs/quickjs-libc.c:2058:19: error: use of undeclared identifier 'CLOCK_MONOTONIC' :info:build clock_gettime(CLOCK_MONOTONIC, &ts); :info:build ^ :info:build 1 warning and 1 error generated.
Presumably affects earlier versions of OS X; per #65124, Ryan Schmidt wrote:
clock_gettime
and related identifiers were added in macOS 10.12. Consider including the legacy support portgroup which provides an implementation ofclock_gettime
for older systems.
Attachments (3)
Change History (16)
Changed 2 years ago by sambthompson (Sam Thompson)
comment:1 Changed 2 years ago by mascguy (Christopher Nielsen)
Cc: | mascguy added |
---|
comment:2 Changed 2 years ago by Christopher Nielsen <mascguy@…>
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:3 Changed 2 years ago by sambthompson (Sam Thompson)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Thanks, @mascguy, but still getting a build error here, this time from the linker:
:info:build Undefined symbols for architecture x86_64: :info:build "_clock_gettime", referenced from: :info:build _js_os_poll in quickjs-libc.o :info:build _js_os_setTimeout in quickjs-libc.o :info:build ld: symbol(s) not found for architecture x86_64 :info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)
Tried port clean gpac to clean up prior build artifacts. Adding log.
Changed 2 years ago by sambthompson (Sam Thompson)
Attachment: | main.2.log added |
---|
Log after legacy support was added.
Changed 2 years ago by sambthompson (Sam Thompson)
Attachment: | main.3.log added |
---|
Repeated after port clean --all gpac
and port -vt upgrade gpac
comment:4 Changed 2 years ago by sambthompson (Sam Thompson)
Maybe same cause as #65427; seems to be similar error.
comment:5 Changed 2 years ago by jmroot (Joshua Root)
Looks like the legacysupport flags need to be added in the configure args.
comment:6 follow-up: 7 Changed 2 years ago by sambthompson (Sam Thompson)
I note the fix to got
in #65124 didn't add any flags?
comment:7 follow-up: 8 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to sambthompson:
Maybe same cause as #65427; seems to be similar error.
It is the "same cause" in that, as in #65427, this port is not honoring MacPorts LDFLAGS (irrespective of legacysupport: note how the -arch
flag is missing on the link line too), but since each build system is unique, a unique solution will need to be developed for this port.
Replying to sambthompson:
I note the fix to
got
in #65124 didn't add any flags?
That's because got's build system is not identical to the snownews or gpac build systems. Different developers decided to do things different ways. Portfiles have to supply information to the different build systems in the ways they expect.
comment:8 Changed 2 years ago by sambthompson (Sam Thompson)
Thanks, Ryan;
Wondering if it's the presence of the configure.args affecting the flags in the portfile on lines 83-84:
configure.args --cc="${configure.cc}" \ --cxx="${configure.cxx}" \ --extra-cflags="${configure.cc_archflags}" \ --extra-ldflags="${configure.ld_archflags}" \ --mandir=${prefix}/share/man \ --X11-path=${prefix} \ --disable-pulseaudio \
comment:9 Changed 2 years ago by mascguy (Christopher Nielsen)
Most of the time, legacysupport
works without further changes, and didn't expect any issues. Sorry folks!
Looking at this now.
comment:10 Changed 2 years ago by mascguy (Christopher Nielsen)
Tried some quick, naive fixes, but no dice so far.
Need to dig into upstream's configure and build scripts, to better understand what's happening.
comment:11 follow-up: 12 Changed 2 years ago by erikbs
On Mac/Darwin, unlike other platforms, gpac overwrites the user-specified LDFLAGS, so the flags inserted by MacPorts to link legacy-support are never actually passed to the linker. On other platforms gpac’s flags are appended to LDFLAGS instead. Since there is nothing that suggests that this is intentional, I created a pull request on the gpac master repo to address this and also a pull request for the gpac Portfile so that we do not have to wait for the next version of gpac: https://github.com/macports/macports-ports/pull/16604
comment:12 Changed 21 months ago by sambthompson (Sam Thompson)
Replying to erikbs:
On Mac/Darwin, unlike other platforms, gpac overwrites the user-specified LDFLAGS, so the flags inserted by MacPorts to link legacy-support are never actually passed to the linker. On other platforms gpac’s flags are appended to LDFLAGS instead. Since there is nothing that suggests that this is intentional, I created a pull request on the gpac master repo to address this and also a pull request for the gpac Portfile so that we do not have to wait for the next version of gpac: https://github.com/macports/macports-ports/pull/16604
Thanks, erikbs! Both PRs have been accepted and a recent upgrade to gpac 2.2.0_0 seems to have gone fine. I think this is fixed now and can be closed.
comment:13 Changed 7 months ago by mohd-akram (Mohamed Akram)
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
In f2b7ed099f16c9585bf0f5d03f7278b0631f29cf/macports-ports (master):