xpra icon
Bug tracker and wiki

Opened 6 weeks ago

Last modified 10 days ago

#1501 new task

2.1 moduleset updates

Reported by: Antoine Martin Owned by: Smo
Priority: major Milestone: 2.1
Component: platforms Version: trunk
Keywords: osx Cc:

Description

Tracker ticket for the moduleset changes and those that may need to be backported. (see #1404 for 2.0)

Probably safe to backport to 1.x and 2.0.x:

Not needed:

Attachments (1)

build-1.0-with-newer-system.patch (1.2 KB) - added by Antoine Martin 6 weeks ago.
patch to allow us to build 1.0.x versions on a newer build system (libraries renamed or just not installed)

Download all attachments as: .zip

Change History (14)

Changed 6 weeks ago by Antoine Martin

patch to allow us to build 1.0.x versions on a newer build system (libraries renamed or just not installed)

comment:1 Changed 6 weeks ago by Antoine Martin

Owner: changed from Antoine Martin to Smo

All built OK except for ffmpeg which tried to link with "-framework CoreMedia", removing all those from the configure script allowed it to build just fine.

beta 1.0.6 packages posted: http://xpra.org/beta/osx.

@smo: how do we patch the configure script? (ideally using sed rather than a patch which may not apply cleanly with updates)

comment:2 Changed 4 weeks ago by Antoine Martin

Important update from upstream: Removal of support for obsolete MacOS X Versions and global module update: I've completed the removal of support for versions of MacOS X earlier than 10.8 from gtk-osx. If you still need to build for 10.4u or 10.5, or on 10.4-10.7, I've tagged the last commit that supports that with
"Last-Lion" to make it easy to have a jhbuildrc and modulesets to support your needs.

comment:3 Changed 2 weeks ago by Antoine Martin

@smo: how to I update nasm? nasm 2.13 is out.

Last edited 2 weeks ago by Antoine Martin (previous) (diff)

comment:4 Changed 2 weeks ago by Antoine Martin

Owner: changed from Smo to Antoine Martin
Status: newassigned
  • r15857: libepoxy 1.4.2
  • r15856: try to switch to gstreamer 1.12.0, reverted in r15858 (see below) then bumped to 1.10.4 in r15859.

I had to fix the gstreamer 1.12.0 osxaudio compilation in gst-plugins-good to avoid this error:

$ gst-launch-1.0 audiotestsrc ! osxaudiosink

(gst-plugin-scanner:86177): GStreamer-WARNING **: Failed to load plugin \
    '/Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so': dlopen(/Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so, 2): \
    Symbol not found: _AudioComponentFindNext
  Referenced from: /Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so (which was built for Mac OS X 10.11)
  Expected in: /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
 in /Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so

(gst-plugin-scanner:86177): GStreamer-WARNING **: Failed to load plugin \
    '/Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so': dlopen(/Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so, 2): \
    Symbol not found: _AudioComponentFindNext
  Referenced from: /Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so (which was built for Mac OS X 10.11)
  Expected in: /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
 in /Users/osx/gtk/inst/lib/gstreamer-1.0/libgstosxaudio.so
WARNING: erroneous pipeline: no element "osxaudiosink"

I fixed this by adding -framework AudioUnit -framework CoreAudio -framework AudioToolbox to the LDFLAGS in the sys/osxaudio/Makefile. (inspired by OSX 10.6 gnuradio: Audio Library Error)

Not sure why this has come up now.
And then... things get worse: most of the muxers no longer work: ogg and mka formats all fail with the dreaded error:

sound output pipeline error: gst-stream-error-quark: Internal data stream error. (1)
sound output  appsrc do-timestamp=1 name=src emit-signals=0 block=0 is-live=0 stream-type=0 format=4 ! \
    matroskademux ! opusdec ! audioconvert ! audioresample ! volume name=volume volume=0 ! \
    queue name=queue min-threshold-time=0 max-size-buffers=0 max-size-bytes=0 max-size-time=450000000 leaky=2 ! \
    osxaudiosink async=True qos=True sync=False
sound output  gstbasesrc.c(2939)
sound output  void gst_base_src_loop(GstPad *) ()
sound output  /GstPipeline:pipeline0/GstAppSrc:src:
sound output  streaming stopped, reason not-negotiated (-4)

Which is why this was reverted.

comment:5 Changed 2 weeks ago by Antoine Martin

Ended up starting from scratch again because gstreamer failed again at runtime.

Last edited 13 days ago by Antoine Martin (previous) (diff)

comment:6 Changed 13 days ago by Antoine Martin

Owner: changed from Antoine Martin to Smo
Status: assignednew

Panic is over, things build fine again, provided that:

  • don't run jhbuild from its own shell - nesting doesn't work anymore (should file ticket upstream)
  • make sure that the .jhbuildrc-custom customization looks more or less like this one:
    _gtk_osx_use_jhbuild_python = True
    
    setup_sdk(target="10.10", sdk_version="10.10", architectures=["x86_64"])
    os.environ["CC"] = "/usr/bin/gcc"
    os.environ["DYLD_LIBRARY_PATH"] = ""
    build_policy = "updated-deps"
    
    modules = [ "openssl", "python", "yasm", "nasm", "libxml2", "itstool", "gtk-doc",
    "meta-gtk-osx-bootstrap", "meta-gtk-osx-core",
    "libpng", "python-setuptools-scm",
    "libcroco", "librsvg", "meta-gtk-osx-python", "meta-gtk-osx-themes",
    "gtk-quartz-engine", "gtk-mac-integration-python", "meta-osx-xpra-deps",
    "meta-subversion-xpra", "meta-osx-xpra-pkgtools"]
      
    moduleset="http://xpra.org/svn/Xpra/trunk/osx/jhbuild/modulesets-stable/gtk-osx.modules"
    
    os.environ["SSL_CERT_FILE"] = "/Users/osx/gtk/inst/etc/ssl/cacert.pem"
    

(some of the modules should be picked up automatically but for some unknown reason aren't: "python-setupttols-scm" should get built before "python-lz4" automatically for example)

Confirmed that the gstreamer problems occur when switching to 1.12.0, though it could still be a problem with the toolchain / leftovers from the previous version.


r15865 adds a module for "brotli", but the Makefile doesn't have an "install" command, so this fails.
I can install it by appending this to the Makefile by hand:

install :
	install -d $(BINDIR) $(JHBUILD_PREFIX)/bin
	install -m 0755 $(BINDIR)/bro $(JHBUILD_PREFIX)/bin/

But this then fails when running it from jhbuild with:

W: Ignoring uninstalled package: brotli
Traceback (most recent call last):
  File "/Users/osx/.local/bin/jhbuild", line 32, in <module>
    jhbuild.main.main(sys.argv[1:])
  File "/Users/osx/Source/jhbuild/jhbuild/main.py", line 155, in main
    rc = jhbuild.commands.run(command, config, args, help=lambda: print_help(parser))
  File "/Users/osx/Source/jhbuild/jhbuild/commands/__init__.py", line 183, in run
    return cmd.execute(config, args, help)
  File "/Users/osx/Source/jhbuild/jhbuild/commands/__init__.py", line 52, in execute
    return self.run(config, options, args, help)
  File "/Users/osx/Source/jhbuild/jhbuild/commands/base.py", line 268, in run
    return build.build()
  File "/Users/osx/Source/jhbuild/jhbuild/frontends/buildscript.py", line 163, in build
    error, altphases = module.run_phase(self, phase)
  File "/Users/osx/Source/jhbuild/jhbuild/modtypes/__init__.py", line 420, in run_phase
    method(buildscript)
  File "/Users/osx/Source/jhbuild/jhbuild/modtypes/autotools.py", line 314, in do_install
    self.process_install(buildscript, self.get_revision())
  File "/Users/osx/Source/jhbuild/jhbuild/modtypes/__init__.py", line 316, in process_install
    new_contents = fileutils.accumulate_dirtree_contents(destdir_prefix)
  File "/Users/osx/Source/jhbuild/jhbuild/utils/fileutils.py", line 45, in accumulate_dirtree_contents
    _accumulate_dirtree_contents_recurse(path, contents)
  File "/Users/osx/Source/jhbuild/jhbuild/utils/fileutils.py", line 27, in _accumulate_dirtree_contents_recurse
    names = os.listdir(path)
OSError: [Errno 2] No such file or directory: '/Users/osx/gtk/inst/_jhbuild/root-brotli/Users/osx/gtk/inst'

@smo: how do I make it play nice?

Last edited 13 days ago by Antoine Martin (previous) (diff)

comment:7 Changed 11 days ago by Smo

*** Installing brotli *** [1/1]
make DESTDIR=/Users/spikesinc/gtk/inst/_jhbuild/root-brotli install

Have to install to DESTDIR instead and that should work

comment:8 Changed 11 days ago by Smo

Easier way is to just use cmake it would seem

comment:9 Changed 11 days ago by Smo

change brotli to cmake in r15880

comment:10 Changed 11 days ago by Smo

I had a few issues myself when building all of this from the start again. First off I change my .jhbuildrc-custom to be like yours and downloaded the cacert.pem. This worked nicely.

*** Checking out glib *** [20/134]
curl --continue-at - -L http://ftp.gnome.org/pub/GNOME/sources/glib/2.48/glib-2.48.0.tar.xz -o /Users/spikesinc/gtk/source/pkgs/glib-2.48.0.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   377  100   377    0     0    577      0 --:--:-- --:--:-- --:--:--   576
100 7312k  100 7312k    0     0  1727k      0  0:00:04  0:00:04 --:--:-- 2685k
xzcat -d "/Users/spikesinc/gtk/source/pkgs/glib-2.48.0.tar.xz" | tar xf -
*** Error during phase checkout of glib: could not download patch (error: 404) *** [20/134]

Ran into one of the patches missing so I will have to look into what that was. I was able to just start the build again and continue.

I also had issues where some of the compiling processes would get killed? Restarting the build usually got me by these issues.

python-setuptools-scm tried to install before setuptools was installed which caused it to produce this stacktrace

Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    import setuptools
ImportError: No module named setuptools

Also came across this error trying to install python-zeroconf not sure what to do about this one.

*** Building python-zeroconf *** [87/134]
python setup.py build
Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    [l for l in open(join(PROJECT_ROOT, 'zeroconf.py')) if '__version__' in l][0]
LookupError: unknown encoding: 
*** Error during phase build of python-zeroconf: ########## Error running python setup.py build *** [87/134]
Last edited 11 days ago by Smo (previous) (diff)

comment:11 Changed 11 days ago by Smo

I guess that was too easy. Still have this issue with brotli

[JH][~/xpra-trunk/osx/jhbuild]$ bro
dyld: Library not loaded: libbrotlienc.0.6.0.dylib
  Referenced from: /Users/build/gtk/inst/bin/bro
  Reason: image not found
Trace/BPT trap: 5
Last edited 11 days ago by Smo (previous) (diff)

comment:12 Changed 11 days ago by Antoine Martin

I don't have my macos VM with me so I cannot test today, but maybe the cmake build is different (I don't think the pure "make" build uses shared libraries), and maybe the shared library isn't installed, or not properly installed?

comment:13 Changed 10 days ago by Antoine Martin

I also had issues where some of the compiling processes would get killed? Restarting the build usually got me by these issues.

OOM killer maybe? I'm giving this build VM lots of cpus and tons of ram..

python-setuptools-scm tried to install before setuptools was installed which caused it to produce this stacktrace

Adding "python-setuptools" before "python-setuptools-scm" in jhbuildrc-custom should fix that.

Also came across this error trying to install python-zeroconf not sure what to do about this one.

Weird one. I can't reproduce. Could be something in your environment which is different.

I guess that was too easy. Still have this issue with brotli

Are you trying to run it from within a jhbuild shell?
(I got the same error when I tried from outside the jhbuild shell env)

Note: See TracTickets for help on using tickets.