[#2373] [OSX] Fix laucher scripts for single leading slash path

On Mavericks the application path passed to scripts only has single leading slash
compared to previous double slash.
Renamed and changed shebang to bash to prevent any issues.
Updated README to rst format for display in trac wiki.
This commit is contained in:
Calum Lind 2014-02-19 17:13:04 +00:00
parent 29d3e72f49
commit 41f1ad9f5f
8 changed files with 149 additions and 152 deletions

View File

@ -1,119 +0,0 @@
# 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][1] environment
Quick how-to *(from the full [GTK-OSX building][2] instructions)*
1. Create a dedicated user account and use it for all the next steps:
*Note*: I'm using `gtk` login with `/opt/gtk` as home an jhbuild prefix
sudo su - gtk
cat << EOF > ~/.profile
export PATH=~/.local/bin:~/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/git/bin
EOF
. ~/.profile
2. 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
3. Link or copy deluge osx jhbuildrc-custom:
*Note*: This setup builds only for `x86_64` arch to `/opt/gtk`
prefix, feel free to edit
ln -sf deluge/osx/jhbuildrc-custom ~/.jhbuildrc-custom
4. 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 (#4), 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 (#1)
5. Build the deluge moduleset: *(takes a while...)*
*Note*: This jhbuild moduleset *should* build and install all deluge
dependencies not available in gtk-osx
jhbuild -m deluge/osx/deluge.modules build deluge
## 3. Build Deluge.app
1. Always do your custom build operations under a jhbuild shell:
jhbuild shell
2. Cleanup:
python setup.py clean -a
3. Build and install:
python setup.py py2app
python setup.py install
4. Build app to `deluge/osx/app/Deluge.app`:
cd osx
./make-app.sh
You *should* have now 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. Alternatively, you can enable python
log by uncommenting the end of script `Deluge.app/Contents/MacOS/Deluge`
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

127
osx/README.rst Normal file
View File

@ -0,0 +1,127 @@
====================================
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

View File

@ -1,9 +1,9 @@
#!/bin/sh #!/bin/bash
EXEC="exec" EXEC="exec"
name="`basename $0`" name="`basename $0`"
if [[ "$0" == `pwd`* ]] || [[ "$0" == "//"* ]]; then if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
full_path="$0" full_path="$0"
else else
full_path="`pwd`/$0" full_path="`pwd`/$0"
@ -15,7 +15,6 @@ bundle_contents="$bundle"/Contents
bundle_macos="$bundle_contents"/MacOS bundle_macos="$bundle_contents"/MacOS
bundle_res="$bundle_contents"/Resources bundle_res="$bundle_contents"/Resources
bundle_lib="$bundle_res"/lib bundle_lib="$bundle_res"/lib
bundle_bin="$bundle_res"/bin
bundle_data="$bundle_res"/share bundle_data="$bundle_res"/share
bundle_etc="$bundle_res"/etc bundle_etc="$bundle_res"/etc
@ -74,6 +73,5 @@ if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
shift 1 shift 1
fi fi
#Note that we're calling $PYTHON here to override the version in # Note that we're calling $PYTHON here to override the version used.
#pygtk-demo's shebang. $EXEC "$PYTHON" "$bundle_contents/MacOS/Deluge-bin" "$@"
$EXEC "$PYTHON" "$bundle_contents/MacOS/Deluge-bin" "$@" #-l ~/.config/deluge/app.log -L debug

View File

@ -1,9 +1,9 @@
#!/bin/sh #!/bin/bash
EXEC="exec" EXEC="exec"
name="`basename $0`" name="`basename $0`"
if [[ "$0" == `pwd`* ]] || [[ "$0" == "//"* ]]; then if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
full_path="$0" full_path="$0"
else else
full_path="`pwd`/$0" full_path="`pwd`/$0"
@ -15,7 +15,6 @@ bundle_contents="$bundle"/Contents
bundle_macos="$bundle_contents"/MacOS bundle_macos="$bundle_contents"/MacOS
bundle_res="$bundle_contents"/Resources bundle_res="$bundle_contents"/Resources
bundle_lib="$bundle_res"/lib bundle_lib="$bundle_res"/lib
bundle_bin="$bundle_res"/bin
bundle_data="$bundle_res"/share bundle_data="$bundle_res"/share
bundle_etc="$bundle_res"/etc bundle_etc="$bundle_res"/etc
@ -30,7 +29,6 @@ export PYTHONHOME="$bundle_res"
PYTHONPATH="$bundle_lib:$PYTHONPATH" PYTHONPATH="$bundle_lib:$PYTHONPATH"
PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH" PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH"
PYTHONPATH="$bundle_lib/python/:$PYTHONPATH" PYTHONPATH="$bundle_lib/python/:$PYTHONPATH"
PYTHONPATH="$bundle_lib/pygtk/2.0:$PYTHONPATH"
export PYTHONPATH export PYTHONPATH
# We need a UTF-8 locale. # We need a UTF-8 locale.
@ -64,6 +62,5 @@ if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
shift 1 shift 1
fi fi
#Note that we're calling $PYTHON here to override the version in # Note that we're calling $PYTHON here to override the version used.
#pygtk-demo's shebang. $EXEC "$PYTHON" "$bundle_contents/MacOS/deluge-console-bin" "$@"
$EXEC "$PYTHON" "$bundle_contents/MacOS/deluge-console-bin" "$@" #-l ~/.config/deluge/console.log -L debug

View File

@ -1,9 +1,9 @@
#!/bin/sh #!/bin/bash
EXEC="exec" EXEC="exec"
name="`basename $0`" name="`basename $0`"
if [[ "$0" == `pwd`* ]] || [[ "$0" == "//"* ]]; then if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
full_path="$0" full_path="$0"
else else
full_path="`pwd`/$0" full_path="`pwd`/$0"
@ -15,7 +15,6 @@ bundle_contents="$bundle"/Contents
bundle_macos="$bundle_contents"/MacOS bundle_macos="$bundle_contents"/MacOS
bundle_res="$bundle_contents"/Resources bundle_res="$bundle_contents"/Resources
bundle_lib="$bundle_res"/lib bundle_lib="$bundle_res"/lib
bundle_bin="$bundle_res"/bin
bundle_data="$bundle_res"/share bundle_data="$bundle_res"/share
bundle_etc="$bundle_res"/etc bundle_etc="$bundle_res"/etc
@ -30,7 +29,6 @@ export PYTHONHOME="$bundle_res"
PYTHONPATH="$bundle_lib:$PYTHONPATH" PYTHONPATH="$bundle_lib:$PYTHONPATH"
PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH" PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH"
PYTHONPATH="$bundle_lib/python/:$PYTHONPATH" PYTHONPATH="$bundle_lib/python/:$PYTHONPATH"
PYTHONPATH="$bundle_lib/pygtk/2.0:$PYTHONPATH"
export PYTHONPATH export PYTHONPATH
# We need a UTF-8 locale. # We need a UTF-8 locale.
@ -64,6 +62,5 @@ if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
shift 1 shift 1
fi fi
#Note that we're calling $PYTHON here to override the version in # Note that we're calling $PYTHON here to override the version used.
#pygtk-demo's shebang. $EXEC "$PYTHON" "$bundle_contents/MacOS/deluge-web-bin" "$@"
$EXEC "$PYTHON" "$bundle_contents/MacOS/deluge-web-bin" "$@" #-l ~/.config/deluge/web.log -L debug

View File

@ -4,7 +4,7 @@
<prefix name="default">${env:JHBUILD_PREFIX}</prefix> <prefix name="default">${env:JHBUILD_PREFIX}</prefix>
<destination overwrite="yes">app</destination> <destination overwrite="yes">app</destination>
<run-install-name-tool/> <run-install-name-tool/>
<launcher-script>${project}/deluge.sh</launcher-script> <launcher-script>${project}/deluge</launcher-script>
</meta> </meta>
<plist>${project}/Info.plist</plist> <plist>${project}/Info.plist</plist>
<main-binary>${prefix}/bin/deluge-gtk</main-binary> <main-binary>${prefix}/bin/deluge-gtk</main-binary>
@ -38,7 +38,7 @@
<data dest="${bundle}/Contents/Resources">${project}/deluge.icns</data> <data dest="${bundle}/Contents/Resources">${project}/deluge.icns</data>
<data dest="${bundle}/Contents/Resources">${project}/torrent.icns</data> <data dest="${bundle}/Contents/Resources">${project}/torrent.icns</data>
<data dest="${bundle}/Contents/MacOS/deluged">${project}/deluged.sh</data> <data dest="${bundle}/Contents/MacOS/deluged">${project}/deluged</data>
<data dest="${bundle}/Contents/MacOS/deluge-web">${project}/deluge-web.sh</data> <data dest="${bundle}/Contents/MacOS/deluge-web">${project}/deluge-web</data>
<data dest="${bundle}/Contents/MacOS/deluge-console">${project}/deluge-console.sh</data> <data dest="${bundle}/Contents/MacOS/deluge-console">${project}/deluge-console</data>
</app-bundle> </app-bundle>

View File

@ -1,9 +1,9 @@
#!/bin/sh #!/bin/bash
EXEC="exec" EXEC="exec"
name="`basename $0`" name="`basename $0`"
if [[ "$0" == `pwd`* ]] || [[ "$0" == "//"* ]]; then if [[ "$0" == `pwd`* ]] || [[ "$0" == "/"* ]]; then
full_path="$0" full_path="$0"
else else
full_path="`pwd`/$0" full_path="`pwd`/$0"
@ -15,7 +15,6 @@ bundle_contents="$bundle"/Contents
bundle_macos="$bundle_contents"/MacOS bundle_macos="$bundle_contents"/MacOS
bundle_res="$bundle_contents"/Resources bundle_res="$bundle_contents"/Resources
bundle_lib="$bundle_res"/lib bundle_lib="$bundle_res"/lib
bundle_bin="$bundle_res"/bin
bundle_data="$bundle_res"/share bundle_data="$bundle_res"/share
bundle_etc="$bundle_res"/etc bundle_etc="$bundle_res"/etc
@ -30,7 +29,6 @@ export PYTHONHOME="$bundle_res"
PYTHONPATH="$bundle_lib:$PYTHONPATH" PYTHONPATH="$bundle_lib:$PYTHONPATH"
PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH" PYTHONPATH="$bundle_lib/python/lib-dynload/:$PYTHONPATH"
PYTHONPATH="$bundle_lib/python/:$PYTHONPATH" PYTHONPATH="$bundle_lib/python/:$PYTHONPATH"
PYTHONPATH="$bundle_lib/pygtk/2.0:$PYTHONPATH"
export PYTHONPATH export PYTHONPATH
# We need a UTF-8 locale. # We need a UTF-8 locale.
@ -64,6 +62,5 @@ if [ "x`echo "x$1" | sed -e "s/^x-psn_.*//"`" == "x" ]; then
shift 1 shift 1
fi fi
#Note that we're calling $PYTHON here to override the version in # Note that we're calling $PYTHON here to override the version used.
#pygtk-demo's shebang. $EXEC "$PYTHON" "$bundle_contents/MacOS/deluged-bin" "$@"
$EXEC "$PYTHON" "$bundle_contents/MacOS/deluged-bin" "$@" #-l ~/.config/deluge/deluged.log -L debug

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
APPDIR="./app/Deluge.app" APPDIR="./app/Deluge.app"
RSCDIR="${APPDIR}/Contents/Resources" RSCDIR="${APPDIR}/Contents/Resources"
@ -18,7 +18,7 @@ if [ ! -z "${JHBUILD_PREFIX}" ]; then
chmod 755 "${JHBUILD_PREFIX}/lib/"libcrypto*.dylib chmod 755 "${JHBUILD_PREFIX}/lib/"libcrypto*.dylib
fi fi
chmod 755 deluge*.sh chmod 755 deluge deluge-web deluge-console deluged
msg "Calling gtk-mac-bundler" msg "Calling gtk-mac-bundler"
gtk-mac-bundler deluge.bundle gtk-mac-bundler deluge.bundle