root/branches/uploadr/3.2/README.osx

Revision 641, 9.4 kB (checked in by jdecq, 5 months ago)

new temporary build, additional command line handler modification to retrieve frob, GM version matching site...

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