The default bug view has changed. See this FAQ.

media/webrtc doesn't build on *BSD or other non-standard platforms

RESOLVED FIXED in mozilla16

Status

()

Core
WebRTC
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: gaston, Assigned: jesup)

Tracking

Trunk
mozilla16
x86
OpenBSD
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [qa-])

Attachments

(1 attachment)

(Reporter)

Description

5 years ago
Since landing of webrtc in bugs 749889/757637 + it being enabled by default in 771248, my openbsd builds started failing with 

Updating projects from gyp files...
/bin/sh: python: not found
Traceback (most recent call last):
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/build/gyp_chromium", line 171, in <module>
    sys.exit(gyp.main(args))
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/tools/gyp/pylib/gyp/__init__.py", line 471, in main
    options.circular_check)
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/tools/gyp/pylib/gyp/__init__.py", line 111, in Load
    depth, generator_input_info, check, circular_check)
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/tools/gyp/pylib/gyp/input.py", line 2289, in Load
    depth, check)
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/tools/gyp/pylib/gyp/input.py", line 387, in LoadTargetBuildFile
    build_file_path)
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/tools/gyp/pylib/gyp/input.py", line 932, in ProcessVariablesAndConditionsInDict
    variables, build_file, 'variables')
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/tools/gyp/pylib/gyp/input.py", line 939, in ProcessVariablesAndConditionsInDict
    expanded = ExpandVariables(value, is_late, variables, build_file)
  File "/var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/tools/gyp/pylib/gyp/input.py", line 696, in ExpandVariables
    (contents, p.returncode))
Exception: Call to 'python ./tools/win/supalink/check_installed.py' returned exit status 127. while trying to load /var/buildslave-mozilla/mozilla-central-amd64/build/media/webrtc/trunk/peerconnection.gyp
configure: error: failed to generate WebRTC Makefiles

(see http://buildbot.rhaalovely.net/builders/mozilla-central-amd64/builds/447/steps/configure/logs/stdio for the full configure log)

This is because the internals of gyp don't reuse PYTHON from the build system; On OpenBSD there's no such 'python' in $PATH, only python2.7, and i've been using mk_add_options PYTHON=/usr/local/bin/python2.7 in .mozconfig since the build system started relying more and more on python. This has worked fine so far, and i'd hate to do a non-standard python2.7->python symlink.

The failure comes from media/webrtc/trunk/build/common.gypi:527
 'incremental_chrome_dll%': '<!(python <(DEPTH)/tools/win/supalink/check_installed.py)',

(why is this code ever called on *nix ?) adding $PYTHON here of course doesn't work.. another option would be to reuse the one from virtualenv :

Creating Python virtualenv
New python executable in ./_virtualenv/bin/python2.7
Also creating executable in ./_virtualenv/bin/python

Unfortunately i'm offline until the 15 so i can't fix it now myself, but it'd be nice if this could be fixed before next aurora uplift...
(Reporter)

Updated

5 years ago
Depends on: 771248
(Reporter)

Comment 1

5 years ago
And after some fiddling and tweaking in media/webrtc/trunk/build/common.gypi :


-    'incremental_chrome_dll%': '<!(python <(DEPTH)/tools/win/supalink/check_installed.py)',
+    'conditions': [
+    ['OS=="win"', {
+        'incremental_chrome_dll%': '<!(python <(DEPTH)/tools/win/supalink/check_installed.py)',
+    }]],

And workarounding a build failure in libvpx (reopened #750447), it appears to me like webrtc doesnt build at all on OpenBSD should be only enabled on platforms that explicitely support it for now on. Ie Linux/Mac/Win.

On OpenBSD (and likely every other BSD) the linux codepath is taken in modules/audio_device/main/source/linux, and it fails to build since it tries to include alsa headers, which are of course linux-only. That'll need some time to get that code to compile & run on !linux, so in the meantime m-c shouldnt try to build webrtc on 'unsupported' platforms...

Note that the issue with 'incremental_chrome_dll%': '<!(python <(DEPTH)/tools/win/supalink/check_installed.py)' remains to be fixed..
(Reporter)

Updated

5 years ago
Depends on: 757637
(Assignee)

Comment 2

5 years ago
Taking bug, likely will disable on other *nix's for now - though if we made it detect ALSA vs Pulse, and Pulse is on *BSD, it might be ok.

The python thing is easy.
Component: Build Config → WebRTC
(Assignee)

Comment 3

5 years ago
Created attachment 640237 [details] [diff] [review]
Don't build webrtc except for Linux/Mac/Windows; don't check for chrome dlls on windows

Try build running at https://tbpl.mozilla.org/?tree=Try&rev=7a025e30be8d  Already looking green for linux and Mac.  Feel free to try this on a *BSD
(Assignee)

Updated

5 years ago
Assignee: nobody → rjesup
(Assignee)

Comment 4

5 years ago
Comment on attachment 640237 [details] [diff] [review]
Don't build webrtc except for Linux/Mac/Windows; don't check for chrome dlls on windows

Yes, I'll get rid of the spurious blank line. :-)  Try running, see previous comment.
Attachment #640237 - Flags: review?(benjamin)

Comment 5

5 years ago
Why not encourage people to port it by explicitly asking for --disable-webrtc similar to --disable-necko-wifi ?

And Alsa works at least on FreeBSD with OSS plugin.
(Assignee)

Comment 6

5 years ago
Green on all platforms in try; checked build logs to make sure it built for linux/mac/win.

I'll defer to the build peers on which way this should work; I'll note that we (Mozilla webrtc team) don't have cycles to work on porting the core webrtc code to other OS's at this moment, though someone could contribute patches back to webrtc.org.  Thus I'd rather avoid pain for anyone on a non-standard platform we're not ready to help with.  If someone gets it working (it can be done, might be easy!), we'll happily help take the patch and get it upstreamed as needed.
Comment on attachment 640237 [details] [diff] [review]
Don't build webrtc except for Linux/Mac/Windows; don't check for chrome dlls on windows

That seems deterministic enough.
Attachment #640237 - Flags: review?(benjamin) → review+
(Assignee)

Updated

5 years ago
Summary: media/webrtc doesn't reuse PYTHON env var → media/webrtc doesn't build on *BSD or other non-standard platforms
(Assignee)

Comment 8

5 years ago
https://hg.mozilla.org/integration/mozilla-inbound/rev/7cfd416e0b06
https://hg.mozilla.org/mozilla-central/rev/7cfd416e0b06
Status: NEW → RESOLVED
Last Resolved: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla16
(Reporter)

Comment 10

5 years ago
Thanks jesup for handling this, i've had a successful unpatched build on the 14 so it solved the issue for me. I'll try to work on porting webrtc to openbsd (at least getting it build fine) when time permits.

Updated

5 years ago
Whiteboard: [qa-]
You need to log in before you can comment on or make changes to this bug.