From d026c6513e4010b42a69ce874dd39891c8d39d2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 10 Apr 2009 01:00:45 +0200 Subject: [PATCH] Add py2app to setup.py Add tryton.icns for bundle icon --- MANIFEST.in | 2 ++ setup-bundle.sh | 11 +++++++++++ setup.py | 16 ++++++++++++++++ share/pixmaps/tryton/tryton.icns | Bin 0 -> 35849 bytes 4 files changed, 29 insertions(+) create mode 100755 setup-bundle.sh create mode 100644 share/pixmaps/tryton/tryton.icns diff --git a/MANIFEST.in b/MANIFEST.in index e4e31a9c21..96450d1d20 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,6 +6,7 @@ include TODO include CHANGELOG include setup.nsi include setup-single.nsi +include setup-bundle.sh include tryton.desktop include *.nsh include doc/* @@ -13,4 +14,5 @@ include share/pixmaps/tryton-icon.png include share/pixmaps/tryton/*.png include share/pixmaps/tryton/*.svg include share/pixmaps/tryton/*.ico +include share/pixmaps/tryton/*.icns recursive-include share/locale *.mo diff --git a/setup-bundle.sh b/setup-bundle.sh new file mode 100755 index 0000000000..c32231e3ad --- /dev/null +++ b/setup-bundle.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +VERSION=`python -c "import os; execfile(os.path.join('tryton', 'version.py')); print VERSION"` + +for i in dist/tryton.app/Contents/Resources/share/pixmaps/tryton/*.svg; do + rsvg-convert $i -o ${i/svg/png}; +done +rm -f dist/tryton.app/Contents/Resources/share/pixmaps/tryton/*.svg + +cp CHANGELOG COPYRIGHT LICENSE README TODO dist/ +hdiutil create tryton-${VERSION}.dmg -volname "Tryton Client ${VERSION}" -fs HFS+ -srcfolder dist diff --git a/setup.py b/setup.py index 3e5dd03fd0..a57dc2dc4b 100644 --- a/setup.py +++ b/setup.py @@ -78,6 +78,22 @@ if os.name == 'nt': } } args['zipfile'] = None +elif os.name == 'mac' \ + or (hasattr(os, 'uname') and os.uname()[0] == 'Darwin'): + import py2app + args['app'] = [os.path.join('tryton', 'client.py')] + args['options'] = { + 'py2app': { + 'argv_emulation': True, + 'includes': 'pygtk, gtk, glib, cairo, pango, pangocairo, atk, ' \ + 'gobject, gio, gtk.keysyms', + 'plist': { + 'CFBundleIdentifier': 'org.tryton', + }, + 'iconfile': os.path.join('share', 'pixmaps', 'tryton', + 'tryton.icns'), + }, + } execfile(os.path.join('tryton', 'version.py')) diff --git a/share/pixmaps/tryton/tryton.icns b/share/pixmaps/tryton/tryton.icns new file mode 100644 index 0000000000000000000000000000000000000000..c95952812611e2c4dd0a1bb1a4d6c818f6335632 GIT binary patch literal 35849 zcmeIacTiN>);5mfTu0~Lv2+k#z`>=(+c+e;I{b%>T z)8EKYO>IVWuv!usrj|wqtEH22wHR_5C5eh4{( zKcGSjaj+z@j5 zAw^9BIXy+O4StVOlq8Vq219jh=p{>$orn+C!teEp^P%MQZ3&tY@OY#{S5B&nMim($ zq`L8lqArr0m8~e}k))?WaUq0MJ11AD8AOn?TosCQBzZ!ixEM@+=g_B6L~Zaqe1&4@Bt??ukqWh|5v1A!xkA11eDu=@5Z8$yr)x(y#wezZ z`^AvzmWS^QMJUt~&yh0(e$f>pA&O~r{A6;bU}@<6j+%421z_0=VCHl%cN&;I34VeD zC~yD;4xqpR)HJbn6a@~TrkiZn3Ztgij2()jX6SuTd@u>2W=OyR2VV zp|~1Hsqa)MvfvZ=!7rYgeot{9K5S8R@#86V>!EgG2sQnPqBen=o~GCVzsD#_6DW1l zp?W^_lB38;#0MMT_ZNzcP-^DMt54Q)&U= zfLb{Ufdkft6W{Z|0fAhCFa-zX zM-Xad;DCm-=qES>v?7SQ`urR_EG zIt5_a3t;ASFn1c5JqdpLoA22Tspxw({P*oNOh5X~r`U#;_;zFF+yB^_*6^QNPd%Hm z!2jzO_>H-zdhP$i1o}TrK>G1-s-U0lJcK2Q!+QJ>uQqM&f);Yxg1K1}zgEtpQQ<|eAC&u6jOJ+O|mS@RRr)aMe)PsH4K zcs6(L&jY0T&vWO_k5QWe?SCc)$Qkf|*4!wjuz3;_&6=ggnm9g?5<4c{eq7bs)m|BKVEYO^s)C#kW8(^q z%onKl4T`rjs>Ik?$Of}<{nCtRLT*WGX3w!n~( z6B}17bJZ2$lSFvJ=4iNORlaTMA02ABni6%)%?wBWfczOc5$n0d72LUBRbTh~-mUyt zcSB7Hk8Z@}X?Yble(V_@8|`mxsJ(r3liy-39ya2MHH^Kl)-<(t_xE?VG*(|-VWFc* zu@m4C_(Xf@-L}5LQH5e`c<^IwdBXBqZsY$Zhf$KnUl4In@D?D%Ok(8rE_RJ2--BJ zhaTN(%(M|njeKsregA2ATroZ}-19Q=>f$tc0`~ zL=r=vVy2B^e0;DeD^~7rD!?`*TWk}Wd9CdI2(%gLyqBLYUnqJ&{(z=4SXNN?u5%Da zFw~Nl6u#eFkV4KBTAxbIxzjOB%iqmSJFS%G3w0K!l{~HQp?hz=ni6rqLWuGfhoaI7 zTTy;k`E5CE6tUUPz=+JIA$-t&>q=6f6^io>*7_e$crys!4!nxozr{z7LUEGK*I)U| zp_tbLDBf`=C-syyic`AYoAyS$#BclSPHpm8q{Vwo{zU0`uGtY>*E>2kt{CYo$vb~$ zp(q8v_FB6$^aYe-UHnfNY|6Q`B8R^G;|pPy1|j}?yNA;5cAk54I!iHoKXCr>eJ}x z$I8;eSbH%&5=MG_q~~MP4KFR6eK31Owr8_%KKd{+`l-6S_?!bs&Qpzfe7O6=+w1Nc zV2Mg{p3w4eOnPDK;Ba^SvyxON34EJK&Y^UdZ`^bC<-qvRhqf127fY+jc|4ix@(qDi z-9x>tja4~r8ZgZgL8<<#ok!wc4~z}Gd-LqdA}OPkBQjmMc<18}gMFQCFAA2(U`(J? z<&d$y#`;GWT_n}yPaJ`+k=@4oZ9U!ZJKq#7(-rVJFg@n*4cG5Gne=vWtnY1Yc?KiN zm+4xrEUIsA?d)p4v&K?a#)l~}hi|m$pggr8{h!mz#%1yQ?4GIOiy?A?HDyi>(6_FW+n%>aP#kvBpz}LP4`V!SUJe zhDJXvuD4y!y2>bO!HSDypVJ`HqM&`t++LaV@}E4SK*N8Udux)f?70(BgL zzKO$@haUz$zO1^R?u@2Ib=IfTa_@Ewk93w^%?Mfuf)GbCU8}YCTDw0qyn1?Nu?#~X z7D8ZQP{!5L&XLby3t1ZSJtY(h1awxFm;!QR@F^mK!^5|@jQ>KpsUhTCskN;pop#TmGH*O{{+ z0d~4l5s#fm&YN(@%W(e<%XRr+nX{k~GQR7Tr?21jLvto&L4bmf1qQ2j>^~Zlbnes= z3j-ZKCy)GzcGdZYfq}Q@gO6-86{E?*L72mpx#w0lwGWP~R3tC~rD3&49ua>zKPT}Q zKMzMu9_V1aSlK=FvF7pZR1ZU(r(uj$be7#|?Hw3Zs7!!LC=G2hpR9`dm(4BB^~E`u z?LZ0b9KN>x!u9uBd-?{42fARwrZ|Z~ z2^|3I?sxR}cD--7z0ux8U%vpbLUS<`Q3Y|JnP2zUJ!}eG~*<*wK?e|uj$)r3O*L?7y#1_|YtXRdFV?-Ty_vSlc(wEvHDm| z|0FGO^tvLkJ{p@*)HV!?#zuzTKUk+yBrw|-nvnZ$2s2ql-g;+CBM}D`X}S4sK3zvE z>bRAa9B3_!#RX6x(s2&GSWt>f;}7FQoh|j({OFkmW8!Ihto|jqz8|xFM^!w%qJt_* zfAy}T@yr^fv=OM{2=z_v*Ilb=Y#SH@Rk+G#1Utz16bE0At6{fz#o_8c#W++VO;_TA z{LKWQif_0v;B?AcTnC3gj|x+?+b^Z>aH$GX%*J{r;-HlT?3z#VXcz5yM*DTRttcbz zn4L@r*o)X~$BFO@jgwVHksO#cd`-JWz5$Orn0jVt;M1!M5rI2RMG#k@jw3R%blq0g z3U!MD6Wo;;UwaEPeO)8xBN55@E%dsr99bmE#jur`t=tw6QTuUlcyxTUzvXT1y|9Bj zR_WtR2Yo1^@0I-wr#h}s4Ha=G5BjfM=DXv9-zMeH;oJ z{jt9}H!0$%hqZ|TBqEZ16*}Z_HC@y1<1&neP;X;yQj~nh`priQAJ@F;14B=g36Ug; zrt#Qu=XKkMA&B|Wk=|E{C--kOlcEob$(dru#9NPRyI}}(aLT2{9ooHDezzJ&3VKwj zIGki*6{_vzvHI|%w(dSC0>S<5mEm-ia+{o~TE0Qe$cINa3$tRwBGM{eH+RrA)X0Yi z*Dr_Kio!?|r>vg!x?M-2Yu=;r$NC!To)jJ2faMG55t!^yRz^RL4|TP-zI*-hRby9g z|KJ!DkfS|yPwpf+i9rn(>r1y?E~%*P8pOOX)N~;{(BH`fS6NWQH(0mlMBauia325QTT$Zgna=)RYYX}pCV&G-O-p#%SBFwI!h0aw%eciNp_db_pDGKTMU|VBN z;d*;hBP|UL9aAg2C3{bVoqzdpUe6 zjKYRbw9RJIg>8_X2F#OE%s=+-E00w7rGvLy3sPf)x2{^fBR(_#UMGNmv&P4VTCZP- zJ8B7~^GtfRI9P?EBkxNKvd+to9t+7XE_wP9YWdk1c5gDmk8d{-fGkI3Y_(|TvtE$J zY|-3MS6yBIuD$c)Fih1S#z(Ng_xHjo5`~2ZW=`9m_GT#l21#mYu)nWwU~m`~j$jal zQm^s$YPwj;ge9EI7m8rFClXTVk|=15HO96ly~Q9q*wI{Du-pjO*bI6#<%&$KY-}AI z9Tw`z@Y_g`#|3Cp1>Uh*myqV$W}90XW18M-6E^w=Q1u8-@cx{b(yP;losc}n&(%J;sYueQ_n@k->Tcw* zeOn#P4RwXMJH%GXp%pSVYARzQCllr+lt@~h*WbSX@TvP#NB#4Mg@HTQFV_>&YuCj4 zL%Y%Lnn$-%z3AXkw$omIziVV`(xYlbC4HI@QtBAm7NO}vvEFWM>t>vU1GY^ zUS3A8(F*Wi&zp;pr}o$zXlaV&!dU`=NM>Q{?qAt=l@6zNtj4T`*`x&0hxXE&&2;L3 z_wH}Go|zQ3VVS$Dowb#vxtWFCvXxuT)b-~xq1BKTAH2s*fbC$5>w58FT|*zt8CWL< z+M3?f+$zY<2njrT_`v=Hfr%GzOO~e$v-15ui)^LbY|u z?)ihvr1;pgVQ0@3m6TV18pUQ9a(C9#Th=^sw%9%@|L)_?{-Kdk`S^U8+z@4Ns;^~b zW+W#hXO=#}q>HUE_zIcwGmjJsEsw@!D9@8nb zqFs=(#DFOa1zZh>CBEC@E?vF-vZbR7cC|3dfxh=0?QJdZTG~GKKz7N61U5eKCgt>j z&FC6jHs|6V#A?Zj=#;F=H<(}*3i&upB}j9_Lqm`!AeH4R{yIM1R~P)tYENyfi1NX4 zka!Io_MDDLzW1#5)%)&Vn015jmZM|iMRd9FvGV8|PbgFhaYYkJv@F)`K6oG&G(M??3du_0{d&OL5bV4Il{lVnb7NYo|r-OE+%Ybs*wg>g9VC z&tHCmF0jGKhw|dA$i*}WaSfJWlFi}p`2wLts;Rfoagq1lN z7kaPVv`ZctpL+f7{qpBEbuSy5TiQN$_w3B9I{hZ1+uNIJuWxp>G8S>lNj?N8mrGI5QY@Bg>l#>k zuifGw8k?Ls@#fG5OV+2^OAXQK)iBMW&J^jmc=>KP8g%wt!R^wD=Jy{z_0q31i+&xj z@YuL~>~F(#$$T%(6^cg=G&Myl3p8z<-Ii_JbKrP%Vp`_Sdu0zRt842Unwnc-{`U?H zVFdMdceFLv-^e{Lr}KU-X@Uc#q?%ef#-`?0c8<=AmU{cG-FNtSQ1ZpBf`^qgFWb95 zzHe@LU47?TcGAw(%Ul6PVzX-zzmv1|d9VjVUn$?x!qac0Q*YdVRN2(t(fX>s z`eF9@_|slCrUn3fk?dAdh_5NswqNYEGT?+fGV9vSd(|&r)jfSwb~8CTIKasW_YEB= z2Ct-HY3H*=MJe0e~U&&v|T#^O={}+SpA#(V?Xjt$& zH8n&&|A}}bF&FSgL`CUOtogx8)KZ~DDnl7`Q^8=GfOTR^CGrV4D7I9hqETOArZG%Q zC87%W>Lj!ku-8dQY~nZ3+T^b=-3t?F?`PaM9?)QQ06ck(lsec#koCnUK!s(Yf@$~^ z{ue4xlL0O);0b~#XhYF$C<;E|cZdyxh9I6gJW;BnKk;}pQp};g@r>dCZmcGgV;?=( zhaCEdQTq$%!w!0=zd$ev;8T>^bkHtG5k`)h4tgWujW|IQU&3!3K$DgFMpXJjC-mK= zg7`tgq6w|RpS9khX3^DyhNh-eaE)$CcM&wv1xjE{%e1vMg|q~ifdhzg5RN{YlJmcV zpce`Gm#M!Awe|E3P0Y-UWD>E6&j<^?gI9rIn;J2dZq0O~iUeX0|IftoO0d)6&Eynyx8#E2`SM+Mh=s*}c|CR7ictbP!L?Y;pZM5|)R~FVbw;{OP+EjaOjSXtUHe!jPZ^>tD zxi03&t~Ev?Wt%m(8oRnj09x+(*j%#3$--CyZD!GJ?x>LEx5=jhHkpXAg_f?xs#`P| zO#{p20lsebGC?9W8%MURpk4_ql$sIz@hHi>WvXI^olZKqa$7 zgY8k$NgFA&5NK+du23S;h$=VdoD1D=DM_JbYS@QgE_%Q~%1||546)ZJr)Hx(U{*>* z87uFo!`4y|m)gqDBREEHwQz52M~h1}4L#HEJ$u0b%5B%uV~;MR#TOopO~2O00Ls_S z#~ihmKBS=N(y;PBgHWMz$DDG?7Nx}|8}9~Xn%Jif%l(q&s210i4cF_dCF z&k>t!K7gPH?uQ>`x`E(Ne6hZ7>iHS57P)`z1~3tEQ5v8mS(%1*0%-7G+QZ%}f(a=B8m_g4a zkWw|IcdD^Yplhx`%W=ud!I2)1u`x?1IwsN&pj9PNsTzSuhJi@KCnDewOW_3to={uiJ-a7T$jk;4u@Xsnj&S zP%e^7r%Cwv7;QTGR;vJwZ*FR;ySCC2vsLWpSV5d49d^kn)ZZ{J4NWYptxRMhp)eQv z6NzZ#2rXrc&X-oc>>WddikWXeV*Ib#u_K9(&i`OwTxz0xsSQHidDJ`x^#ZWCAtUVg4ogk2Pz3lvpyQce ziyH=2&xvSEiMH+jkm!W$g1nSntCug*5rP87WzQL;IBmJPp0@BT9c4y-ca=CXGxh}K zJYJde^u;U0iErj%4$FhD(VM?i&^U2z;c9CGT@gPVG)py2R+TX@vC?v=1GWwhn@g22 zF-}KUP1J#&-t?f8hKcWNakey(pbl7k%-1|*P~r(4^Z8PE}5lqm7L*Uz%tA%t>p zfZ+PoH(t{q@uOqwadw2^*LsFFn;v%~@S}2K0;G02TAwQsV%X$eU8)a@VGi|Q5C^($ z3D?Ui0Uv%>d?_)|9w5dL>L;womjx){;f~wcsi$qF3DhiRnl?bg!h5?7WD>mC<9snmvZBM6W-$row zWo2oGmyt|E5KPS!YP&97d!mMcbQvY_xI}2$LbfYbLBk&&Zc?iGNn&;2Y*Jp!5F%Vp z@-{EBF_-d#K#!iss%`T6$$H{oA(LtvEQ(OBa5OUfqG+`hz81Jkq`zz(eZ~l>yR#;N zUXekQ*m(UO<*_E7UZ$O~mBvy(@TI2KE}M#!$nb1>euuj1K{ABdD%5uNM1Y$ChI10a z0xTt{$#mP1;PVX(nmeHh^RCCP2d%j51Sw`QtE(;e<|@S#$ZTD`1D^NLPKF)jxj;u< zsZ=DAS?xZlI)GI!g3%NS=!K4x$Ew2>oq(Ou$K2g-GNaGBQFTgCxV54Fe#8;~b*55*pn&4S zbK~VXpCREV3G!q6*ZHpUzjPasiAl;LsUNWGMH?>Mc~t#rIB4vLfp_^SQ761?u@)+# zI0Aw8;tcv!7O}{_ru>wc5dSUPj~7+czE#4(%&;OU7FuMv|6L^C%QP*pYG#DZTu!>w@`xDBSP@2;%Ur(kIY3%(S2dcUg$R+pegY_cif zRPx(zW5IA<`|zThEDXj1%lzgO4;ni^DzV^KQ32alnrg!2zeCLw8DZ7*dH_(}vHqr) zPp)|BOT1Ad`p=C^roSQU+C(^zn|eEVuoJ>flQrL3xGEEtf3qD{`0P$+BbTiQ4+ z-GB0I#_MhdE&ABmc>mxkPiJjxCDip;xm8}L#DYK6#-G@~!^?G%cfiTe#QW7R8&z0v zWoc2;Qpn9BJ~q+;cLXAUOk=^#SK>mCuU)o$V^~sVQKJeA#zi#LNgLLKQp^<0BttA1 zO3ZU%JJzlDPq>VyJ`5JzR-Bn|!bbYwb7rEk;IeBu86hVE!*g#U-$I22XGWgdZ7xAs z*v&85Q;E1Sf<*5c>uYLWe2E2@@AF<{Cli1$?ok%+e)ii~FaUFy?k-W&1QNN1TyvTf zV8&={2+PZkXMpR@9v|#{S9fiN1uUGGs2>Fy<~DZrF0Rh@hPtq;ivm$xTxiI6HXb0{ zOjpXMsS=HKF+a!|M9#dr>C>wz*oF8scUxbYd)s`9k6P?!h5CLM~ARZe^AOtA&Pq zUsOFRI=yGh3S$lME35!~v4M&G)+fC*+e%>%E?HIWsjm?Q+>u+?vo>Z|A%EBBo}{ql8kM z6A2fu)-<+uOvZZ4@7ydd$S=56`2v$=9t;nU8_q8^)saCxClG48c&+&5+?9emUqijE zEv@ZJs24EXfwyTvhqqZ^$p%#*Ut(xx<9RAJE$2TVy+4eP_t%H*TEE-?Y*zrOSzFJ< zIUp!Ht+cZ4^|x@|=Ybo27V7}u!GTK3VBw}chtHhPzIwgX(z&0EM zFt3~lFmgZCnz=q^;OAOu0dyiWa`#!iB``E9>Dt}0r@sO2{&g5QbWrG~!=b*IUrU+5 zEYr|;SnTDybKjwpaj6+sZk0ZGSXEQ^qM_+s8$!EqL^c8K-paoa>ZAiJQymOZU!fV)f*2SI~AImnO*qkIRoszYkX6C_j+#1p7nn2dLlmmH6<6y0I&js z&@X0UvwY3Qoq&|5-70(h91-2uFKQm;W+VhHcd#;%@;fO3zL%kkr_Z`Wr-Gw%i*Mhr zdG-3mvx@Rt=i|Z;FEYdGz7tH0Aeb%S(_41$KN1T3p{{$)eHyXwJCjx�(HQ58C;PD5oug8=rdNxAd56S7(9V3j!dA6 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