Компиляция FileZilla 3 под Mac OS X

Этот документ описывает, как правильно установить окружение сборки для FileZilla 3 и как компилировать его под Mac OS X используя Xcode. Этот способ был протестирован под Tiger и под Leopard на Intel Mac. Другие версии Mac OS могут быть несовместимы с этими указаниями.

На этой странице указана более детальная информация о процессе сборки на Tiger, а также даны некоторые авто-собирающиеся файлы.

Содержание

Автоматическая сборка через Fink

Для упрощения процесса сборки можно использовать Fink

Преимущества Fink

  • работает под Tiger и Leopard на Intel и PPC
  • все необходимые зависимости загружаются, собираются и устанавливаются автоматически одной командой
  • не конфликтует с системным, или сторонним программным обеспечением от третих лиц
  • при выходе новой версии FileZilla, пресобирается и обновляется автоматически

Недостатки Fink

  • запакованные версии FileZilla могут иногда выдавать ошибку после выхода нового обновления
  • процесс сборки не очень хорошо поддается настройке под пользователя

Инструкция

  1. Установить Fink с помощью User's Guide.
  2. Разрешить "unstable" ветку следуя FAQ.
  3. Запустить fink install filezilla с окна консоли

Как только установка будет завершена, в папке с приложениями появится иконка FileZilla.

Установка окружения сборки

Сюда входит компилятор и набор инструментов необходимый для сборки FileZilla 3 и нужных зависимостей.

Xcode

Вам понадобится загрузить последнюю версию Xcode соответствующую вашей версии OS X.

  • Xcode 2.5 для Tiger
  • Xcode 3.2.6 для Leopard и Snow Leopard
  • Xcode 4 для Lion можно найти на App Store

Если вы используете Xcode 2.5, то убедитесь что все опции в "Command Line Support" установлены правильно. В Xcode 3, это необязательно.

Сборка зависимостей

FileZilla зависит от нескольких open-source проектов. Перед сборкой FileZilla необходимо сначала собрать их.

Сборка зависимостей может занять длительное время. Вместо того чтобы ждать до окончания сборки каждого проекта отдельно, можно открыть дополнительные консоли для каждого и запустить их все одновременно. Тем не менее, у вас должно быть собрано libgpg-error до libgcrypt, и libgcrypt до GNU TLS.

Если у вас стоит многоядерный процессор, сборку можно ускорить, если заменить "nice make" на "nice make -jN" где N соответствует количеству ядер +1 (два ядра: N = 3).

wxWidgets

Загрузите wxWidgets. Нужна версия 2.8.9 или новее. Текущая версия для Mac wxMac-2.8.12.tar.gz.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xzf ~/Desktop/wxMac-2.8.12.tar.gz
cd wxMac-2.8.12
mkdir build-wx
cd build-wx
../configure --disable-compat26 --enable-unicode \
--prefix $HOME/filezilla/wxMac && nice make && make install

GNU gettext

Загрузите GNU gettext. Текущая версия gettext-0.18.1.1.tar.gz.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xzf ~/Desktop/gettext-0.18.1.1.tar.gz
cd gettext-0.18.1.1
./configure --prefix $HOME/filezilla/gettext && nice make && make install

pkg-config

Загрузите pkg-config. Вам будет нужна версия 0.23 или новее. Текущая версия pkg-config-0.25.tar.gz.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xzf ~/Desktop/pkg-config-0.25.tar.gz
cd pkg-config-0.25
./configure --prefix $HOME/filezilla/pkg-config && nice make && make install

Замечание: Мне не удалось собрать pkg-config 0.26. Похоже, что он зависит от более старой версии. Лучше пока использовать 0.25.

GNU libidn

Загрузите GNU libidn. Текущая версия libidn-1.22.tar.gz.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xzf ~/Desktop/libidn-1.22.tar.gz
cd libidn-1.22
./configure --prefix $HOME/filezilla/libidn && nice make && make install

libgpg-error

Загрузите libgpg-error. Текущая версия libgpg-error-1.10.tar.bz2.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xjf ~/Desktop/libgpg-error-1.10.tar.bz2
cd libgpg-error-1.10
./configure --prefix $HOME/filezilla/libgpg-error && nice make && make install

libgcrypt

Загрузите libgcrypt. Текущая версия libgcrypt-1.5.0.tar.bz2.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xjf ~/Desktop/libgcrypt-1.5.0.tar.bz2
cd libgcrypt-1.5.0
./configure --prefix $HOME/filezilla/libgcrypt \
--with-gpg-error-prefix=$HOME/filezilla/libgpg-error && nice make && make install

GNU TLS

Загрузите GNU TLS. Текущая версия gnutls-2.12.6.1.tar.bz2.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xjf ~/Desktop/gnutls-2.12.6.1.tar.bz2
cd gnutls-2.12.6.1
./configure --prefix $HOME/filezilla/gnutls --with-libgcrypt \
--with-libgcrypt-prefix=$HOME/filezilla/libgcrypt && nice make && make install

SQLite

Загрузите SQLite. Текущая версия sqlite-autoconf-3070800.tar.gz.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xzf ~/Desktop/sqlite-autoconf-3070800.tar.gz
cd sqlite-autoconf-3070800
./configure --prefix $HOME/filezilla/sqlite --disable-static && nice make && make install

Сборка FileZilla 3

Загрузите FileZilla source. Текущая версия FileZilla_3.5.1.src.tar.bz2.

Откройте консоль из папки Applications/Utilities и введите команды:

cd /tmp
tar xjf ~/Desktop/FileZilla_3.5.1_src.tar.bz2
cd filezilla-3.5.1
export \ 
PATH=$HOME/filezilla/wxMac/bin:$HOME/filezilla/gettext/bin:$HOME/filezilla/pkg-config/bin:$PATH
export \
PKG_CONFIG_PATH=$HOME/filezilla/gnutls/lib/pkgconfig:$HOME/filezilla/sqlite/lib/pkgconfig
export CPPFLAGS="-I$HOME/filezilla/libidn/include"
export LDFLAGS="-L$HOME/filezilla/libidn/lib"
./configure && nice make
cd FileZilla.app/Contents/MacOS
strip filezilla fzputtygen fzsftp
cd - && mv FileZilla.app ~/Desktop

Если вы получили ошибку после "nice make", попробуйте это:

rm -rf FileZilla.app && nice make

Проблемы с установкой

Если у вас возникли проблемы, убедитесь, что вы следовали всем пунктам поочередно. Для более конкретных вопросов вы можете воспользоваться форумом FileZilla forum.

Сборка под Snow Leopard 10.6

Если попытаетесь собрать этот код под Snow Leopard 10.6 то при использовании - на некоторых машинах выдает ошибки. Причина этого в том, что нам не удалось компилировать wxWidgets для 64 bit-систем. Смотрите [1] для того чтобы узнать, как собрать wxMac для 32 bit, или можете просто использовать Macports для установки wxWidgets:

sudo port install wxwidgets

Также вам понадобится собрать libgpg-error, libgcrypt, GNU TLS и GNU libidn для 32 bits. Вот команды для libgpg-error:

$ arch_flags="-arch i386"
$ ./configure --prefix $HOME/filezilla/libgpg-error \
CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" \
CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags"  OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags"
$ nice make -j5 && make install

Команды для установки libgcrypt:

cd libgcrypt-1.4.6
./configure --prefix $HOME/filezilla/libgcrypt \
--with-gpg-error-prefix=$HOME/filezilla/libgpg-error CC="gcc -m32"
nice make -j5 && make install

Обратите внимание что CC="gcc -m32" используется для сборки Assemble кода для 32 bit. Для GNU TLS:

$ ./configure --prefix $HOME/filezilla/gnutls \
--with-libgcrypt --with-libgcrypt-prefix=$HOME/filezilla/libgcrypt  \
CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags"  \
OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags"
$ nice make -j5 && make install

И для GNU libidn:

$ cd libidn-1.22
$ ./configure --prefix $HOME/filezilla/libidn  CFLAGS="$arch_flags" \
CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" \
LDFLAGS="$arch_flags"  OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags"
$ nice make -j5 && make install


Теперь можно собрать FileZilla:

cd filezilla-3.5.0
export \
PATH=$HOME/filezilla/wxMac/bin:$HOME/filezilla/gettext/bin:$HOME/filezilla/pkg-config/bin:$PATH
export \
PKG_CONFIG_PATH=$HOME/filezilla/gnutls/lib/pkgconfig:$HOME/filezilla/sqlite/lib/pkgconfig
export CPPFLAGS="-I$HOME/filezilla/libidn/include"
   
$ ./configure CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" \
CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags"  \
OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" --with-tinyxml=builtin \
--with-idn-lib=$HOME/filezilla/libidn/lib/libidn.dylib
$ nice make -j5
$ cd FileZilla.app/Contents/MacOS
$ strip filezilla fzputtygen fzsftp
$ cd -
$ mv FileZilla.app/ ~/Desktop/