From 7d575d9bf0db910bfc9f1fa993993631ffb68542 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 7 May 2024 21:24:46 +0200 Subject: [PATCH 1/6] Add documentation about how to compile the client on Windows with Qt6. Signed-off-by: Camila Ayres --- doc/dev/compiling-on-windows-qt6.rst | 90 ++++++++++++++++++ .../dev/desktop-development-with-cpp.png | Bin 0 -> 10770 bytes doc/images/dev/path.png | Bin 0 -> 15062 bytes doc/images/dev/visual-studio-installer.png | Bin 0 -> 16502 bytes 4 files changed, 90 insertions(+) create mode 100644 doc/dev/compiling-on-windows-qt6.rst create mode 100644 doc/images/dev/desktop-development-with-cpp.png create mode 100644 doc/images/dev/path.png create mode 100644 doc/images/dev/visual-studio-installer.png diff --git a/doc/dev/compiling-on-windows-qt6.rst b/doc/dev/compiling-on-windows-qt6.rst new file mode 100644 index 0000000000..07a4618ec3 --- /dev/null +++ b/doc/dev/compiling-on-windows-qt6.rst @@ -0,0 +1,90 @@ +Compiling the desktop client on Windows with Qt6 +================================================ + +System requirements +------------------- +- Windows 10 or Windows 11 +- `The desktop client code `_ +- Python 3 +- PowerShell +- Microsoft Visual Studio 2022 and tools to compile C++ +- `KDE Craft `_ + + +Setting up Microsoft Visual Studio +---------------------------------- + +- Click on 'Modify' in the Visual Studio Installer: + + .. image:: ./images/dev/visual-studio-installer.png + :alt: Visual Studio Installer + +- Select 'Desktop development with C++' + + .. image:: ./images/dev/desktop-development-with-cpp.png + :alt: Desktop development with C++ + +Handling the dependencies +------------------------- + +We decided to use `KDE Craft `_ to get all binary dependencies of the desktop client. +because it is convenient to mantain and to set it up. + +- Set up KDE Craft as instructed in `Get Involved/development/Windows - KDE Community Wiki `_ - it requires Python 3 and PowerShell. +- After running: + +.. code-block:: winbatch + + C:\CraftRoot\craft\craftenv.ps1 + +- Add the desktop client blueprints - the instructions to handle the client dependencies: + +.. code-block:: winbatch + + craft --add-blueprint-repository [git]https://github.com/nextcloud/desktop-client-blueprints.git + craft craft + +- Install all client dependencies: + +.. code-block:: winbatch + + craft --install-deps nextcloud-client + +Compiling +--------- + +- Make sure your environment variable %PATH% has the possible minimum +- Open the Command Prompt (cmd.exe) +- Run: + +.. code-block:: winbatch + + "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 + +- To use the tools installed with Visual Studio, you need the following in your %PATH%: + + .. image:: ./images/dev/path.png + :alt: Windows environment variables + +- Alternatively you can use the tools installed with KDE Craft by adding them to %PATH%: + +.. code-block:: winbatch + + set "PATH=C:\CraftRoot\bin;C:\CraftRoot\dev-utils\bin;%PATH%" + +.. note:: + C:\CraftRoot is the path used by default by KDE Craft. When you are setting it up you may choose a different folder. + +- Create build folder, run cmake, compile and install: + +.. code-block:: winbatch + + cd + mkdir build + cd build + cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=. -DCMAKE_PREFIX_PATH=C:\CraftRoot -DCMAKE_BUILD_TYPE=RelWithDebInfo + cmake --build . --target install + +After this, you can use `Qt Creator `_ to import the build folder with its configurations to be able to work with the code. + + diff --git a/doc/images/dev/desktop-development-with-cpp.png b/doc/images/dev/desktop-development-with-cpp.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4f0d34f1a3bb1f0b6ebc6561b8a60fa74d80d2 GIT binary patch literal 10770 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 Bj`{!q literal 0 HcmV?d00001 diff --git a/doc/images/dev/path.png b/doc/images/dev/path.png new file mode 100644 index 0000000000000000000000000000000000000000..88f028700c8f6ed49e4de1a85039c5872f2be7d5 GIT binary patch literal 15062 zcmcJ$2UJsAxGstXQ50}*K?DTcBE3Wb1!(~l5ClT+MWus)ln`2o;6?>0(xnDzp`%o3 z0Si(hy-5jC=?O`I5Ril!p3&w+{qKn6#dTPqs+&t$9L_5+1R*0v;L1{%5n>_v0Y*_xT9kk z=8Q*=yu275%{Z_ruX6a(q{myAYOA6Za$QbSK>F9M4~6H;<90bVxhZZBoI*`LJ_Ce` zo)4wmR}AVh9(llne{esMyW^SjoYZYs%-+v&(eI1$wx)U}^~N?6a*B23Mt0UP9djEi z!e5saf!p!$9I~v^Zj`pU75v4oaE1k(QuU_2!l0NYqLLR&a>kU zA{Hak2TC7zxVPNMF;a{{3VrW@9b@KKm&(0royFBgyajUYqAy{%38!|Cu(7=z+`QB^ z<4%^>yeejD7rDQ9d%Zg%mN#R-i7v`;he(* zj#s-4aT7o$CO+(xzH1Y}O7En_c$Q4Tyv2L@)drX`6y1EbAQ5HN~l^SobeZSBTjrtCy2-K`1J zCG+YKxjB79MFkuZQX0@rn|5MNwDO$j;Rn(66#9C~?zBUIx1XOp*|2>7y+w2>->Kd7 z@B?OCBQQRSah`m!6pe{KUzRxr6ql5gY*-e^+SHYb=rs<`4V(*Q zCO=Ub8yhoQjZY6P>aNm(&DWk}CT>aG)Y6*X-VR)47}TmAg));m$I@;d5P&JoOUqV? z+4JK*=Pxo-RZkl{hI<)4TJSg2WmTrzCiW}5DhnW_$6DnrJ=DuM(zvzpyfHJAZBg0y z27(5Bl=qLyU-4)VhRN%c{g=;CmsdZ<-GIvg4X+LW5|O~tk+}$_5=FS5GukpsMv9g!Vu68%JN~%|3UOpq01YMk4NpC{BJN?xk0BDGOTajk_E@C(A~z?q+Y1 zQl#T?b=)vNA|$en|0H(h4=+#D`iG}p^~<%cvVM7=oY>W$&lxTT2iSBB?=e?3eDl6b z!Yc9H^2|i&IiLCYu}{x=JOPn^+m2JF(Hk%DtJ7K2JSE?q^YZ327ABk5iO3XSO72jw9=8I~?pW^Y_@Big^rZ&7u|BLUaSy}_#NJ|~>sd?^%yumO%^n}*t_)8qJ7nC9HG zA+J>oS0}r9Kn177e|`r;E%Nfz=g{ht)6?zT`+Fhp1=weG&BO6{ZxF5>=h2O<1LJ#% zsaM)$#ob@f2Nhal&1M!0_d=xDd6Y`VLT4Mp%Q21iV5(cWd~Lu`w2iYs!|JdrwCg>m zm0u&Wa)_+0&LgTfQ8E~MgSq*7q3zrj5Uhj7C@^kl$QZv#*m&%#RM^relj;&WOb?gx zhil?B7RDAS))5JbLQdIgFEw^Dnuj8k{nj4a=xmwt+?!!%V|%fT4s+O37Ab8;|9v{u z2s2xK&9ASS+0{s&dq1~KpSz3gAgp$gYi}x`+&th4V{|i7>2<62by9z6uZ?-oe5?O_ zO~8Q0)j502gg^b_CFa5z9Oxh|50ypSoJ@-9js5&Zd;%b#gtad-Ey%Lkq1*Tq>eEq& zxABC{Vfc)O;Uc8&)l|W0xU3HxUEn0_FQKv`v3Wr4n6s0*UzggqIJ_&ZGhP@Px>vq` z&CRmeSf>82htFB2Q>l^a2c6xVY5X-=&?Vf)2n;Jcn8{-r!|ct;>D9v{m{l}~Vn@u; zYBrq18pFk2g{U=(E_gl{xTvDp(e-&XtL0}K)@on%k-xuTWaQY$XG#{qA1{4(^<#a& zzyjLx>PS;wZg@=qdWu50t+^0??gkO7V?fPn8KSgvKYebPRTChP^Rwz0)2BMxy@J1e zO5@=9HB%IB&)8?sfgn19K~kr!IG=oQz*4wj?t;k2iYz-hM_8)RRam<5DY@{1RcYNK+Bm0RV@ zpaB@pjO;uXq`6;KOIu^?GO#v`rPnuq`|GDQG!-Btj^0ZBI>tPY*>X$q63hpiE!5Zl zqqmX7x!?8J+A~4Gv@hQj_pVKIEHk?&uj1+`T=Fg4(~0?ZKj(ePet5lA2Inq=hGC%T zN;Y=7s4V75!G@BEcR}|oLTih?i(IUaKys*%Vku!(1A6|Kh$ns#cB~q#EyGm&7Q30n zpICiAL1tB?u8*nv+S$EE<6;(-D@jjJpOihdncjV_)>@WiA6lu6;TlcvM#HVVnfX03 zkB>#}XFh&j>&^e36)@+Pc}CFulNrrhD7S5k04ZSk>jUS%A~v zgk52XGOSF07p?7_>ooUP7GJkUKhDh0n)(N1Fi&`8nl}dtAL<|}DVf7+8mcZea(XAd zXORh)z-Tg(%M z)6yDt9G9BUdLqjF67`jPcV>Ee(x=({n%|%6k})(xc8YnRcA@1cGC%b=m2k3~YS_YB z&a5dO;9(J~jaut_Oc;}@oHrB{71c?JiM|Xl1<8a*Mb(UGQNKF>UJ`ExrJhj*Sq#@_ z79Go!wVCv91+NV9HQSFJMydCJYHqy(@EM`sFNPld06)l7L`+a!xxdzb1KdQW$a^17+EhEf+qzyT0$ijTfy?BYy*!`^`A?LD7+Y>~-z_-}<{^wF0vDj;&=b7zqjfMrxYK|UDMi=WlS z_7i`yTB-Kkn=F7Vwx)pq7el6en)7XJo{l;NOE6!s>=WHjo$u9JgBmkX&5u^>z@!$> zQQu03=@`oZ=EOZw`H-9UxcsYW`kO!tU!_m+<};8gVf7BN+{(jtg+`xFM$~%QgVw9(6JUT>g*V(l{G8X5JxBb zbfhK#g~N&>$9MG38B5$2=p_;%%K3{68fid+d+c(t;+0#lt4>-wT~ecqSt8=$5it?g zg@`IhQcJB*-d3QLQUg}b#R)O&@6d)_{)6J=hcnwyYf-~9k?rW6HT7cA-I`R($ldFv zXTx?x?T$1F$VejdEsA0Qk{DzZ!1TUuXd&Y+EsT9)e4#pzRWkas`HxqAZ+Ls=l&niVCOfqTaIugARo~Kb@4{7h3DpCe=03=~ z$W2+>k#{cmC_71e&+B}Uf_8;6SIw(9I1-zDW#G(G>dddqg>`}C>(=_hlIyrIakKlv zIz`%VqI?JMRZnF`zA0KlzWXBhJk8C`sNzzx$EUuSTdqO+@N<=&vD!K&UCZFf9Hf5f z`!j!x;J(sdm}eLm=C?0`EnAI!5{!nWBKK&GRXhDnFK5im8Ylf&OC_O(`Ga8hq- zWO?FsKaaht$mX64C0E00uIA*LtL1kanb;8366PgxBjJUYm54%cU6JtNZkA)t8e2I| z5e7LAd+n%dxc_o_MRZJ)meEP_RY_u+4h9XPL3U{{qzQPYPSnXA#hdb03sTUG8@8I43L$1^0&Dnra&G!@ra5uM+Z_? zzsy+g(&y=i;X@_s(6y@8!Fg-*@Oj%KVAavRTO?PXz9%^`aNw)`%lh8*Hw^9MZl%E`DPmvUFi+fV(rYG4Go1)h|+K z#DfD0YcG4Kj`fQoFqp&|p}Qk}l{lvozp~htZA!$l?+yNFhX`fj!t31dFuLjDrAk+j z4t8~+#-jB!bLS`cK&klF^lX3&76s^@#Lu^agMx|&+=`c$T!n>&H`dqhGTresDjPsP zScBtcy6Me%ENA*eJQyj)IyKo8*niW0#r#Q^X_;Y|3Z_59SDmS`T$vW7yU9T4Z(@7AT^|j!OKcLJiCI5!I3U^IY^$susR3Pb6xgXMQzdYTMyAWPR@Z{iJx)RJd#uZ?P zvpqm8La>=9;7~Cb(9=QM0=cQyh$m&srt4pBB+zxL6wHU!(qaL{Em!w}qo$3W=x#qN zaD6wZ&imKKvoF>KBwcE4{iA|m^XRV9tpOD*p))9b#57zz1OJlbL4Xy}A()B|QYcs; zpo|(Ycby9ewfTbO8M^_Pr2fh|>WO#1hC3I&BDWZzOZ~dQ(EcPe8~vyrb{?Omx$o5U z@}|cTwwHPA6cl##nF!dWg1W83xx|z8qgM3=C=1%s&*60V7a6V8tkrUq)FHI9`*81# z)!7hGS(bjx@VdX6SJTtGL_(w>bhprrgF7?)^N~qp6KGoWaKil+r3^Sp5d2s|TNOzUgxD<UDI- zf#K6%PgVZdlzR=ovJrOzrhY(h9uoC!0v)Lg$>VJPa z#H!q35|NF@jbCbhYmAI6GYvp>c$f9AWjHfpR<;)NqdR_6C1!N_6&&9hYY5mjt<=fGJO%J zq1SEt5Pwc3`NT+ACzMZ zy$8W7_tDSv;L$|`2;#=#dR`bW75~-iFse8;n7Kof2!&&J-4wZs^xD4Mv=F`GPI}J= zd$P*zWPTXeE1;n#3%~Tp)Ll#d2u;oO^s6ps{SBY{;6X=6H7ndE3SZdYE)# zZnR$@roPeSFVDZHJHS>cK&p&N{r8vk#rM4!+US%ejBHEgqvuD>w)X71Qfi|DzI^}< ztHFi6^5taZ)2piz>q}N3H306kueH9M`haqxU1?2z+GHC^ED1<8thIdQV!odzB#4GN zJS~l$=6_P<_o*OYG6Au+`_qrK?`xKKXJav`6(P+ubiU|)wcP38CG2L^LalG+F}78@ zs3A-!vw5FspD+#IrHxKTsRF3ZXMMrf+{&fZXsk_K!J#I2$*0NLpu@2Jy=zO=MYbpA zDA9FU?y8?W^@QPSFNLji*iCYU$&OCFI?;Q_Tc-zxb28SV-QR1_*F&$s;*rDm8!MIUch8b2hEy|?bMe$%IU)1TRBjowt4*(xGxsdR`va~ zZvpMtL7-^03~Ta!49CRg&A6rA=xTdIujLoCT;w-*HZd4qzjWQl(Fr1boxJMZ07d)Z zqY#!3=$KKp=vYY(&H!gCee*Qp_kdb60%9azR^d99 z>ZAzQviI?Kdb#L1$6vgkV+;q-C2e)gY#f)onvJcs@Dj8g;+;m^*|?#LH(j1iaobsa zMeH6|ZKIfir}X*UgRHW)nSQpBYE---!!SdS_+%)7%c@P#OJmDF5W^GY*hlIq#W%t! zqMSdqwXP4=&In49c9}y)6fc@DS|Q)(tJGJeTV!uTUN%_;k%_rqYxy}toxSsqGeQqu z&RMm8b8V?%nueh)|2imOue0rq{sd}rOx%b1^itc+rWV9VvG$F%PgRBdSm^fU_P}Yo zG|tYKvF-+K;mhbP&yH{_VJCudG zGR+}*M(P<-lw!}6o%6L~QvjCX4s>o(g|M;*L6&c7^1~CRM}&SX0!>w-gUlI(se_i< z>LTMWn69)Lv}w1{NI;7CLc<3XFu%AAhJmYVIuZfq#Uzv{2)Z9Qs6opjgvd30*6`bM$+>M@jUy7zbXO zEq-g`bR0psd{QgvC~0dzCt~n!0oYMRMLB^nW)ZR2$ft^47%j<%HDwkMEL??Jg$J*= z>}oaWE7lJ(mbj!VZ5Gv3RF*;WZ%lF=t=tnS-Vt@7af3l>JJS#xL1Zlf(K9*QV&u_n zsO$G9dCFIju%v{Th}fZq`58FXl`pN8$ry%=vK0aJB5(>QD`P)1PSRMatZ8k z-o55v$<3xMU%ee>Y_Ll2z-k=mb-87DGPLJGixcY;JXdrlT-yhpvj7X+pd>|W^omJZ zeqRH=d;Av@$3>|*>5P#k3vS|bz%_m6SHmNUKF}kvjO}N!BisvRWYzFHAoc@2x<0WC zwX>VE3EOKv+Zs(BE5Qe4OFQki?HR~LQEpMZZhNfdgm~Uwq<`2=eJZ_Oa+=y&Cmnw0 z!LQ|=1g2~VG!Do>{EBpvG4D`hKbNLUeGl6mZ|A0sbycer$pt|vE}bi&j0 zm0FM$?~K3tKi{CXuO#g2ZuQz=7YmxJd0T6(SclDI2Sdm5ynz`ESYeZLw9UP#*Cya- zEA$?3R-?8%x;wHg8Js^4tqYpJoI_Jn{}MERg;4FhI;h91n&)uZS?BF>m#C5t`b6E7 z!;DhI$Ru>9MQ?hlFM^ze3i%|1qo3BCentV+vUL_Y4be_(d7K_R!d8JG<6AK%&d8`r zK=+|}YXD}NdDSJ6&I+lq;#nmnVqMWRdw>gaat#iv18E(69$K=DCg*jJxg7o+LAy0; z(FcuhiCq~v12|~N5F>_f)~Vs-QhMipJgmJX01)&uw<%b9H>}3?q@RiAceA?>Woff; z`ht_CS6n%vNWf5}cVEvgF4Q(o(OG%!INMt_YY!}UuGqqXp1jI7R}&}xEvI{@SJNrB z`&MVyUB!>Ps0ObGPug+x^i~9GOxtm=y;UtIF!=x*SCg_BWdsfc(P+f(U-jm{#T|YDHlcaQf%}AZv^G`2@zyWoBJZo_WF6d%K~G<^tBm z*ZsKWfcMg@MywY%Z&HYz0phH?C0ln{GEXDx0>>H^LC$AXU8tDB`kXEQ6A@e3<#(?( z4V-t`VJ#~nutXQ-;df!z9$Q$YgKdIs?|4zO>B#nuTU>#Q$typK10G=I0ULsYZm@_;OCSI z^PzRpq9UgH9s~-M9kxqUk(@2TIaQ00ZLK3k$;^1;ZLW5CFfI96dc4GduM~S_46esHtufj1oA~je$4uH>@oPlM6iqkZ-g$g=^c%_C+tcNX z(s}MC{5^WVjOQroM8bL3MBd{!MIXh)UUIH;uZ#@YBr6;3{}rH7?V=0izwSaqQJgDu zzI!XnGfXAc%Z|Q!JZcrN*@sJ9M%h3Fm96|-S~_bS&1u07N^X1Jc%;QbGB^dX)1oi{ zQ+0rNT@k?9-Zd%bFMgkxy|(K7v6%sBE7kY4K!_vXA<5`z)*+_*c8{WW7s7*-Ee}HEP4W;q6P&C)ZALU?sA7x*`>Ku0IA* zGJmF`E){A$bTa(vh#hLvz&h{om`|ML+~MZH&K;-H8^S8E#bib-S-=H&k zz!LlfZl0=KPc)j48wC`{OneqkemeAQztX;?h}OzxN-CW4eYoje2eN~~i8Je}oe}LN z1{8yzNwlBQR8HgHe;)f_b~EIu=~7^RA)++j3cK6*aBMxqc~rhK6zT*{5pbBIR}dnV zbk5!_FqwpWd2?$dnBuHIEZ2}Rxp#9Mb$ZZ>v|#N-4C`Va=6m_bLVVp1M7o%3N)M&; zqdJkUiK$R{QiiE9}!m6gGdk?ZJ8)4X*bn~!IfVG}OxKN*TF!|+fX7GpciVSvuPp~qCZbBUkGbsV@0Bes zH$FTSDTi`t= z#obvJC6cno%*MWqsgcMp#}#wl=uMn^r7o|4sid5JlCdH>=JNN94d&aCjYQ#HJ+Xw1 zgWSFKXl2d}CB_`n3q)1??V1!ky|H|TqkJd1Ou>6KF(|B1{R>_?-SRJ}lK)U%VXSt{ zt%K>6dF$%xjiPD@=*!FU8n*+A{L zm72;bxYZ72!fa-gsF0=qkTq}uy<$C5r=BmRW?G$l!L`MQ`f-JCMaHsq(SFnMUH=WM zg&Px&efN3;&Auh`%}-gqhQ+8+5yNVA4NK5PMGwo?sRdebsZma6XYyb}n#ufgwr^R$ zQDWH6dDZ@;YdIT#rH$(lE8LJCPD@uwBIG-g+q;vm+kjcab{gWn;kv!MlcL7T0tbTo z4K|z!bHE1_wff6#rd5_EEM^IrPQ0bFbyLs;m$I7^r z941mLr0o{vU(!^1sA~Osu;?LmaOLKT{no;Ch*h6%xp3|7NBpW6uJ{mOeXt!prH)k!M5gla12T;OynN~bWBL5T-!jUzm%dpeye}w^t1q?0 zBiuhvlt%$Zdy)^U=71vaI3tc7D7M?I3E7|(#aWQrEEIQbq~)dIoK$~Xi1TN8PZ9N3 zS}D=1V9U@FAB7Ghc0Y%Rue^`aJAgqH=TY1s@eHYZ`9jHL6OZ?t|A3Y>+Ib2k?vAor zTet!00(=UO@~&1>SO^W7AhlFaOve`=k|t+?;Av^|kj@c{FB%!_j%28hGQ%Jk3)}DU6G!=Kc9W*wfJ-Q*k`1j zl(daFZdsIhP{NCAJZmcmUGEETf{k4KYke4Ag`Q`R?|kj@K5H*iZ}g++mp4y1u7g@% zAp&lZPZ#)W*wxKQs(Z~-p}>z3D)5#s7R&b-SXy<-6^2k-wZ>Rjs0&hYg6dA_@WmXvB%koVYA(H(n2CU48GjbVs2 zYx7I}RqoD=g|8YYZ~) zrkgT^SqDUKuler?oVvaq%D3mq;Myxb-j#L2c_98U>2WwdMFrik*X1rhlXfb?hf5=g zlUSlg4AmeWj(k+i3KT#cS4O$ecj|XNVU%E%w$X&dbwJhO0dh@Zz0w93m}(3$!1KuY zVH~D|P%%IN&bDLVTPQXt3dWUqnrU35$0*#*Q3n5e!x(jy(H!2YCh zYU_8zp(oGVTW=Q*gb^fI_wuhoXcVwY<@oq<%1d4mW`efXzp(tjL{I*^07(rVjjZKT z;bVT@W9SQeeVDz?y7$jES6#1~^0BKgjGYvWiKwkR@jxa}W_@Y3b} zj)M#)lw@Qy zhJ`mlTfXK{X4l}clok2BR;P(uThd`q{O5P_nTn=Cac3+XFsLQ18Xt?uW?);L;ACH-ew*rM*jzTXu{1D*>fy(Wwy`Ee~uN z>2NwXz|Y$q#%J*6#M4Ixk902KXwR{~oMfMHGdI8rB&|JpIVG|;#>boGo6D#MCN9!- z5Iei-`9{Ol3vwZpeYJDVBY(tK(2lzHYL*~33xQ7c#h~lGo0aM;@&(BLhXeSpDSz@F zRWrs?&9~lLBep0h%aQj+Q-w;aXqqDy>pVeP8n-mL6I$#;g~1J;sSm&Oe-_P>W`=e3 zCPqfw&uUqpWgc=Hw{oHv<4Hk$`PvgpB1td7P>(`M+w z&d;DBh=1e+UyJL|Qe{=`X_CujEBAcdp*{GK%bkuBnoNN6rlVHu;v*FC^*H$J=&+cK z%PU?jCeu(BG~uaQzA!?)Y>{e{wDKcNgQjU?*Cjh>KUe6vc^QMNxdU~tFzY@%S7ieC zN#G0XET{gJFLtpa&oO$NFwj49=rZ|pEa?)m)7xoo&@t_66xikv9~GJ-b=PTHreFPH zh3^_J$~Q>?#$I{Pw5tbQH!S`>3an6Hh9fxA?m89L%+kvN7!-BuLVq@3O-ZsfkwAZu z+g8LxLnE8roe`f0Tevu!n%j}Lh7{sK0Pp9~O(_feX&L(;F7?9lX5%F-_7{Ry9i6$D zWQA5-4A0zA!%A7&Znb5)UOSaH-Q$=q>oeYvbpr($-h{3v4GqT1`= z814Szzf9z2=Kqt4h!1RvGo=&_3RIBt#&hgJ&h6`Y`%9)CZY#2p?b=s%ImS!83Q~!> z!Z3%3j7LlC*fx%@0;f2fz{ixTXWoi+`$7#il9r@p&*2)}te6_9m1Aqm=a>jU)2cv5 ziR!wH(7Lbaw^>IdbbpMn48W1~x2btv1#jXNUUDZb_tM^czmwJ_C*q@#JV9c59m9fX zYdOJ!;nVHnQ+4&#gln$VbD~qw0Ev@FD<|S9!>X3+;U*Yde~xZe+MJetM7U0yPvLwO zPPo3cr|n^?U)Aw0ymui>>M_iCm@@-Oyf*$V_k32=<9+H*!kpRlWQ4t+Q$8%`Hwu-G z>x;A!Si9MsB|1O8(&BrCiE?Ztug5yy)_AxG(gUkIe|TrVrz^R-x*}um&rzpKy$N!+ zL(MDgcFawe*a52pkpL|Z6sEdvknS>yAr1dAW|XM?^!#3Gcp{mq z_@HPbvGQ?|&SJcxn22Trk7+$zq%1d*VQ@gM=)lJ&roPip|A}f|5q%xLQe#~W&%BEq zl_Kct>gYg&FDhA(_w=nW>BT$+&i7pe0XK#P2-S010pSHfE7dju1}_U_&(D^}t^spb zy(!4ft6v>!rQH&P{qKtM$Kl_PZf7t7{+r)Z8@`jWU!^!499^r?0;qKo(*fjGJ3p?t znO5B<-+aP3LMD|-Jnq4~xgy-*apK`qwgfVs`tzBh&Oo-BO;STv3*sH3_6kid=h^G} z&DZkK`bnw7&CEI-9Yr5FZi+ zo7cm6*K@N-MbOMhw1`EK>{FQ(37L34`TDROB3p}Ib_WaD?%l*#WyBP*muaE*W znh*F+9%biTamXfHsBnu*mVDKz9p6j2FspL#cgnH2FP7P|CoQi>DDTr{tMm)}K<>jg zq+~pet!OoAGw|e!zoQ}VH2!4GBY0n57jrtIHq5PZG4Q)cO~y@C9zI8wb#a)d1#6l z%*#_>zC_TaxZf|4?%#i=7)R@pt5-w$ZD-Rj_48yY`D8SgYAW?L&6xS~$(Qv#8i>@j zc$N0;;hrJBL5T>Ia1AS*j5P^LvIhoSZbTGfwzBOlL$UAH&N*!`vXp-i(tM{tP4l|PtQs7wh`RW>kWvyaA?C8=e2)0aXJlIH9Sbe$*hl<~ZNQFh zb7O{p1^?t0g+a!{Oi`v|bX-5QfBeYBq~iLG(+6{;kYPsGAT_ek?YK3i!T}+Qo>uDEXVaeT+IH24qAP8Y=gAU1n(;<+beHTmZL3YeMTQ{v{A(n zMDc9j;NM(r_xS%ZSF_0sOeIxkz#h5ibx6dx_`H%9oZ8bzT&#H^9|eB+2SURn2xUK7 z_$Kn9f}j~(|3l=IB8UON66=;d=28I%^BZ~3yADUnP5Sa9;r7-jU@-uvm_==RRphBD z{;})FN2v%!O9Ri!pX4c(2R_l+yy*VFfVm@Tnq#vn`Qj^8ZeaT3B0mPNyQZ%$nAl7H zTIovJaj~N6lVDFTz49a&KOHp>cjx5j1s(5qz@UF$75L?RJsBt>=6dTu6Bzj?gzq=Q z8eAHRht9yLa)PvKi3d!egI2T&z>QP7gvD?M;SFfOn-;Fv&%U1$-YUhwX z2N{t@ld7#lRz#BZI~V@Uo7Tm&Kh6Zj=7s&gGQ5q8!}Z`4Jj!cE%^Xhkzkh*jTwe<9 zK!VF$>pH8l9N_8WO$Db>=DqSbOP$E_IkfzIG3R1+vKkFIVUtfURMWSek6;qJ%&zcn z?TEkH>{KSA0$%Z*+!Y`2dcB~j)wMis?)yEHpg}A&3pof1{H@>`@$dB3WxV(c+=%Lz zcDS#+6AY?VGT<;??FqP-lC>#RCSanhJT{r)jqdt&yM)ONzj^#8H>4Xs)Mar)^MTBc zL7I(u%AnuN&nohgDGPGxjwe7)+#?pYCJ-&pORm89^(NX^T!qq*dW8G`9y45JS4n-O zt~Z#1z_yt1uD}t)^vXsP!ynsP7It5%NWKNG>Y)O7HFz>_si@kuJ^Wr$`LuENe(4)B zTS`+Ea~|&rI{1x|rvywA_Q86zhSg@o8qW%shx=)Bl{EzgVi&e*li^N7-_$?eRTp&- z!5biijw1M~(|1K>Yk4^Jh=DY6t<<8a!>2zvRJtYUF@ zMPvAh&4t*)Ab2(POIzt4M^?*k!e~(Op~!78zLXU3n`!=+Y8snXC6tq9M7@7X6uv83 zb1qhC%LZcZ@Q=~83*GUNDEm71tD4!lZzTARiLarP*9sVR%m`4s^}DaA&CBzo%b3%i zi0v4{qitI>x~EjkI6Mgctzmys`a8UnnI$pmQo6-tj%+*E zz$~%b|D4Kgju!3GO)JP_N%QY#Hj|fl$P@7Q1FU+i?dDl}y?8`tN5B>g8I-uZ6? zd0s=t@8y^gEeJ~v$9A_pn%16Y>CFsi>2k8PewRf5t>pi^xX)*w3Z?Bq{1utiJ+Yde zP61AWU_T}P32ylj_x$|cSF+l+w*UWCq&U6sH)`kq(1QLi2p%iY#C`HSrtRO=b^y{% zfwcJlFomx9*5)7Ote@i9djIc85F54Oh~ELqq<5XH{Ji4S9gQ}wV%i4api=!m jE=^Ydv5)_9X~F>RT2ERwg$A{-R>MHoLpArJ_hM-L?*BM|8A@ZYUim*G!O zj(~3X>#E~JZ5IRrw*~btS_}&=1p;vs@kmla&BI`I!rMpw$&C0$-wUkVuOuZuzAkns zr2S}3Q7@O3w12^zHj1Q>^(!JMG${>BtFC=0CvTd{uB%^S9aC}VG1Gl3rl-M{_vzHs z)k;Pyq#yeEcZ)GBh`7*y2)*6nGnubxz}@FL-!1s0x5cN|MKI{cj~~wX1b;t*TqKnN zA%8y|Bb=0ke}8=Q(}s~`IJG8Gv@rDVro}ZQPSO>;cI+0(zaLkAW)6;WamwsJnC7+I zbbmi7!V!%|ufr&>x6>iI&Tm|tet?9oE9*hg#B@bXjou+a)WCmjV4$NE=9#ZhNtJfK z*p)z~)*abNG}(D^$&f@{ZEdncLUzt|V!KaWQ6Kke4W_3tSqjk^B5Ai;mGtn#4pli2W<72nx$50l7PF_l-{ z#*3Qwf0qS8Iw^3IgkYky^L+9VyYs`^Ywi3F(Z)Zw9t>A9;qiCLI^AAo%}ca>F(|6n zpV!sw?DqG*(#!q3-#HWX>!)wOU7w>19>}&I7#l>IEPNF~I%#_ft~piWO*wEpm={-? z*~%YMFa38#R#Y9DHrLqN3q^M`^so^X>HVUXJ7W)q>*la=?ZjC){(b7KUv}5q)16fcysxXWs6RKpQq{yW8IbX{fPjFdg(2b zi{++caU+j(sbji7xI}3AV*{;08J7eh?&E&doWE<+)ySoUXEHU@|L6eIR>u#kKCwE7 zsl2^1kz!+&A?{yy(atWmA6O=SzuB|!vLe6#fg=~`Zxhajje7q+%Gz*r-QMYT)41p( zI5u!KQ|68PL83LA4$}FVtmi;&sf~h#1-*~2FPG!*d!GGNjg~xg0s>m>d2xZypBwX# z^P2xmR|@X8Y-xIVofoMlzIl2ZZabw)nPFPMv`1p)=tnrqP@WE^Y4f?CpO7Dsc5-54 z{(`LIsw`7kZdarK{>jb!tX}yK+^uUIa|}vJFW^)^mBb_7zP;hOsXv|IP}lhV^Mn4+ z53Z0#NW(v_%Y!&@#d@3l5ra5({ris}-?)U1KE1r0O_|)#aF1250zZyjU2o^}5%Ncx z+#WWwk3mcsW^R)ToV==mj<%?tKA)X z7Obb6Uh;`+Mh-Hd3~>DGk$|FpA<2TjaFjz`S5ulztD_TFLu+f=%z{7K;b?2Z!{he- z;kq@(r%%+zi~c;tXUirdBl~f~Mz_os4S`L;hiz|fkA;oh(w{0*=y&RsX>s}w2}v-) zEor0kvs25_5+a};@UeNd*p!LM_sz&zViJt@ry3F6adso$uT(DvA_^^k6$_O6& z;P-Pp9wcvCK>>cP*KSj149oPNKcO8R4@I`S?+SSBFs7uWxEk*NZhVe)^{RxIm(Xar zLlkVTsIE3ecE*tM*}hi~hzJdBOg=w(ai%E@-s){d2iqGI)GO z9;W-Q%%1;#SL^QmkKuxK&Y2jOpI=vAd-b3l@Ao%`q&D<@u@G+3-s*k&GN1 z?WJ<&0%yCtJodk^hVl%9!#+Q&5qh~m*fWzJtZy%hU7NjjCyDJboM)9sN&5RTZ;&dlZd~gv7J01N+$MXbf1W zD>Od%>owcBN4v{c`1$$GJs&-~s*$VnvMqulJ4uQcxiV7R(c7C>+BY#->y3uU*2ujN z?iIcD{0g4Q!N&AMMa8xdf?MBnv|Fb>TmAex4c>CFm>TsxTazPAgr5Ggm6g?dVR!bg z3JG7M)6>#uX=x=0Pvm4}IXyOvD8+n8Gcz+`CACVIp%%Qcb9vG}yPShvQ)@(2bCUFy z1U(~Tdz~YyBaHIxZmXBA_Bqp}LBTZyr<0n%T4j0W7AfM!6UCOgeC}!Fe)QKGF`bP` z-S->mL(}K3Par6B6?GyppEm|fv6IX?Hu~{c{=P)=JWYP0cC^)~K{O&^CNx&ea`+RP zeQZo;_Oq}sG+GYK-+!Krc7$20NlIcMx=0@D{+h0|8Oqz5@p9N-n?MAR-L>r~Hd(U6^`+I(w zykd$NE*GY{KIxr3S$cEGO5if$c_StXhhf`K+MehD);8Mgb~=9BVSGECGO3^R3cP5Q z5)VjrCs5xG%?%ewIOAV6H?K^ielhkR!?9!}?ofPLXwWb)-VB8DG0x-2NdV z`X*KN_U&6E9&%&u4+zBO=4PkZE4$Lt)xiD?ah3O^`y+5tI9G|o6g45e{5@mi&w51n zTFVyQR>jFMb&6_n(7dw4vQW6=Z$j}kxAa-nuz{Eh|(HDs!$&n?Bz zmiZn(HLtNc-do*F7e9S8vX+y>icQLSPdk0`IA5$@@uSd7NIopHU#?)2e)`41%K9rj z!FR24p}?Ytyr+s;xDV}gU*a?oaxOd>)2yek>teu{FSoPzB@Cj5gAWco5CPxJ9`6bA z@)AA2j1$;zsm8w2@pOF>C$&F>N%d<-7*A7kbAO?!OeHD8amsi9n^dQOS*=TjcCm%W z{D&vXdV1jyN6bhkC#NhOqPgoTfvLMteKVZpI-!|WThL(b@Idr)vxW*B5g zp;h)agZEYN1oRcJSq^QZRgmf#9T?uzD5t9?#ja>yr4|`IaT<5;^R3X^A75nW z5eAMGLw=D41_s8>n>P{ZO37u1Qo0xmB!)gJIwlI?BsEW0ltQqu0yCwc|pv0l5Mb3aUHtjvypjO?noxH#e-Dk=EZ zoSz-1jqb6qvZ8XdMxI_My+Zs=Ztfe6jg7;lHYBhbPTTVehfI9t=H|4Fj94t1c`c?< zq87XsE*rlaW7bj&y!Y+rkjT&O>yv!V@7P|xd`T+e!D-PG|MEHsJLA}I$k01Gt{9k@ zR!#3l_g2RU2nnA((?9`SSF5e-;^M z*w!b0&YFLXgk7)Ulf-k!!!7d{FJCtH_2G?-jCdR(R)C`x4_MSL4EeS4*>t-=k z{~Ra}&|@%-wA=i%78$mXKO4Nl!uWtp&*&Z*YpDKsXy&6-dXJKkS%Kv(bT3@%u)62V z^rY86fBwvw&@)_SM^WXzo~IrA;X^0@j#RKzyi>5(-Wp`05+3jvLRg8Ptl75ny53N7 z==k`E`}_Oj^J-C*Y0RNM0TR;d8A3kgt zE;KEC(npx`BHs9<_}dbq$C9o*|BZfdN zkppMOhIKxb>b_j;d*EC_0MT9%u|(V9kL_)?)7%mf(eqSvvzw?Ql8}(ls`V<}A~#`O zhXToE-uX{La;E)6)o0yu`-ch&t#!V~-}4Q{dk$AuS0nZ(z40LPYP6FU$bVV@j|cqb z`9|OG?C^>0ND=1R+S+1&YVhN;*(mX*fq{Yfr(uN)fDnJNf2Y;?cD(cF7F+*suAqplMV#`xF1JK<%Ue^E?3kG^b#w{77%~kq?X)GVaxM2EIdT2tb35Fh zz=imX0#D=@CAgK$R&~DVS&@Rr&L+c#>a^8~pckW#*r04NyK!gE;Q<_=caVm4?$9}f z&}zHwU;TvQGH%!7zz{1@0npZmf016Nd3(5ZMY?<#vx{|IsN-o=tl@03OwcowI`c6qK zw4y>FoAZv&;MVpwFEY~6#ijX4vTso1^DDFCl`f>>ej-WUYn8gVJ9{Wst#o0ybm>w~ zRYO%}<@CD$dG*&EZg9>APEK5qm&|ynfA#d>tk<85p@62_^5CDclC0CC<$T0%$FKu{ zJB4n`sHC|VR7U$C=y!~!K_g@#*XkEhx&@WyhswIo0EKIuB z^z-M>th0^jW;89Gm?^Jiww^;CvkrU!jkAE)Wk+(oW+V7{@=-+rvKSho?(E1WZCnLB z@d4lqr@a;JY-$?7$&Bpm8e&6{%uGy;(M+nSN>P8dn;*Z*!Okw7zy}tTqxL^>s(d&E zxb;nJY|!`b%GEmMRJkaKpd*UTwvD~oU9!WD9^jVDI%vnMs9*Yz?-AZ(z#!OB@gem4 z<6)+Pv7evYh--(x$#0$QZ%;-bL}sQ#Rn8r<9#2tEcwtN@eAJC;uMEcfgfz{Kb{pj1 zO~X7a3!3fjb14wrW!&nUn=S9E*C2nbZ`6>~=il^3zrG_oQyujr>yx!AdU`pPxvCJ5 zW%d)-+}+)G)+VZFuJVbT?)-Fgb8Ce_*=Qv(>M-2>O3;DdpR%u?@mR`C-#9y7?+VKm z&_Oi>J8sJ(c*px%>M1;L%P>d#?ZsYaa`58>c=SbvTKN4ll*nQ zVP)vKSz`M%RZRKHKnWW9Wkkk-36549ISC2L>`M}Z0_(y70IU?|Gr60y?JV!`^s8JS zW&NobAJ;>*lKFK<%<}Yv-4=I!e0;2ZV$J;h{e5=&Wl#wb(tl)gFdpQ$n!!s&q(hk` zDU>mBaaX{|3Hk9mC?G*NZgKc zTFSWDww}jkIYNOpnyk6X?Cdy>o1Nw-$~&TYQ;g5T8Znp1at6>UcXY_kwp%?ZM>X8h z1aIHQfcy-r^qkxHC%7%*p8H8I+nYCUhKrv>ai9G(UVz%+tWxUfrBk)P zKD9m^d<1yMnP4ErxH-tGN+ayL4zyQ~dpg;m*-w>;3W|#(`SJ6oU73)#w>Jxk>rTkp z!B%S$6hm4O5z52EL#--Trb(ae9@*!4e{pAr7~syfXAVWEWfOAyiQ7yF1w&ou{eYss zKP7dN-9|_-!#Irx*3?@6o`LXo^P?V9Z`VI(B75s2k*D5evwx=C+tKlObRC^fj zat0f)0*h1i;<9pbZ<3NCll{-gssV2d)Pw{UUQb) zhV0^Wv}1)$&V%(J7&rGP$G3O%3YQQk3*zT*Vg(c(&R4BI=jNm-_H=b!Z*6U@%D)xj zrp`O-kSyklYPr~S%hamuxVa|vUigX5oaS0nETMZ(C5&#JZ17W{%Y1hu)L;~AQDU7Y{^qjLAF4}g;}m-IZGOkc$1LVo@Tgl@@@oR2O{cqix4850 z3gzF-yhp+5%7emmcWVPtEo%)a0{`&wKV=Tu!M@e?YMo;GLNxp1V`^l<)JQAk2V_Fx-uoxX{^zF(g-)yWYaIaSriV*a9z@5*rS7!x zjt|YzR#fu6$wm}l%*knTq&C+c)*aGb2b+Lh8NNRI#C>V>QL)vmFj7wHZn& zDcOl-s6T9`ISYVvVcAysN;&%7yVSgE4L{g+AYbNxm3JNZwM?JQZ(m9udXu4QPeW=Y zVUpCcRzr(`uch{jIm%8YX^INtZ>?8HOMl$BzDw%7i{0WC4~BblOD3hFf)v`lrxRya zGv41+a42Gvz^FXJ_iA}zwpAOAsayUfi$%ZssnorD0rPMB>t$f38k5F!3`=*TO?H&pWUbtTvUUtlUwF5mtYD6Lg16-GEz?0 zlA4Fp6M5*9vS zhC{$x%AZ7I^}@k@|NNyf38@}-?CTs13%PQe=QV*kziPeRJ-ob3pwP>9z0UpiaR(ZW ziQ|MSB49lnf2t8M95lOM+cp`aCt>V^$C9f`BmsReIM!MrT`?J zq3>>tI)asnNyXmtb|8Z?mw`G*$*bdfKSyHJs4c83f#sjovm@PNz-NEsKn1?l1( zfVB>_=I6my9j|FoW!QVYHeG(_PIPqiZw~*%>x#)@5g8eb)lI7R?_YxC5?t%O4?wbM zDFxH0(qjWqttkK~1gmkbYPzC;<8QnmX;Qy7({G!hFqBKVmsgcfsu_(N-Y}s6gvP(_YDBp#!`0vs9Ue#-%`psXHpvDNl;6_WY$8 z$Dz4Hy7og<@{o-Cq&LB+yNb*U^NU3t;@swHiOvE8*zS+Cl&J%Nb*1P#FJM=tiJm>4xYLn{!e{Uuha3htIp&y3c_D`h{xGC>#q z`t935^=u8M@|YV7P0e`X;cyJ&?z$_A8B(&gW~TO9q(yat0Op!dIThIz*QJ!n)hDuz zt*5WQ3A|@&Mh2EbJdcEy*86#}ZjQPGI&hokL@XK&0LDKXofepnD2$$n4hi;KLb(@1%5rYd-y>J@a~%Sm}v=xMwA!Dq!$dqfhBfh#K1?kG(1D+ z&DDbNZ3T?Y>Ah!bW@h#YYOU5i(;?tmsZ zeZ1)}@CVnmak9d~!uVJ>JUl!zb91I?t&$3{la1z(h=|trT&7C{9<#u@L-&pT?b|n0 zPX|^fz{d}$bXj0#n=efRGEJ+*l3>zf76;|Q;0T3P3l$YaW06$CoF*+;Jw;iGBAz$y zAt!#Lt+t{Vd=F30X~>W5XQ#)7z-^US56JGjun%&Sb9Z^|tz2!`{EHvOkx0s>Wv*s4 z#CDurR{1_3aif5FYdrx8P1Ht#!{)jY@$}&*33poozUbK4*shmeD^!{~F{Z)SH&teE z_3CZ4la(57VUhp9ZDYuFP(?=!u}`$boePAqkT`s*si8yy&(Ffq+*6d`=;GFR3s00) z922q8FpJY~+#%}BMIiVA#7g6Z-jBezBydm0g@klyg8&$CYMK-s7HX~FsOj(HKNE5z z{4{wjyn^f2#-L&PXPGGW#eR4E%Xt2!ZRpMmccwm{tbd#{sU{*K8t8d%%A1@nvawem zbjvb>MrhYIg2Z6i@-8WQEb$z5Dz)@2emQ9YK7j{(1C1n+wT=mGxJ_3i2bopUKqvQOC`B z9zrLyl)VQ;nj8}dLI61*UQZ&(^ zd+?@z)m^}z(u%z*B{mCTK{)zIX7?9k#F113M}NGXPG!k({hiSG9dvXeq?$K-wkRxr zty~t`_eS7(I1+2pJ>dfu5X{0%XdFRy_wq!wdt5f^>?%}Vv+L`(cucT_Tvx*DYfkHG z4kDEunz#@i;@&i}`LVPN%ly$~tmV$kcgGu2KkEM;d*HtU#)wPccc25BS0RB<3QA*J zRJrRkEghY+#>Y4x2GC@wn~7&{2jCc@9~|`xb1eJZ&xElDlXGDY;~NAWy!(~nq}@z5~TqA936&+Fg7;Ex__jTcLsLCi&|Nz2QtUXD3TOyFlHnhszoO6&;4 zZ^%qO$E)SeTnHoRnHPr(Q}r&C{sA7R8A;IDDi6xKIy(cSqVW7qcQri;2DpP}$<@@e z3mxaX$ttk|R=1j(?z=Aidc=OAnx~LAIqE&HJKfXu@bDP6<-HsLtTUyE2R^u&Mkl1z z2-sge_gYGJX?i*XaM&@)z4}n%}aom z);eE6Ry6!`+u*M))PR3kX-ts{b6gqbq7;6L9gIiQmZhFOXB`8Gk_49C2{zb{mRz0k zJI=MBx+NWc4|=ueArC+_>V22LDt>$guyY1j*~Rh7yTIq>Xe;tYO;-d_3OIi195mDg zRsznlc|3J)VDJUQL`g|$VhgBfn~PbF#ldiL-fI(8ZmQJKCDSk{CMpkP=zwsEPeO79 z0naXBX7;5h5~QF+VRu}pDYB=KX{VoEp;o3oUv=<*05^j`02FA>)2|-(((59PwCMnb zFckg?u=i9wi*$@QGfE-y)r&IIayD# zG<>?^atQl?m&5?5wV+eT#j>hUXEV&|6q#LxuH^-aelah8(kBhKwIu+ZInaAQTt6FB zI2xywhyM+Xl%+o?)OWHelh(B@$5DG*v(ntaz`&Vc!U6|*$ypELB#o`U2t-EH&6(Ct zQ?ABXHu!C0XQ!q6!`+x7aISE&yVB}me-nbex`qbv_{0RSe$oJ>gzptjrV83XU%}&k zWy%h}V6kDbG_97o2H1j3g+YZGNwl@;e$U1C+#0$w`jgJ6UHJBZy=d9IQ2i>elAj`*Djm@zezu8+64sWr z%4|P;-DeySeVTm{AL-GFi8+-qk1Z`3fq%lMp@{;LkVs5S>|m(=%zPkMh>MGW#&_q< zRt*T-*@JUgD`Vw&z{{%+7MiqP19A4-Kn5-uPzYVf`=U4$MQ{F2o@9tIfie|F%r<9| zQmv?>LV!w$e~V)w^566t^1sisn`alfz`Zafg|0Fr#P#3dpNTYkWL>^wZ_q^6ze7WR z{ySa%4?{!$S9ARTDzCeL2Kx14j0EiGS(pc3LI3J%b*C&I$yw2T{P=B6g`(QR!DMF3 zro4he3<<#i3f*n&?X>|}pXceb@mnI3UfsMg5EDe=3cu4T=(v}c!&+J-D=T!sg;5Q> z$Wyb4tz&yR9Uby;Y14>gJczR&w!#Di6I7&;ET3^DmXd`9@jvufKt9dUEyu;g#KgkF zdY!GN>*&a7Vqy~AUKSYz602x-pkBIA`(0XEG{B9}W8Tx#ORT9F9GKrMm9e(Y>Y4RU z4-F0NPvnq{+}PdCa?xh@q54DhJwzjr7pY&3Cs(h@ZYL5%C-QM4qF)&EdlP{eE2FO_@ z!pUsHXDT!#gRcNNECE6;YEfod!;n%t;_wYM`v5#@_4415BbC|)M?IX$$;tTklLkcW#N?ocm$^7+ikMhQ|J<+Vk4HnXi`}tlTY+S%OW|9PIaVH&%E>U80r}UC#w)$ z%kAy$=ote1-4?|?n=><%D(|YBk_DXZ7wcuLRD`Vk*z)Aqld<*J(TV4tRI2q|S_tuV zlyr0~m_OVSdv#h?>T4adnl6yHbxd1tU=DLnynQk4qMcm>6CrjHAN322&;kPk9YNeh z5KZ{CdZ_GjJDs#fd65~BZClxVV4HDki5f?0)hed;Tk;0+(9vB26KO0H95Z#w$;qJv zu^u5wO`A<}_?a(?&`6MPX-GLLt#m+NrzS{i9f~*b0-wFZS0*$Isb+TPe22zxb?5ef z4f=iC-KomxT0aM!b&gqMZf$MG$-JFBLm;`;`A`dO)NPF1pEWWwcfU4k^|iQopjQ4( z8u41UZ*zUcHFlDct_x7xf@*3+peH~p@TrW9iuyYrLr6}3Ewz73N*ER$!9!~XO*!Jz z)ySDJZ&a2x*9*^O1IGjFsNYjmQVIs96~>TWCnko6hhw+2wKa{6>3UACf|C6bv`C17 znVFda`w1b0a@+AM)9VP(8RLBwLHL9Im(zVsFKyh6+bU22><|7HjRe2$JpS4~xT)@5 zs+n)|{gZ@7BL_^*xE~M9t>WU~U>bRzLi=;6z}1|C(b2ZsMP43Tp8nm|cwpeAJGR*) zE_yI?`TE0$%n|9rJiuUStUNsbKsuVKn9H)vNJB^zXhc`3?Yxcm`;VvG1dZXHk*7&!*pUZh15k zD(HJ|^H=sEnX-OXm>ntUO?tBYKEb!13nE$w?Nr zK;UATFwE;ga%Q98nz6LFKTI^K1qP@4{+Ij|MYBLFa}twei3)TjsQS^);NG7 zH(cSA`n4CtIG$tn`g2HLO(%!jF~~^N!_R9~S5=uncip)K_J$D?1WJ2;ya3f#zyvRD#L8r=cJLnvaKj7xqGF# z@HwQt*Ku*dpn5`L{*so)^h^pSu7b+T%eP)mfR7Qr*xueIASchd8VL%p+Wqg4d8Sua zbIB5fA!)$@+P+NrYX=im-$ClB#G-%q$i-YgzxAhz*X(Q6$B*$*M}A7l<~O?9x3w)9 z=P78Z-fG58%g3ids5Uz@1KX_!PQ`BD{_^8qcHKj|+YAgW^_p=4nyr|ZCB)pR1lgBX z$%UV?2E1AwGUd~43*Z0qQ-&!lEG&D+Bjb-RJE*Tb>)G*M$C64xP^b}+tLb`IGAbI( z!zSYnQ1$~rieO!M0)B7cF^y^N3H2VO-vi4xdUDCW3!oA2*hg3}C`h;I>6!DdA_y52 z)dF3ttTO4bVf+FwUGZblA@$d^G~?5wT`idZBj>gL5*=n*};D-^iT1(j&(FNzGjxA z^k0;#e7=>u3Hil3iGqme@^ryaGS!@h0w_94F%|ly0?7?X{d#$fPp7rA)z=qJA%Jr8~ox0<1U&U7NUgh`{d;4+Qja&s)2$}pHieYH8Sg2L-C18Ni(w0 zL^fLpJGZ*KJUc->9lg6cAYueVm}a zX2;5IO6iD+qjlAFJZqo^X@8(ZEJ?`i8o$FN;K&zQ8ZSYJ(Zb|G!E}|gx^Ie!0?%M7 zNrws#H6{WkF1E(BLkaHh(F(E{mWG$+^Xbdi#!@tucFZc&BUiHH;^Mvewe(z zpy$??o>|p*wzbkeJ~j5`#Cq3Kzg6rr)7&&s*xp7* zpd^5wZ@;*+hd3e`1s6kZ>W);k2`@cER;M>;no#rtaTe6SrLu=Z3@|BE#pdgl zmi7Bi-Iqa(;t|_jotV-T4Jiy0g4@}naq(*J+NGiv*-)q|JilyTZ%Fv-URhBmiH)_1 zxJ)EvC@52%t=IYk1+0GD#wO#&00h!WIsq5d^7SNUt8=3j5~>=V<+AIqe*F$oQBe^$ zbo(8BedT0lRBkNC%sK^9zoGayf!3FW{WL|mMAU5^HKx!xj?)##A!B6pN!=lMRC!`H zXWz5@2^NB2AOc*vsjEwl3^zR%mK9L)#5oDlfF0NnRX_d@^20^u*N^ts^YsqGfdhq( z9ThuiNsQ&1LwWj}ohX;)(+oMAfymxV`vzBw0aC871>vJ1-lEn4X@og(GeXdf^$idX}iWj9Xaxp5Ul} zZ`$SX66>wkG6@vWRPQ&^`t(a33t2Uj@j~o-_@>*dq9hL_*!%=@n~)ysIb-y1{?aFlR~-9W&jIq;6Cs7tyV z=}t)7xoPKRg}K|QxVK|6R~3g5t2#M7PTKhP#*xLv)v#3n2>~d)V~_z8gMue|s2Pm? zsU(*!l^K!PDZG2fn5t0+IX*DD_fSr*c&RRT9*Ioz_UlZh;c}Ij+|Md&eKVVL_BU98 zL5775`)UhmWMgZqXldGc@jLCo!NE;vCSmEDfyw|UF(ry^o$7_cWEHpx!e#Wr9R>zd zI3#{Sz0H!x1T=YA_LnseueP~Opm%6c99*g3w zNl9sGK#*fg@7r2hhOz%C14KzDCT6f*19cFJy5KnXhxquc5sS_0gXg)_{A?l08DdYj zy5~*&32)qp=7ty;SgoOt3iGl=Gx8MO<%{o$Eu2otc2!@mpIo@V@?4})3!v-QqzbKD zZAU|MeoNnad)toJ>+?Nxa4kTQ0x;CyE&nmr;zR4fg!`1bPBvr!UP4#E6ZEZFuOOiV z^OW0m4`vf+fP=Moftt)6@Pr=6n27xa$XhVHJ89i!;FOq}l7hmaWO4}*I-rHoadGue z6W4dPiI3d^F3^SLBd83YfmQ8XkkY%S>^})3KNds*JNI{TSC+p#ddJhQC90tj?o_%< z-C_EpwZ$g##yh!8asKPXtOd*CS&_rTTG{(BF?b1N#4MeomY0;f-sw-8URg#fG>{1UOhFBCe!Req8 z&_1nIE5F8}U-b_c7Z;52KYvUN7#6A(Q`G8blGkM6HZ;wfY_f`q8un#&^ANI+9gnSRe zn{|~=7}=NB1$S7ir&DwmlQo|2MLfBoq(={R^z^6)?xSAdup8s+Iok(n_J>iq(=2Ly z#pWz2M48s!x5Vt*jUGRgE;X>E!_0n@G~#H#CASk|i__=8(Og$VR5V7H3ytV5S(rBy zMTB&BJa3ovWpgLmMgX{#;%m8U*+-(_pc+-{P)VDtx!Fp;D|dzeco2lGV&Jm7G=S@N ziphFh2kjNBPRYY!s=XxL$av5#QOuz&ta(d@O6vDIU+>B+A}0bETrcQ6jqdy7xjp|U zk}Z+nA<5aEEJ9jjf7~VBF0*A+z;?6e<{U4v1UT7I>k11W`djtRd77}8O`2Q+_{5Rh=dwTKi z*_w%zloY%I_{Zo%WT}#y==3!VO~k2I|I3jRy!rWmiJJTGYyZzDtiZ+S6%K0fY@ajv z%kk1xJ>ZGHp3zi6G-cYKx9!X|Np(VcBT%=q^@|CqdqDdIhq#0TJwUYo@S{Ut#Wrnu z{o`8*&Vvh8VB*ej?x@7oMz;Q;buph!{lc2RY;Q=&5>pxF5dJL1h=5Za24X|fh5w(E z3B#<ivRnxifZK7x3INN~FZ8hqB)t*d`(A??UYJ)5AFdQx%%u%}rs1ZkaiQy~ADGwSC zm$9tfledOB*APcX6X_T&@We(wx5g~)5u>S4VM~1{l5m{v-HzvE&Hs5IT}Ceusk>SG zcqnOiSrG2lUvKyMRu$bME|$l=s}pVfMQE1Kt2QHS&Bx$=$!Q{ObA{)%a+F?pxCJO- z*@rr@)XBgVJFEC<&TuHY>zVuhzN$u-#kQic`U$qShi>1|_{`(-HtI2h%Ue9fM2^P9 z@M75yqfH+dP|K#^=;OX&8b7EdsHJqx2ZNzE&S-mjssI)WwRY&2sFh>=1&T^<7_Dm8 zv(eP-RBTlb%Md6pm?gHtnd5~5%yn7D42{8l9=S3u=EBWMRW$j#mXR-o*~UtF7gFX^ z9t^AQYm(1jSkwAib0HP>EH0yXK-qw+O|R6>ZZ?){6JgJUV@=189vuaYF+Zg$o6a%u zQAus~?r#FwHF;IpE^vz3(0TiK?#4H}T}hT}UokY@J`6{3)UgcaqH8Uw^Wo}ZJaPMU zC7_ILJbG?ENGmkU=j9BxYjz;dkxFnsDw7Ea&IF_#Nw! zQkgJNM>f?_7LSm3=-#yvjW=ByrO9nm5A%If?f_P+)=9mvr#(@%x@L3mEnQRi^##L1 z>PfRA<9We5izfDl8yI#3w2!GtYM9#Ow9i`ITjMt?6HID&qDWSS@~?I;jnS)@p6RN< z>O)?zD9v{+-`W&qlhEo`W~-7zADoSp(p(PQ9^zeIU3RCbR{LuMm5-eN&K{8SnMGbm zCn?oRDk=p3NoW7#3&{WVp7Q@6$>IN$*Z$W!_5c2ayw4l|Q&A*a{w*z%|KqdpMhaf6 z3f+IdoUPc`+KP#TyswLTQ4_j3WIDVozJ2Q_3&2R!r-};u^78@H=Zy#$l_tf$eB4~< z@%BI;!|Wc#3$j-ihF(-OWuXkC32x#tva*Lc?BGVD?{>VgG#8OUFmaXndIxT>sT-q3 z7}rI19$;7s$my-beQ8P%-fDW;M^jo-@_Rr64GaU|qyE1Ds9SJN@28+XIY+CZX-~JoDrSUj Oh(}V2l6m)y0{ Date: Tue, 7 May 2024 21:51:44 +0200 Subject: [PATCH 2/6] Update instructions to build on Windows. Signed-off-by: Camila Ayres --- doc/building.rst | 107 ++++++++++++------ .../dev/desktop-development-with-cpp.png | Bin 10770 -> 0 bytes doc/images/dev/path.png | Bin 15062 -> 0 bytes doc/images/dev/visual-studio-installer.png | Bin 16502 -> 0 bytes 4 files changed, 71 insertions(+), 36 deletions(-) delete mode 100644 doc/images/dev/desktop-development-with-cpp.png delete mode 100644 doc/images/dev/path.png delete mode 100644 doc/images/dev/visual-studio-installer.png diff --git a/doc/building.rst b/doc/building.rst index f4599fda55..f3c2d7d533 100644 --- a/doc/building.rst +++ b/doc/building.rst @@ -207,58 +207,93 @@ Then, in Terminal: Windows Development Build ------------------------- -If you want to test some changes and deploy them locally, you can build natively -on Windows using MinGW. If you want to generate an installer for deployment, please -follow `Windows Installer Build (Cross-Compile)`_ instead. +Compiling with Qt6 +------------------- -1. Get the required dependencies: +System requirements +------------------- +- Windows 10 or Windows 11 +- `The desktop client code `_ +- Python 3 +- PowerShell +- Microsoft Visual Studio 2022 and tools to compile C++ +- `KDE Craft `_ - * Make sure that you have CMake_ and Git_. - * Download the Qt_ MinGW package. You will use the MinGW version bundled with it. - * Download an `OpenSSL Windows Build`_ (the non-"Light" version) +Setting up Microsoft Visual Studio +---------------------------------- -2. Get the QtKeychain_ sources as well as the latest versions of the Nextcloud client - from Git as follows +- Click on 'Modify' in the Visual Studio Installer: - .. code-block:: bash - - git clone https://github.com/frankosterfeld/qtkeychain.git - git clone git://github.com/nextcloud/client.git + .. image:: ./images/building/visual-studio-installer.png + :alt: Visual Studio Installer -3. Open the Qt MinGW shortcut console from the Start Menu +- Select 'Desktop development with C++' -4. Make sure that OpenSSL's ``bin`` directory as well as your qtkeychain source - directories are in your PATH. This will allow CMake to find the library and - headers, as well as allow the Nextcloud client to find the DLLs at runtime:: + .. image:: ./images/building/desktop-development-with-cpp.png + :alt: Desktop development with C++ - set PATH=C:\\bin;%PATH% - set PATH=C:\;%PATH% +Handling the dependencies +------------------------- -5. Build qtkeychain **directly in the source directory** so that the DLL is built - in the same directory as the headers to let CMake find them together through PATH:: +We decided to use `KDE Craft `_ to get all binary dependencies of the desktop client. +because it is convenient to mantain and to set it up. - cd - cmake -G "MinGW Makefiles" . - mingw32-make - cd .. +- Set up KDE Craft as instructed in `Get Involved/development/Windows - KDE Community Wiki `_ - it requires Python 3 and PowerShell. +- After running: -6. Create the build directory:: +.. code-block:: winbatch - mkdir client-build - cd client-build + C:\CraftRoot\craft\craftenv.ps1 -7. Build the client:: +- Add the `desktop client blueprints `_ - the instructions to handle the client dependencies: - cmake -G "MinGW Makefiles" ../client - mingw32-make +.. code-block:: winbatch - .. note:: You can try using ninja to build in parallel using - ``cmake -G Ninja ../client`` and ``ninja`` instead. - .. note:: Refer to the :ref:`generic-build-instructions` section for additional options. + craft --add-blueprint-repository [git]https://github.com/nextcloud/desktop-client-blueprints.git + craft craft - The Nextcloud binary will appear in the ``bin`` directory. +- Install all client dependencies: -.. _`Windows Installer Build (Cross-Compile)`: +.. code-block:: winbatch + + craft --install-deps nextcloud-client + +Compiling +--------- + +- Make sure your environment variable %PATH% has the possible minimum +- Open the Command Prompt (cmd.exe) +- Run: + +.. code-block:: winbatch + + "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 + +- To use the tools installed with Visual Studio, you need the following in your %PATH%: + + .. image:: ./images/building/path.png + :alt: Windows environment variables + +- Alternatively you can use the tools installed with KDE Craft by adding them to %PATH%: + +.. code-block:: winbatch + + set "PATH=C:\CraftRoot\bin;C:\CraftRoot\dev-utils\bin;%PATH%" + +.. note:: + C:\CraftRoot is the path used by default by KDE Craft. When you are setting it up you may choose a different folder. + +- Create build folder, run cmake, compile and install: + +.. code-block:: winbatch + + cd + mkdir build + cd build + cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=. -DCMAKE_PREFIX_PATH=C:\CraftRoot -DCMAKE_BUILD_TYPE=RelWithDebInfo + cmake --build . --target install + +After this, you can use `Qt Creator `_ to import the build folder with its configurations to be able to work with the code. Windows Installer (i.e. Deployment) Build (Cross-Compile) --------------------------------------------------------- diff --git a/doc/images/dev/desktop-development-with-cpp.png b/doc/images/dev/desktop-development-with-cpp.png deleted file mode 100644 index 4d4f0d34f1a3bb1f0b6ebc6561b8a60fa74d80d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10770 zcmcJ#bySp5_cnafNDBx^i$SMImoOlRbV`Rvr*tEdQc8oQ(mA9wNQp>;G()E}ND1?u z@p-;)eee3M_5Ss~EEs0ZoOAAd_SyT|*WPDGs471r#G}T8Ac#;w9;OaK=p^8M8ZI_? zJ+E=52mfw4$-jI9K}21sKeR-4A{q!{gcM*;H9d`X=Y5=LCgueXD(s>fLOs6obj7JZ z^GyG8>-NJ0ebR6ojeFvlUy>6NM)Ot83g44Zqy50=kNbwf=^xJaPXAa_A%5uyO2sTu zh~wpr#kiGBj(aC4U$flI6D_{)OEV_!IdAQPWSwP;kGtDTV^ZVRth>==^VQFqEV(!8 zH)yTtT3T9!$>aKqs^2uwUS3`fPfmt?juCnOTowj{nRmDPU8x!w#T*^EBqSzUbBA^2 zwES2NiF6jCJ$k^z#6&Fvi(^DqSh5FJ{s;^Y5AUJyvklI?xi)RwN}?qS`xSj}fkDVg zYG-hBXGexB`Em0r?J+QHa~O_C1imjSkw%WPQ%m7qVs+z$BV|d@sDiPuiNKTZ$J3I0 z?~rcQ#?4uUq*Y#NYioxZaN&f>*yqJzU|)#ezI{8I*2PJcC7i^%8}Shx_co)hU!2w? z76uLzQ|`!9Z*Kxn;%2OBhx!Jf(V)H4YG>rDvdLgXjqYPJ ziQBpOh=H3Ou+-WrF~*M?dVO-*XvJ7rykn0=5(uw-N`J+ut8^a>|DZrb-BlwkPFRN? zE{*Z<7>f+Z%U>07ss9%i?C;&mmR=y-z<7vF;$otD(Vr1| zCcU>X{U7~V5YY;mP+u)NQME~#?!2V>oew0UzFO_ogw}g7_0cd*2LGei>*{i7hc`|Z z1NZtH0X<695)D}2if_27rM{Q)-2-yL?0 zLBnikd>bBaRXSELvT80Gh}t-Opm^e`whN@j0rtg2?Q=ANe27B=b^}Alzy+W1vHptg zfWWM90z51tX@#M0s9C`)KYi9%|1|rDiCK6?Z9-3b832q$6$>$0>lWMcX5&$e%u1Wh9nHi#;2 zQ%e2zJbF@k^29u^;$`}ub&ZPj{Akx8DM-0M!)G9c7bDron^nMJj)j?y=kV@*Exy!u zV_Pu3)C5aH{DQFvDMm(>`~Zc5u@qi&Y-6ChT}8#r1kX3aTvGKI@Hq`8XA7x z%1(5}B>F$X|1F5GHBz=l8UH!PrqL+Qn+T%E9TR@#p$_opkrp37wUy zey*`R>Xf}b2Ls>3ZYw*xF4HhN?5rW2tf4Rs74bXs^Ybn)Ow?aAVsN-5F@zdP&kvAj zoQ~*Oeh&+%jqW>;SWNtkckUq`M|y}|Gzyg2MWMNg+PJb?^Y9k&{MXZtv{mjmzxp2Ovck0+4=Q ze9@$$?!ViavwWFU=qoRdH&*675KmtC9ClOYutb{9NX@y=+I#M|oH-4NpDh-blz+4& z8-X&OV0m82EVd)53XH|7+xnN=ka&Ns>z!{pc$W1Tff>Ae?0;Y=qsn6~muNlnOjL3l z`=y@OR$empHTCw7`l>2YcI{FrSy`-1pFLsw%Z;pn7=4EZER6!?kg=_K(mh19iFT>>M-fTTF5UN`x;8Ft$>Fy_E7ZOa?vt_M#@sQZ(ve|DT_{Vh*>=3PV+^y$KTy1}kJ_h4lZ&0qdH%&*%t&A2i zL&O}I^f$M84pVNn5F)p~y2o4wOiE-oAV*zPqrXCCr6r}MT@4$V@9P)571QgiMwnb( zT^ECJ=-cndioG3@xFXOobi3p2?M)Ib2X|R}Zs4<9J5_0lVPk812sE_gqWLghq132_ z+NgpuM-}%y1?MPR2FmE*@Y_(O_1GiS1fjnNog-6I;Z8zPt|EkO2**NxG?T5-ysy8j z`YU}eTxi|K)xu#+Q>}hY_o6Eu=0)bbHZoH9tx2hAXm}kL#O6E@exdwZuGGoK{=zY$ zdqSm#O%xyGF=+%Hx(q$$L*8>W;z9>M*ek5I>K*1I7Z!}{Me!2j6J_61n6C6hpO3`) zzXM+EyQ7cz2CO?8s8arH^KOm2F70GM<+>ye21M36nBNG!Ld5X!) z;rCgVSfH@dQ>rKjJHfK|Hh>S=0eEj8|x%RGu7 z8T~z7jk7aZ(VOA15TVH3LJsWj?Vkpq9Ij-1$Z4mno{1dKy8qUj^+KJv3{eks)!-zc zeEd6i?wlWIAqk`ir=Z2s>OpnN%jCXzX4~F(QU-c%ExugNV2v?e8s3CS5yhAw=3 z6)e{0!kCxxCxhWr#5B?-Pq)#vNFsvs3=z;KW-U+m<|nV7q^rI@jr;CQ$ol&0U3A}0 zLP18-2or#l=La&i>FdC~q_ni|(0eYTX@sOI7r8a4CfRdkhE2j)FYBG%^)2HAM};do22sOc$EH^wQ`=-A%wV&ijpT z-bO~^*-cfVq1L?UQ-KPfwgYE`Tl7X`^kCZ=!W8qU|*Vf(v5DP(`V)SCi zKOciIA++CoTw@|#(bz~GnQO(Vu3zua{oxsXM7)Z`T~Uv{cS9SUgBhZ{)}s%;8gO;$ zMn;e^n*sTNj|c%h)Rqe@p&nst%U)buTxrsQ4wNtMSieYV?285oExjZAA`IiFLS~}x zArb9c2uN9kNVkFNTqAh~9SuUBGB2v${6N!ZBnlGu`C~HrMF9#lY;s3~sHv$JU5oEe z-v59L)!w>Ue$S1a{l^&L)Jf=hwOe0{r}y>x&#d!L-d>ZnABp*1Rjwk@4R1E6M+ZI$ zlR=dp`$qO@{vr^k)l_w_cZ%bq_>O7IEc@?gqKJzat`P5n#sH*05Y%w?*Fd_UIr8Qj z3Pd?Bpq^8WZtMVJD(z-mEPwt>=@ z)iuaiiAyV}XDwePiwN4>-R&0LZ^n?KlVbm+r8%5ig*6VDEO$jf<8CG8<-dO9YQEVR z>@GKKs&qt1G#~w7PZ9Ot8Wi5378}-}cWiRGY#+DHjx-e%p1oJ?2Y|`bD_mDiUU=$~q!nzyD@&P!fG-K^1|l z_&n}t1hpSG1x|3E6^N6|8Q^za?YC8&_6}uSRqPjRemV?(j0Vj+dhB4U6_0^vS(-;v z)Y#N?*hAykzH>^QU!hlvH!(30YR&w~2|Y%5oeJe$ZCCUAC`7HPuQ%_Gyz_PSqhgI~ zJhO_Nr6n_%T>Jh;HC|u5R8v!vYC&I1NV#B!!Ep^7Vh;-P{`_%=+HbC}l-)I$pn7ikOn6?!y+CIicM&&AzFs7h@o8v4f@bc1|!>C!8 zy+2-gxngwm{BWe8U52jxrXn!wQ;EBw?+NR{NqYMY_u4qlWHTOhjYczW{!l@(_f@yY}|>=a)Mb&dBRC+r+fql@9T5pjsaKtbI!eVV4H}mg|kZ2PHbrXd2?|wUIYwX$H?np635H81zG-j zwxl?Lgfs$+AV7913C_O@4aI)fY09Bn2~8S$(EZt+4YT5p+!`yeU3u`XX|GXnr^@r7 z14m6wEeOQjyQ8=|2F_T^heGA8mo^6e7i*q?3M)ybtsP&)JVL(zzA}@y2w6sFN z)^VQEI=>T8?$~uV?@!{ivbOF3$X~{(U;614eJoA{Oj@ym1@BjdaV)XKc{{(9OJ^vd z(9QWuE&tWoes5X*f{na+SpV8L5PISM*WRlx!e8edd_nZ_T#jI_1fK|d8JS5|0M<~^ z@`oC1kSTAIA>pc5^5!ZvfQu3UT<}gs8$DPs+a0aExL8_@ zz8BEOaIF$;)4q=nt*m$)kMCN33X)<(VfE5_x+8YBb}rxrXmxheZ^0-uRrW)`acG5{ zAP|!PFLrZt^V}{fc(KBaa*n?@XKlSlYyHl@;l0bip`X;M;}Q}Qe%&rEsWk5;nsW}j zWD#okR#H;ZDMKv&?tY9AdVex^FUVtJmC^;4YQ~huM$dgEfGua&*G~=)Xn>OewyN9U z@^E{5yAoJ1*c@QHD>-5Gd|1yFlQ=pMH-7}dht0=>q9AZR44~u90w~hCa)=6ulg0t! zd#zUvvmV2MGk&YF9y{nFQ&|KNBhk_p#f#m0B~+3Wa}sA)Pb))oRqE!QlJr>Z4aoOl%_<0BziAWDIzrW&R9mvU9J-fOcEvH2J>CosU znoY=)gsw5!(;#V)47o?~LAfkbEk5mqn}0+sz2b<>3wOjyQ*e@l;(ZRVI)Ej>GXiIxlj4Oex{B1g9%%@z4IO&7 zFFyJX_Y{aCVU!y_X(blf0?ow)%PI(anP;v+~dJ2D!_lK#Y#QbrQ0(xmP{I?9D_%Dk3VX zrlAqs*eD{iHVksZ8X5)6q1>N9otl4uX+}p!hyEZ|jqUvPOPe#=;5A5O!9nPG!xwU~ zWdFJ~7~o=}tCGw1Tk`ZK&NnlC2v5?MP1 z0g!%7=#%@5bqbH^+k{-#V8dijF^8|;3D?l3=H{ZnJRx`&o$Wmktvs+KvWN!;1`a&M z^dwGCPeYr+J;h?I#;2-4id~ooieB=0>Us~c3NPyF>uvYD70TOaK1kxA*ge5M+9{V@ zsXhxi2rth>G6W1&A#;YSoK=?wf*lJU$>CuWyqMK%8UpN*nVI6m&#ls2 zt_94%#K9ScX1A}o+@m6()+2;={Bi+lwioK@hA+A_fI>{IUt-^@$n`wQ!PONR38L=H z?O^Ca2=j6%LY3uRS{k*?MV>kzJ|w+0CQN}BGCVUA`HC;q zNR|KeQaR#Oczgf>dqULD0HB?;mCi{5n-s*dM&|0tDdb0a?Qqg(^Es``4k>a+>Tm1*yp~`$12Tz=%5eOHN0RFMLCr)cpiQa!+D| zNjySBbp5p9D>C0bXq8j>WNmNVw!kjD>fJfbEiYFt2^19-t%YjJ%ZZkpbZt+m2%5b5 zW*L7;A_Qg1IKGycB+M{^5-If}8 z-WS_%(Xx zkQ7(FtQ8&Ha$VouhJK=*NC8g468RRykym`TWVeWo(6s;JbOPUCnE(aNgHc89zIeh+ z&*fWQq>u^V;UI4-7rV%=D*k)=`PX|j@|DFW*)>g$qOb**_^j3nD%H<^4f^-u`>ZG< zwzq9|2VVF%>f6WZUsJ!by7q6|+OsT_EFrl)cgy7h&E`!>tCs{VQF`N-lm3Wn zePd(d_GWSIJK7T3S2BZ$n3);9SA5%!lA9Rj&WFl*>V;)x6ZypNfLle~S9la3+7Zl^ z+|PeN%9CtsXqd4j296sytTPl(o-19NT$Z;qz1i{is+K(KhMvSFe_lf3y!nF+Wtwt} z5Qo>&IV8Z9?zK#1xu~kWu(#*b)7Mw()%Eie2PUy3!YH9an+&pA08cX#A7WYA9LDRU z2wvNDnk3cUrxzs3P3V<`ecql7hEZSa=!b-pDV_AOM~axeq%RfJJ=%cQ;dCI$acY_{ z_9s6+4IY6}7ie5-33u!ndb5H@1D3LMc13u{sWnJ7C1!=JT_Q3GyV_D2z9k02g# z{RY%6A%LIyNrDbP^#uA5z@srSuM6o_KkSq?ftPG*@Cf87s1yTfts4yiWx>T9H}=39 z_YLm2d77YY4ZUeN_XWo8SIL;xxW-s8US(}#!$&(iVl}Q=l$@r+d*oj&GWkj(OGI~O z>o=0xlGWm207YEDydhWeQi@K(Ut=GvakMq%f-xt*pReD?5`TzrJM@l5IK62wm^sxn zz*%)Wx)={iUrw`id!c3;v#_x6NlcA9S;O-G&sLihpXdFU7uC;%!AP$i8CO?aiRJ_K zsb^Oa5>$>oSAU3;TYS!Po15nj*x1>FJC_1Gm!Nho0;XIwMOV|P$scc;9g#T#HcdR> z_K4Xl0ic7TZp{qz^7V-*Lkus&BateEWF$`wTM6RJCl1UJFt`o@N29 zroMReeovBmno2549hd}G0GoRuxzEvRjyun!3X%Z5#Z|=qlJFWpN*f{;u+vTr;qK4h z*ETG0K@B;*6FRiY=!pF7u+Ta8yOuny9{~i zmC<6v4N8}UWA8v58S}r(-fUE10pS&Pg!nhfsRqVZ5I0I z>BXyYK^nbz&OW6`?;xr6@hDb7neBbm6QxD>G{Vz?t;^SazF8P22yu!Tfe&&jt0e{8 zG9{<<-!J>Te#|pzg8~Skx@&bnsm-2ov60XwgsCW;=A9(ET|#@X+Jw=8!D=kz0_QB*;M? zP`tPH@SnE(b+X#$Y2a5=Z^bn(x$x4!>SUn4!=!Riff5%puJ09rQrz3wGKpq|pYaT1 zw#kV7$)k@9_#FOb+6V&)RhPR00s?wQ{1zd<9J9U9r2s1~nqW+QA+1K3<(YO4l*m0MjsR)t<8lVw~aA|gU?rQ*-Q$Kz{3P`JZE?_>NkfmMTJzh`!Kmb0HL z^#%1HJ7a)O7-AokrN;Nh&EZr4=xQx?`H%J8tXU(?iW4+I2sC6N7rOM_Ua4EV9-W!7 zdFkF^LbBu}v|slFJxHqWsR3(gIlgvmL%~Q0T31<>w=L)o_=@TU;ECv63C-?UbGgff zYgD1*!_9@g%*3+SezGN#6SszivAG|d%%HX7(ol19`RD*#);A9v<_+U8qo|6|#zyA_k~%gf7eFsWMku*Y|kFsh`%wILx|q!2@CjHsU=Y4#pQ37iom zN`NlLJp)|Q-2C$&3FC(jvNf1n{k26!edBl*1>HqCIUNTno^X2Y{xIo#H8nMi^syWE z^CYNbO1((4gNvxCw9YsnYIw5?GNTHQuO1Eo%tkKrOW!NLq~klXyoTS=b|gG=N=g)) z$SAm-Ctnp@Xbo*IXDXK&G^Gk zAYE{nD%^Kg{IqiMrIX@MtUS#H|%Hv~_M!@?lAFUh_I>FMcVH`@mj7MEfMKLuBgWm;->I`;s@0cyb9WYsvHC2hQ42Bn{4ql4m-62gK0P6dPT z=MA>-#+1$duA?;zH#ql%>Kg0i95C#%LoDsG=eabU+vP7c@i4?=pjy&l!8ergFN)1Y zuxEV5$t~tU{xHp_3go54P$^@R9Wm47NO7>UL$M53(XC*3&@fJ z9}mu!C0$xB>i$-&WVgOrEcyijV`xzS8XqBtV!>GcdmD+|<>3O#;H=U;Y?yKBjWTcQ z3#JTZ{XvY&eYW_%oNHc6UR}i@o5iHBfm<7W{a!6b8VruDQbn3F9||_#aPxoXAi+&x zyYV!j6DncG*4G<&(=ZOl@NYx7{!VB_!Wde|tm%KUGLQudpVP@-B&heec*JB5ZH)EA ze77$B^%565IJ|cN5q^7h@ll5I2B9Vl%H!5AG1qUC(B5GW&z6@AV8LdKv{e$L7xYuo z09QQuF6`u1XxA3^V-%bX64c$b#pq+LKSehC!X2H5zjty)nU0Q+e>uI6f03qT0d594 zIXS`g?+jLnt{@Ch$T^48lC-y0gLbyIW0!VVa4wLLU^Pkpt}3oPB1|IngD*=n)xC`C zAKp1-q9T}SOiv_~&E!g+IgQ(YOITP&c!Yax#cy*L@^0C7e4#slA0iEi-V<8#Gso4WC4sKozdRfXL6!Pv~;N zP@PTdUtYKwSAuDy+*>)+2#tb;Y{XVOy0GGQSZf>cKwsKAIuS&4)O02g%iBgOv+p*jht0IXp z7BBcO6Gzei+wJoF7UNXN|5}Fw-83KU|F@h7)hF{m%6I=arxn7qw4O}0UaK6fI!B<2 zh#v^+5r>M{w@pwr#8>^tyF)zT(7z(%EEViuU6MNPkp92#vJYwh`|jN#^?%=eIsAXe zp%;xa^lFj((}xwVCcQsZrV(=d>n$cKDX=BN4=XXE*vQlKH0Rs@ohr?o>4~n5T#|IY zqH9aAjAjk%BLfO4x6S640D=yBZLBxR?U=c=iO~P zly|Fzu>Xx2s!!La9F(}?_@wt3tI56PJ-FG(&CQio=6m$73`_k5fwZKhH2Ml{WO`7L zMtl|Xd0~c9F~2->hAXN2uD494SiUpC|19HT6NPmi=&U;l{oC`0m#vFWS%d>wl0d!p zb~M9(dad|xR&AyJofr%Zm+@Hx%~>o7cTpq!FBk6_Gn)Q?&2>ptReb&JPmv2Fv$N@A z1Jw!rYXlXbVXad!le;=i4zTyI7%itoC!w0foYK;t2OsqxJ_j{YneoGlsBR=vI26@^ z{;xmo1FJD~4~Nu6olFdWNc#wJzgJVh=}m8ZZnmg>#IZe&@oGhtF{|W7Nx+R zMK*Wb{o)vLh^j!>ow(mRlj<;11w8t5{M?VYeQuNcft7evFgfkAe{FFhFR=(*#Eo4b zv=i>R$w|w9Qhv^AHKHWM)OKqrgV1^E1iqUyV3t^eHTe1Zo(89A7Z!AALuyvpuUbt| zP9-Ox7VtjHYFK565|%(K75?)ype!HgXJqq1D9d*Mcs|)(kTekik>p>eP9IeABKm){ zt4<@UnbX5`(;Ncrc)_UlLb!^9U)&DTfGZ41-11FsKUKi>95i`C3bM+ua%q#d{|`IH Bj`{!q diff --git a/doc/images/dev/path.png b/doc/images/dev/path.png deleted file mode 100644 index 88f028700c8f6ed49e4de1a85039c5872f2be7d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15062 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 Oh(}V2l6m)y0{ Date: Tue, 7 May 2024 21:58:22 +0200 Subject: [PATCH 3/6] Update instructions to build the client on mac OS. Signed-off-by: Camila Ayres --- doc/building.rst | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/doc/building.rst b/doc/building.rst index f3c2d7d533..cf58ace9c3 100644 --- a/doc/building.rst +++ b/doc/building.rst @@ -128,7 +128,7 @@ Then, in Terminal: .. code-block:: bash - % brew install git qt qtkeychain cmake openssl glib cmocka + % brew install git qt qtkeychain cmake openssl glib cmocka karchive 5. Certain Homebrew packages are not automatically linked in places where the build scripts can find them, so you can create a shell-profile script @@ -136,9 +136,8 @@ Then, in Terminal: .. code-block:: bash - % echo 'export OPENSSL_ROOT_DIR=$(brew --prefix openssl)' >> ~/.nextcloud_build_variables - % echo 'export QT_PATH=$(brew --prefix qt5)/bin' >> ~/.nextcloud_build_variables - % echo 'export Qt5LinguistTools_DIR=$(brew --prefix qt5)/lib/cmake/Qt5LinguistTools/' >> ~/.nextcloud_build_variables + % echo 'export QT_PATH=$(brew --prefix qt6)/bin' >> ~/.nextcloud_build_variables + % echo 'export CMAKE_PREFIX_PATH=$(brew --prefix qt6);$(brew --prefix karchive)' >> ~/.nextcloud_build_variables .. note:: The name ``~/.nextcloud_build_variables`` is just a suggestion for convenience. You can use a different file or create an entire shell @@ -207,9 +206,6 @@ Then, in Terminal: Windows Development Build ------------------------- -Compiling with Qt6 -------------------- - System requirements ------------------- - Windows 10 or Windows 11 @@ -390,7 +386,7 @@ To build the most up-to-date version of the client: .. note:: qtkeychain must be compiled with the same prefix e.g ``CMAKE_INSTALL_PREFIX=/Users/path/to/client/install/ .`` - .. note:: Example:: ``cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/qt5 -DCMAKE_INSTALL_PREFIX=/Users/path/to/client/install/`` + .. note:: Example:: ``cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/qt6 -DCMAKE_INSTALL_PREFIX=/Users/path/to/client/install/`` 4. Call ``make``. @@ -406,8 +402,7 @@ The following are known cmake parameters: You need to compile QtKeychain with the same Qt version. * ``WITH_DOC=TRUE``: Creates doc and manpages through running ``make``; also adds install statements, providing the ability to install using ``make install``. -* ``CMAKE_PREFIX_PATH=/path/to/Qt5.2.0/5.2.0/yourarch/lib/cmake/``: Builds using Qt5. -* ``BUILD_WITH_QT4=ON``: Builds using Qt4 (even if Qt5 is found). +* ``CMAKE_PREFIX_PATH=/path/to/Qt6/6.7.0/yourarch/lib/cmake/``: Builds using Qt6. * ``CMAKE_INSTALL_PREFIX=path``: Set an install prefix. This is mandatory on Mac OS Address Sanitizer From 4fe7cdd5b0f2c43c46a436e35374202e41d9f9da Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 7 May 2024 22:01:33 +0200 Subject: [PATCH 4/6] Fix documentation style. Signed-off-by: Camila Ayres --- doc/building.rst | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/building.rst b/doc/building.rst index cf58ace9c3..2e61a2532d 100644 --- a/doc/building.rst +++ b/doc/building.rst @@ -218,12 +218,12 @@ System requirements Setting up Microsoft Visual Studio ---------------------------------- -- Click on 'Modify' in the Visual Studio Installer: +1. Click on 'Modify' in the Visual Studio Installer: .. image:: ./images/building/visual-studio-installer.png :alt: Visual Studio Installer -- Select 'Desktop development with C++' +2. Select 'Desktop development with C++' .. image:: ./images/building/desktop-development-with-cpp.png :alt: Desktop development with C++ @@ -234,21 +234,21 @@ Handling the dependencies We decided to use `KDE Craft `_ to get all binary dependencies of the desktop client. because it is convenient to mantain and to set it up. -- Set up KDE Craft as instructed in `Get Involved/development/Windows - KDE Community Wiki `_ - it requires Python 3 and PowerShell. -- After running: +1. Set up KDE Craft as instructed in `Get Involved/development/Windows - KDE Community Wiki `_ - it requires Python 3 and PowerShell. +2. After running: .. code-block:: winbatch C:\CraftRoot\craft\craftenv.ps1 -- Add the `desktop client blueprints `_ - the instructions to handle the client dependencies: +3. Add the `desktop client blueprints `_ - the instructions to handle the client dependencies: .. code-block:: winbatch craft --add-blueprint-repository [git]https://github.com/nextcloud/desktop-client-blueprints.git craft craft -- Install all client dependencies: +4. Install all client dependencies: .. code-block:: winbatch @@ -257,20 +257,20 @@ because it is convenient to mantain and to set it up. Compiling --------- -- Make sure your environment variable %PATH% has the possible minimum -- Open the Command Prompt (cmd.exe) -- Run: +1. Make sure your environment variable %PATH% has the possible minimum +2. Open the Command Prompt (cmd.exe) +3. Run: .. code-block:: winbatch "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 -- To use the tools installed with Visual Studio, you need the following in your %PATH%: +4. To use the tools installed with Visual Studio, you need the following in your %PATH%: .. image:: ./images/building/path.png :alt: Windows environment variables -- Alternatively you can use the tools installed with KDE Craft by adding them to %PATH%: +5. Alternatively you can use the tools installed with KDE Craft by adding them to %PATH%: .. code-block:: winbatch @@ -279,7 +279,7 @@ Compiling .. note:: C:\CraftRoot is the path used by default by KDE Craft. When you are setting it up you may choose a different folder. -- Create build folder, run cmake, compile and install: +6. Create build folder, run cmake, compile and install: .. code-block:: winbatch @@ -289,7 +289,7 @@ Compiling cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=. -DCMAKE_PREFIX_PATH=C:\CraftRoot -DCMAKE_BUILD_TYPE=RelWithDebInfo cmake --build . --target install -After this, you can use `Qt Creator `_ to import the build folder with its configurations to be able to work with the code. +7. Now you can use `Qt Creator `_ to import the build folder with its configurations to be able to work with the code. Windows Installer (i.e. Deployment) Build (Cross-Compile) --------------------------------------------------------- From 88ad7e3b0211ce330b9e55401c776b2195ca06b2 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 7 May 2024 22:02:07 +0200 Subject: [PATCH 5/6] Remove duplicated instructions. Signed-off-by: Camila Ayres --- doc/dev/compiling-on-windows-qt6.rst | 90 ---------------------------- 1 file changed, 90 deletions(-) delete mode 100644 doc/dev/compiling-on-windows-qt6.rst diff --git a/doc/dev/compiling-on-windows-qt6.rst b/doc/dev/compiling-on-windows-qt6.rst deleted file mode 100644 index 07a4618ec3..0000000000 --- a/doc/dev/compiling-on-windows-qt6.rst +++ /dev/null @@ -1,90 +0,0 @@ -Compiling the desktop client on Windows with Qt6 -================================================ - -System requirements -------------------- -- Windows 10 or Windows 11 -- `The desktop client code `_ -- Python 3 -- PowerShell -- Microsoft Visual Studio 2022 and tools to compile C++ -- `KDE Craft `_ - - -Setting up Microsoft Visual Studio ----------------------------------- - -- Click on 'Modify' in the Visual Studio Installer: - - .. image:: ./images/dev/visual-studio-installer.png - :alt: Visual Studio Installer - -- Select 'Desktop development with C++' - - .. image:: ./images/dev/desktop-development-with-cpp.png - :alt: Desktop development with C++ - -Handling the dependencies -------------------------- - -We decided to use `KDE Craft `_ to get all binary dependencies of the desktop client. -because it is convenient to mantain and to set it up. - -- Set up KDE Craft as instructed in `Get Involved/development/Windows - KDE Community Wiki `_ - it requires Python 3 and PowerShell. -- After running: - -.. code-block:: winbatch - - C:\CraftRoot\craft\craftenv.ps1 - -- Add the desktop client blueprints - the instructions to handle the client dependencies: - -.. code-block:: winbatch - - craft --add-blueprint-repository [git]https://github.com/nextcloud/desktop-client-blueprints.git - craft craft - -- Install all client dependencies: - -.. code-block:: winbatch - - craft --install-deps nextcloud-client - -Compiling ---------- - -- Make sure your environment variable %PATH% has the possible minimum -- Open the Command Prompt (cmd.exe) -- Run: - -.. code-block:: winbatch - - "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 - -- To use the tools installed with Visual Studio, you need the following in your %PATH%: - - .. image:: ./images/dev/path.png - :alt: Windows environment variables - -- Alternatively you can use the tools installed with KDE Craft by adding them to %PATH%: - -.. code-block:: winbatch - - set "PATH=C:\CraftRoot\bin;C:\CraftRoot\dev-utils\bin;%PATH%" - -.. note:: - C:\CraftRoot is the path used by default by KDE Craft. When you are setting it up you may choose a different folder. - -- Create build folder, run cmake, compile and install: - -.. code-block:: winbatch - - cd - mkdir build - cd build - cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=. -DCMAKE_PREFIX_PATH=C:\CraftRoot -DCMAKE_BUILD_TYPE=RelWithDebInfo - cmake --build . --target install - -After this, you can use `Qt Creator `_ to import the build folder with its configurations to be able to work with the code. - - From 71098127fc4f06356b7017c0187f4376414ffd76 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 7 May 2024 22:55:18 +0200 Subject: [PATCH 6/6] Improve text about %PATH% and KDE Craft. Signed-off-by: Camila Ayres --- doc/building.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/building.rst b/doc/building.rst index 2e61a2532d..fcf78f2849 100644 --- a/doc/building.rst +++ b/doc/building.rst @@ -230,9 +230,7 @@ Setting up Microsoft Visual Studio Handling the dependencies ------------------------- - -We decided to use `KDE Craft `_ to get all binary dependencies of the desktop client. -because it is convenient to mantain and to set it up. +We handle the dependencies using `KDE Craft `_ because it is easy to set it up and it makes the maintenance much more reliable in all platforms. 1. Set up KDE Craft as instructed in `Get Involved/development/Windows - KDE Community Wiki `_ - it requires Python 3 and PowerShell. 2. After running: @@ -257,7 +255,7 @@ because it is convenient to mantain and to set it up. Compiling --------- -1. Make sure your environment variable %PATH% has the possible minimum +1. Make sure your environment variable %PATH% has no conflicting information to the environment you will use to compile the client. For instance, if you have installed OpenSSL previously and have added it to %PATH%, the OpenSSL installed might be a different version than what was installed via KDE Craft. 2. Open the Command Prompt (cmd.exe) 3. Run: