Closed
Bug 1442791
Opened 7 years ago
Closed 7 years ago
gfx/angle/checkout/src/common/system_utils.cpp: undefined reference to `angle::GetPathSeparator()'
Categories
(Core :: Graphics, defect, P3)
Tracking
()
RESOLVED
FIXED
mozilla61
Tracking | Status | |
---|---|---|
firefox-esr52 | --- | unaffected |
firefox58 | --- | unaffected |
firefox59 | --- | unaffected |
firefox60 | + | fixed |
firefox61 | --- | fixed |
People
(Reporter: jbeich, Assigned: jgilbert)
References
Details
(Keywords: regression, Whiteboard: gfx-noted)
Attachments
(1 file, 3 obsolete files)
(deleted),
text/x-review-board-request
|
jrmuizel
:
review+
jbeich
:
feedback+
jcristau
:
approval-mozilla-beta+
|
Details |
$ c++ -v
FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0)
Target: x86_64-unknown-freebsd11.1
Thread model: posix
InstalledDir: /usr/bin
$ echo "ac_add_options --disable-webrtc # bug 1437670 workaround" >>.mozconfig
$ ./mach bootstrap # select Firefox for Desktop
$ ./mach build
[...]
../../gfx/angle/targets/angle_common/system_utils.o: In function `angle::PrependPathToEnvironmentVar(char const*, char const*)':
gfx/angle/checkout/src/common/system_utils.cpp:(.text+0x1b): undefined reference to `angle::GetEnvironmentVar(char const*)'
gfx/angle/checkout/src/common/system_utils.cpp:(.text+0x54): undefined reference to `angle::GetPathSeparator()'
gfx/angle/checkout/src/common/system_utils.cpp:(.text+0x9d): undefined reference to `angle::SetEnvironmentVar(char const*, char const*)'
/usr/local/bin/ld: libxul.so: hidden symbol `_ZN5angle16GetPathSeparatorEv' isn't defined
/usr/local/bin/ld: final link failed: Bad value
Assignee | ||
Comment 1•7 years ago
|
||
Looks like BSD should also include system_utils_linux.cpp.
Comment 2•7 years ago
|
||
(In reply to Jeff Gilbert [:jgilbert] from comment #1)
> Looks like BSD should also include system_utils_linux.cpp.
With linux-only code such as
ssize_t result = readlink("/proc/self/exe", path, sizeof(path) - 1);
?
Ew.
I suppose that means hacking https://dxr.mozilla.org/mozilla-central/source/gfx/angle/src/angle.gyp#164 and/or https://dxr.mozilla.org/mozilla-central/source/gfx/angle/src/angle.gyp#274 and/or all the is_linux conditions in https://dxr.mozilla.org/mozilla-central/source/gfx/angle/BUILD.gn ?
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
A few issues remain:
- update-angle.py is untested, requires Windows or I couldn't figure out how to use it (README_MOZILLA is missing)
- _linux.cpp is shared with BSDs to avoid copypasta (both are ELF platforms)
and support /proc/self/exe but under /emul/linux (NetBSD) or /compat/linux (FreeBSD)
- OpenBSD dropped /proc in 5.7 and never supported KERN_PROC_PATHNAME
- Upstreaming is complicated because of Google Account walled garden; I don't care
about credit, so feel free to forward the changes as your own
Gecko doesn't use angle::GetExecutablePath() or angle::GetExecutableDirectory(), so OpenBSD can get away with a broken one. ;)
https://searchfox.org/mozilla-central/search?regexp=true&q=%5CbGetExecutable(Path%7CDirectory)
Instead of touching ANGLE code and complicating rebases an alternative option is to simply introduce a fallback. Not clue how to translate this into gfx/angle/update-angle.py.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=d83c09ff62482fbc240259d27d12d7b193174970
Attachment #8955834 -
Flags: review?(jgilbert)
Comment 8•7 years ago
|
||
Fwiw, the 'smallest fix' would work for me. Simpler, smaller, smarter :)
Assignee | ||
Comment 9•7 years ago
|
||
Comment on attachment 8955834 [details] [diff] [review]
Smallest fix (alternative)
This isn't what we want. (It doesn't really fit fith efforts to make and keep this programatic)
Attachment #8955834 -
Flags: review?(jgilbert) → review-
Assignee | ||
Comment 10•7 years ago
|
||
(In reply to Jan Beich from comment #6)
> Gecko doesn't use angle::GetExecutablePath() or
> angle::GetExecutableDirectory(), so OpenBSD can get away with a broken one.
> ;)
> https://searchfox.org/mozilla-central/
> search?regexp=true&q=%5CbGetExecutable(Path%7CDirectory)
I'll look into if we can alter the target dependencies here.
Assignee | ||
Updated•7 years ago
|
Assignee: nobody → jgilbert
Assignee | ||
Updated•7 years ago
|
Priority: -- → P3
Whiteboard: gfx-noted
Comment 11•7 years ago
|
||
So, which way should this get fixed ? can we help there ?
Reporter | ||
Comment 12•7 years ago
|
||
[Tracking Requested - why for this release]: Bug 1440849 landed after soft freeze, destabilizing Tier3 support (DragonFly, FreeBSD, NetBSD, OpenBSD, Solaris). No known workaround as ANGLE cannot be disabled during build.
https://www.mail-archive.com/dev-platform@lists.mozilla.org/msg24915.html
tracking-firefox60:
--- → ?
Updated•7 years ago
|
Updated•7 years ago
|
status-firefox61:
--- → affected
Comment 14•7 years ago
|
||
jeff, can we help you in some way ? This is breaking all non-tier1, and affects central and beta. The fix is simple, there are various options, but can we at least move forward to get back to a green state ?
Flags: needinfo?(jgilbert)
Assignee | ||
Comment 15•7 years ago
|
||
mozreview-review |
Comment on attachment 8955832 [details]
Bug 1442791 - Unbreak ANGLE build on Tier3 after bug 1440849.
https://reviewboard.mozilla.org/r/224860/#review235292
::: gfx/angle/checkout/src/common/system_utils_linux.cpp:33
(Diff revision 1)
> char path[4096];
>
> +#if defined(__linux__)
> ssize_t result = readlink("/proc/self/exe", path, sizeof(path) - 1);
> +#elif defined(__sun)
> + ssize_t result = readlink("/proc/self/path/a.out", path, sizeof(path) - 1);
This code isn't called from Gecko. Don't bother trying to make it portable.
::: gfx/angle/targets/angle_common/moz.build:125
(Diff revision 1)
> ]
> -if CONFIG['OS_ARCH'] == 'Darwin':
> +if CONFIG['OS_ARCH'] in ('Darwin',):
> SOURCES += [
> '../../checkout/src/common/system_utils_mac.cpp',
> ]
> -if CONFIG['OS_ARCH'] == 'Linux':
> +if CONFIG['OS_ARCH'] in ('Linux', 'SunOS', 'Darwin', 'DragonFly', 'FreeBSD', 'NetBSD', 'OpenBSD'):
This is awful. Is there not a more concise way to do this?
::: gfx/angle/update-angle.py:432
(Diff revision 1)
> continue
> elif e in ['cpp', 'cc']:
> if b.endswith('_win'):
> - sources_by_os_arch.setdefault('WINNT', []).append(x)
> + sources_by_os_arch.setdefault("('WINNT',)", []).append(x)
> elif b.endswith('_linux'):
> - sources_by_os_arch.setdefault('Linux', []).append(x)
> + sources_by_os_arch.setdefault("('Linux', 'SunOS', 'Darwin', 'DragonFly', 'FreeBSD', 'NetBSD', 'OpenBSD')", []).append(x)
Use actual tuples not a string.
Assignee | ||
Comment 16•7 years ago
|
||
mozreview-review |
Comment on attachment 8955833 [details]
Bug 1442791 - Try avoiding /proc on BSDs in GetExecutablePathImpl().
https://reviewboard.mozilla.org/r/224862/#review235304
::: gfx/angle/checkout/src/common/system_utils_linux.cpp:29
(Diff revision 1)
> {
>
> namespace
> {
>
> +#if defined(KERN_PROC_PATHNAME)
Make a trivial stub, not a functional one. We don't call this code anyway. It merely needs to compile.
Assignee | ||
Comment 17•7 years ago
|
||
(In reply to Jan Beich from comment #5)
> A few issues remain:
> - update-angle.py is untested, requires Windows or I couldn't figure out how
> to use it (README_MOZILLA is missing)
> - _linux.cpp is shared with BSDs to avoid copypasta (both are ELF platforms)
> and support /proc/self/exe but under /emul/linux (NetBSD) or /compat/linux
> (FreeBSD)
> - OpenBSD dropped /proc in 5.7 and never supported KERN_PROC_PATHNAME
> - Upstreaming is complicated because of Google Account walled garden; I
> don't care
> about credit, so feel free to forward the changes as your own
It requires windows. This is not optional for the time being. I can handle upstreaming, but hopefully we can minimize what we need to upstream.
Flags: needinfo?(jgilbert)
Reporter | ||
Comment 18•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8955832 [details]
Bug 1442791 - Unbreak ANGLE build on Tier3 after bug 1440849.
https://reviewboard.mozilla.org/r/224860/#review235292
> This is awful. Is there not a more concise way to do this?
> Is there not a more concise way to do this?
"Unix but not Apple" idiom from CMake world. See attachment 8955834 [details] [diff] [review] for an example.
Reporter | ||
Comment 19•7 years ago
|
||
mozreview-review-reply |
Comment on attachment 8955833 [details]
Bug 1442791 - Try avoiding /proc on BSDs in GetExecutablePathImpl().
https://reviewboard.mozilla.org/r/224862/#review235304
> Make a trivial stub, not a functional one. We don't call this code anyway. It merely needs to compile.
Why fix what builds fine as is?
Reporter | ||
Comment 20•7 years ago
|
||
(In reply to Jeff Gilbert [:jgilbert] from comment #17)
> (In reply to Jan Beich from comment #5)
> > A few issues remain:
> > - update-angle.py is untested, requires Windows or I couldn't figure out how
>
> It requires windows. This is not optional for the time being.
I'm not familar with Windows, nor have a license.
> I can handle upstreaming, but hopefully we can minimize what we need to upstream.
If attachment 8955834 [details] [diff] [review] is the desired end result then there's nothing to upstream. It's all Gecko shenanigans in a NPOTB file.
Comment hidden (mozreview-request) |
Attachment #8955833 -
Attachment is obsolete: true
Attachment #8955833 -
Flags: review?(jgilbert)
Attachment #8955834 -
Attachment is obsolete: true
Comment hidden (mozreview-request) |
Reporter | ||
Comment 23•7 years ago
|
||
I've uploaded something in-between. Implementing `else` logic is harder but the number of Tier3 platforms still alive in Gecko after aggressive oxidation is small.
Comment hidden (mozreview-request) |
Assignee | ||
Comment 25•7 years ago
|
||
Comment on attachment 8961174 [details]
Bug 1442791 - Build _linux files on BSDs in ANGLE. -
How does this look?
Attachment #8961174 -
Flags: feedback?(jbeich)
Assignee | ||
Comment 26•7 years ago
|
||
mozreview-review |
Comment on attachment 8955832 [details]
Bug 1442791 - Unbreak ANGLE build on Tier3 after bug 1440849.
https://reviewboard.mozilla.org/r/224860/#review235654
Let's try the not-mac-not-win approach.
Attachment #8955832 -
Flags: review?(jgilbert)
Assignee | ||
Comment 27•7 years ago
|
||
mozreview-review |
Comment on attachment 8955832 [details]
Bug 1442791 - Unbreak ANGLE build on Tier3 after bug 1440849.
https://reviewboard.mozilla.org/r/224860/#review235656
Comment 28•7 years ago
|
||
mozreview-review |
Comment on attachment 8961174 [details]
Bug 1442791 - Build _linux files on BSDs in ANGLE. -
https://reviewboard.mozilla.org/r/229942/#review235664
Attachment #8961174 -
Flags: review?(jmuizelaar) → review+
Reporter | ||
Comment 29•7 years ago
|
||
Comment on attachment 8961174 [details]
Bug 1442791 - Build _linux files on BSDs in ANGLE. -
I confirm, it builds fine on FreeBSD with the patch applied.
Attachment #8961174 -
Flags: feedback?(jbeich) → feedback+
Attachment #8955832 -
Attachment is obsolete: true
Comment 30•7 years ago
|
||
Pushed by jgilbert@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/3e3aeeea7fc3
Build _linux files on BSDs in ANGLE. - r=jrmuizel
Reporter | ||
Comment 31•7 years ago
|
||
Can you request backport to Beta aka Firefox 60 (ESR) ?
Flags: needinfo?(jgilbert)
Comment 32•7 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
Assignee | ||
Comment 33•7 years ago
|
||
Comment on attachment 8961174 [details]
Bug 1442791 - Build _linux files on BSDs in ANGLE. -
Approval Request Comment
[Feature/Bug causing the regression]: Bug 1440849
[User impact if declined]: Can't build on some tier 2/3 configs
[Is this code covered by automated tests?]: build-only
[Has the fix been verified in Nightly?]: yes
[Needs manual test from QE? If yes, steps to reproduce]: no
[List of other uplifts needed for the feature/fix]: none
[Is the change risky?]: no
[Why is the change risky/not risky?]: build-only
[String changes made/needed]: none
Flags: needinfo?(jgilbert)
Attachment #8961174 -
Flags: approval-mozilla-beta?
Comment 34•7 years ago
|
||
Comment on attachment 8961174 [details]
Bug 1442791 - Build _linux files on BSDs in ANGLE. -
bsd build fix, beta60+
Attachment #8961174 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Comment 35•7 years ago
|
||
bugherder uplift |
You need to log in
before you can comment on or make changes to this bug.
Description
•