shoes 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. data/.gitignore +12 -0
  2. data/CHANGELOG +29 -0
  3. data/COPYING +30 -0
  4. data/README.md +76 -0
  5. data/README.old +117 -0
  6. data/Rakefile +130 -0
  7. data/Rakefile.bk +651 -0
  8. data/app.yaml +7 -0
  9. data/bin/main.skel +104 -0
  10. data/bugs/issue-012e9468ddc7b0cb7e1503413a8a11c4f8707b67.yaml +21 -0
  11. data/bugs/issue-0711ff8b67baa63586f11d0096fee9dd4436bf58.yaml +23 -0
  12. data/bugs/issue-07f87998d93eb401e22395c11085676389b935c4.yaml +22 -0
  13. data/bugs/issue-0bff2d80008803cbc7efbcdacdc60ef2163664d2.yaml +22 -0
  14. data/bugs/issue-0c66f223d19efbca7b692f3b91961f407ad7abec.yaml +24 -0
  15. data/bugs/issue-183bc3c7a8f575aff2b24e0bf22aa0dfcc8e4fc2.yaml +29 -0
  16. data/bugs/issue-1bad1e60a04cb3adb6a8f3ded128af2e16b56ffe.yaml +18 -0
  17. data/bugs/issue-1f1d43f76bf4de79d7f94adbae6dd506a9d81633.yaml +41 -0
  18. data/bugs/issue-320924117cadb045cc91f2a6fca922b4d81d4bb5.yaml +20 -0
  19. data/bugs/issue-33e5c8355fbf65252ea9e939714651df8bd8cb3b.yaml +25 -0
  20. data/bugs/issue-36f7c8262a72bcd5e28cfa4ed29328b8237ea79b.yaml +20 -0
  21. data/bugs/issue-39bf04ee50c3bef67b89b8e9beb28657805587ce.yaml +18 -0
  22. data/bugs/issue-3e28ba7754f73d02ef416eef989af707a8c00f01.yaml +23 -0
  23. data/bugs/issue-3f638cc03f41f9c3fdf217355321f1563f8fee45.yaml +22 -0
  24. data/bugs/issue-41e48e14f1ef4f6deb69be68165d7dd3ffd99156.yaml +22 -0
  25. data/bugs/issue-4c9408166a2aa5dd333bbb05520deebf4ded08e0.yaml +22 -0
  26. data/bugs/issue-55c687e108ecd5aeb8e0d0aeb4294984f84acd3e.yaml +18 -0
  27. data/bugs/issue-5811d34692cc292717a58ec1df1f8948cf30d826.yaml +28 -0
  28. data/bugs/issue-5a7c1f59a0526f9cea7fb366867cf1e6ed8ef69d.yaml +22 -0
  29. data/bugs/issue-688a2c2566bef6a03efa57a4ae1f7cfa8fc74444.yaml +21 -0
  30. data/bugs/issue-78b16c7988ade2ef96e716fa8cb9a004bd4ced65.yaml +33 -0
  31. data/bugs/issue-804ee49f9800154eddf0650690c7a9bb5626253f.yaml +27 -0
  32. data/bugs/issue-807dd1c610b2e941a5d454e26b2eac27e89a0ab4.yaml +22 -0
  33. data/bugs/issue-822ee33ec11ebd25f90ea86e8438de7891e63aee.yaml +18 -0
  34. data/bugs/issue-82ff7152cebb8a1cb065b864cb4fe22de2328146.yaml +29 -0
  35. data/bugs/issue-856afbdcdd4970ad54b8ce4a6c017fbaab45f49d.yaml +31 -0
  36. data/bugs/issue-8d49e32fb21522651c67490adb4d80076dbb14e1.yaml +24 -0
  37. data/bugs/issue-91583359653a9d530c1e32be72d874d847a306e7.yaml +21 -0
  38. data/bugs/issue-af41a5229613172764e7d3c98431172db337053d.yaml +20 -0
  39. data/bugs/issue-bd9856b3788dd429c998a5af1b2aae8221cb80b7.yaml +28 -0
  40. data/bugs/issue-be22aef5c564fb7b5e9938343136a9cd6a2edb7b.yaml +22 -0
  41. data/bugs/issue-bf8697523c77c326e7e35fc82cf3dd739ae92310.yaml +27 -0
  42. data/bugs/issue-cdd4b4795f34d6ff46e56ece10f8216a4a5456b2.yaml +25 -0
  43. data/bugs/issue-d9bfb5581d745ef9deb3b9b2e08ef74d1cd43082.yaml +20 -0
  44. data/bugs/issue-e0ce2f687cc096f35715d28b0af88589f4ab6cc6.yaml +18 -0
  45. data/bugs/issue-e4b0aca4a10a574b333aeaecaaf221dbc5ed22c6.yaml +38 -0
  46. data/bugs/issue-f263746594b95ba778455730478ee8df60ee639d.yaml +22 -0
  47. data/bugs/project.yaml +72 -0
  48. data/builddeps.sh +102 -0
  49. data/fonts/Coolvetica.ttf +0 -0
  50. data/fonts/Lacuna.ttf +0 -0
  51. data/gemlib/shoes.rb +1 -0
  52. data/lib/shoes.rb +548 -0
  53. data/lib/shoes/cache.rb +54 -0
  54. data/lib/shoes/chipmunk.rb +35 -0
  55. data/lib/shoes/data.rb +39 -0
  56. data/lib/shoes/help.rb +468 -0
  57. data/lib/shoes/image.rb +25 -0
  58. data/lib/shoes/inspect.rb +128 -0
  59. data/lib/shoes/log.rb +48 -0
  60. data/lib/shoes/minitar.rb +986 -0
  61. data/lib/shoes/override.rb +38 -0
  62. data/lib/shoes/pack.rb +543 -0
  63. data/lib/shoes/search.rb +46 -0
  64. data/lib/shoes/setup.rb +329 -0
  65. data/lib/shoes/shy.rb +131 -0
  66. data/lib/shoes/shybuilder.rb +44 -0
  67. data/lib/shoes/version.rb +3 -0
  68. data/make/darwin/deps.vlc +12 -0
  69. data/make/darwin/dylibs.shoes +22 -0
  70. data/make/darwin/dylibs.video +11 -0
  71. data/make/darwin/env.rb +81 -0
  72. data/make/darwin/tasks.rb +105 -0
  73. data/make/linux/env.rb +65 -0
  74. data/make/linux/tasks.rb +61 -0
  75. data/make/make.rb +85 -0
  76. data/make/mingw/dlls +19 -0
  77. data/make/mingw/env.rb +69 -0
  78. data/make/mingw/tasks.rb +70 -0
  79. data/make/rakefile_common.rb +8 -0
  80. data/manual-snapshots/class-book.png +0 -0
  81. data/manual-snapshots/expert-definr.png +0 -0
  82. data/manual-snapshots/expert-funnies.png +0 -0
  83. data/manual-snapshots/expert-irb.png +0 -0
  84. data/manual-snapshots/expert-minesweeper.png +0 -0
  85. data/manual-snapshots/expert-othello.png +0 -0
  86. data/manual-snapshots/expert-pong.png +0 -0
  87. data/manual-snapshots/expert-tankspank.png +0 -0
  88. data/manual-snapshots/good-arc.png +0 -0
  89. data/manual-snapshots/good-clock.png +0 -0
  90. data/manual-snapshots/good-follow.png +0 -0
  91. data/manual-snapshots/good-reminder.png +0 -0
  92. data/manual-snapshots/good-vjot.png +0 -0
  93. data/manual-snapshots/simple-accordion.png +0 -0
  94. data/manual-snapshots/simple-anim-shapes.png +0 -0
  95. data/manual-snapshots/simple-anim-text.png +0 -0
  96. data/manual-snapshots/simple-arc.png +0 -0
  97. data/manual-snapshots/simple-bounce.png +0 -0
  98. data/manual-snapshots/simple-calc.png +0 -0
  99. data/manual-snapshots/simple-chipmunk.png +0 -0
  100. data/manual-snapshots/simple-control-sizes.png +0 -0
  101. data/manual-snapshots/simple-curve.png +0 -0
  102. data/manual-snapshots/simple-dialogs.png +0 -0
  103. data/manual-snapshots/simple-downloader.png +0 -0
  104. data/manual-snapshots/simple-draw.png +0 -0
  105. data/manual-snapshots/simple-editor.png +0 -0
  106. data/manual-snapshots/simple-form.png +0 -0
  107. data/manual-snapshots/simple-mask.png +0 -0
  108. data/manual-snapshots/simple-menu.png +0 -0
  109. data/manual-snapshots/simple-menu1.png +0 -0
  110. data/manual-snapshots/simple-rubygems.png +0 -0
  111. data/manual-snapshots/simple-slide.png +0 -0
  112. data/manual-snapshots/simple-sphere.png +0 -0
  113. data/manual-snapshots/simple-sqlite3.png +0 -0
  114. data/manual-snapshots/simple-timer.png +0 -0
  115. data/manual-snapshots/simple-video.png +0 -0
  116. data/platform/mac/Info.plist +55 -0
  117. data/platform/mac/build-deps.sh +658 -0
  118. data/platform/mac/command-manual.rb +1 -0
  119. data/platform/mac/deps-osx.patch +159 -0
  120. data/platform/mac/dmg_ds_store +0 -0
  121. data/platform/mac/pangorc +2 -0
  122. data/platform/mac/pkg-dmg +1447 -0
  123. data/platform/mac/shoes +31 -0
  124. data/platform/mac/shoes-launch +7 -0
  125. data/platform/mac/stub.m +178 -0
  126. data/platform/mac/version.plist +14 -0
  127. data/platform/msw/base.nsi +644 -0
  128. data/platform/msw/installer-1.bmp +0 -0
  129. data/platform/msw/installer-2.bmp +0 -0
  130. data/platform/msw/shoes.exe.manifest +17 -0
  131. data/platform/msw/shoes.ico +0 -0
  132. data/platform/msw/stub-inject.c +59 -0
  133. data/platform/msw/stub.c +271 -0
  134. data/platform/msw/stub32.h +14 -0
  135. data/platform/msw/stub32.rc +16 -0
  136. data/platform/nix/INSTALL +56 -0
  137. data/platform/nix/Makefile +144 -0
  138. data/platform/nix/shoes.launch +20 -0
  139. data/platform/skel.rb +27 -0
  140. data/rakefile_darwin.rb +7 -0
  141. data/rakefile_linux.rb +3 -0
  142. data/rakefile_mingw.rb +7 -0
  143. data/samples/class-book.rb +43 -0
  144. data/samples/class-book.yaml +387 -0
  145. data/samples/expert-definr.rb +23 -0
  146. data/samples/expert-funnies.rb +51 -0
  147. data/samples/expert-irb.rb +112 -0
  148. data/samples/expert-minesweeper.rb +267 -0
  149. data/samples/expert-othello.rb +319 -0
  150. data/samples/expert-pong.rb +62 -0
  151. data/samples/expert-tankspank.rb +385 -0
  152. data/samples/good-arc.rb +37 -0
  153. data/samples/good-clock.rb +51 -0
  154. data/samples/good-follow.rb +26 -0
  155. data/samples/good-reminder.rb +174 -0
  156. data/samples/good-vjot.rb +56 -0
  157. data/samples/simple-accordion.rb +75 -0
  158. data/samples/simple-anim-shapes.rb +17 -0
  159. data/samples/simple-anim-text.rb +13 -0
  160. data/samples/simple-arc.rb +23 -0
  161. data/samples/simple-bounce.rb +24 -0
  162. data/samples/simple-calc.rb +70 -0
  163. data/samples/simple-chipmunk.rb +26 -0
  164. data/samples/simple-control-sizes.rb +24 -0
  165. data/samples/simple-curve.rb +26 -0
  166. data/samples/simple-dialogs.rb +29 -0
  167. data/samples/simple-downloader.rb +27 -0
  168. data/samples/simple-draw.rb +13 -0
  169. data/samples/simple-editor.rb +28 -0
  170. data/samples/simple-form.rb +28 -0
  171. data/samples/simple-form.shy +0 -0
  172. data/samples/simple-mask.rb +21 -0
  173. data/samples/simple-menu.rb +31 -0
  174. data/samples/simple-menu1.rb +35 -0
  175. data/samples/simple-rubygems.rb +29 -0
  176. data/samples/simple-slide.rb +45 -0
  177. data/samples/simple-sphere.rb +28 -0
  178. data/samples/simple-sqlite3.rb +13 -0
  179. data/samples/simple-timer.rb +13 -0
  180. data/samples/simple-video.rb +13 -0
  181. data/shoes.gemspec +21 -0
  182. data/shoes/app.c +591 -0
  183. data/shoes/app.h +110 -0
  184. data/shoes/appwin32.h +13 -0
  185. data/shoes/appwin32.rc +28 -0
  186. data/shoes/canvas.c +2202 -0
  187. data/shoes/canvas.h +682 -0
  188. data/shoes/code.h +14 -0
  189. data/shoes/config.h +232 -0
  190. data/shoes/effects.c +243 -0
  191. data/shoes/effects.h +7 -0
  192. data/shoes/http.h +44 -0
  193. data/shoes/http/common.h +86 -0
  194. data/shoes/http/curl.c +259 -0
  195. data/shoes/http/nsurl.m +274 -0
  196. data/shoes/http/windownload.c +114 -0
  197. data/shoes/http/winhttp.c +216 -0
  198. data/shoes/http/winhttp.h +19 -0
  199. data/shoes/image.c +1020 -0
  200. data/shoes/internal.c +46 -0
  201. data/shoes/internal.h +63 -0
  202. data/shoes/native.h +110 -0
  203. data/shoes/native/cocoa.h +105 -0
  204. data/shoes/native/cocoa.m +1557 -0
  205. data/shoes/native/gtk.c +1257 -0
  206. data/shoes/native/windows.c +2392 -0
  207. data/shoes/ruby.c +5221 -0
  208. data/shoes/ruby.h +299 -0
  209. data/shoes/world.c +243 -0
  210. data/shoes/world.h +63 -0
  211. data/static/Shoes.icns +0 -0
  212. data/static/avatar.png +0 -0
  213. data/static/code_highlighter.js +188 -0
  214. data/static/code_highlighter_ruby.js +26 -0
  215. data/static/icon-debug.png +0 -0
  216. data/static/icon-error.png +0 -0
  217. data/static/icon-info.png +0 -0
  218. data/static/icon-warn.png +0 -0
  219. data/static/listbox_button1.png +0 -0
  220. data/static/listbox_button2.png +0 -0
  221. data/static/man-app.png +0 -0
  222. data/static/man-builds.png +0 -0
  223. data/static/man-builds1.png +0 -0
  224. data/static/man-editor-notepad.png +0 -0
  225. data/static/man-editor-osx.png +0 -0
  226. data/static/man-ele-background.png +0 -0
  227. data/static/man-ele-border.png +0 -0
  228. data/static/man-ele-button.png +0 -0
  229. data/static/man-ele-check.png +0 -0
  230. data/static/man-ele-editbox.png +0 -0
  231. data/static/man-ele-editline.png +0 -0
  232. data/static/man-ele-image.png +0 -0
  233. data/static/man-ele-listbox.png +0 -0
  234. data/static/man-ele-progress.png +0 -0
  235. data/static/man-ele-radio.png +0 -0
  236. data/static/man-ele-shape.png +0 -0
  237. data/static/man-ele-textblock.png +0 -0
  238. data/static/man-ele-video.png +0 -0
  239. data/static/man-intro-dmg.png +0 -0
  240. data/static/man-intro-exe.png +0 -0
  241. data/static/man-look-tiger.png +0 -0
  242. data/static/man-look-ubuntu.png +0 -0
  243. data/static/man-look-vista.png +0 -0
  244. data/static/man-run-osx.png +0 -0
  245. data/static/man-run-vista.png +0 -0
  246. data/static/man-run-xp.png +0 -0
  247. data/static/man-shot1.png +0 -0
  248. data/static/manual-en.txt +3531 -0
  249. data/static/manual-ja.txt +2825 -0
  250. data/static/manual.css +167 -0
  251. data/static/menu-corner1.png +0 -0
  252. data/static/menu-corner2.png +0 -0
  253. data/static/menu-gray.png +0 -0
  254. data/static/menu-left.png +0 -0
  255. data/static/menu-right.png +0 -0
  256. data/static/menu-top.png +0 -0
  257. data/static/shoes-dmg.jpg +0 -0
  258. data/static/shoes-icon-blue.png +0 -0
  259. data/static/shoes-icon.png +0 -0
  260. data/static/shoes-manual-apps.gif +0 -0
  261. data/static/shoes_main_window.png +0 -0
  262. data/static/stripe.png +0 -0
  263. data/static/stubs/blank.exe +0 -0
  264. data/static/stubs/blank.hfz +0 -0
  265. data/static/stubs/blank.run +375 -0
  266. data/static/stubs/cocoa-install +0 -0
  267. data/static/stubs/sh-install +49 -0
  268. data/static/stubs/shoes-stub-inject.exe +0 -0
  269. data/static/stubs/shoes-stub.exe +0 -0
  270. data/static/tutor-back.png +0 -0
  271. data/test/shoes_test.rb +8 -0
  272. data/test/test_helper.rb +25 -0
  273. data/use-deps +12 -0
  274. data/use-tmp-dep +8 -0
  275. metadata +509 -0
@@ -0,0 +1,19 @@
1
+ libungif4
2
+ libjpeg-8
3
+ libcairo-2
4
+ libglib-2.0-0
5
+ libgobject-2.0-0
6
+ libpango-1.0-0
7
+ libpangoft2-1.0-0
8
+ libgio-2.0-0
9
+ libgthread-2.0-0
10
+ libgmodule-2.0-0
11
+ libpangocairo-1.0-0
12
+ libpangowin32-1.0-0
13
+ libportaudio-2
14
+ sqlite3
15
+ libssl32
16
+ libeay32
17
+ zlib1
18
+ readline5
19
+ libiconv2
@@ -0,0 +1,69 @@
1
+ require File.expand_path('make/make')
2
+ extend Make
3
+
4
+ EXT_RUBY = "../mingw"
5
+
6
+ # TODO: We really shouldn't perform actions just by including a file
7
+ if ENV['VIDEO']
8
+ rm_rf "dist"
9
+ mkdir_p 'dist'
10
+ vlc_deps = '../deps_vlc_0.8'
11
+ copy_files vlc_deps + '/bin/plugins', 'dist'
12
+ cp_r vlc_deps + '/bin/libvlc.dll', EXT_RUBY + '/bin'
13
+ copy_files vlc_deps + '/include/vlc', EXT_RUBY + '/include'
14
+ copy_files vlc_deps + '/lib', EXT_RUBY
15
+ end
16
+
17
+ # use the platform Ruby claims
18
+ require 'rbconfig'
19
+
20
+ CC = ENV['CC'] ? ENV['CC'] : "gcc"
21
+ file_list = ["shoes/*.c"] + %w{shoes/native/windows.c shoes/http/winhttp.c shoes/http/windownload.c}
22
+
23
+ SRC = FileList[*file_list]
24
+ OBJ = SRC.map do |x|
25
+ x.gsub(/\.\w+$/, '.o')
26
+ end
27
+
28
+ ADD_DLL = ["shoes/appwin32.o"]
29
+
30
+ # Linux build environment
31
+ CAIRO_CFLAGS = '-I/mingw/include/glib-2.0 -I/mingw/lib/glib-2.0/include -I/mingw/include/cairo'
32
+ CAIRO_LIB = '-lcairo'
33
+ PANGO_CFLAGS = '-I/mingw/include/pango-1.0'
34
+ PANGO_LIB = '-lpangocairo-1.0 -lpango-1.0 -lpangoft2-1.0 -lpangowin32-1.0'
35
+ if ENV['VIDEO']
36
+ VLC_CFLAGS = '-I/mingw/include/vlc'
37
+ VLC_LIB = '-llibvlc'
38
+ else
39
+ VLC_CFLAGS = VLC_LIB = ''
40
+ end
41
+
42
+ LINUX_CFLAGS = %[-Wall -I#{ENV['SHOES_DEPS_PATH'] || "/usr"}/include #{CAIRO_CFLAGS} #{PANGO_CFLAGS} #{VLC_CFLAGS} -I#{Config::CONFIG['archdir']}]
43
+ if Config::CONFIG['rubyhdrdir']
44
+ LINUX_CFLAGS << " -I#{Config::CONFIG['rubyhdrdir']} -I#{Config::CONFIG['rubyhdrdir']}/#{RUBY_PLATFORM}"
45
+ end
46
+ LINUX_LIB_NAMES = %W[#{RUBY_SO} cairo pangocairo-1.0 ungif]
47
+
48
+ FLAGS.each do |flag|
49
+ LINUX_CFLAGS << " -D#{flag}" if ENV[flag]
50
+ end
51
+ if ENV['DEBUG']
52
+ LINUX_CFLAGS << " -g -O0 "
53
+ else
54
+ LINUX_CFLAGS << " -O "
55
+ end
56
+ LINUX_CFLAGS << " -DRUBY_1_9" if RUBY_1_9
57
+
58
+ DLEXT = 'dll'
59
+ LINUX_CFLAGS << ' -I. -I/mingw/include'
60
+ LINUX_CFLAGS << ' -I/mingw/include/ruby-1.9.1/ruby' if RUBY_1_9
61
+ LINUX_CFLAGS << " -DXMD_H -DHAVE_BOOLEAN -DSHOES_WIN32 -D_WIN32_IE=0x0500 -D_WIN32_WINNT=0x0500 -DWINVER=0x0500 -DCOBJMACROS"
62
+ LINUX_LDFLAGS = " -DBUILD_DLL -lungif -ljpeg -lglib-2.0 -lgobject-2.0 -lgio-2.0 -lgmodule-2.0 -lgthread-2.0 -fPIC -shared"
63
+ LINUX_LDFLAGS << ' -lshell32 -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lcomctl32 -lole32 -loleaut32 -ladvapi32 -loleacc -lwinhttp'
64
+ LINUX_CFLAGS << " -DVLC_0_8" if ENV['VIDEO'] and VLC_0_8
65
+ cp APP['icons']['win32'], "shoes/appwin32.ico"
66
+
67
+ LINUX_LIBS = LINUX_LIB_NAMES.map { |x| "-l#{x}" }.join(' ')
68
+
69
+ LINUX_LIBS << " -L#{Config::CONFIG['libdir']} #{CAIRO_LIB} #{PANGO_LIB} #{VLC_LIB}"
@@ -0,0 +1,70 @@
1
+ require File.expand_path('make/make')
2
+
3
+ include FileUtils
4
+
5
+ class MakeMinGW
6
+ extend Make
7
+
8
+ class << self
9
+ # Execute shell calls through bash if we are compiling with mingw. This breaks us
10
+ # out of the windows command shell if we are compiling from there.
11
+ def sh(*args)
12
+ cmd = args.join(' ')
13
+ super "bash.exe --login -i -c \"#{cmd}\""
14
+ end
15
+
16
+ def copy_ext xdir, libdir
17
+ Dir.chdir(xdir) do
18
+ sh 'ruby extconf.rb; make'
19
+ end
20
+ copy_files "#{xdir}/*.so", libdir
21
+ end
22
+
23
+ def copy_deps_to_dist
24
+ dlls = [RUBY_SO]
25
+ dlls += IO.readlines("make/mingw/dlls").map{|dll| dll.chomp}
26
+ dlls += %w{libvlc} if ENV['VIDEO']
27
+ dlls.each{|dll| cp "#{EXT_RUBY}/bin/#{dll}.dll", "dist/"}
28
+ cp "dist/zlib1.dll", "dist/zlib.dll"
29
+ Dir.glob("../deps_cairo*/*"){|file| cp file, "dist/"}
30
+ sh "strip -x dist/*.dll" unless ENV['DEBUG']
31
+ end
32
+
33
+ def setup_system_resources
34
+ cp APP['icons']['gtk'], "dist/static/app-icon.png"
35
+ end
36
+
37
+ def make_resource(t)
38
+ sh "windres -I. #{t.source} #{t.name}"
39
+ end
40
+
41
+ def make_app(name)
42
+ bin = name
43
+ rm_f bin
44
+ sh "#{CC} -Ldist -o #{bin} bin/main.o shoes/appwin32.o #{LINUX_LIBS} -lshoes #{Config::CONFIG['LDFLAGS']} -mwindows"
45
+ rewrite "platform/nix/shoes.launch", name, %r!/shoes!, "/#{NAME}"
46
+ sh %{echo 'cd "$OLDPWD"'}
47
+ sh %{echo 'LD_LIBRARY_PATH=$APPPATH $APPPATH/#{File.basename(bin)} "$@"' >> #{name}}
48
+ chmod 0755, name
49
+ cp "platform/msw/shoes.exe.manifest", "dist/#{NAME}.exe.manifest"
50
+ end
51
+
52
+ def make_so(name)
53
+ ldflags = LINUX_LDFLAGS.sub! /INSTALL_NAME/, "-install_name @executable_path/lib#{SONAME}.#{DLEXT}"
54
+ sh "#{CC} -o #{name} #{OBJ.join(' ')} #{LINUX_LDFLAGS} #{LINUX_LIBS}"
55
+ end
56
+
57
+ def make_installer
58
+ def sh(*args); super; end
59
+ mkdir_p "pkg"
60
+ rm_rf "dist/nsis"
61
+ cp_r "platform/msw", "dist/nsis"
62
+ cp APP['icons']['win32'], "dist/nsis/setup.ico"
63
+ rewrite "dist/nsis/base.nsi", "dist/nsis/#{NAME}.nsi"
64
+ Dir.chdir("dist/nsis") do
65
+ sh "\"#{env('NSIS')}\\makensis.exe\" #{NAME}.nsi"
66
+ end
67
+ mv "dist/nsis/#{PKG}.exe", "pkg"
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,8 @@
1
+ task :build_os => [:buildenv_linux, :build_skel, "dist/#{NAME}"]
2
+
3
+ task :buildenv_linux do
4
+ unless ENV['VIDEO']
5
+ rm_rf "dist"
6
+ mkdir_p "dist"
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleGetInfoString</key>
6
+ <string>#{APPNAME} #{VERS}</string>
7
+ <key>CFBundleExecutable</key>
8
+ <string>#{NAME}-launch</string>
9
+ <key>CFBundleIdentifier</key>
10
+ <string>org.hackety.#{NAME}</string>
11
+ <key>CFBundleName</key>
12
+ <string>#{APPNAME}</string>
13
+ <key>CFBundleIconFile</key>
14
+ <string>App.icns</string>
15
+ <key>CFBundleShortVersionString</key>
16
+ <string>#{VERS}</string>
17
+ <key>CFBundleInfoDictionaryVersion</key>
18
+ <string>6.0</string>
19
+ <key>CFBundlePackageType</key>
20
+ <string>APPL</string>
21
+ <key>IFMajorVersion</key>
22
+ <integer>0</integer>
23
+ <key>IFMinorVersion</key>
24
+ <integer>1</integer>
25
+ <key>CFBundleDocumentTypes</key>
26
+ <array>
27
+ <dict>
28
+ <key>CFBundleTypeExtensions</key>
29
+ <array>
30
+ <string>shy</string>
31
+ </array>
32
+ <key>CFBundleTypeIconFile</key>
33
+ <string>App.icns</string>
34
+ <key>CFBundleTypeMIMETypes</key>
35
+ <array>
36
+ <string>application/x-shy</string>
37
+ </array>
38
+ <key>CFBundleTypeName</key>
39
+ <string>Shoes Package</string>
40
+ <key>CFBundleTypeRole</key>
41
+ <string>Viewer</string>
42
+ <key>LSIsAppleDefaultForType</key>
43
+ <true/>
44
+ </dict>
45
+ <dict>
46
+ <key>CFBundleTypeExtensions</key>
47
+ <array>
48
+ <string>rb</string>
49
+ </array>
50
+ <key>CFBundleTypeRole</key>
51
+ <string>Viewer</string>
52
+ </dict>
53
+ </array>
54
+ </dict>
55
+ </plist>
@@ -0,0 +1,658 @@
1
+ #!/bin/sh
2
+ #
3
+ # Based on the Imendio 'build-gtk.sh' script.
4
+ #
5
+ # Inkscape build additions by Michael Wybrow <mjwybrow@users.sf.net>
6
+ #
7
+ # See the following page for build instructions:
8
+ # http://developer.imendio.com/projects/gtk-macosx/build-instructions
9
+ #
10
+ # Usage:
11
+ # export PREFIX=/your/install/prefix
12
+ # ./build-gtk bootstrap
13
+ # ./build-gtk build inkscape
14
+ #
15
+
16
+ # XXX: Check for xargs with -i
17
+ #
18
+ # In lib/pkgconfig/freetpe2.pc
19
+ #
20
+ # - Libs: -L${libdir} -lfreetype -lz
21
+ # + Libs: -L${libdir} -lfreetype -lz -Wl,-framework,CoreServices,-framework,ApplicationServices
22
+ #
23
+ # bin/freetype-config
24
+ #
25
+ # - libs="-lfreetype -lz"
26
+ # + libs="-lfreetype -lz -Wl,-framework,CoreServices,-framework,ApplicationServices"
27
+ #
28
+ # In lib/pkgconfig/fontconfig.pc
29
+ # Add -lexpat
30
+ #
31
+
32
+ version=1.3.1-inkscape
33
+
34
+
35
+ SCRIPTDIR=`dirname $0`
36
+
37
+ export PREFIX=${PREFIX-/opt/gtk}
38
+ export PATH=$PREFIX/bin:/usr/bin:$PATH
39
+ #export PATH=$PREFIX/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:
40
+ export LIBTOOLIZE=$PREFIX/bin/libtoolize
41
+
42
+ # FIXME: We might need some more intelligent way to get the path here.
43
+ export PYTHONPATH=$PREFIX/lib/python2.3/site-packages
44
+
45
+ # Needed for glib etc to pick up gettext
46
+ export LDFLAGS=-L$PREFIX/lib
47
+ export CPPFLAGS=-I$PREFIX/include
48
+
49
+ export XDG_DATA_DIRS=$PREFIX/share
50
+
51
+ COMMON_OPTIONS="--prefix=$PREFIX --disable-static --enable-shared \
52
+ --disable-gtk-doc --disable-scrollkeeper"
53
+
54
+ #export MAKEFLAGS=-j2
55
+
56
+ if [ "x$PANTHER_BUILD" = "xYes" ]; then
57
+ # XXX: Check the machine is PPC
58
+ # or rework to have things like pkg-config built natively.
59
+
60
+ # Overwrite some build settings.
61
+ export SDK="/Developer/SDKs/MacOSX10.3.9.sdk"
62
+ export MACOSX_DEPLOYMENT_TARGET=10.3
63
+ export CFLAGS="-isysroot ${SDK} -arch ppc"
64
+ export CXXFLAGS="-isysroot ${SDK} -arch ppc"
65
+
66
+ export STABLE_BUILD=Yes
67
+ fi
68
+
69
+ if [ "x$UNIVERSAL_BUILD" = "xYes" ]; then
70
+ COMMON_OPTIONS="$COMMON_OPTIONS --disable-dependency-tracking"
71
+
72
+ export SDK="/Developer/SDKs/MacOSX10.4u.sdk"
73
+ export MACOSX_DEPLOYMENT_TARGET=10.4
74
+ #export MACOSX_DEPLOYMENT_TARGET_i386=10.4
75
+ #export MACOSX_DEPLOYMENT_TARGET_ppc=10.3
76
+ export CFLAGS="-isysroot ${SDK} -arch ppc -arch i386"
77
+ export CXXFLAGS="-isysroot ${SDK} -arch ppc -arch i386"
78
+
79
+ CONFIGURE_pkg_config="--with-pc-path=$PREFIX/lib/pkgconfig:/usr/X11R6/lib/pkgconfig --enable-indirect-deps --disable-dependency-tracking"
80
+
81
+ CONFIGURE_libpng="--disable-dependency-tracking"
82
+ PRECONFIGURE_libpng="eval CPPFLAGS='$CPPFLAGS -DPNG_NO_ASSEMBLER_CODE'"
83
+
84
+ CONFIGURE_tiff="--disable-dependency-tracking"
85
+
86
+ POSTCONFIGURE_jpeg_6b="patch_libtool_dylib"
87
+
88
+ CONFIGURE_gc="--disable-dependency-tracking"
89
+ POSTCONFIGURE_gc="patch_libtool_dylib"
90
+ PRECONFIGURE_gc="eval CFLAGS='$CFLAGS -DUSE_GENERIC_PUSH_REGS'"
91
+
92
+ POSTCONFIGURE_freetype="eval cd builds/unix/ && pwd && patch_libtool_dylib && cd ../.."
93
+
94
+ CONFIGURE_fontconfig="--disable-dependency-tracking --disable-docs"
95
+ POSTCONFIGURE_fontconfig="eval cd fc-arch && make all && cd .. && perl -pi~ -e 's|#define FC_ARCHITECTURE \"x86\"|#ifdef __ppc__\n#define FC_ARCHITECTURE \"ppc\"\n#else\n#define FC_ARCHITECTURE \"x86\"\n#endif|g' fc-arch/fcarch.h"
96
+
97
+ PRECONFIGURE_cairo="export ax_cv_c_float_words_bigendian=no"
98
+ CONFIGURE_cairo="--disable-dependency-tracking --enable-shared --disable-quartz --disable-atsui --enable-glitz"
99
+ POSTCONFIGURE_cairo="eval patch_libtool_dylib && export ax_cv_c_float_words_bigendian='' && perl -pi~ -e 's|/\* #undef FLOAT_WORDS_BIGENDIAN \*/|#ifdef __ppc__\n#define FLOAT_WORDS_BIGENDIAN 1\n#endif|g;s|/\* #undef WORDS_BIGENDIAN \*/|#ifdef __ppc__\n#define WORDS_BIGENDIAN 1\n#endif|g' config.h && perl -pi~ -e 's|DIST_SUBDIRS = pixman src boilerplate test perf doc|DIST_SUBDIRS = pixman src test perf doc|g;s|am__append_1 = boilerplate test|am__append_1 = test|g' Makefile"
100
+
101
+ CONFIGURE_glitz="--disable-dependency-tracking"
102
+
103
+ CONFIGURE_lcms="--disable-dependency-tracking"
104
+
105
+ CONFIGURE_glib="$COMMON_OPTIONS"
106
+ POSTCONFIGURE_glib="eval make glibconfig.h config.h && cp $DIRNAME/{glib,}config.h ."
107
+ #POSTCONFIGURE_glib="eval make glibconfig.h && perl -pi~ -e 's|#define G_BYTE_ORDER G_LITTLE_ENDIAN|#include <machine/endian.h>\n#define G_BYTE_ORDER __DARWIN_BYTE_ORDER|g' glibconfig.h"
108
+
109
+ CONFIGURE_pango="$COMMON_OPTIONS"
110
+ POSTCONFIGURE_pango="eval perl -pi~ -e 's|SUBDIRS = pango modules examples docs tools tests|SUBDIRS = pango modules docs tools tests|g' Makefile && perl -pi~ -e 's|harfbuzz_dump_LDADD = |harfbuzz_dump_LDADD = -Xlinker -framework -Xlinker CoreServices -Xlinker -framework -Xlinker ApplicationServices|g' pango/opentype/Makefile"
111
+
112
+ CONFIGURE_gtk="$COMMON_OPTIONS"
113
+
114
+ CONFIGURE_atk="$COMMON_OPTIONS"
115
+
116
+ CONFIGURE_libxml2="$COMMON_OPTIONS"
117
+
118
+ CONFIGURE_libsigc="$COMMON_OPTIONS"
119
+ POSTCONFIGURE_libsigc="patch_libtool_dylib"
120
+
121
+ CONFIGURE_glibmm="$COMMON_OPTIONS"
122
+
123
+ CONFIGURE_cairomm="$COMMON_OPTIONS"
124
+
125
+ CONFIGURE_gtkmm="$COMMON_OPTIONS --disable-examples --disable-demos"
126
+ POSTCONFIGURE_gtkmm="patch_libtool_dylib"
127
+
128
+ CONFIGURE_libxslt="$COMMON_OPTIONS"
129
+
130
+ CONFIGURE_popt="$COMMON_OPTIONS"
131
+ POSTCONFIGURE_popt="patch_libtool_dylib"
132
+ elif [ "x$STABLE_BUILD" = "xYes" ]; then
133
+ COMMON_OPTIONS="$COMMON_OPTIONS --disable-dependency-tracking"
134
+
135
+ CONFIGURE_pkg_config="--with-pc-path=$PREFIX/lib/pkgconfig:/usr/X11R6/lib/pkgconfig --enable-indirect-deps --disable-dependency-tracking"
136
+
137
+ CONFIGURE_libpng="--disable-dependency-tracking"
138
+
139
+ CONFIGURE_tiff="--disable-dependency-tracking"
140
+
141
+ CONFIGURE_gc="--disable-dependency-tracking"
142
+
143
+ CONFIGURE_fontconfig="--disable-dependency-tracking --disable-docs"
144
+
145
+ CONFIGURE_cairo="--disable-dependency-tracking --enable-shared --disable-quartz --disable-atsui --enable-glitz"
146
+
147
+ CONFIGURE_glitz="--disable-dependency-tracking"
148
+
149
+ CONFIGURE_lcms="--disable-dependency-tracking"
150
+
151
+ CONFIGURE_glib="$COMMON_OPTIONS"
152
+
153
+ CONFIGURE_pango="$COMMON_OPTIONS"
154
+ POSTCONFIGURE_pango="eval perl -pi~ -e 's|SUBDIRS = pango modules examples docs tools tests|SUBDIRS = pango modules docs tools tests|g' Makefile && perl -pi~ -e 's|harfbuzz_dump_LDADD = |harfbuzz_dump_LDADD = -Xlinker -framework -Xlinker CoreServices -Xlinker -framework -Xlinker ApplicationServices|g' pango/opentype/Makefile"
155
+
156
+ CONFIGURE_gtk="$COMMON_OPTIONS"
157
+
158
+ CONFIGURE_atk="$COMMON_OPTIONS"
159
+
160
+ CONFIGURE_libxml2="$COMMON_OPTIONS"
161
+
162
+ CONFIGURE_libsigc="$COMMON_OPTIONS"
163
+
164
+ CONFIGURE_glibmm="$COMMON_OPTIONS"
165
+
166
+ CONFIGURE_cairomm="$COMMON_OPTIONS"
167
+
168
+ CONFIGURE_gtkmm="$COMMON_OPTIONS --disable-examples --disable-demos"
169
+
170
+ CONFIGURE_libxslt="$COMMON_OPTIONS"
171
+
172
+ CONFIGURE_popt="$COMMON_OPTIONS"
173
+ fi
174
+
175
+
176
+ # Support install-check from jhbuild to speed up compilation
177
+ if [ -x $PREFIX/bin/install-check ]; then
178
+ export INSTALL=$PREFIX/bin/install-check
179
+ fi
180
+
181
+
182
+ SOURCE=${SOURCE-$HOME/Source/gtk}
183
+ CAIROCVSROOT=${CAIROCVSROOT-:pserver:anoncvs@cvs.freedesktop.org:/cvs/cairo}
184
+ INKSCAPESVNURL="https://svn.sourceforge.net/svnroot/inkscape"
185
+ GNOMESVNURL=${GNOMESVNURL-https://svn.gnome.org/svn}
186
+
187
+ if [ x$1 = xrun ]; then
188
+ cmd="$2"
189
+ shift 2
190
+ exec $cmd $*
191
+ fi
192
+
193
+ if [ $# -eq 0 -o "x`echo "$*" | grep shell`" = xshell ]; then
194
+ # Can be used in .bashrc to set a fancy prompt...
195
+ export INSIDE_GTK_BUILD=1
196
+ bash
197
+ exit 0
198
+ fi
199
+
200
+ CORE_MODULES="glitz cairo gnome-common glib pango atk gtk+"
201
+ EXTRA_MODULES="libxml2 libxslt loudmouth libglade gossip gtk-engines"
202
+ PYGTK_MODULES=" pycairo pygobject pygtk"
203
+ INKSCAPE_MODULES="$CORE_MODULES libxml2 libxslt gc lcms libsigc++ doxygen glibmm cairomm gtkmm popt inkscape"
204
+
205
+ # Could add those (orbit requires popt though)
206
+ MORE_MODULES="libIDL ORBit2 gconf"
207
+
208
+ function print_usage
209
+ {
210
+ echo
211
+ echo "GTK+ on Mac OS X build script version $version."
212
+ echo
213
+ echo "Usage:"
214
+ echo "`basename $0` [bootstrap|[shell]|run <cmd>|build [<modules>]], modules are:"
215
+ echo " Core: $CORE_MODULES"
216
+ echo " Extra: $EXTRA_MODULES"
217
+ echo " Python: $PYGTK_MODULES"
218
+ echo " Inkscape: $INKSCAPE_MODULES"
219
+ echo
220
+ echo "Setup: This script defaults to downloading source to ~/Source/gtk and"
221
+ echo "installing in /opt/gtk. Make sure your user has write access to the"
222
+ echo "latter directory. You can override those directories by setting the"
223
+ echo "SOURCE and PREFIX environment variables. Anoncvs is used by default"
224
+ echo "for access to GNOME SVN, if you wish to override, set the environment"
225
+ echo "variable GNOMESVNURL to your own account."
226
+ echo
227
+ echo "While in the shell that this script provides, the environment variable"
228
+ echo "INSIDE_GTK_BUILD is set, which makes it possible to put something like"
229
+ echo "the following in ~/.bashrc:"
230
+ echo
231
+ echo " if [ x\$INSIDE_GTK_BUILD != x ]; then"
232
+ echo " PS1=\"[GTK] \u@\h \W $ \""
233
+ echo " fi"
234
+ echo
235
+ echo "Start by bootstrapping. This will install the necessary build tools."
236
+ echo "Then build GTK+ & co by using the \"build\" command. If no modules are"
237
+ echo "specified, only the ones needed for GTK+ will be built. The special"
238
+ echo "modules \"core\" and \"all\" can be used to build just the core or all"
239
+ echo "modules."
240
+ echo
241
+ echo "If you want to build something manually or run something, use the "
242
+ echo "\"shell\" command (or no command) to get a shell with the environment"
243
+ echo "properly setup."
244
+ echo
245
+ echo "Tip: if you build and install \"install-check\" from jhbuild into your"
246
+ echo "PREFIX, recompiling when hacking on GTK+ & co will be a lot faster."
247
+ echo
248
+ }
249
+
250
+ function download
251
+ {
252
+ BASENAME=`basename $1`
253
+
254
+ if [ -s $BASENAME ]; then
255
+ echo "Already downloaded"
256
+ return 0
257
+ fi
258
+
259
+ curl $1 > $BASENAME || return 1
260
+
261
+ return 0
262
+ }
263
+
264
+ function should_build
265
+ {
266
+ if [ -f $1/BUILT ]; then
267
+ echo "Already built"
268
+ return 1
269
+ fi
270
+
271
+ return 0
272
+ }
273
+
274
+ function tarball_get_and_build
275
+ {
276
+ BASENAME=`basename $1`
277
+ DIRNAME=`echo $BASENAME | sed -e s,.src.,., | sed -e s,.tar.*,,`
278
+ INSTCMD="make install"
279
+ PREFIXARG="--prefix=$PREFIX"
280
+ COMMONOPTS="$COMMON_OPTIONS"
281
+
282
+ SHORTNAME=`echo $DIRNAME | sed -e s,-*[0-9\.]*$,,`
283
+ if !(echo "$MODULES" | grep -w $SHORTNAME) >/dev/null; then
284
+ return 0
285
+ fi
286
+
287
+ echo
288
+ echo "Building $DIRNAME"
289
+ echo -ne "\033]0;Building $DIRNAME\007"
290
+
291
+ # Special case jpeg... :/
292
+ if [ x`echo $DIRNAME | grep jpeg` != x ]; then
293
+ INSTCMD="make install-lib"
294
+ fi
295
+
296
+ if [ x`echo $BASENAME | grep bz2` != x ]; then
297
+ COMP="j"
298
+ else
299
+ COMP="z"
300
+ fi
301
+
302
+ # Doxygen doesn't have a standard configure script.
303
+ if [ x`echo $BASENAME | grep doxygen` != x ]; then
304
+ PREFIXARG="--prefix $PREFIX"
305
+ COMMONOPTS="--shared"
306
+ fi
307
+
308
+ # Modify specific configure options
309
+ UNDERSCORENAME=`echo $SHORTNAME | sed -e s,-,_, | tr -d '+'`
310
+ CONFIGURE_EXTRA=`eval echo '\$'{CONFIGURE_$UNDERSCORENAME}`
311
+ if [ "x$CONFIGURE_EXTRA" != "x" ]; then
312
+ COMMONOPTS="$COMMONOPTS $CONFIGURE_EXTRA"
313
+ fi
314
+ PRECONFIGURE=`eval echo '\$'{PRECONFIGURE_$UNDERSCORENAME}`
315
+ if [ "x$PRECONFIGURE" == "x" ]; then
316
+ PRECONFIGURE="true"
317
+ fi
318
+ POSTCONFIGURE=`eval echo '\$'{POSTCONFIGURE_$UNDERSCORENAME}`
319
+ if [ "x$POSTCONFIGURE" == "x" ]; then
320
+ POSTCONFIGURE="true"
321
+ fi
322
+
323
+ cd $SOURCE || return 1
324
+ download $1 || return 1
325
+ should_build $DIRNAME || return 0
326
+ tar ${COMP}xf $BASENAME && \
327
+ cd $DIRNAME && \
328
+ $PRECONFIGURE && \
329
+ echo "./configure $PREFIXARG $COMMONOPTS $2" && \
330
+ ./configure $PREFIXARG $COMMONOPTS $2 && \
331
+ $POSTCONFIGURE && \
332
+ make && $INSTCMD && touch BUILT
333
+ }
334
+
335
+
336
+ function cpan_get_and_build
337
+ {
338
+ BASENAME=`basename $1`
339
+ DIRNAME=`echo $BASENAME | sed -e s,.tar.*,,`
340
+
341
+ SHORTNAME=`echo $DIRNAME | sed -e s,-*[0-9\.]*$,,`
342
+ if !(echo "$MODULES" | grep -w $SHORTNAME) >/dev/null; then
343
+ return 0
344
+ fi
345
+
346
+ echo
347
+ echo "Building $DIRNAME"
348
+ echo -ne "\033]0;Building $DIRNAME\007"
349
+
350
+ if [ x`echo $BASENAME | grep bz2` != x ]; then
351
+ COMP="j"
352
+ else
353
+ COMP="z"
354
+ fi
355
+
356
+ cd $SOURCE || return 1
357
+ download $1 || return 1
358
+ should_build $DIRNAME || return 0
359
+ tar ${COMP}xf $BASENAME && \
360
+ cd $DIRNAME && \
361
+ perl Makefile.PL $2 && \
362
+ make && \
363
+ (echo "Enter your password to istall $BASENAME"; make install) && \
364
+ touch BUILT
365
+ }
366
+
367
+ function git_get_and_build
368
+ {
369
+ if !(echo "$MODULES" | grep -w $2) >/dev/null; then
370
+ return 0
371
+ fi
372
+
373
+ echo
374
+ echo "Building $2"
375
+ echo -ne "\033]0;Building $2\007"
376
+
377
+ cd $SOURCE
378
+ if [ -d $2 ]; then
379
+ cd $2
380
+ cg-update || return
381
+ else
382
+ cg-clone $1/$2 || return
383
+ cd $2
384
+ fi
385
+
386
+ echo "./autogen.sh $COMMON_OPTIONS $3"
387
+ (./autogen.sh $COMMON_OPTIONS $3 && make && make install)
388
+ }
389
+
390
+ function cvs_get_and_build
391
+ {
392
+ if !(echo "$MODULES" | grep -w $2) >/dev/null; then
393
+ return 0
394
+ fi
395
+
396
+ echo
397
+ echo "Building $2"
398
+ echo -ne "\033]0;Building $2\007"
399
+
400
+ cd $SOURCE
401
+ if [ -d $2 ]; then
402
+ cd $2
403
+ cvs up -dP || return
404
+ else
405
+ cvs -d $1 co -P $2 || return
406
+ cd $2
407
+ fi
408
+
409
+ echo "./autogen.sh $COMMON_OPTIONS $3"
410
+ (./autogen.sh $COMMON_OPTIONS $3 && make && make install)
411
+ }
412
+
413
+ function svn_get_and_build
414
+ {
415
+ if !(echo "$MODULES" | grep -w $2) >/dev/null; then
416
+ return 0
417
+ fi
418
+
419
+ echo
420
+ echo "Building $2"
421
+ echo -ne "\033]0;Building $2\007"
422
+
423
+ cd $SOURCE
424
+ if [ -d $2 ]; then
425
+ cd $2
426
+ svn up || return
427
+ else
428
+ svn co $1/$2/trunk $2 || return
429
+ cd $2
430
+ fi
431
+
432
+ echo "./autogen.sh $COMMON_OPTIONS $3"
433
+ #(./autogen.sh $COMMON_OPTIONS $3 && ./configure --prefix=$PREFIX $COMMON_OPTIONS $3 && make && make install)
434
+ (./autogen.sh $COMMON_OPTIONS $3 && make && make install)
435
+ }
436
+
437
+ function set_automake
438
+ {
439
+ old_AUTOMAKE=$AUTOMAKE
440
+ old_ACLOCAL=$ACLOCAL
441
+
442
+ export AUTOMAKE=automake-$1
443
+ export ACLOCAL=aclocal-$1
444
+ }
445
+
446
+ function restore_automake
447
+ {
448
+ if [ x$old_AUTOMAKE != x ]; then
449
+ export AUTOMAKE=$old_AUTOMAKE
450
+ else
451
+ unset AUTOMAKE
452
+ fi
453
+
454
+ if [ x$old_ACLOCAL != x ]; then
455
+ export ACLOCAL=$old_ACLOCAL
456
+ else
457
+ unset ACLOCAL
458
+ fi
459
+ }
460
+
461
+ function do_exit
462
+ {
463
+ echo -ne "\033]0;\007"
464
+ exit
465
+ }
466
+
467
+ # Make sure to restore the title when done.
468
+ trap do_exit EXIT SIGINT SIGTERM
469
+
470
+
471
+ # configure doesn't pass CFLAGS through to generated libtool
472
+ function patch_libtool_dylib()
473
+ {
474
+ # Only do this for universal builds.
475
+ if [ "x$UNIVERSAL_BUILD" != "xYes" ]; then
476
+ return 0
477
+ fi
478
+
479
+ cp libtool libtool.old
480
+ perl -pi -e "s@-dynamiclib@$CFLAGS \$&@" libtool
481
+ if test "x$1" = "xwithbundle"; then
482
+ perl -pi -e "s@-bundle@$CFLAGS \$&@" libtool
483
+ fi
484
+ }
485
+
486
+
487
+ function process_modules()
488
+ {
489
+ # Bootstrap packages.
490
+ PACKAGES=" \
491
+ http://pkgconfig.freedesktop.org/releases/pkg-config-0.21.tar.gz \
492
+ http://ftp.gnu.org/gnu/libtool/libtool-1.5.22.tar.gz \
493
+ http://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.bz2 \
494
+ http://ftp.gnu.org/pub/gnu/automake/automake-1.7.9.tar.bz2 \
495
+ http://ftp.gnu.org/gnu/automake/automake-1.9.6.tar.bz2 \
496
+ http://heanet.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.15.tar.bz2 \
497
+ ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.8.2.tar.gz \
498
+ http://people.imendio.com/richard/gtk-osx/files/jpeg-6b.tar.gz \
499
+ http://ftp.gnu.org/gnu/gettext/gettext-0.16.tar.gz \
500
+ http://heanet.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz \
501
+ http://heanet.dl.sourceforge.net/sourceforge/freetype/freetype-2.3.0.tar.bz2 \
502
+ http://fontconfig.org/release/fontconfig-2.4.2.tar.gz \
503
+ http://people.imendio.com/richard/gtk-osx/files/docbook-files-1.tar.gz \
504
+ http://www.cs.mu.oz.au/~mjwybrow/gtk-osx/gnome-doc-utils-fake-1.tar.gz \
505
+ "
506
+
507
+ #http://people.imendio.com/richard/gtk-osx/files/popt-1.7.tar.gz
508
+
509
+ for PACKAGE in $PACKAGES; do
510
+ tarball_get_and_build $PACKAGE || exit 1
511
+ done
512
+
513
+ PACKAGE=http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.6/gtk-doc-1.6.tar.bz2
514
+ tarball_get_and_build $PACKAGE "--with-xml-catalog=$PREFIX/etc/xml/catalog" || exit 1
515
+
516
+ PACKAGE=ftp://ftp4.freebsd.org/pub/FreeBSD/ports/distfiles/XML-Parser-2.34.tar.gz
517
+ cpan_get_and_build $PACKAGE "PREFIX=$PREFIX INSTALLDIRS=perl EXPATLIBPATH=$PREFIX/lib EXPATINCPATH=$PREFIX/include" || exit 1
518
+
519
+ PACKAGES=" \
520
+ http://ftp.gnome.org/pub/GNOME/sources/intltool/0.35/intltool-0.35.0.tar.bz2 \
521
+ http://icon-theme.freedesktop.org/releases/hicolor-icon-theme-0.9.tar.gz \
522
+ http://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/2.14/gnome-icon-theme-2.14.2.tar.bz2 \
523
+ "
524
+
525
+ for PACKAGE in $PACKAGES; do
526
+ tarball_get_and_build $PACKAGE || exit 1
527
+ done
528
+
529
+
530
+ # Other packages:
531
+ if [ "x$UNIVERSAL_BUILD" == "xYes" -o "x$STABLE_BUILD" = "xYes" ];
532
+ then
533
+ tarball_get_and_build http://cairographics.org/snapshots/glitz-0.5.6.tar.gz || exit 1
534
+ tarball_get_and_build http://cairographics.org/releases/cairo-1.4.0.tar.gz || exit 1
535
+ tarball_get_and_build http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.8.tar.gz || exit 1
536
+ tarball_get_and_build http://www.littlecms.com/lcms-1.16.tar.gz || exit 1
537
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/glib/2.12/glib-2.12.11.tar.bz2 || exit 1
538
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/pango/1.14/pango-1.14.10.tar.bz2 || exit 1
539
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/atk/1.12/atk-1.12.4.tar.bz2 || exit 1
540
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/gtk+/2.10/gtk+-2.10.11.tar.bz2 || exit 1
541
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libxml2/2.6/libxml2-2.6.27.tar.bz2 || exit 1
542
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libsigc++/2.0/libsigc++-2.0.17.tar.bz2 || exit 1
543
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/glibmm/2.12/glibmm-2.12.7.tar.bz2 || exit 1
544
+ tarball_get_and_build http://cairographics.org/releases/cairomm-1.2.4.tar.gz || exit 1
545
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/gtkmm/2.10/gtkmm-2.10.8.tar.bz2 || exit 1
546
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libxslt/1.1/libxslt-1.1.20.tar.bz2 || exit 1
547
+ tarball_get_and_build ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz || exit 1
548
+
549
+ svn_get_and_build $INKSCAPESVNURL inkscape || exit 1
550
+
551
+ exit 0
552
+ else
553
+ git_get_and_build git://git.cairographics.org/git cairo "--enable-pdf --enable-atsui --enable-quartz --disable-xlib" || exit 1
554
+
555
+ tarball_get_and_build http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.7.tar.gz || exit 1
556
+ tarball_get_and_build ftp://ftp.gnome.org/mirror/gnome.org/sources/libsigc++/2.0/libsigc++-2.0.17.tar.gz || exit 1
557
+ tarball_get_and_build http://ftp.stack.nl/pub/users/dimitri/doxygen-1.5.1.src.tar.gz || exit 1
558
+ tarball_get_and_build ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/popt-1.7.tar.gz || exit 1
559
+ fi
560
+
561
+ svn_get_and_build $GNOMESVNURL libxml2 || exit 1
562
+ svn_get_and_build $GNOMESVNURL libxslt || exit 1
563
+ svn_get_and_build $GNOMESVNURL gnome-common || exit 1
564
+ svn_get_and_build $GNOMESVNURL glib || exit 1
565
+ svn_get_and_build $GNOMESVNURL atk || exit 1
566
+ svn_get_and_build $GNOMESVNURL pango "--without-x" || exit 1
567
+ svn_get_and_build $GNOMESVNURL gtk+ "--with-gdktarget=quartz" || exit 1
568
+ svn_get_and_build $GNOMESVNURL gtk-engines || exit 1
569
+ svn_get_and_build $GNOMESVNURL loudmouth "--with-ssl=openssl" || exit 1
570
+ svn_get_and_build $GNOMESVNURL libglade || exit 1
571
+ # gossip needs xml2po from gnome-doc-utils.
572
+ svn_get_and_build $GNOMESVNURL gossip "--with-backend=cocoa" || exit 1
573
+ svn_get_and_build $CAIROCVSROOT pycairo || exit 1
574
+ svn_get_and_build $GNOMESVNURL pygobject "--disable-docs" || exit 1
575
+ svn_get_and_build $GNOMESVNURL pygtk "--disable-docs" || exit 1
576
+
577
+ svn_get_and_build $GNOMESVNURL glibmm "--disable-docs --disable-fulldocs" || exit 1
578
+ cvs_get_and_build $CAIROCVSROOT cairomm || exit 1
579
+ svn_get_and_build $GNOMESVNURL gtkmm "--disable-docs --disable-examples --disable-demos" || exit 1
580
+
581
+ svn_get_and_build $INKSCAPESVNURL inkscape || exit 1
582
+
583
+
584
+ #svn_get_and_build $GNOMESVNURL gimp || exit 1
585
+ # For gimp:
586
+ # libart_lgpl, needs automake 1.4 and doesn't run libtoolize
587
+ # gtkhtml2 (optional)
588
+ # libpoppler (optional)
589
+ # ./autogen.sh --prefix=/opt/gimp --disable-gtk-doc
590
+ }
591
+
592
+ if (echo "$*" | grep bootstrap) >/dev/null; then
593
+ if [ "x`cg-version 2>/dev/null`" == "x" ]; then
594
+ echo "You need the cogito to get cairo from git. It's available e.g. in Darwin ports."
595
+ exit 1
596
+ fi
597
+ if [ "x`which svn 2>/dev/null`" == "x" ]; then
598
+ echo "You need the svn client to get inkscape."
599
+ exit 1
600
+ fi
601
+
602
+ mkdir -p $SOURCE 2>/dev/null || \
603
+ (echo "Error: Couldn't create source checkout dir $SOURCE"; exit 1)
604
+ mkdir -p $PREFIX/bin 2>/dev/null || \
605
+ (echo "Error: Couldn't create bin dir $PREFIX/bin"; exit 1)
606
+
607
+ echo "Building bootstrap packages."
608
+
609
+ MODULES="pkg-config libtool autoconf automake libpng tiff jpeg-6b gettext \
610
+ expat fontconfig docbook-files intltool \
611
+ "
612
+ # freetype
613
+ # XML-Parser hicolor-icon-theme gnome-icon-theme"
614
+ # gnome-doc-utils-fake gtk-doc \
615
+ process_modules
616
+
617
+ # Setup glibtool* links since some stuff expects them to be named like
618
+ # that on OSX
619
+ if [ -z $PREFIX/bin/glibtoolize ]; then
620
+ ln -s $PREFIX/bin/libtoolize $PREFIX/bin/glibtoolize
621
+ ln -s $PREFIX/bin/libtool $PREFIX/bin/glibtool
622
+ fi
623
+
624
+ echo
625
+ echo "Done bootstrapping. Continue with \"build\" or \"shell\"."
626
+ exit 0
627
+ fi
628
+
629
+ if [ "x$1" != xbuild ]; then
630
+ print_usage
631
+ exit 1
632
+ fi
633
+
634
+ shift
635
+
636
+ MODULES=$*
637
+ if [ $# -eq 0 ]; then
638
+ echo "Building core modules."
639
+ MODULES="$CORE_MODULES"
640
+ elif [ "x$1" = xcore ]; then
641
+ echo "Building core modules."
642
+ MODULES="$CORE_MODULES"
643
+ elif [ "x$1" = xpython ]; then
644
+ echo "Building python modules."
645
+ MODULES="$PYGTK_MODULES"
646
+ elif [ "x$1" = xall ]; then
647
+ echo "Building core+extra+python modules."
648
+ MODULES="$CORE_MODULES $EXTRA_MODULES $PYGTK_MODULES"
649
+ elif [ "x$1" = xinkscape ]; then
650
+ echo "Building inkscape modules."
651
+ MODULES="$INKSCAPE_MODULES"
652
+ fi
653
+
654
+ process_modules
655
+ echo "Done."
656
+
657
+
658
+