Version 12 (modified by Cas, 2 years ago) (diff)

--

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.
  6. 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
    
  7. 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
      
  8. Optionally create a dmg image:
    hdiutil create -format UDBZ -srcfolder 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