macOS¶
Environment Setup¶
The following setups are required for building and packaging Sync Client on macOS:
- XCode 13.2 (or later)
- After installing XCode, you can start XCode once so that it automatically installs the rest of the components.
- Qt 6.2
- MacPorts
- Modify /opt/local/etc/macports/macports.conf to add configuration
universal_archs arm64 x86_64
. Specifies the architecture on which MapPorts is compiled. - Modify /opt/local/etc/macports/variants.conf to add configuration
+universal
. MacPorts installs universal versions of all ports. - Install other dependencies:
sudo port install autoconf automake pkgconfig libtool glib2 libevent vala openssl git jansson cmake libwebsockets argon2
.
- Modify /opt/local/etc/macports/macports.conf to add configuration
- Certificates
- Create certificate signing requests for certification, see https://developer.apple.com/help/account/create-certificates/create-a-certificate-signing-request.
- Create a Developer ID Application certificate and a Developer ID Installer certificate, see https://developer.apple.com/help/account/create-certificates/create-developer-id-certificates. Install them to the login keychain.
- Install the Developer ID Intermediate Certificate (Developer ID - G2), from https://www.apple.com/certificateauthority/
- dropDMG
- bash environments
- add following lines to the ~/.bash_profile file:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/local/lib/pkgconfig:/usr/local/lib/pkgconfig export PATH=/opt/local/bin:/usr/local/bin:/opt/local/Library/Frameworks/Python.framework/Versions/3.10/bin:$PATH export LDFLAGS="-L/opt/local/lib -L/usr/local/lib" export CFLAGS="-I/opt/local/include -I/usr/local/include" export CPPFLAGS="-I/opt/local/include -I/usr/local/include" export LD_LIBRARY_PATH=/opt/lib:/usr/local/lib:/opt/local/lib/:/usr/local/lib/:$LD_LIBRARY_PATH QT_BASE=$HOME/Qt/6.2.4/macos export PATH=$QT_BASE/bin:$PATH export PKG_CONFIG_PATH=$QT_BASE/lib/pkgconfig:$PKG_CONFIG_PATH export NOTARIZE_APPLE_ID="Your notarize account" export NOTARIZE_PASSWORD="Your notarize password" export NOTARIZE_TEAM_ID="Your notarize team id"
- add following lines to the ~/.bash_profile file:
Building Sync Client¶
Following directory structures are expected when building Sync Client:
seafile-workspace/
seafile-workspace/libsearpc/
seafile-workspace/seafile/
seafile-workspace/seafile-client/
The source code of these projects can be downloaded at github.com/haiwen/libsearpc, github.com/haiwen/seafile, and github.com/haiwen/seafile-client.
Building¶
Note: the building commands have been included in the packaging script, you can skip building commands while packaging.
To build libsearpc:
$ cd seafile-workspace/libsearpc/
$ ./autogen.sh
$ ./configure --disable-compile-demo --enable-compile-universal=yes
$ make
$ make install
To build seafile:
$ cd seafile-workspace/seafile/
$ ./autogen.sh
$ ./configure --disable-fuse --enable-compile-universal=yes
$ make
$ make install
To build seafile-client:
$ cd seafile-workspace/seafile-client/
$ cmake -GXcode -B. -S.
$ xcodebuild -target seafile-applet -configuration Release
Packaging¶
- Update the CERT_ID in seafile-workspace/seafile/scripts/build/build-mac-local-py3.py to the ID of Developer ID Application.
- Run the packaging script:
python3 build-mac-local-py3.py --brand="" --version=1.0.0 --nostrip --universal