From 36994ed8917288bc5710d2ba3313312e3005fec6 Mon Sep 17 00:00:00 2001 From: jiho-sf Date: Sat, 3 Nov 2007 22:30:48 +0000 Subject: [PATCH] osx-app.sh - added an help message - changed the calling syntax to make it more robust and allow to specify the directory containing python modules - removed the reference to libXinerama on Tiger. libXinerama caused many issues but they seem to be all related to people installing x11 in strange ways - use pkg-config to get pango and gtk version rather thn relying on clucky ls+sed workarounds - code reorganization and added comments - spaces to tabs osx-dmg.sh - removed python related stuff - added a command line option to get Inkscape package (the package does not have to be in the same directory now) osx-build.sh - modified according to the changes in the two other files - removed referece to X11 libraries ad such. these were commented for a while and nothing broke - added an upload commnt to send the file to modevia removed inkscape_python.ds_store modified inkscape.ds_store (larger window) dmg_background.*** - removed Python arrow - remove the word Inkscape from the arrow (useless now) and make this arrow glow green a little, as the rest of the picture - removed absolute paths to my computer --- packaging/macosx/dmg_background.png | Bin 40017 -> 37235 bytes packaging/macosx/dmg_background.svg | 106 ++---- packaging/macosx/dmg_set_style.scpt | Bin 4322 -> 4438 bytes packaging/macosx/inkscape.ds_store | Bin 12292 -> 12292 bytes packaging/macosx/inkscape_python.ds_store | Bin 12292 -> 0 bytes packaging/macosx/osx-app.sh | 382 +++++++++++++--------- packaging/macosx/osx-build.sh | 97 +++--- packaging/macosx/osx-dmg.sh | 141 ++++---- 8 files changed, 398 insertions(+), 328 deletions(-) delete mode 100644 packaging/macosx/inkscape_python.ds_store diff --git a/packaging/macosx/dmg_background.png b/packaging/macosx/dmg_background.png index 65b7964f84de127b63842e7dc6eba663edd931c4..94228b60dc096bba64cceb1cbe6c1af888839594 100644 GIT binary patch literal 37235 zcmXt9V{lw;8{XJ#Y#WVjyRmI=?4)UIHFg@?jcq%PZQIGW?~iY1cFyeComoB4bzeFW zKNO{q;PK!A005GVw73cY0PX|;fEmC-gU+1h%1D9^kS?M!YOtW2FRWQO=rJ5nTH6Km z`sM%bV4^gco}iPst`b_Vs*V<}9>&h*01pojCTj;<7gJ-PIg_KaW#%P69socBkP#PA z^UON$^lG7$@;ZEpqGX$Pe=6ckR@0gNg%vH#3O-;GbmD*fxb(9Z8qpwaNFc{6wD}7d zH|c5Zv%WFEH;lyDoUe^o54L7MKSYE(L54~~8X+M^S|&@mXy9Qum6DFe5+H7t<8rB? zsUlM@`g*Uop=&uB9vwa5x%bg^^)b-iT|eD)XUg|Y>1qxe+vP$)d zlR0&dr?WVwH%!8a9h(!_TJlQU>*?K`mVJ1$+<$JW1D6Rx|4d%Z3Q0}>j-leSK8`@z zI!nW};ET(?;mj=^tnX8M5QTK^e>!THvO17cl3By#7%($uwmnicMmS-~Sm{%pdsMZT zwQ^r#+Hlo-n>6N`^@iQMEy=f3ibEP!MU~ho_x>*Xctn3^ed-1c~8*0v)tj)^d zHMJL1=Bx3i%$)T4Ie3p#p)}h;tl&O7vv+2Yd%-U`T**&qFSuqm&u4(BcP|1s`bq-J zLi^Mp>VgYFg{O3VR;J017bOjm94)=--0U`g&Pr^1|BINLKofjDoB|t+YR(M%b$NC4 z`iY`r!B;|j78_Fk?Af{3(Ay;{;4RN-NU`Ki?D^>rOn!iGMRwiihm=ZreuD0`ZWb*!Hd zUmZk|#9PIWJot?vmv!_07Bm^c@E`2=hv!X2mom|E%biSvkB6r&?%r#_&}`(M*{1;9 zo=g~5bX@z;`EEDk2M#K>zt-P~s!?IwY+ z6-G`bXLvYPqdcg)PLG4F7x{J90;B^yPY3|*tl?&CLm1J@6IH`usibW7f}6nQXu0$Y z0;;BLpgx!2vi)B|Uj0}Xp&uKNxY$Rn>T4=iCffQ>uRTNgU++FhDK4isIqCf@%L08< zr-QI+hC(6*5Mo`k*f2E#PG|SU>zr@1T*Z{CTON9WFiEP(e)w#y;8`vV#U*`usGq4W zN{6zJRuwDYZUT~xy&SxZ+X8Y5@CpKW_@0bSj3(M^_k2hKQ?k5aPAjS#omX;fOv5d9 za?`=WD#{Nf(b|I86UN$#mbh~6C>{RQo3@sJsvw-!z=1^-jQ|G$66(Qi+n_wfdqOsb zFeuM&pCb0zgK%dX<$YvXy&=u^0C(h_fUH6Ic*T@U^{;E@*KVFP-N{2`Q8o;PAi#;Z zqw>|8w|)!>{jb)kS!afm4)Z zo_ukZoGhsVo6gUj<1{SL3e~b4Bh2b2)dPI3iN~3*!4{(W<%3BOzbgHM%3DThirNZV z?%2AgLU{oH2iKE)M4vFjR}E{#-*Qci63)tL$|5kR)v=bV>!~k8sH4p%T@7O(F`Gd% zJsQ$}=_+iq@xYLS>363Oi=*_29%X~_lKN-o=tNc!W-5P%1nx=5FZwJU!a3>$u9yzH z+UG;h9452??p3>Gp*ii0KrqHf{X2nD&I2idWy3*pluBk0H-Iszq>Rh5rfHJZ6fty= zA7*zdE1ASWVCDv8Uj(~6AYaSBC|)}M<7!*w!6+Y?i(K!5*dj7+AqzOnl1Kqe8E1=- z$bF}-)v^SNZfC&)ri9L;EPZ<~xtDc)qu7oO!y#+4rt-pZ6sbf;YGEI+I=~?$obedH zVYO3_ar4_EVFkHC)7!1Mvk3ajtBw9hA<_7m!Xi6F6we#gZ`D zgA`SEmY~^1%ro?|)vU)8WlPi7^uw4XRRBP^UCTH5O2dCE92G1*bZ{0+$~5RvjoG60e7$B#-ozhN-k@U??h)U2bzjj_SqSyX0p4^Dom8%2O4V z+HbA2*7Hf&xh{~#2>;*=nHq5kr}EnFX0_SxYgxCz#$3qk-#bnIcpVV*^#>yf&cp#v zYXE2eIj~>uT_Zqt5i5ljlRx&&vx%9cA_D(orM-%pxf0*!}WByKG^ zU^#MI!VI>EQr`ld&IrXY@}}WfGZT;79Q$A1)_H@_TDytNE6T4DYEJ2q1hAA!~Iw`tt@oe$8TxRX_(iwXs0NzJFp}}bA0)1wMwXr zFZF)8(&*Y=u2Goa6&zK6XksUMsp3387|tMX5}-zjsUvQc zo+rK^=%96+1)wycYm04y-eYynBn!FC0|cVuRhf__+{XqoC>3$jpCJw%>~m5!5VB^H zN!RVTprh0`h0oGSqU8sl=FbD!xqu7THbzF?dn9FL#=j$9dt&La_4Zg%6hr!ijiB^T z3eI301ut1d$8i`7;(Kb_j~-pHg3RlDq8HpsCCNAK&-iPn^<^DYYpscYZo(EpLN~4h zr7_@(OfX1^zQx2t^%SkkYaMBC5qUe|SbjVd$T_f8lIt}XtSzNKd|YcL*O_reZG0nr zWRo0+WZb=7#ZOIGVQN)i*>6#Z4MGatQGD_&#Z|c9X&a zk@|RaE&B+jKO_eawTxkYn%9w{8F!^DvkkOhJ)y!DC*IA{^{spc7lIGSIA#c~+_fH*|gK1UIsD zPYvW9{nS9e`o8$|-wT{4`xU}T6TEt!EzbST9q7Toa7#ai5;Lj(Crb>%EXSIBu{spkbww0GI21ND(u z0v^Hri7QNH*0V)2kwThB6I2ey0Uy7U{7A@eOv&hp#7ALi$s#cb!(dFN4oIlSu^k$ER}=&KJ@{;)KEdbgqcn zLzSjRRY5Dm`7T~BDzPN6?VcE`eMw#P@x%`$)!UxzR#tZu3!emBPofVn7N!F$KRZji+!t9#F2&{A` zjD!lyUkT%Omip^y+{0K{v+&y8?*Cdch>UqMZ!!yx&Yf1=^@`Fj1d#;1yct(W za_(K1rcz;kL+3y^Sx&v0>~ewu{g{3z|6;ugrE}kAHOoi-$wN9mF$Y>H$KCBoVowtg zz?~3m=e-!N+Y_aL42E%T;4neJql?FFRKO#8XbJtlKKoO|A>2X)0CFHLd6_&M3u8{* z@!;qv7|Al9(ARb9!PG(nc0&0KOGWfxd#QwJ*VbIS-2s67q*UsUT6;f35w)@;j7GnS zy%kCbI$A=xih94=!}q%K0`p*DOc7=F0yx$r^c7AO8oF{3A_vc}4bszDSWFIa23wjk z*sddBHS(S_>q@b`iLlW~9TSR!&XG2E@(*RCQ}5tNBCTn+zcoAeE+ZLA+eHz-FLcQDU)w3scPq zg*I)DET5`Y1&dJyBcC~M-m*}?^xhkm1c zX*sm4q?YCJ2$iUnoexUbke?QgI4wQX2;rRxnAj$A0*-%7w^y>5S>Ne-8BTOmab$)`- z;g(wH$?fw3#&BpRmf|OOlq=5?ZQ(plDye>~6KkzAxSqk|7Br_MG|BR~-o>DJGK+I{ zIChdWdxAWOxnUz3f>_)pVF)4%UuTUD!+bIVPlq=%wGK*B1ag^`k7doBlQ3m`5@zTh znPOY)f?&(N_g(6;a$~Idq{cgm!uW*;oHBdkx`BF8brj`A^7AS~35tqdw~ap;l?~js zR!8&%winbcv}M)_5lnptBziz%o88)x9L?@uTAVW~PmIT(UlNGj{dF1BNg15rBIHEW zDICGqxc2pcg6BbQ51v+gmwLDO@=CNacplom!_7%Ti+IF61WO zbVnfRMp2F>yv{(sf_Rtxr)Zo^nZsR!+4yT$(`hQ1q<KdD^XQrR||Up5}U@nwzEo>8xB0SU#5FkWD1LY8Hoq? zys7s`(}RmZ3WtqyT1~;O7`T~QeH;dUXcu4I^H+J!!zfXp#9t;$%FI3SBV+lDBwV4T zp?%|dR|~!J3twFPqawtC*2Y>-EQfew-4oLt_%$MYt_j%`U&DGyr6P$nqun`$!hk9D ziWB2zMB&Xoje2e8qoaRMNs>Ek_TGE|#mM-^AE!N-O!GAF$LK8&XIm1nf;TKF z^{VW5P{dCpP&ufssJn&1sOJuPQ)klw)1kv@XGA*{)D9xBGURwArY6p3rsHJVr0AIb zc3U;}D{)2l7{oru0)YZ*5IYW254*92GaaAr0ZQs9xsU4(LNC|^4*uBj>)#)e&dUtD z4vyN3M-7Qz?F*xWP{5AuCo0=vN3- ztg7V=L>TBBZz(SgpUJ{Bx+f>wH^iK%s9j#t%rUu1!P2 zrZ$6dhJ%r}J|e|F`oY2V3jT4sAek8jKJalc)*9{GC?2NvpW>nCz_Nf*2{C3f%?oq~ zfm<;4jP=8Prh%b|b*Vi2g#GPbnRA$`y0A>dezeO9?<3YVZeJ`qD<&wy9&xvwMQbzV zzsA^66TPwqwTY8t4LkDDBQx-JshQtn?EkhV6IyQ$gXq+ot2qLrCR%Zb_^Sf0?tzfw z7D22xgnkmYmJim$@g*?@O%4 z>?>}sC=Mos4Q;Ws{!=*}F9V^I06kLNIhbv;+_iKh`Q5gM#!cx1Z?B0~4 z$9=E=vK75ew?jn@gdvJe-@WuWm0{zo3;)(HXqPAdR{e{s^{sdhQB>rXuX*)eQuanqb$hO4rk=W_VEa`Xy3u^Y%Yyk+q3+AG6d z`L;ZC-{`!9^Id-xol{ht@G~~ZFS9$@deju864-|HuTD(!tsU4>el-kCqgC=<$$Rqx#qU_>I2>MMo}^;d%ffAqO`|Z+w$e`e5*d=#ZH?68I=~@H~3kn+1Ma7@OpZ&PxqY272# z&eSPTCEnr0elQ6%5ng705rBBHsm94+g=-%RNTjqCW3C%i$9>#7$$qARHuZp2N7SsR z)XJ75yCgZ@-u0=U`FpmKIOaBFY?flzSltrDxoyW!Ep?FJ8V*`q2q|qPT9epTndYl2 z@cIq1Hhfyn@Wi#k1?Fnd_XxD0?IVC^S+GkizJ%)_^dQsbp1f{>Q8WY(hg_>S(-I2u zsI@G;%nq2kcO4urkUG}Sk>b!6qMJjF1%k{^s>Z5enCoWgb zJAkK#39DEhS+Ddu`TKIcR5+RQO$xD1kMk4QE2`}su5N@nonb}ykoxmvO^mE-gugXJ z@(Rh|0o7PBbKyhQ;(L0$??D}h9Ud&`N)0mtLsi3qJ)=wgjg#>DXGh`=?XDB>)VeU* zlSe!?PUb6*pr^7<`FFq3+a*o7e?Ra<5{-)0eu!WdDN!gZb+z^Rdx@$U)Aj2{){&)D zf}Frw;HL|8m;|g0g{h5qxFq||m6Wy!yh4J+DT`TxZ(+Pj@|_mk#qeBHtLO7;efCGx zUzT~V;0af0h0FzZ>vVIh`EUI7-YD(1(|^jt%1)G-2wMZgQZFgo?Bz$WChZT4G%6uT z{W8huz^YMyEx7*E4=@;guQqcb&}wC)xVqo(P@OlU%seoABazB{7Txb__w&AR*xj9Nvd|Z1{`8L2Q-7I#4gkP%&W6*QMY6V-T$HJ}tfAUek%` z`^Z1cQM@UhXf~Y8*(O1@?;Hxu_C~ytD1gIWJ6RxoH2)GBsZJK2E))6->Cl zn>cEmWMHz+_x}5BQg@|vCRF2(2|{shkV+~D4G*>?k5-UT2wP|xwNEvz`T!7EZ-Nld zb%O4~H{HEUeC-u~wryRm7Lo^fk5y%js%f$o$9puiiNiR`$iF-7g+ZKn?(iRoHI7Re zf`WwG#iW4Vzef({l)0uHhGra@CFzVaAZ&y|O<(JPhBop^mJ;UYqWIY;deCuxeCqjGV1&?rbbx3GLr z0fDS30}nF=i+CX8*)!sDhlC9;PQ4pqP7~G7MRgqzdG3yo1>Do4rOs zje=xEcO`y1=|}Z_*R$cJtesLw{e^UyYbd~jr)o2sTu(YR%Zjkh^2TLb-M|o#s&|G9 z0X)i)$;a^~V9+y$!vCB6LQy`P>-B6`C%%|oZcuAZiFj=?M{f!FT~Gik1m`@1C?8GX zJNlIo|4Kh-?zY>c&V^I;TYU2H;a5RAeW>7tum+^}{GebM0q=MjOQ+8cz>i7eC|a7$*T9az@g}sO~t1wM?ZRx4L7boO|+kPx{NW$w`^WW!A4DBN&KsjyHF6*#5nz(D4Z?$gOftT2ypC zvwaB9t9dWU8JyWY|J>~9eV2k-K%;HKBv-d^~0;u zh3|@G@Sy_A?gV_9bqXtL(P8S{QA(==cTF*jRQ~kGlH3Q58D9-SXZjiS7iL3tzwgOE zDV{|^;WeiDiNg=2F5!8G*)h%ILn276)IEZQ1)BLqKM{ng5eJRvFmwht0q{QRxRLKL zVFhrFw+uB%Q6FOT9<>>7P&6rva|-m4W00hKsXzis-vW?US5ps)#5+7_-_&V4jpcX( zVW#9-Q8MdVJD@y-7EO7cJbJkOpK@n-#Mp}! zTG9%q{u)ENtm$M%bqLQ@Tj3H!%>o8M$Z+^HYpbOVF&~wbs+sx||1j<1nez^-%-*!w ztm*xqHEzS-8{cvphT}P0#U^57%FH|Msp_<-`t83;5ZT>dlMU9LP#k~tSMeA1H+wYd zSKOXHbns)jn908E*l97;1twxoCFIo~6GkRi1c9IoE{AmJ>ZGBK$dZgF_hz48axWWE zB5C2?%7`;}(qpaFxSo1&W?c9I*AgGVjpl{6me;C&Y(H2YdS>;x#=JQu=0SM0)qN!J zem>o0s&9Jbv-PH>vzk#Y1l$H(`5y7j>fBZNbWK(``ZIn#DSdHF;>wZP7O@9g((|*G zNT7@$$>x+Ms-J&T0D}i?%jTKdU1~G0Ax~(wQ6Wre!jI^k22JS?!{op$$>gOWMwKGq zx~I#@=w~`?QZ)n(yD}ZMBY+?%lUdiZci^nW_q>Q=PR`I~2hGt1hXP5d6nXys!gHztC2X?FO%y?rm)P!tj;OdNV(%W{xgx z!Z*Ubiy!E~*dWel$e3OxO(p0Q`Uww?ui0^(2_4~@IC02eUSf4HPJ^pF+kcMl4OX$j z-;h1*Y4^Z)@C0H&{P@)1ca@1Gn7c=}lC>-&(C87tv!2v{W)*|u11HZ@(D~20_Nisc zRLMkX>zfWrbfBbBgAAW8cq=DI^<^!1UG4c=T9!4nQ0wD%uoLS%xu%JIFime_QJ2#b z*Ol_I?(Jy({^D7vNl9jURyvXStaWtGf20&I!q+iDTZCDFY+2&TQE_ z0Q9-istrb_R*OJ#wD)rLK%T;ftFmd0EtkZl;{kQj_r{v9I&N%UVFLABQk>cicD3{%8 zei*TT8j9bsnD0J0@s5I{_qVT|W&iAi1hmgRUBS_S=YdR+gn|}sE+#5OqWo2eu&NWX zq_N}vjl`^!VjH{4pb8v2ErNaE9fN6jlWZTGp18wMR@jJ!eFYQ;4wyaoDmI~bc@$5M zD#$YN1)_}}M|cZgw)xtA61V!_K9H`60Q(n|W;pDTtJXuX@S+}WDM+bio{C`jT~dwh z4i_KviRCcxZiJaoes$BjQ33+YG2I43VKoVHV_~Ab;RQ1b05r!%Vs5`!r(sJTP5pNZWk} zqw$)xm}aLwH++X*R_KV8raJIk1MEhgAI8iiV{|d76q=wbLmcgq|*!w zC^iyXY|S8yahHrsI_{bsp_yn>auTx64u)gcB8mP3oG$;mCL5a|Gndy#$(J}c|FP7f zijarjPN%^aJvl21v&2kiN{QfOc96sBG!*J7z|2c%WCvV(dn*w;RH>YV8KMx@3BJY) z>XUg~$c6D-$ypCpfDL`a?&`4vd0`$~L?Wh_D|TmE+{=FJEOsT+Y9R?$8MrRT5$<=D z?16{{^OjT5s^-OISWrKs zU;tSjWj3o-$X{2??~Ev$2c{i@ud{Jz5@%;p{*Mj02iv_tzM!K%%&y?q%e2cR$MSa$ zj=?|(7{HbH$Mdkz6yx9ZJ_W9gfzkfE_o>XUM8ocbNkoNZS)--tYB2NJ(78$IBHKmY zDCVPo^Ii0`P&@kZ#Q+J3bwz9czv@3Zk9@%%>o;c7u;AvC{U%(A{-9EGFrnNc7VG)i zqry6@VS+R>;KX(ls=LeT-O)@t5iDn`beYJ zNYKKeQ!-9`H`u7YJ{7;jzXK7y`qY?!OpSR2;#;yYL_A{}Z5DX~Cf;I{tjP8+LF+?= zeI`qaoW8c-R}&j!)u%<#RDAsp3FoB-1E4v90Y@@^A_FoIcve@hRv=(XR$-3QQiQmc z@!bMx+`b~c^rlqN*mBNsTVktx%NRTkwMPl03}Q<};^ByOu@1Uy2B?wW>A0E2b@j$s z1;@S7dJ_*A|6OeF#z}-kK4RjPJBJ^|bo>U{%|Y}YLEo%!U4RFfdOWZ2c}9CoyHrT7&L zIW)r+{L89ecin~xp^+>fM_q|i0+)5QQ!^7-IFVFbAMz3$rKQjtKf2EJYI7Ps?jN7) zGkx4T6;Sc7LSwd!Rv7Dg4VBiX%%Ge9R-xl-aG6_0t#-s%A+8wW8*PuQ5x*UsPh>LL zNW*(mHu7sl`I5M#pBy$!zxN#n{LQfcJe&R^+I!wxar&zQ}_UPCnWMDv4q_SoFyWx%xphlj)$rN%!=)S=g>Yq{ToL1La z@VJmO0q$J=aF&6lg@|HImk2|sCkLB>Blb}p7^`Zkwol58h5041rdSY6U?hpIZrbKf zdbjZh_9RXhXcqDk!r9L~4l-Go3BPD+R_~BeQbG<7^&R&Rq=ZIH+}9z%OQ0PvG@)VO z3?;|ux@*V$jo?USE9I|i&9xgi;^0XCEw`lD4jb}a-%|E-fl33wuiaEMacTBQ99pv9 z6HZH{V*EN)sP09nlpO?+M7G`wxk2$}&HbrL?>y7Q0hHJaHQK7|20xbnEIiP(+f47h znAQ|zGlLcf6OqmJ4>sYo}XP43(4A=mN-l{SKWI!Fn}(3-JZ@)C=!K08r6G8b$e zC=6R5%W*l?ZoR0V%h~h6pSU^Crpus`jr$DMJS4Fx?v<=rJ*7fe*`aF7W){|TlnG^k zrOUsH$h_VgEETbvJ34hQaB!`~<A9W&vD+Ku8wj)PjUg=Zl@R?n_kpXaYP6DSKinq zie8M_?(LIrn@?Ty?#}}|+WvQw#0QMa-sJR6ll`);b!s}I520? z9)xfg8@xngFMY?Iyh!+$jFA4ziS3At7_Bo_ELsa|0g6A8(fH`zv}7#d=zJhh6fBX_ z6-M=A8+cq^j2-wsog6kFmJ)~jUoQXN7MT*~r!)V&{Q#G>#yENJE6!qOJm7R~z=S%& zl$9<#HuU##fB07c@+Bm)?1;B7U#6Ys@0C~x+|QWPp0OFi;NdmYS*FIl<8^~EHYfGk zmVMubaIxBlYniB3ICg&!=!cSgRO|0-hA`hApL(Q8KYmX*H!rC75a!LVEhjoGuhXpm z`|0Z-@an%hqzMt;m(|GBAMCOy`hqC?{-SYjo)F(-$TotEJ%};5L=)vp=%f@(ARKYk&$X6&)+#spFg@gry_Fy}7WqY1& z8mPGl@?w6A(LVtjUxc;07c5OY#(|L9{4M=F_tf8H#7B59ChMEE4|j_AX6TB^@D2P6 zk5kDh?CFCU2YX& zSa>%KZN$@@^Y9xbV9UdOqd4lUPBL2GA%5ESJ9d01wOmaFLBKRD-S%O3#s86tV`XCt z(x)!ExG|7U8N2+;hveKlNPW9|M zFR0Kk5&5H`FmLt#J^VyFVld>naq_pCX7*e`A#JrDR=P<}$~DS&sdVMwgX$a0+cFn^ z_8gdKPQM}=++{;0SB6W(P3~cTeQbY$=N9ABJp_4`KmQcqM-R2*D!H?%uW;4QfY4x_ z`@`{heHI0hlUpPThg>xald^@zOc?lU@Y1Q0?EqX$Sxm%eDRo~(<&R!)gMlct2#_(< zha?!42JI~pj1~Dog7Ppg;E8+r>acKI zAJQ2C^;#V8#Y*SWy$08ZQA(4TM1_O5St7;FI#b_~2_U^Oi&(;_K+FJ~*^hjsFr1+H$mdrq!!%lyDdtH*xLcE7! zq9C@v<=Jyinb#f?#gTvU%gcyT6Dcnw!w<+-S zM4;6bH1W);B6kAU<-Ch!P$_w1j&+}^~^jbVe(R>oBTc3y|KcvQtBl)U2UkNE(ox0~~NpvV4B z2KnpmR8u8x2o#(cJH^E_Au~CEi&2W2BTF5sq|B*Chd8qs40s1OYm4GCt0uJ~q7sF- z^%O+VB~+q~<0X`{qF<3HbATq8Hz_o$B$hgBp((|Rj9465@DQ97n=Z{>6#C*e2u%T? z6h^MaZlAIwdk-XgR`k0QLC_VS!JB^Wd4deHbV#aQ7&C>96I)Vxy3<1vdKUADpUB}r zY#XzD=R&A5kHq4EJA}s|F{dbN(dHU6U8$%5EP~FH4^Oa1WX#BT0+HE2|nvO?CX zDceL8;&M0&nsn2*vK;uSas*N`yS~Kj|HxmKOo+pN*2WPt!8v(**syT+p$VT17i`r!14K8r95@Lbl>6sH&9hE$LvI`5lVw=gC$7%$ZErdJEbt{I85=n^3qWAe+a{rWv zw))-|{oHcf;(l=CUg1IQI&S4Q+%|yv8`&Evf_fxU0!!8qqUHQ+s6jSF+mgG**OF%X zps6o7nZQwKWWyzQ=XEpy>3NPH6!I#A(rB4(Th$PT7_!ujyqad5Ax`cxF+1}@Uk3C4 zDw0Y61tf1+UEzcE>jId+Kg53hj2GeOxsm-E_b|!cnM)vsG?F?XJLHoZ3&v+`BdKB* z!MtC{Ix|O`c0)-eLH6}s0&!C5ArI@21HRN@L0CjtMliPV#eR~XRSPzTCUvAGwqCk4- zw@Rz~I|qU7Wl6zV(NrGluXQu6)a3IWXHHew9~ey@O_Ae~Xdf1Dhk9IAJJM#! zpvgQQB=@&QuFzRAh~MQ#bUVFTYti>aAT?W^*D%H^%j#Rvdr80K9^r)R)TfG`tknWE zi_MZY5I$n#`h(g=WsD8)tJz+4bML|Pu$#`rpUck>DK=)~^_?L!JZB*Z-geEsvRDe* z%z4!U_q@SW>`^T}g;li8H!r*sIq<6-$Tb??XzzKoCg`~YXz7a;;vN2aI7GQS%k`v> zDf>6vS@lvAzDWC1!>L-4I}(SNF)4l$`~FCL!f3n3!w?IhaQbyzd-4z`!aYx&KsY$A z5#5-8{31|Q9SH_IZ5e-#P7)`i(LZ%Rn6iOZrBPYb`KYYBr~v=mRu85}+?<(QqO}_J zisFVPe9oqD!e{OqIDEbu3OgM|`6<0&DZEbAs4Jy(DYu*hKR$W9bOm>s{9=FXYc+Jira4+%* z4=y>0U{Tg*v&PDerirVUm6M{YTT-O&cD$3OgzQUz;Ru9Fcn)!?V4`TKCkNvV zX`}1!mEUL@=}kdI85Shfn2e5Ac^JbVZ+NJ<7`ZSmYm#SKe7-nMU+ac$3hZ|3U5?9Svt3Pjr)E|iD(VeLg zH!sdi4J&yd^B8ys6o6VRQEZ8|w0Bc4nncny^@(Vn$XWPS!Vq6NLTXHkH`^yZV9G57b^rRWr-Z&L{B-(33Aa(;Onf zbaDzjNf87JB`VXjT;k@7ihKC=818sua&tWkzfZkafsAhva7a)Xv==#>S{HD`S$I>; zZqJ)PphXW0e?%##I&caA;NF4~062Rc)#A7lg>z;bM~9ZQ=72H)XL!UO zYeP{mbU@B50YBP%(9UmFKjhL9i{A4Bc&GRsUXftMEW0tL*<$t#9aB*eG}aP<1Y+;0ekE&UNoVDPx#XgM}ILNM%|cWl$K7__M!(bc^t zD$r-4qhjOIuoR&^;vtm>ti4fT48VsUVw}(-4tv`zcg#ln7NyOywK&4XDFKHZ^#~&J z|3Wab$pWRLN-H7gCH}L?Av(^AXDZRHrs;UUdbTbLoOth&4ZRUm9wFHTbKxtbOd&XU z31gG(jKx5l!zNv!>@gyfc4xHxAQZK_2-iiqf*eOff}?s$9(ij&pEt5g5wi3PsV z3=GRqdtFWYT~|T@L$We+#^w5GB7kQZN*H|aL5M>h#AVhCzQ5;myX;4cT&STupW!a>POva$W}r|x zYQbGPhOFpYaHLpXH^eVjDPwFDL#5$L;8mXxdGJ8m?{zn;W4Mk@-Czn)_|eUwML^am z0Ywud$d4F5DMLp*j&BX8ug+LL8kf&h8{%*Dr^6z_9OsyP^|%Y0c{7jiE5%d3nATk6j!sE5no)^iEiI2$OJl~|P9Xez4D zN*)ZNxN05%SIN5;7HqOdu3n!s5A@0^zufzkU*TnU&`v|DOeOk9S#l03&MM5~XsCQQ zeQ;MNY@#91mhru5k&dcBlq|?UZ$tzq>&`_+2G!{|F0vS-h-b4d(=IBO0*%HpJR|{7Zk;vjK3#|@!w(n=rU>miIqE0O z`PTy1aofkXE4VQRX?4P(et~tV9zqmutZOS_UW_zZE%c<=b)Gag=Fnol!NwuLIuq;k zSlO~X;_omXOPsMc9dH!Yap&O=ONl7CPqQ;q zzUzU|`&1p?Ng-u~&R=^YG2B%7BcXqx0Ij$JJ9Su5EqmjEKJ9`ZubkxHwhmj`dV`?c z3S!czf#G9W=|y?@!Xh_$GA$E+R~ce(C-4|%M1O4bQ6vQ@UJ!|vGT~)0*vd%~U$&1h zEHq&I_`YVq5LnAi-SdFa{NXSX^p|XVeb|c9N?l}}PSzXSm=Vud)99&ZYv72h`q1nR zK-eI9dArSofXSZ~x1u8*SJ$xmws|)k5U$0+J^M;ju|j6wAStTk zz5;S9GKajw(k@qBZc~~055d39RgVIAYu40Tm9e9V|~)xb|2PdFWbHvY|-dzPWpA6km?OR`uy&f0mSo z;YLzH(+RN`uz=z&Z5hjxHZ1PxpDE`aonw^!%tSOjo1EkRSrQ3Q_*Q-fvfq6tR z$-<*;WQ9BFhFYiIuKJQTe1=}KuS-*!rDr#cB4a>)g;nd^o95}?m`ox`na)XTj@2VQ zzU#xuG=A>wZ-q++mQG2l`z5Bk`_@B4cr)HEsO|bzy7PY^GST!v$~>em)>n|0cTk4CO_eX{@6kE=(SgR(-xl$+y{fsU<6^C-}+= zs$b%QGQu0Bi>E(XWDWjdyT`wfbPV;M-xGumnvS|N%klcOx{t}h{{%|H>;B@-CHMim z6Y9xc=Cvnrh2;9^?K8U&ml6>0u}}g^G}~bzr}0}ODuxX^cRb$TghuYbP4B-5y@)Gb zvZk-y@)aw;aVv-8`<%f4+^d3V{n%%W)_imx92xgIsP>3o`<*<2UGOw<@V);9Z zcw)<6@0_|Uhd?=DqFz)ytTk$}6n4>uYI&?uXbm&A>9p0C%H8;CUyb`^%!KDnTC@J3 z7(Fhw^Tu=P{d?9EM#W08k!W{`JYe8vNsQE?@?dX9uQV0EkduEV2D;GOfd64H`jJxg zrw3`b@6j5d#qzOXo$X0mUb?teiwWNkZds|zzrU`!l(%N}!v)~`cufrSd@vxUrotS1 zL6Ye$kRxriIZxK(b?y%xURCY>1>%N)5xcNB{^#zumNAk}vZ9*hGmapx-R)~8Gm2jZ zu#)Orp5sN`-Nu=qx^Cuk0@BvnM8=9rykH$v2l6zHlO#GmXjKWrwk1!e8pBT)!a>G( zIvWMr9?_HfA5SoQBOj+xJy^MLGHGOhs*rp_d@J0v7)#tVi|jB8uy4<g1SjPrNhjm0zd5Xc|u zq|a+nbj8r8sQ3I!vGr_@L&8ltXwtdM>9nTBRCy?ShxUWBLmsqVk6oyW4rBM=A{0l`L-*TzW2~ z$6a7ijZ3*-4+O0U&sSbJ*qxgq=#p}uWdl!Ry@=`h$3$K@nAEFn@wfa$T32Cu-SbQj z>jkHOJMyX<0e-o=9~3F`|3kSm zr{xnljN~2aG9&8SvgDVc`p>*z)duJM!TzlK|1Ln-A6rdj%iaQg5Dc;80SMdQe?L~4 zrdo&BF=D^%cqT41d(lOT3edXbFrwSI#IXJ4gm6Llrjpkr__kiM_MMTVb+oP+o9(ng zl}jkqZKW(TjU!fi+^sFCge}mhvfd>dry(Fz@a}1?)nRqGdOs%u0W6jbkan`M_r6~9 zK|}n;9H8{q<n>F33-VeYiMvy>*)le(U zm;3NPn!Y+Js_y%n?i#vN>F&-!kQR~dMnSr}2a!^`JEf!>hE#Guq`RfN;dgny@4MDr z^T(`n_c>?x`Rsk~-ECNE?X+#G6@DcgPQv}Ju(;QJ2dULXa#NMp_Z7RFWPzrzPHP`! zC$-Jzwmf1x=KFPaZ&REeW$R2^$&p`w;n^828Bt<*nS%2#-Z}+}9AmhvnPy_c{eyLn zz4c*1>FBz9Hqo7_*H!cX5R>3F*s79`kFUE^p_e*hqbfqvee~=^YNzOs0${bB8Dn=m z92&GC{Ek5T5k`-y4y7+M;r^I|n%WnhC0>Rp5hpcn@?+D^jUmJFB?f4jupy*ZxhEJz zT;R&z*{+w|qf*n0k^DbchWue?DosZapZAUA6GjQE3GHnVZ`CL%e5t(hNO45 z$e^aE+);aRwr55ODHast2S0mJ-H+{Px;DKq7bpKE7tRY7isq-zkz_6!o2>CG{a?hk z8Ph*;(;TKoQlb-1^Wgs8{4_64^&MksxS=+svcGHh2+|;w9@Uj&oX@nE`1+0fWTt5` z70z8i>Bq;lOmHpHHQ$8HM}45N*}j>HHv{Fb0Ipso!s4oUpgALHj7RQnlCQxiNjJJ+ z1@5g|nlx`A6RM?|$`D?F(*1UBhS0EAU(CoS_SkGI`%H#mR}F+bK~$vvx?8v6dfAFf zHpD zi(8-dALG>rY@&G%OEu{*Q|;&mG8X)O!&&TK zaHjqyhI2)u#BTzxqCWmWbne%oiv3gnD~n4%mYJ&US<3gC`juYtOyr~QQO9k7j{67o z%eIn|HXEN3l2mxCXe?&SU|P%29s~oV8YCRDUjws>U}3_alwm|T6qK^ypx)dQ6j?el zz1#*XMA-pbl5nI(kI2-y!S>cWqqwSaKdIw=%4g@Jj@_7l8$ z+1Snvc24hQkYhIF@!X)Q$7_R^QD%q{SUXggH;LbNy;V2ONpi!!szuy66~wgr_^kBF zp5d2Yk+%m!6GVshzL9GBoP>pNy(--4ArSmZJMnL@)3J1Gm9TT+IbJ>e(i zAJTN4lvES&cy7hEBjB>ouOH^8lu4Z)ugbnw?h7Tv5;@PhxNv&F$F3}SMtG1L&P=a~ zd0~q|MDq(m@es5}$XPN+czge#P8*KPcU7Ol=d_tbCCJ@mhk?W%o^blVf+yT|EHQ#_6^$n>T*s*Mz^~QPEqvMHh&ST2WdRKtsuD(Et z3@L)t#nehLTN5WVNrJR9DlrXLvV6ZUe2t!f4caKy)748R_y|RrGok-?43B2h=a#31 zPJ=<68{%&#qq{4lnX-H1j;26MGL@$p6>JI`!C(zHErUhiE-i}rjGK44T))t2{Yy8+N#t5X4u|x5s6R4o6yzitb={xg8u3@;uT}(*PMkY! zOYg#z(|+r4_en>Eal5gC#8E<}^F#Wri&FmbYO|EXqY)kWfe;;1!h^#%iL?$ccTd3l zFcOp$Tkj9DESR#p@daYKyZc`;-k{2;tqccT%%a;&YY`rVmMDM(?PvI$@lnED=&%_6 zQ6ub17OQq)s*B2mIxGz+-TL6>a8ZWc`?#q#(hec7$`v|&+}?2)Mnq`I*a%BFaX>(=CHy69BZRgM|o;$@MhH$$ZfDcN_sD5HW& zyr{JBt`fewqy(6K=%JeN*w=t_*_PF?3(%32a~i|z#OSR-6HF^VQR;1>qaqExtvHzo z;%tl#esqFxDg>6Jnf%OKl|kBKN2!*&L!qffeZ`*Nwv#35h~7}rl~cu5tfLj$iw$E@ zAsbzlmr+E&ISF};lv(&;Ixuu;uPXy@jl`$iwvcI;%v~Gb9Fktw!ZZ}Vl6m5>Z}k?$ ze(Mdzw0_15SD@P7?C!HW@kh62@3k5@xhD%4C%Twys*>d_*gAQ_O_2TD3J1Xu{mgMA ziSj*PW`Qfuuheu-;vpMcD<6Jd&)Nzo!rM)Ab7cBdXQJPTVelqCrE^?&*Nvo*Bc*57 zTrJYQm{kufwq}QjCvvG>SC#s?ns@Bv^MO#2bTSq_`gs#k>}Y{XNuO;^6wc z;1e`fl3}|Q|Frp1^HBV~uA<(pTp-y*@w2NZG30rVO{&8mp4-ycX49K6Eaf`49Hy z7YWdsGz(u-1=(Xj;n}+ep|!FTU&(kkELfKm_sJT!0r=Ey+`sH1I*_xmlx>);Vc+$N zCNeTvC;0GKB#~e%)yYss8jmY576a-a{2ryuLxSDI$eueR^{2~FKXK@>y0F~LGc~%| zg{!1u>1Z*XzuKXdGAINe-7 z&=%LkH-6!Ae|?e^-Fj~RMFu=|KcW=rp$Z45b2;I{#+8&!)>QuiB3eTE1}e8Smww}A zoDVlxyN28THx(+&;=NZCbM7mU$=hm-7{s|q5!bJzt%>7qlkN5Ax*6?9e75QW$k7H)n zrmsiYUH+Qa{~-;i`*%ewzC}yGMsH_{dc@^lhVMg@TH)iPCt=IqwUQJO*H%-gFgbFB zGtgtv|H0_b5-*`8VR|Bl&9R46@_iRSrDO5V(BN#qmUPHCPgwBRhM=&ty%h`ruV-ej z-{BkkvXj~MahVA}zY4Fv!9eGuYS5>k{50;Ee>ffT2r1#R+PdWGlR?jYXCC%s^(Q6( z9r@3Yas~_EOb$Hgv5K{o``XqQD!#Sbn%v`RH}0rfnCHDXafsI|;e^n3?Sgw>5vhp} zMN*kU%YME$;HR9E(2h@Q{Q3bQ%$WB`%5mR?_TFF0Xneub`$L4UMrc&*W55U$Vabez z`u(mN>uK{5kpza(xyxDIuuay@V1-l#biHg1Hw^SA8q;QrJ&!`)pg7x~53l$5VPNN! zP3jr9rlrw+m#A>c&Tm5~fT45CpcDD!NouFVd4a@XtCw!tey*o=E^3kPNm)?fUP%Dq z%0s2&##n|BoeGhJ^Ud$z67jwmuu}-PUrvEKA8SY4$hCxGv&;kq8gUPSdOZnidNf@5 zm43~urWM5ZhiP;oi>rP5oE~(nPvnM)*`xJ2xPf}4Pp!D*g8{_fb*_;@-f=$c@?1U; z>wmUdiDQ8)>SL<`n~(eQO#1s1DtN%08a<7Am!ol9_ey8d`0IuSi1Y9D;B0*_cbfv? zYQB{5(@kpF?EzzYKT3gLVYVLTq2J)mYJ~&)a%WPvuC=7o>V^6*+n1i*=N| z?|72I_Cy_9COhF7(nU^Xb=P=dN=*1jnPi%Ysu zi69gGkc7R}dnAhsXeEx=m6`}&9xucU{I~KDaGc{uEp>150M*c$*mFB+8TZG@xnJCY z+qFAT_gg2>)zcGsz|0HWeOirvChYGwP=g)#gNw~4CxpyK=X0N@nnk4-ft9@rV;wC}=Rm~n3(k^9XtQl7mMbl4Qn z?>@{staxy*+|Qg*Q*>r_Pc<7LroWwYHLib?DTagbadVh_=Q3x&imhn1S@N5VQ1S*E zE*GWt{V4Z#N%L{;#@D$ZbUwQt=ge9vH8&%g+EkuDu5s1vE$!7d2{)Ix&*d)uzSsEa zW+)$KD|6l7V--Uftao33c;A2W?05Ct`+Ro(OiD41lM^L|&SnifLvWsQQs(%KLbYB< z!N2RVs@(B|Hi=URlx#S0S$9|Gtl1*t&&9P%x+*{HKU}w*^zxVT#lwMX4Gl4OTAK{-ZJb)!5KYN`p^yGd}3V0yt1Sus$7+Ke72ec|M!e8*Jpf5#k__ zIyHG>4p^^#L>o!nz4pSAqYCLNLR4=#Ny64?m5FzCpTN|AEf25uwzTwb>K`V$>#*jx zm^P9ELL=Zt9@;~zxMW-^Ym?;wj8uO&HJq= zRNKT^<&@$f{IYc6)Ir=%xM{!*P>K{rlTPIh=QM8>8|uH~Lw+Mm1C)#WyL%uEjQA&% z;en6$$E!KdG=Y%u$7Pzl1v1CF%^BmaD3iy^oZfJqFJ9M}CIi)vlaA|bfoCA{2I6mf z!k@dmv8B$N0tx5B!SzC8Db$9|@srcO>wZ$gvv_|8C+VuXfHN#zECg~@0(a4BmX-@11$?#|0m(^+o20AJTOV1ko8!H)jO1e`GDD-<_WSXkrzEFv;x) zLkWJI2J5wW)f|*Rd-&q#Jfe1mn%uRF=eBn|zq#7D`IGbH^Dyc7&~$Uv76>1szh4yh zJZkc&eo`joDJ6Q6t3L15L)e9C5>fK`A@^7N^2Q9V^MgY+#CE=QiPJCeqDXZLc;_U%kD6#6UA$5e=_aGf!z1onv9)0C%yE?ldd9+gar%rn=}lWqAxwz6R#u-F>uIs{Uz4xeR#B0T(s zE=eW!y7^LM>t51lX*sIt7Q#KGhvo9!JUo&Nil1jT?GYR-%4a4~R`Xf^A_q&9>gHxE z=kfj~#^kX}qgA6D*Y9qnH|}vWFf5f!f!F(I!9lUrI@iN)&fxe%WloS8{3mrGr_x!@N6$0t8`)gEm=SW*SsKu`>BPDz!DE8da`CJI{eM`!9HQuvgIo%

{G-eWPCNrZKjWM}jTb@gm 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 W?OK0gVfDru{ORi&>Evl!2mKEjrI{1} diff --git a/packaging/macosx/dmg_background.svg b/packaging/macosx/dmg_background.svg index 8bd97119e..c045e6486 100644 --- a/packaging/macosx/dmg_background.svg +++ b/packaging/macosx/dmg_background.svg @@ -2,7 +2,7 @@ + + + + id="filter9015"> + stdDeviation="1.755523" + id="feGaussianBlur9017" /> This tutorial covers copy/paste, node editing, freehand and bezier drawing, path manipulation, booleans, offsets, simplification, and text tool. + transform="translate(0,-6.7202624)" + style="opacity:0.8258427"> + - Inkscape - Inkscape - - - Python - Python - - diff --git a/packaging/macosx/dmg_set_style.scpt b/packaging/macosx/dmg_set_style.scpt index c18f57154b77a76b58943afd5cf0278926afce52..7c010d102d6cccee2e7d14c67f599b5ec320b1b4 100755 GIT binary patch delta 723 zcmYjPO;1xn6g{u6k!D&RU@#I1i5OvHBt%@eGni;}VceUzDD8v1(7ZNnEh}mH5GtWu^j?Jqx?lc&A@Mc@fZe*;F4#aw6UA(?sHd8X$NYSXWvpP;5P(*} zK5lbMaohXe+}RW476Se7#}nxkU5{_&P1Ri%~xr=?f39*RP#3 zVr1WUBK-%hxI4K|i~ie4U-$6jUEvQS1nlJA*92RLm_mt<5+8gWZ5>s7jRu;QB*X<- zeC5B3o;(&q6CH7GVVRqJi56D4p}DmX>$W<+ynwrE~8pz zTR{)%e1Unc`L|*{qqxC2&T@tiFu-X}aS}Fbta5_m9Me)6)ai^}(pIn!sWR9;%i8b{#@kV(O6j6}ZS-%uz5Nd>m({5N diff --git a/packaging/macosx/inkscape.ds_store b/packaging/macosx/inkscape.ds_store index 25cb6d7ef36a6387ce595075cc4e826906ce0869..c4bc9e32d35017a5b95958144e26254bba22e223 100644 GIT binary patch delta 329 zcmZokXi3; zj7O7`1&ss_2hF(xlow>+U|;~UFHK%5xR`wtNDJep$^Jr$+#AHtd1wQ<8fl4>tA!ld zedfLcn{rr4*Ju6jbx3+a<}fnIfK)O_glq-kI0k{^DGUOK=Q6N=e$T*A;Kabh;FFt} zY!zCZT2yS6m6?%m6`Y?|Ql40pI@wm(Y;uXPfrtlKQXeF#50~5tl>8uU$Jz?Cqj|Ei Th&gxje=q>@88#P+OqK=!ogiYq delta 327 zcmZokXi3X7%jNh0YGL!Sl7$AU=K`*VmxI8C6FC8eb2Z+HU zWf{d8`9(n9hspHoMov;CK zV1qf-Wm{(*-M}ZeiJe_c4hxNmO-HA##p%@40jCd4BiK;|>64 zdDOZDECML8DLyyDZXZ(fs_mhIm6XXH+9PRlG`s2#m-pz3KoAfF1OY)n5D*034Fvek zR#ZCRy>Div7X$=>Ly3TTK2+EguUS4ZTt7P4=_3I75sEc&Jf{Za70YXuPYmY_$uXwn z#?-M#49A#LUa@*L%O{2#b2vIO{n*HkJ)t-{I^`9u4yR_g^n!pOuonSycCRjfb#?NkajV+b1>}_f{c?f+o@Hu( zlYo={KI7{D~GW2$Qm|V*^k20EQz(*Ht z43J=i7%f!MCvW2e%+r6J<1SKaH7E}#`_P^8>*oC~;FNnSiAKF3b+bgcJDgusJ?vRs zvDfg`)qb?q`SAzh%SBlHsl0YOv@20<_0$IWk96{nGsO3KD;N)2t+Z?KJyFSdImUF7 zbkic+d9=y-4B78EcJPtPhV3azXCLDDU!Sm*QTX*S(EXhiU84u@W*Q7q?{3&hyc@}# z;YMQ+q+XW4Hyn)O?m9CGBCpSF(`bir+cS~9e4S=()^HnP4*e?Er>EDZgd#_3_2yC6 zv0WA0-Hz>MvE8ZI?sja~#CG$s7vQ+S8CEr;cB5*f64tTFcoFwN#C?+1qr~67uTeNb zmo`-32VvO;amE?zsoMa->Q1w^>@c}-sbF%()Wn@^>Ht!`HGrv zrXrliD(+#3j?SmTogMNjzy;cxd!a#mgZ(nyRUzF92?B=&fubpNQJw$4IQaknVSz*H z6a)?>0?v_@8!O8!-JY%YfS|r!D{SAeDN=e9!?g)J{eerakK^RoC%w|GP*w4o -# Michael Wybrow -# Jean-Olivier Irisson +# AUTHORS +# Kees Cook +# Michael Wybrow +# Jean-Olivier Irisson # # Copyright (C) 2005 Kees Cook # Copyright (C) 2005-2007 Michael Wybrow # Copyright (C) 2007 Jean-Olivier Irisson # -# # Released under GNU GPL, read the file 'COPYING' for more information # # Thanks to GNUnet's "build_app" script for help with library dep resolution. -# https://gnunet.org/svn/GNUnet/contrib/OSX/build_app +# https://gnunet.org/svn/GNUnet/contrib/OSX/build_app # -# -# Notes: -# The Info.plist file can be found in the base inkscape directory once -# configure has been run. -# +# NB: # When packaging Inkscape for OS X, configure should be run with the # "--enable-osxapp" option which sets the correct paths for support # files inside the app bundle. # -# Thus, the usual use of this file would be to run it from the within the -# inkscape/packaging/macosx directory, substituting in the inkscape binary path: -# ./osx-app.sh /path/to/bin/inkscape ../../Info.plist - +# Defaults +strip=false +add_python=false +python_dir="" -# Handle some version specific details. -VERSION=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d'.'` -if [ "$VERSION" -ge "4" ]; then - # We're on Tiger (10.4) or later. - # XCode behaves a little differently in Tiger and later. - XCODEFLAGS="-configuration Deployment" - SCRIPTEXECDIR="ScriptExec/build/Deployment/ScriptExec.app/Contents/MacOS" - # libXinerama.1.dylib is not installed as part of X11 on Panther but - # is introduced as a dependency if Inkscape is compiled on Tiger or - # later. Thus, add the library to the bundle for Panther users - # Building on Tiger gives app bundles incompatible with Panther anyway - # so we do not need to add this now - # EXTRALIBS="/usr/X11R6/lib/libXinerama.1.dylib" - EXTRALIBS="" -else - # Panther (10.3) or earlier. - XCODEFLAGS="-buildstyle Deployment" - SCRIPTEXECDIR="ScriptExec/build/ScriptExec.app/Contents/MacOS" - EXTRALIBS="" -fi - -# set LIBPREFIX only if it has not been set before -# (by osx-build.sh for example) -if [ -z $LIBPREFIX ] -then - export LIBPREFIX="$HOME/ws-fat" +# If LIBPREFIX is not already set (by osx-build.sh for example) set it to blank (one should use the command line argument to set it correctly) +if [ -z $LIBPREFIX ]; then + LIBPREFIX="" fi -# Package always has the same name. Version information is stored in -# the Info.plist file which is filled in by the configure script. -pkg=Inkscape -package="$pkg.app" +# Help message +#---------------------------------------------------------- +help() +{ +echo -e " +Create an app bundle for OS X + +\033[1mUSAGE\033[0m + $0 [-s] [-py /path/to/python/modules] [-l /path/to/libraries] -b /path/to/bin/inkscape -p /path/to/Info.plist + +\033[1mOPTIONS\033[0m + \033[1m-h,--help\033[0m + display this help message + \033[1m-s\033[0m + strip the libraries and executables from debugging symbols + \033[1m-py,--with-python\033[0m + add python modules (numpy, lxml) from given directory + inside the app bundle + \033[1m-l,--libraries\033[0m + specify the path to the librairies Inkscape depends on + (typically /sw or /opt/local) + \033[1m-b--binary\033[0m + specify the path to Inkscape's binary. By default it is in + Build/bin/ at the base of the source code directory + \033[1m-p,--plist\033[0m + specify the path to Info.plist. Info.plist can be found + in the base directory of the source code once configure + has been run + +\033[1mEXAMPLE\033[0m + $0 -s -py /Library/Python/2.3/site-packages/ -l /opt/local -b ../../Build/bin/inkscape -p ../../Info.plist +" +} -# Remove a previously existing package -if [ -d $package ]; then - echo "Removing previous Inkscape.app" - rm -Rf $package -fi -strip=false -while getopts 's' flag; do - case $flag in - s) strip=true ;; - \?) echo "Invalid command line option."; exit 1 ;; - *) echo "Internal error in getopts."; exit 2 ;; +# Parse command line arguments +#---------------------------------------------------------- +while [ "$1" != "" ] +do + case $1 in + -py|--with-python) + add_python=true + python_dir="$2" + shift 1 ;; + -s) + strip=true ;; + -l|--libraries) + LIBPREFIX="$2" + shift 1 ;; + -b|--binary) + binary="$2" + shift 1 ;; + -p|--plist) + plist="$2" + shift 1 ;; + -h|--help) + help + exit 0 ;; + *) + echo "Invalid command line option" + exit 2 ;; esac + shift 1 done -shift `expr $OPTIND - 1`; +echo -e "\n\033[1mCREATE INKSCAPE APP BUNDLE\033[0m\n" -binary="$1" -if [ ! -x "$binary" ]; then - echo "Not executable: $binary" >&2 - exit 1 +# Safety tests +if [ ${add_python} = "true" ]; then + if [ ! -e "$python_dir" ]; then + echo "Cannot find the directory containing python modules: $python_dir" >&2 + exit 1 + fi +fi + +if [ ! -e "$LIBPREFIX" ]; then + echo "Cannot find the directory containing the libraires: $LIBPREFIX" >&2 + exit 1 +fi + +if [ ! -f "$binary" ]; then + echo "Need Inkscape binary" >&2 + exit 1 fi -plist="$2" if [ ! -f "$plist" ]; then echo "Need plist file" >&2 exit 1 fi -# Set the 'macosx' directory, usually the current directory. -resdir=`pwd` +if [ ! -x "$binary" ]; then + echo "Not executable: $binary" >&2 + exit 1 +fi + -# Fix a given executable or library to be relocatable -fixlib () { -if [ ! -d "$1" ]; then - echo $1 - libs="`otool -L $1 | fgrep compatibility | cut -d\( -f1`" - for lib in $libs; do - echo " $lib" - base=`echo $lib | awk -F/ '{print $NF}'` - first=`echo $lib | cut -d/ -f1-3` - to=@executable_path/../lib/$base - if [ $first != /usr/lib -a $first != /usr/X11R6 ]; then - /usr/bin/install_name_tool -change $lib $to $1 - if [ "`echo $lib | fgrep libcrypto`" = "" ]; then - /usr/bin/install_name_tool -id $to ../lib/$base - for ll in $libs; do - base=`echo $ll | awk -F/ '{print $NF}'` - first=`echo $ll | cut -d/ -f1-3` - to=@executable_path/../lib/$base - if [ $first != /usr/lib -a $first != /usr/X11R6 -a "`echo $ll | fgrep libcrypto`" = "" ]; then - /usr/bin/install_name_tool -change $ll $to ../lib/$base - fi - done - fi - fi - done +# Handle some version specific details. +VERSION=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 -d'.'` +if [ "$VERSION" -ge "4" ]; then + # We're on Tiger (10.4) or later. + # XCode behaves a little differently in Tiger and later. + XCODEFLAGS="-configuration Deployment" + SCRIPTEXECDIR="ScriptExec/build/Deployment/ScriptExec.app/Contents/MacOS" + EXTRALIBS="" +else + # Panther (10.3) or earlier. + XCODEFLAGS="-buildstyle Deployment" + SCRIPTEXECDIR="ScriptExec/build/ScriptExec.app/Contents/MacOS" + EXTRALIBS="" +fi + + +# Package always has the same name. Version information is stored in +# the Info.plist file which is filled in by the configure script. +package="Inkscape.app" + +# Remove a previously existing package if necessary +if [ -d $package ]; then + echo "Removing previous Inkscape.app" + rm -Rf $package fi -} +# Set the 'macosx' directory, usually the current directory. +resdir=`pwd` -mkdir -p "$package"/Contents/MacOS -mkdir -p "$package"/Contents/Resources/bin -mkdir -p "$package"/Contents/Resources/lib -mkdir -p "$package"/Contents/Resources/locale -binname=`basename "$binary"` -binpath="$package/Contents/Resources/bin/inkscape-bin" +# Prepare Package +#---------------------------------------------------------- +pkgexec="$package/Contents/MacOS" +pkgbin="$package/Contents/Resources/bin" +pkglib="$package/Contents/Resources/lib" +pkglocale="$package/Contents/Resources/locale" +pkgpython="$package/Contents/Resources/python/site-packages/" -cp "$binary" "$binpath" +mkdir -p "$pkgexec" +mkdir -p "$pkgbin" +mkdir -p "$pkglib" +mkdir -p "$pkglocale" +mkdir -p "$pkgpython" -# Build and add the launcher. +# Build and add the launcher +#---------------------------------------------------------- ( - # Build fails if CC happens to be set (to anything other than CompileC) - unset CC - - cd "$resdir/ScriptExec" - xcodebuild $XCODEFLAGS clean build + # Build fails if CC happens to be set (to anything other than CompileC) + unset CC + + cd "$resdir/ScriptExec" + echo -e "\033[1mBuilding launcher...\033[0m\n" + xcodebuild $XCODEFLAGS clean build ) -cp "$resdir/$SCRIPTEXECDIR/ScriptExec" "$package/Contents/MacOS/Inkscape" +cp "$resdir/$SCRIPTEXECDIR/ScriptExec" "$pkgexec/Inkscape" -# Pull down all the share files + +# Copy all files into the bundle +#---------------------------------------------------------- +echo -e "\n\033[1mFilling app bundle...\033[0m\n" + +binary_name=`basename "$binary"` binary_dir=`dirname "$binary"` -rsync -av "$binary_dir/../share/$binname"/* "$package/Contents/Resources/" + +# Inkscape's binary +binpath="$pkgbin/inkscape-bin" +cp -v "$binary" "$binpath" +# TODO Add a "$verbose" variable and command line switch, which sets wether these commands are verbose or not + +# Share files +rsync -av "$binary_dir/../share/$binary_name"/* "$package/Contents/Resources/" cp "$plist" "$package/Contents/Info.plist" rsync -av "$binary_dir/../share/locale"/* "$package/Contents/Resources/locale" +# Icons and the rest of the script framework +rsync -av --exclude ".svn" "$resdir"/Resources/* "$package"/Contents/Resources/ + +# Add python modules if requested +if [ ${add_python} = "true" ]; then + # copy python site-packages + cp -rvf "$python_dir"/* "$pkgpython" +fi + # PkgInfo must match bundle type and creator code from Info.plist echo "APPLInks" > $package/Contents/PkgInfo -# Pull in extra requirements. +# Pull in extra requirements for Pango and GTK pkgetc="$package/Contents/Resources/etc" mkdir -p $pkgetc/pango cp $LIBPREFIX/etc/pango/pangox.aliases $pkgetc/pango/ -# Need to adjust path and quote incase of spaces in path. +# Need to adjust path and quote in case of spaces in path. sed -e "s,$LIBPREFIX,\"\${CWD},g" -e 's,\.so ,.so" ,g' $LIBPREFIX/etc/pango/pango.modules > $pkgetc/pango/pango.modules cat > $pkgetc/pango/pangorc < $pkgetc/g for item in gnome-vfs-mime-magic gnome-vfs-2.0 do - cp -r $LIBPREFIX/etc/$item $pkgetc/ + cp -r $LIBPREFIX/etc/$item $pkgetc/ done +pango_version=`pkg-config --variable=pango_module_version pango` +mkdir -p $pkglib/pango/$pango_version/modules +cp $LIBPREFIX/lib/pango/$pango_version/modules/*.so $pkglib/pango/$pango_version/modules/ -pkglib="$package/Contents/Resources/lib" -pangover=`ls $LIBPREFIX/lib/pango/` -mkdir -p $pkglib/pango/$pangover/modules -cp $LIBPREFIX/lib/pango/$pangover/modules/*.so $pkglib/pango/$pangover/modules/ - -gtkver=`ls $LIBPREFIX/lib/gtk-2.0/ | grep "2\."` -mkdir -p $pkglib/gtk-2.0/$gtkver/{engines,immodules,loaders} -cp -r $LIBPREFIX/lib/gtk-2.0/$gtkver/engines/* $pkglib/gtk-2.0/$gtkver/engines/ -cp $LIBPREFIX/lib/gtk-2.0/$gtkver/immodules/*.so $pkglib/gtk-2.0/$gtkver/immodules/ -cp $LIBPREFIX/lib/gtk-2.0/$gtkver/loaders/*.so $pkglib/gtk-2.0/$gtkver/loaders/ +gtk_version=`pkg-config --variable=gtk_binary_version gtk+-2.0` +mkdir -p $pkglib/gtk-2.0/$gtk_version/{engines,immodules,loaders} +cp -r $LIBPREFIX/lib/gtk-2.0/$gtk_version/engines/* $pkglib/gtk-2.0/$gtk_version/engines/ +cp $LIBPREFIX/lib/gtk-2.0/$gtk_version/immodules/*.so $pkglib/gtk-2.0/$gtk_version/immodules/ +cp $LIBPREFIX/lib/gtk-2.0/$gtk_version/loaders/*.so $pkglib/gtk-2.0/$gtk_version/loaders/ mkdir -p $pkglib/gnome-vfs-2.0/modules cp $LIBPREFIX/lib/gnome-vfs-2.0/modules/*.so $pkglib/gnome-vfs-2.0/modules/ # Find out libs we need from fink, darwinports, or from a custom install -# (e.g. $LIBPREFIX), then loop until no changes. +# (i.e. $LIBPREFIX), then loop until no changes. a=1 nfiles=0 endl=true while $endl; do - echo "Looking for dependencies. Round " $a - libs="`otool -L $pkglib/gtk-2.0/$gtkver/loaders/* $pkglib/gtk-2.0/$gtkver/immodules/* $pkglib/gtk-2.0/$gtkver/engines/*.so $pkglib/pango/$pangover/modules/* $pkglib/gnome-vfs-2.0/modules/* $package/Contents/Resources/lib/* $binary 2>/dev/null | fgrep compatibility | cut -d\( -f1 | grep $LIBPREFIX | sort | uniq`" - cp -f $libs $package/Contents/Resources/lib - let "a+=1" - nnfiles=`ls $package/Contents/Resources/lib | wc -l` - if [ $nnfiles = $nfiles ]; then - endl=false - else - nfiles=$nnfiles - fi + echo -e "\033[1mLooking for dependencies.\033[0m Round" $a + libs="`otool -L $pkglib/gtk-2.0/$gtk_version/loaders/* $pkglib/gtk-2.0/$gtk_version/immodules/* $pkglib/gtk-2.0/$gtk_version/engines/*.so $pkglib/pango/$pango_version/modules/* $pkglib/gnome-vfs-2.0/modules/* $package/Contents/Resources/lib/* $binary 2>/dev/null | fgrep compatibility | cut -d\( -f1 | grep $LIBPREFIX | sort | uniq`" + cp -f $libs $package/Contents/Resources/lib + let "a+=1" + nnfiles=`ls $package/Contents/Resources/lib | wc -l` + if [ $nnfiles = $nfiles ]; then + endl=false + else + nfiles=$nnfiles + fi done +# Add extra libraries of necessary for libfile in $EXTRALIBS do - cp -f $libfile $package/Contents/Resources/lib + cp -f $libfile $package/Contents/Resources/lib done + +# Strip libraries and executables if requested +#---------------------------------------------------------- if [ "$strip" = "true" ]; then - chmod +w "$package"/Contents/Resources/lib/*.dylib - strip -x "$package"/Contents/Resources/lib/*.dylib - strip -ur "$binpath" + echo -e "\n\033[1mStripping debugging symbols...\033[0m\n" + chmod +w "$pkglib"/*.dylib + strip -x "$pkglib"/*.dylib + strip -ur "$binpath" fi # NOTE: This works for all the dylibs but causes GTK to crash at startup. -# Instead we leave them with their original install_names and set -# DYLD_LIBRARY_PATH within the app bundle before running Inkscape. +# Instead we leave them with their original install_names and set +# DYLD_LIBRARY_PATH within the app bundle before running Inkscape. # +# fixlib () { +# # Fix a given executable or library to be relocatable +# if [ ! -d "$1" ]; then +# echo $1 +# libs="`otool -L $1 | fgrep compatibility | cut -d\( -f1`" +# for lib in $libs; do +# echo " $lib" +# base=`echo $lib | awk -F/ '{print $NF}'` +# first=`echo $lib | cut -d/ -f1-3` +# to=@executable_path/../lib/$base +# if [ $first != /usr/lib -a $first != /usr/X11R6 ]; then +# /usr/bin/install_name_tool -change $lib $to $1 +# if [ "`echo $lib | fgrep libcrypto`" = "" ]; then +# /usr/bin/install_name_tool -id $to ../lib/$base +# for ll in $libs; do +# base=`echo $ll | awk -F/ '{print $NF}'` +# first=`echo $ll | cut -d/ -f1-3` +# to=@executable_path/../lib/$base +# if [ $first != /usr/lib -a $first != /usr/X11R6 -a "`echo $ll | fgrep libcrypto`" = "" ]; then +# /usr/bin/install_name_tool -change $ll $to ../lib/$base +# fi +# done +# fi +# fi +# done +# fi +# } +# # Fix package deps #(cd "$package/Contents/MacOS/bin" # for file in *; do -# fixlib "$file" +# fixlib "$file" # done # cd ../lib # for file in *; do -# fixlib "$file" +# fixlib "$file" # done) -# Get all the icons and the rest of the script framework -rsync -av --exclude ".svn" $resdir/Resources/* $package/Contents/Resources/ - exit 0 diff --git a/packaging/macosx/osx-build.sh b/packaging/macosx/osx-build.sh index 15af2589f..a708c8f2c 100755 --- a/packaging/macosx/osx-build.sh +++ b/packaging/macosx/osx-build.sh @@ -12,18 +12,20 @@ # Kees Cook # Michael Wybrow # -# Copyright 2006 -# Licensed under GNU General Public License +# Copyright (C) 2006-2007 +# Released under GNU GPL, read the file 'COPYING' for more information # ############################################################ # User modifiable parameters #---------------------------------------------------------- -# Configure flags +# Configure flags CONFFLAGS="--disable-static --enable-shared --enable-osxapp" -# Libraries prefix +# Libraries prefix (Warning: NO trailing slash) LIBPREFIX="/opt/local" +# User name on Modevia +MODEVIA_USER="" ############################################################ @@ -58,9 +60,11 @@ Compilation script for Inkscape on Mac OS X. \033[1mp,pack,package\033[0m package Inkscape in a double clickable .app bundle \033[1m-s,--strip\033[0m remove debugging information in Inkscape package + \033[1m-py,--with-python\033[0m specify python modules path for inclusion into the app bundle \033[1md,dist,distrib\033[0m store Inkscape.app in a disk image (dmg) for distribution - \033[1m-py,--with-python\033[0m specify python packages path for inclusion into the dmg image + \033[1mput,upload\033[0m + upload the dmg and the associate info file on Modevia server \033[1mall\033[0m do everything (update, configure, build, install, package, distribute) @@ -68,12 +72,12 @@ Compilation script for Inkscape on Mac OS X. \033[1m$0 conf build install\033[0m configure, build and install a dowloaded version of Inkscape in the default directory, keeping debugging information. - \033[1m$0 u a c b -p ~ i -s p -py ~/pyxml/ d\033[0m + \033[1m$0 u a c b -p ~ i -s -py ~/site-packages/ p d\033[0m update an svn checkout, prepare configure script, configure, build and install Inkscape in the user home directory (~). - Then package Inkscape withouth debugging information, - with python packages from ~/pyxml/ and prepare a dmg for - distribution." + Then package Inkscape without debugging information, + with python packages from ~/site-packages/ and prepare + a dmg for distribution." } # Parameters @@ -94,9 +98,10 @@ BUILD="f" INSTALL="f" PACKAGE="f" DISTRIB="f" +UPLOAD="f" -STRIP="f" -PYTHON="f" +STRIP="" +PYTHON_MODULES="" # Parse command line options #---------------------------------------------------------- @@ -108,7 +113,6 @@ do exit 1 ;; all) SVNUPDATE="t" - AUTOGEN="t" CONFIGURE="t" BUILD="t" INSTALL="t" @@ -128,15 +132,19 @@ do PACKAGE="t" ;; d|dist|distrib) DISTRIB="t" ;; + put|upload) + UPLOAD="t" ;; -p|--prefix) INSTALLPREFIX=$2 shift 1 ;; -s|-strip) - STRIP="t" ;; + STRIP="-s" ;; -py|--with-python) - PYTHON="t" - PYTHONDIR="$2" + PYTHON_MODULES="$2" shift 1 ;; + *) + echo "Invalid command line option" + exit 2 ;; esac shift 1 done @@ -151,15 +159,11 @@ export LIBPREFIX export CPATH="$LIBPREFIX/include" # configure search path export CPPFLAGS="-I$LIBPREFIX/include" +# export CPPFLAGS="-I$LIBPREFIX/include -I /System/Library/Frameworks/Carbon.framework/Versions/Current/Headers" export LDFLAGS="-L$LIBPREFIX/lib" # compiler arguments export CFLAGS="-O3 -Wall" export CXXFLAGS="$CFLAGS" -# add X11 executables and libraries [does not seem to be required now] -# export PATH="/usr/X11R6/bin:$PATH" -# export LIBRARY_PATH="/usr/X11R6/lib:$LIBPREFIX/lib" -# pkgconfig path [does not seem to be required either] -# export PKG_CONFIG_PATH="$LIBPREFIX/lib/pkgconfig" # Actions @@ -194,7 +198,7 @@ then cd $SRCROOT if [ ! -f configure ] then - echo "Configure script not found in $SRCROOT. Run autogen.sh first" + echo "Configure script not found in $SRCROOT. Run '$0 autogen' first" exit 1 fi ./configure $ALLCONFFLAGS @@ -233,13 +237,6 @@ fi if [[ "$PACKAGE" == "t" ]] then - # Detect strip parameter - if [[ "$STRIP" == "t" ]]; then - STRIPPARAM="-s" - else - STRIPPARAM="" - fi - # Test the existence of required files if [ ! -e $INSTALLPREFIX/bin/inkscape ] then @@ -252,8 +249,13 @@ then exit 1 fi + # Set python command line option (if PYTHON_MODULES location is not empty, then add the python call to the command line, otherwise, stay empty) + if [[ "$PYTHON_MODULES" != "" ]]; then + PYTHON_MODULES="-py '$PYTHON_MODULES'" + fi + # Create app bundle - ./osx-app.sh $STRIPPARAM $INSTALLPREFIX/bin/inkscape $SRCROOT/Info.plist + ./osx-app.sh $STRIP -b $INSTALLPREFIX/bin/inkscape -p $SRCROOT/Info.plist "$PYTHON_MODULES" status=$? if [[ $status -ne 0 ]]; then echo -e "\nApplication bundle creation failed" @@ -261,20 +263,17 @@ then fi fi -if [[ "$DISTRIB" == "t" ]] -then - REVISION=`head -n 4 ../../.svn/entries | tail -n 1` - ARCH=`arch | tr [p,c] [P,C]` - NEWNAME="Inkscape-$REVISION-$ARCH" - DMGFILE="$NEWNAME.dmg" - INFOFILE="$NEWNAME-info.txt" +# Fetch some information +REVISION=`head -n 4 ../../.svn/entries | tail -n 1` +ARCH=`arch | tr [p,c] [P,C]` +NEWNAME="Inkscape-$REVISION-$ARCH" +DMGFILE="$NEWNAME.dmg" +INFOFILE="$NEWNAME-info.txt" +if [[ "$DISTRIB" == "t" ]] +then # Create dmg bundle - if [[ "$PYTHON" == "t" ]]; then - ./osx-dmg.sh -py "$PYTHONDIR" - else - ./osx-dmg.sh - fi + ./osx-dmg.sh -p "Inkscape.app" status=$? if [[ $status -ne 0 ]]; then echo -e "\nDisk image creation failed" @@ -303,9 +302,21 @@ Configure options: else echo "Debug info yes" >> $INFOFILE + fi +fi + +if [[ "$UPLOAD" == "t" ]] +then + scp $DMGFILE $INFOFILE "$MODEVIA_NAME"@inkscape.modevia.com:inkscape/docs/macosx-snap/ + status=$? + if [[ $status -ne 0 ]]; then + echo -e "\nUpload failed" + exit $status fi - - # open a Finder window here +fi + +if [[ "$PACKAGE" == "t" ]] | [[ "$DISTRIB" == "t" ]]; then + # open a Finder window here to admire what we just produced open . fi diff --git a/packaging/macosx/osx-dmg.sh b/packaging/macosx/osx-dmg.sh index 91aefdd41..86e83bf06 100755 --- a/packaging/macosx/osx-dmg.sh +++ b/packaging/macosx/osx-dmg.sh @@ -1,19 +1,19 @@ #!/bin/sh # -# Inkscape packaging script for Mac OS X +# USAGE +# osx-dmg [-s] -p /path/to/Inkscape.app # # The script creates a read-write disk image, -# copies Inkscape in it, copies additional python packages -# if needed, customizes its appearance using a -# previously created .DS_Store file (inkscape*.ds_store), +# copies Inkscape in it, customizes its appearance using a +# previously created .DS_Store file (inkscape.ds_store), # and then compresses the disk image for distribution. # -# Authors: +# AUTHORS # Jean-Olivier Irisson # Michael Wybrow # -# Copyright 2006 -# Licensed under GNU General Public License +# Copyright (C) 2006-2007 +# Released under GNU GPL, read the file 'COPYING' for more information # # # How to update the disk image layout: @@ -34,63 +34,75 @@ # Defaults set_ds_store=false -add_python=false ds_store_file="inkscape.ds_store" -package="Inkscape.app" -RWNAME="RWinkscape.dmg" -VOLNAME="Inkscape" -TMPDIR="/tmp/dmg-$$" -AUTOOPENOPT= +package="" +rw_name="RWinkscape.dmg" +volume_name="Inkscape" +tmp_dir="/tmp/dmg-$$" +auto_open_opt= + +# Help message +#---------------------------------------------------------- +help() +{ +echo -e " +Create a custom dmg file to distribute Inkscape + +\033[1mUSAGE\033[0m + $0 [-s] -p /path/to/Inkscape.app + +\033[1mOPTIONS\033[0m + \033[1m-h,--help\033[0m + display this help message + \033[1m-s\033[0m + set a new apperance (do not actually creates a bundle) + \033[1m-p,--package\033[0m + set the path to the Inkscape.app that should be copie + in the dmg +" +} # Parse command line arguments while [ "$1" != "" ] do case $1 in + -h|--help) + help + exit 0 ;; -s) set_ds_store=true ;; - -py|--with-python) - add_python=true - python_dir="$2" - ds_store_file="inkscape_python.ds_store" + -p|--package) + package="$2" shift 1 ;; + *) + echo "Invalid command line option" + exit 2 ;; esac shift 1 done -# some checks + +# Safety checks if [ ! -e "$package" ]; then - echo "Cannot find $package" + echo "Cannot find package: $package" exit 1 fi -if [ ${add_python} = "true" ]; then - if [ ! -e "$python_dir" ]; then - echo "Cannot find your python packages directory" - exit 1 - fi -fi + +echo -e "\n\033[1mCREATE INKSCAPE DISK IMAGE\033[0m\n" # Create temp directory with desired contents of the release volume. -rm -rf "$TMPDIR" -mkdir "$TMPDIR" +rm -rf "$tmp_dir" +mkdir "$tmp_dir" -echo "Copying files to temp directory..." +echo -e "\033[1mCopying files to temp directory\033[0m" # Inkscape itself # copy Inkscape.app -cp -rf "$package" "$TMPDIR"/ -# link to Applications in order to drag and drop inkscape onto it. -ln -sf /Applications "$TMPDIR"/ - -# Python -if [ ${add_python} = "true" ]; then - # copy python libraries - cp -rf "$python_dir"/* "$TMPDIR"/ - # link python environment in order to drag and drop inkscape onto it - ln -sf /System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages "$TMPDIR"/Python\ site-packages -fi +cp -rf "$package" "$tmp_dir"/ +# link to Applications in order to drag and drop inkscape onto it +ln -sf /Applications "$tmp_dir"/ -# Copy a background image inside a hidden directory so the image -# file itself won't be shown. -mkdir "$TMPDIR/.background" -cp dmg_background.png "$TMPDIR/.background/background.png" +# Copy a background image inside a hidden directory so the image file itself won't be shown. +mkdir "$tmp_dir/.background" +cp dmg_background.png "$tmp_dir/.background/background.png" # If the appearance settings are not to be modified we just copy them if [ ${set_ds_store} = "false" ]; then @@ -98,31 +110,30 @@ if [ ${set_ds_store} = "false" ]; then # window size, appearance, etc. Most of this can be set # with Apple script but involves user intervention so we # just keep a copy of the correct settings and use that instead. - cp $ds_store_file "$TMPDIR/.DS_Store" - AUTOOPENOPT=-noautoopen + cp $ds_store_file "$tmp_dir/.DS_Store" + auto_open_opt=-noautoopen fi # Create a new RW image from the temp directory. -echo "Creating a new RW disk image..." -rm -f "$RWNAME" -/usr/bin/hdiutil create -srcfolder "$TMPDIR" -volname "$VOLNAME" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW "$RWNAME" +echo -e "\033[1mCreating a temporary disk image\033[0m" +rm -f "$rw_name" +/usr/bin/hdiutil create -srcfolder "$tmp_dir" -volname "$volume_name" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW "$rw_name" # We're finished with the temp directory, remove it. -rm -rf "$TMPDIR" +rm -rf "$tmp_dir" # Mount the created image. -echo "Mounting the disk image..." -MOUNT_DIR="/Volumes/$VOLNAME" -DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify $AUTOOPENOPT "$RWNAME" | egrep '^/dev/' | sed 1q | awk '{print $1}'` +MOUNT_DIR="/Volumes/$volume_name" +DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify $auto_open_opt "$rw_name" | egrep '^/dev/' | sed 1q | awk '{print $1}'` # Have the disk image window open automatically when mounted. -bless -openfolder /Volumes/$VOLNAME +bless -openfolder /Volumes/$volume_name # In case the apperance has to be modified, mount the image and apply the base settings to it via Applescript if [ ${set_ds_store} = "true" ]; then /usr/bin/osascript dmg_set_style.scpt - open "/Volumes/$VOLNAME" + open "/Volumes/$volume_name" # BUG: one needs to move and close the window manually for the # changes in appearance to be retained... echo " @@ -134,19 +145,18 @@ if [ ${set_ds_store} = "true" ]; then " read -e DUMB - # .DS_Store files aren't written till the disk is unmounted, - # or finder is restarted. + # .DS_Store files aren't written till the disk is unmounted, or finder is restarted. hdiutil detach "$DEV_NAME" - AUTOOPENOPT=-noautoopen - DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify $AUTOOPENOPT "$RWNAME" | egrep '^/dev/' | sed 1q | awk '{print $1}'` + auto_open_opt=-noautoopen + DEV_NAME=`/usr/bin/hdiutil attach -readwrite -noverify $auto_open_opt "$rw_name" | egrep '^/dev/' | sed 1q | awk '{print $1}'` echo echo "New $ds_store_file file written. Re-run $0 without the -s option to use it" - cp /Volumes/$VOLNAME/.DS_Store ./$ds_store_file + cp /Volumes/$volume_name/.DS_Store ./$ds_store_file SetFile -a v ./$ds_store_file # Unmount the disk image. hdiutil detach "$DEV_NAME" - rm -f "$RWNAME" + rm -f "$rw_name" exit 0 fi @@ -155,7 +165,14 @@ fi hdiutil detach "$DEV_NAME" # Create the offical release image by compressing the RW one. -/usr/bin/hdiutil convert "$RWNAME" -format UDZO -imagekey zlib-level=9 -o "Inkscape.dmg" -rm -f "$RWNAME" +echo -e "\033[1mCompressing the final disk image\033[0m" +img_name="Inkscape.dmg" +# TODO make this a command line option +if [ -e "$img_name" ]; then + echo "$img_name already exists." + rm -i "$img_name" +fi +/usr/bin/hdiutil convert "$rw_name" -format UDZO -imagekey zlib-level=9 -o "$img_name" +rm -f "$rw_name" exit 0 -- 2.30.2