root/trunk/uploadr/README.osx

Revision 586, 9.2 kB (checked in by jdecq, 8 months ago)

=GraphicsMagick? 3.5 in Main

Line 
1 Flickr Uploadr
2
3 Copyright (c) 2007-2008 Yahoo! Inc.  All rights reserved.  This library is
4 free software; you can redistribute it and/or modify it under the terms of
5 the GNU General Public License (GPL), version 2 only.  This library is
6 distributed WITHOUT ANY WARRANTY, whether express or implied. See the GNU
7 GPL for more details (http://www.gnu.org/licenses/gpl.html)
8
9 ------------------------------------------------------------------------
10
11 This guide uses UPLOADR to indicate the root of the Flickr Uploadr
12 source tree on your filesystem.  It probably shouldn't contain spaces.
13
14 You can obtain the Flickr Uploadr source code from either a tarball or
15 from Subversion.
16
17 Download tarball:
18   http://flickr.com/tools/uploadr/
19
20 Checkout from Subversion:
21   $ svn co http://code.flickr.com/svn/trunk/uploadr UPLOADR
22
23
24 XULRunner
25 ------------------------------------------------------------------------
26
27 you'll have to build it until 1.9.1 is released
28 Good luck!
29
30 finish with :
31 make -C obj-xulrunner/ppc/xulrunner/installer/ CHOWN_ROOT=~/UPLOADR/chown_root CHOWN_REVERT=~/UPLOADR/chown_revert
32 install the resulting xulrunner-1.9.1b3pre.en-US.mac-pkg.dmg
33
34
35 (rsync -rl mozilla/obj-xulrunner/ppc/dist/universal/xulrunner/XUL.framework/ MacUploadr.app/Contents/Frameworks)
36
37
38 XULRunner trunk builds:
39   ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/
40
41 Note: You want the version *without* 'sdk' in the name.
42
43 Install the Mac version of XULRunner, which will live in
44 /Library/Frameworks.  Then pull it into your fake Uploadr distribution:
45   $ mkdir UPLOADR/MacUploadr.app/Contents/Frameworks
46   $ sudo mv /Library/Frameworks/XUL.framework \
47     UPLOADR/MacUploadr.app/Contents/Frameworks
48
49 Install MacPorts if you haven't already:
50   http://svn.macosforge.org/repository/macports/downloads/MacPorts-1.5.0/
51
52 The Mozilla tools require the IDL library:
53   $ sudo port install libidl (sudo /opt/local/bin/port install libidl)
54
55
56 Gecko SDK
57 ------------------------------------------------------------------------
58
59 To build the XPCOM components you will need the Gecko SDK. For PPC Mac:
60   http://developer.mozilla.org/en/docs/Gecko_SDK#Downloading
61
62 For Intel Mac:
63 http://developer.mozilla.org/en/docs/Gecko_SDK#Downloading
64 was http://www.oxymoronical.com/view/1114
65
66 Place the SDK(s) appropriately:
67   UPLOADR/MacUploadr.app/Contents/Resources/gecko-sdk.mac (Intel Mac)
68   UPLOADR/MacUploadr.app/Contents/Resources/gecko-sdk.ppc (PPC Mac)
69
70 These SDKs are from the Gecko 1.8/1.9 series and so are only safe to use
71 if the XPCOM components use only frozen interfaces.  Fortunately,
72 Uploadr currently falls into this category.
73
74 Beware https://developer.mozilla.org/en/Gecko_SDK#Issues_with_the_OS_X_SDK
75
76 API Keys
77 ------------------------------------------------------------------------
78
79 You'll need your own API key and secret from Flickr to build Uploadr.
80 These can be obtained at http://flickr.com/services/api/.  The key
81 and secret must be placed in flKey.cpp in the spaces provided. Copy
82 flKey.cpp.template to flKey.cpp and insert your keys:
83
84   UPLOADR/MacUploadr.app/Contents/Resources/components/flKey.cpp.template
85   UPLOADR/MacUploadr.app/Contents/Resources/components/flKey.cpp
86
87 The API key is stored as a string.  The secret is stored as individual
88 characters so it is not easily readable from the binary.
89
90 There are blocks to keep both a Windows and Mac key/secret in the same
91 source file (you certainly don't have to, though).  This is mainly
92 important for the official builds.
93
94 Libintl static linking
95 ------------------------------------------------------------------------
96 Because of dynamic/static linker weirdness, before building GraphicsMagick,
97 and Exiv, move libintl.dylibout of the way:
98   $ sudo mv /opt/local/lib/libintl.dylib /opt/local/lib/libintl.dylib.sav
99 you might need to do that for all the versions of libintl you have on your system
100
101 GraphicsMagick
102 ------------------------------------------------------------------------
103
104 Install prerequisites with MacPorts:
105   $ sudo port install jpeg configure.flags=-O3
106   $ sudo port install tiff configure.flags=-O3
107   $ sudo port install libpng
108
109 in trunk, using 1.3.5 release
110
111 Configure and install GraphicsMagick:
112   $ ./configure \
113     CFLAGS="-O3" \
114     CXXFLAGS="-O3" \
115     CPPFLAGS="-I/opt/local/include -I/usr/local/include" \
116     LDFLAGS="-L/opt/local/lib -L/usr/local/lib" \
117     --without-x --without-perl \
118     --disable-installed \
119     --without-dps --without-fpx --without-jbig --without-jp2 \
120     --without-lcms --without-trio --without-ttf --without-wmf \
121     --with-quantum-depth=16
122   $ make && sudo make install
123
124 Because of dynamic/static linker weirdness, after building GraphicsMagick,
125 move libjpeg.dylib, libtiff.dylib and libpng.dylib out of the way:
126   $ sudo mv /opt/local/lib/libjpeg.dylib /opt/local/lib/libjpeg.dylib.sav
127   $ sudo mv /opt/local/lib/libtiff.dylib /opt/local/lib/libtiff.dylib.sav
128   $ sudo mv /opt/local/lib/libpng.dylib /opt/local/lib/libpng.dylib.sav
129
130 For Mac, the magic.mgk, modules.mgk and delegates.mgk files must be in
131 Contents/lib/GraphicsMagick-<version>/config/.  Like on Windows, these
132 are included in the tarball/Subversion trees.
133
134
135
136 Exiv2
137 ------------------------------------------------------------------------
138
139 Download Exiv2 source from:
140   http://exiv2.org/download.html
141
142 In Unix-land, it's easy!
143   $ sudo port install libiconv
144   $ sudo port install expat
145   $ sudo port install xml2
146   $ ./configure --prefix=/opt/local --disable-shared --with-expat=/opt/local
147   $ make && sudo make install
148
149 Again because of static linker weirdness, after building Exiv2, move the
150 dynamic libraries out of the way:
151   $ sudo mv /opt/local/lib/libiconv.dylib /opt/local/lib/libiconv.dylib.sav
152   $ sudo mv /opt/local/lib/libexpat.dylib /opt/local/lib/libexpat.dylib.sav
153   $ sudo mv /opt/local/lib/libxml2.dylib /opt/local/lib/libxml2.dylib.sav ???
154
155
156 FFmpeg
157 ------------------------------------------------------------------------
158
159 Check out the most recent version of FFmpeg:
160   $ svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
161   $ cd ffmpeg
162
163 Then build:
164   $ ./configure --disable-ffserver --disable-ffplay --enable-gpl \
165     --disable-mmx --enable-static --disable-shared  \
166     --extra-cflags=-fno-common --disable-debug
167   $ make && sudo make install
168
169
170 Building XPCOM components
171 ------------------------------------------------------------------------
172
173 If you make any changes to the IDL files defining the XPCOM interfaces,
174 you must increment the BuildID defined in:
175   UPLOADR/MacUploadr.app/Contents/Resources/application.ini
176
177 Use the Makefile in:
178   UPLOADR/MacUploadr.app/Contents/Resources/components/
179
180 http://developer.mozilla.org/en/docs/Gecko_SDK#Issues_with_the_OS_X_SDK
181
182 Running `make ppc gm ; make ppc key` will build the PPC binaries as
183 gm.dylib.ppc and key.dylib.ppc.  `make mac gm ; make mac key` will
184 build gm.dylib.mac and key.dylib.mac.  These architecture-dependent
185 files can be combined on an Intel Mac to leave gm.dylib and key.dylib
186 by running `make universal gm ; make universal key`.
187
188 Make sure by running otool -Lv that you are not depending on
189 , which is not intalled by default on Mac Os X
190
191 Running Flickr Uploadr
192 ------------------------------------------------------------------------
193 cp MacUploadr.app/Contents/Frameworks/Versions/1.9..../xulrunner-bin MacUploadr.app/Contents/MacOS/xulrunner ???
194
195 The app can be launched by double-clicking on MacUploadr.app in Finder.
196
197 Launch Uploadr from Terminal to get debug windows:
198   $ chmod a+w MacUploadr.app/Contents/MacOS/xulrunner
199   $ chmod a+x MacUploadr.app/Contents/MacOS/xulrunner
200   $ MacUploadr.app/Contents/MacOS/xulrunner -jsconsole
201
202
203 Packaging
204 ------------------------------------------------------------------------
205
206 The nice background image for the DMGs must be recreated each time you
207 change version numbers.
208   o Start Disk Utility and create a new image called "Flickr Uploadr
209     $(VERSION)" (substitute your version)
210   o Create a folder there called "Flickr Uploadr.app" and a symbolic
211     link called "Applications"
212   o Copy one of the installer images from mac_installer/ in as ".i.png"
213   o Create a symbolic link to that image as "i.png"
214   o Open the image with Finder and press Command+J to set folder options
215       o Select "This window only"
216       o Set the "Icon size" to 128px
217       o Uncheck "Snap to grid"
218       o Set the background picture to your "i.png" symbolic link (this
219         is rather finicky)
220       o Close the settings window
221   o Delete the "i.png" symbolic link (the hidden file will remain)
222   o Arrange the icons appropriately
223   o Close the window
224
225 After all of that, copy the .DS_Store file into your source tree, the
226 Makefile will take care of everything else (substitute your version):
227   $ cp /Volumes/Flickr\ Uploadr\ $(VERSION)/.DS_Store \
228     UPLOADR/mac_installer/DS_Store
229
230 Unmount and delete the disk image you created.
231
232 One-command builds for all eight languages:
233   $ make mac all
234
235 NOTE: This will fail at the MAR build steps, unless you have the Mozilla
236 tools built and installed. See README.updates for this, or you can
237 skip the MAR build step (recommended for outside developers):
238   $ make mac all-build
239
240 Or to build a single language:
241   $ make mac build en-US
242
243
Note: See TracBrowser for help on using the browser.