Version 11 (modified by Cas, 19 months ago) (diff)

tweaks to final steps

Deluge.app for OSX

Manual Steps (Tested on Yosemite VM)

  1. Install XCode
  2. Jhbuild install and update Python:
    wget https://git.gnome.org/browse/gtk-osx/plain/gtk-osx-build-setup.sh
    sh gtk-osx-build-setup.sh
    export PATH=~/.local/bin:~/gtk/inst/bin:$PATH
    jhbuild build bootstrap
    jhbuild build python
    
    • Uncomment _gtk_osx_use_jhbuild_python = True in .jhbuildrc-custom.
  3. GTK OSX Build:
    jhbuild build meta-gtk-osx-bootstrap
    
    1. PyGTK (Includes meta-gtk-osx-core)
      jhbuild build libglade
      jhbuild build meta-gtk-osx-python
      
    2. GTK OSX Themes:
      jhbuild build meta-gtk-osx-themes
      jhbuild build gtk-quartz-engine
      
  4. Bundler for Packaging Deluge.
    wget http://ftp.gnome.org/pub/gnome/sources/gtk-mac-bundler/0.7/gtk-mac-bundler-0.7.4.tar.xz
    tar xf gtk-mac-bundler-0.7.4.tar.xz
    cd gtk-mac-bundler-0.7.4
    make install
    
  5. Build libtorrent and deps using libtorrent.modules:
    wget http://git.deluge-torrent.org/deluge/plain/osx/libtorrent.modules?h=1.3-stable
    jhbuild -m libtorrent.modules build meta_libtorrent 
    
  • OpenSSL will require "Skip Module (2)" when they fail at the end of installing stage as they cannot take advantage of DESTDIR path.
  • Note on OpenSSL Error: 'libcrypto is a fat file' is due to mixing arch types (i386, x64) in build process.
  1. Install Deluge dependencies using pip:
    jhbuild shell
    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    pip install twisted[tls] chardet mako pyxdg setproctitle pillow py2app
    
  2. Install and package Deluge:
    1. If using release tarball download required setup.cfg and osx directory from git, run commands in deluge source directory:
      wget --content-disposition http://git.deluge-torrent.org/deluge/plain/setup.cfg?h=1.3-stable
      wget -rnd -np -e robots=off --reject "index.html*" --content-disposition http://git.deluge-torrent.org/deluge/plain/osx/?h=1.3-stable -P osx
      
    2. Build and install Deluge using py2app:
      jhbuild shell
      python setup.py py2app
      python setup.py install
      
      • For error "dyld_find() got an unexpected keyword argument 'loader'", either uninstall pillow or patch `MachOGraph.py`
    3. Package Deluge into app in osx/app/ using gtk-mac-bundler script:
      cd osx
      ./make-app
      
  3. Optionally create a dmg image:
    hdutil create -format UDBZ -subfolder Deluge.app deluge-installer.dmg
    

Previous Semi-Automated Guide

====================================
Instructions for building Deluge.app
====================================
1. Compiler
-----------
- To build deluge and the gtk osx modules, you must use `gcc`
- This has been successfully working with :
    - gcc 4.2.1 - Xcode 4.1 - Mac OSX Lion (10.7.2)
    - llvm-gcc 4.2.1 - Xcode 4.3.1 (With Command line utilities) - Mac OSX Lion (10.7.3)
- Check your version of gcc using `gcc -v`
2. GTK-OSX jhbuild environment
------------------------------
Quick how-to *(from the full GTK-OSX building instructions)* [1]_, [2]_
a. Create a dedicated user account and use it for all the next steps::
        sudo su - gtk
        cat << EOF > ~/.profile
        export PATH=~/.local/bin:~/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/git/bin
        EOF
        . ~/.profile
  *Note*: I'm using `gtk` login with `/opt/gtk` as home an jhbuild prefix.
b. Download and run the gtk-osx-build-setup [3]_ script to install jhbuild::
        curl -O https://raw.github.com/jralls/gtk-osx-build/master/gtk-osx-build-setup.sh
        sh gtk-osx-build-setup.sh
c. Link or copy deluge osx jhbuildrc-custom::
        ln -sf deluge/osx/jhbuildrc-custom ~/.jhbuildrc-custom
  *Note*: This setup builds only for `x86_64` arch to `/opt/gtk` prefix, feel free to edit.
d. Build jhbuild and its modulesets: *(takes a while...)*::
        jhbuild bootstrap && jhbuild

  *Note*: If you encounter an error while building `glib` like::
        gconvert.c:65:2: error: #error GNU libiconv not in use but included iconv.h is from libiconv

  Start a shell from jhbuild, edit the file `vim glib/gconvert.c +65` to delete the
  section raising error, which is irrelevant. *(Lion iconv.h looks like gnu one, but it is not)*
  Then exit the shell and resume build.
5. Build the deluge moduleset: *(takes a while...)*::
        jhbuild -m deluge/osx/deluge.modules build deluge
  *Note*: This jhbuild moduleset *should* build and install all deluge dependencies not available in gtk-osx.
3. Build Deluge.app
-------------------
a. Always do your custom build operations under a jhbuild shell::
        jhbuild shell

b. Cleanup::
        python setup.py clean -a

c. Build and install::
        python setup.py py2app
        python setup.py install
d. Build app to `deluge/osx/app/Deluge.app`::
        cd osx
        ./make-app
You *should* now have a working Deluge.app
i386 Notes
----------
- Uncomment the relevant sections of :
    - jhbuildrc-custom
    - deluge.modules
    - setup.cfg
- deluge egg has to be named without the -macosx-10.6-intel suffix
- To build for i386 under a x64 arch libtorrent python bindings have to be
  patched manually to set correct arch see macports package patch
Issues
------
If Deluge.app doesn't work or crash the first thing to do is to check OSX
Console for logs and/or crash reports.
You can enable logging by passing the usual log command switches via console::
        /Applications/Deluge.app/Contents/MacOS/Deluge -L debug -l debug.log

Recent jhbuild issues:
- Some jhbuild modules fails to build, freetype and gtk-mac-integration,
  strangely configure is not called before build/install.
- If that happens, just force rebuild with something like:
        jhbuild build -cf gtk-mac-integration-python
-  Interrupt while building with Ctrl+C and wipe to start over if configure missing
Known issues
------------
- **i386**: libtorrent crash
- **i18n**: English only for now
- **Magnet URLs**: Not currently supported by GTK-OSX
Reference
---------
.. [1] http://live.gnome.org/Jhbuild
.. [2] http://live.gnome.org/GTK%2B/OSX/Building
.. [3] http://github.com/jralls/gtk-osx-build
.. [4] http://winswitch.org/dev/macosx.html
.. [5] http://mail.python.org/pipermail/pythonmac-sig/
.. [6] https://github.com/jralls/gtk-mac-integration