* [PATCH 0/2 -perfbook] Add Dockerfile and Q&A @ 2021-01-06 10:28 Akira Yokosawa 2021-01-06 10:31 ` [PATCH 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Akira Yokosawa @ 2021-01-06 10:28 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa Subject: [PATCH 0/2 -perfbook] Add Dockerfile and Q&A Regarding the strange -nq build result Paul recently encountered, I prepared a Ubuntu Focal based minimal Docker image to build perfbook. This patch set adds a Dockerfile I used and a Q&A entry in FAQ-BUILD.txt. docker/ subdirectory also holds steel city comic font to be copied into the image. -- Akira Yokosawa (2): Add files to build Docker image for perfbook build FAQ-BUILD: Add Q&A on Docker image FAQ-BUILD.txt | 22 ++++++++++++++++++++++ docker/Dockerfile | 16 ++++++++++++++++ docker/steel-city-comic.regular.ttf | Bin 0 -> 23280 bytes 3 files changed, 38 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/steel-city-comic.regular.ttf -- 2.17.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2 -perfbook] Add files to build Docker image for perfbook build 2021-01-06 10:28 [PATCH 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa @ 2021-01-06 10:31 ` Akira Yokosawa 2021-01-06 10:32 ` [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image Akira Yokosawa 2021-01-07 13:49 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2 siblings, 0 replies; 10+ messages in thread From: Akira Yokosawa @ 2021-01-06 10:31 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa From 059210ea5ec51981d798ced571f73855baf63bcb Mon Sep 17 00:00:00 2001 From: Akira Yokosawa <akiyks@gmail.com> Date: Wed, 6 Jan 2021 18:24:48 +0900 Subject: [PATCH 1/2 -perfbook] Add files to build Docker image for perfbook build Contains minimal packages to build perfbook*.pdf Signed-off-by: Akira Yokosawa <akiyks@gmail.com> --- docker/Dockerfile | 16 ++++++++++++++++ docker/steel-city-comic.regular.ttf | Bin 0 -> 23280 bytes 2 files changed, 16 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/steel-city-comic.regular.ttf diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000..cf3c0486 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,16 @@ +FROM ubuntu:focal + +RUN apt-get update && apt-get install -y locales && \ + localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \ + rm -rf /var/lib/apt/lists/* +ENV LANG en_US.utf8 +RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=UTC apt-get install -y tzdata && \ + rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y fig2ps inkscape xfig graphviz psutils \ + texlive-publishers texlive-pstricks texlive-science texlive-fonts-extra \ + make nano vim git && \ + rm -rf /var/lib/apt/lists/* +COPY steel-city-comic.regular.ttf /usr/local/share/fonts/steel-city-comic.regular.ttf +RUN fc-cache /usr/local/share/fonts/ +VOLUME /work +WORKDIR /work diff --git a/docker/steel-city-comic.regular.ttf b/docker/steel-city-comic.regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8e78fb3be367fa19516664d5086322cf0774c711 GIT binary patch literal 23280 zcmeHvcUV+M*Z7>dWvK#-EC`AVE{hGM?uuOjsftQb5seEhf|NyyE%x4x8jUqkV>hv+ znM6&@n_`M4G10_CV~H{4HBHl%o%=g;w@C8leZTK}e$VrJet&%IGk4CNJ9FBcIaBUE z5Fmv3kU2yk1M>2FBn;U0$OS?m6HANAYAyBSK6tVNA>QW+k+)B<G}bE$)+EJW<8zM* zHPb3KlPjkQ34Vx>PTy8qE#;Sw+B@U3Gnh=3Sm3?DqZaXrcyFkzZJN3*@T?v0w-e%( zRBdgj^AP0-LVC|2gg#YcE3-`6^B`8$HW4DVueD6Am+z2?SfAt6*I8<<RR_XW5z;S? z5YKb<w#Ft~<(bWdWFmg;4Z>x?wBz20S03=|^9%9zzyd-}TuHs*$Zg?lH`^*D$Sd*Q zQ?1V*U>i+8Hk71#oMOk=IVsEigg?bUx{{aRHHFBI0^(14kU@lqKI%Q<5Zb{*L?Ry2 zW+@SG!yLJAj#N-BwsltH8C~4!hGgdI^<)6i-=orpY&axp`oU8J2<hmkBRg54DcBAZ z`GNSrS>h+=kdE{><(Al)q|$53r;w~D@I8AEt}3UgH}Mpx@)KB;59t9ikV>Qgo+N>y zC(#N?#8-G&xg&-s{}lDgH)05OP9o8Z<CTxaMv^Z~RGtDKB0`b!wh*IyMZZ(d3$pSB zJ}Z{S6Ip0R9KVrhainrY>_wu5G7>J#Cf&qEL=<yLFnE&?v7PcW(h3otCt68EdJB7r zS$v<g5z|Su6i-HpW~6sOxgjPfOkm2-h%-vOOWFw!k|3do1c?2WTd-aEmdguID#yW2 z+6WQKb(o_Z7p^O}#bnY=SVaWkSLG?;2niIfVfsk<Ubv~;gEC@*AJ{QrEm;C)5-iR` zoSyi6BGCy~NDt9RxlW%ZZG~r*3qo&V5G3V1eT9SyFCzVA#82p@{3Lur07{iVXj^iE zK0$iWPm~{}BE_zz)1*==B0HtiWUHJ)$}r!7y2<|AM945K&uN`drjwXD(G=w-=AQU$ zF{ZS?N%OI+b;=SF$s8=J#uSEWI6X^hQRg7uAe*F{MBoW6{yO&g6-<4_axxU}0r||A zo*|q0J*FXQYE<mvR<d3Ane@bG)8!2)M>*P9Jf>e!=5I-i97SepIv{U1$Xra1BF?YH zCrAU<D?s|Om?w%iNhrdLFs(pZKe+V7b%XbFH7m&ou~BJ3n85p_ExbkAKrgh_SW-jZ zA`;T?frB>!bt*#<OToHdAe|DPusm2zjU)?o^#Yv6HU~%s;)-(6!G2Kth38}^)>(;q zy@t7nDTwpnO1z(337@@zc-mo-F?GNci|Hn&otUaI^}=)vQ)iTmAYB3RbAI}x9=c%O zncIeR8g+=gao(|v%kU`PFQ(6<4GkhbPF$Q$gxH_7k-|x})C<QR;zYh`F&~7y9ChJF z{wfg9FjtPx2aDBcuLs~ZmlN-^-T7&xb&F(h9<cpRe3s+N5#E4258^p3Bug;gjCMR9 z@oq(Uu`B1g!TU74-+??Xbmo0r{GhCH$e)4d==3}B=UAWPQFE6r+<7J0g*eB{rKC{Y zj!wCWWD09YsrVyF6S|OCDGtj}9+dG2y+uZNoFa+Xmw9-<=`Z<4EZeBL028HCDCa@6 zxeH_)+TJAb0*w?efFvDMzL5yLB^{)*RQO+Ve9r5*6P$9?<vCBSpK%=jlk(PW|GO~# zNIFO=knTUF3yOmBtmR`ua|_}y>0LRNKZR)yrmh~{V53JhJg+Gv{y6RYjL9YrAibmk z=uc0fEe4SRsHZ3_FO;s6mxYyNsdz#81m=)A^a5F=2_hD{0p|*&ML#0*dE)pnuWw~X zf3i834gEED+3R0(w1r(xo9c+UjN|WJXZiwjo_@vj3)<1+Xp@|l8BQyFyly~v2`274 z&|a0hh|6K0Z;{<tw%lc(uAJK)A5(v^Pal^({<|D~P&<4kV>@-6A|Fd#@?#$W_i;!g zAMJQ9^7(?R{$KM}?U&I5Xvf?SpC!fe6Qmkbq%&nBkDqfsF`*yE{vN3)@?d4J{EV_s z&?@`n1cWbQl9atD_f*ac*M~GpVVLja;|clQg}l7%C@0?X0kRRxw&L2Nmg|E*$7hd< zcgVw7KMr9opQn77%$Dw9zoQT2Wqcf}V-WR;a#xGvQRkb<3e<Z$VKI(JEXP#Bb)xnK z!TB5K1%yL|_2~2X+_aL+7cP+^wQV8^Q0I&OWF+$bmRi<`co46QWztBpQ@%wK#6tA9 zr${;SP{QTl{2)%VM>FyD2tq$`fy9gZu}%>2!g||P9Sk6QvHk|NZ8fd{Q5TvrqCuM- zigh@?9cr5aMC;TC_cvvZ_T*92NrkEl#3=`n5!l{Sx<ww73du+uLpwBc$PT#>$6OHE zCk-IGv0WkO1>5mCEL&Vp#^Cr`g1%`9`W%8~Ia0B5PdJG3OvQN`lQ0ME^&kn6=AaI% zRo|M1{Bj?=808x#93V!_Bjois?-Lw*>&Y^)8%dX|$x19+DdF6KbeCh<0vx|_IChs} zdp>sfI)NbVrC83}_QyV1f_n4h<3%%o1j=*N^#D<MKpLFB@D14^WRoRm#{)gqqaGKM z7<4Ptxom8Ut93vV55<I}5LEwwFGqQ5{f7?)QIa(to?hNQzHR*c1GIr{gLJ_m?Lx!a zcL?vOkBIDKh%!cZ?$Whe_n6ooaq$U>Ny#R2&y-%h`}FPCf55;&scGqhGcvQXb8?3a z%^Nm+M1DbG(a2Gwi^r6V9rwU^3n?utw^mH3teRL|Q(I@NpVZLU)I530)M?WnoH29O z>^XDi&0nx^(c&dbmn~nha@FdG)~sFk@cIppY}~YY%hqj=KDK?w&c}D{-m`b#{sRYv zC!RcX_{h<xo_^-p=Z-!9!i&dGoP6o!Q?LBv)z@Bs<Mf+vz5ULav+ut5J~{WnhvzSR z^zp?{KD~7Lvny9|Oe{i?-zRf$9Y2iBLZ8$TdcbU03kp3=-=d!hvxH^B3Sq6VQP?5u z5snDY3NH)qiauhVSRy_kt_fcl{*yjPAFhwo8})JeM13!PAALW4ntrx^mwvDQi3lko zFhUm*8DWfwjTjfPK4M=ajg%w(BDIl0k)e?tBfCU)i_DC)L|Qx1PX3)DqDT~t@`>_~ zY8w?2)jrA))jcXHs!vo+)SRdVQA?s$M6HY35%omWQ&BHQorroZ>Yb?fqCScG(%8p1 zz&OY_-dJX=FjoIaf0XV~+?f%gC)>$x&_f(bbeFz?5?w@z7NA6{gmuCu;c;QFa8!6s zI3<GEMjS4V6CVnn6Mjb@s1MfbRf!VxDQ<}#{}+kIL_Fk{C;%mD7a8u9XnbV3Dv|!* zNHokX(L+(&qYk(wdK)FWh!XX3OJp@p{1JW>?}4HyH&g>%K#0;-xl9Q2Bcx?J=2ff` zuN9ceF<CHmV_jJn*4h61jj^BKR$Gy43$LxeKIYnjYkyqdcWuhGV}x9L=$ikvW!Gk2 zZ@xP5>a=SwUR!l_-_;FQHeA_xWjP^N_V9LBgRe}w@&Mk&T^VpC@rvQ{;LGWk`&>@B zY`UCyIqq_o%aNDEF1Ni5m%hJr>(bYkZeIGFx4QJkrI#<gbO~u(di~PwONTF|UmA32 z;3dPQ$V(BI!u?+g_(pn39e(c;+)Kk7ybT@iOehON^_Zq&;(OtFyyX5LeTY6xciz8u zKsdMmhd&k13_8nMclv**`j<y^1TAnC(P1v=Z*ze>P8N`bWCQt<EF!DOa<Yx=C%bTW zybRsRe6o)GNN$sr<Poxj{DWM^-Rq;|0QrgBAwQFy<O%X7d4oJjN=X@ch?JAJiItot zZ;^M&J9vU{mV8Aj$T{*Jj@LtE0{Nb-LEU{oJ|vao8-jikPX?+;HK`>vqz>)gMkbMZ z(m)zXGif4|$rSQ6nM$UUY2-mNlguE;$PO|a$NU^Jm;94_i~ETU@CZ;4Km>{0BQ3BI zHo<1tLhOWr3>xqt3T%aK@F+Y6+hGTIf){v$5A1};$*<%$@;kWz%V0S?1JA;9a15RY zUuXj_z>DAq{ty6Ka*bSvKxhlc;RFPM4pzWPcnMyHQ}7D>1A-xh941Gg9fZQG@EU|c zd*}e+@H*PZALK6ioZLYFq=yKIgwyaQyajK=J8%Zh!n@E33=joIcn{u(bMOIt2<OR* z5DlH73v?x4kehIUd_=C2Pspd_61hS?CZE9%@FU!Y%WwyNf}f!q+=CXd1B33=gL+ag zh=EudM0My9<LC++K_ej^5@;t#qy`#AjWn8erd?=P+Kn8=Rpc^ABF~cN$g6OZJWZY< zuaSA=6|$K80$-6$<U8!|-DEBFC#zu~Oolb+k=DT!@;sn@6P@#yM6%Ip-axrWz<8Jn z521FxfS-{c9qmqw=sfxq{Za@OO3;HnBeaO!#WeK8GsNxUDe-$LTbd!gBwdlc<iT>2 zyidL&|E!7B6lrE?PHBGjFnSbtJnV7C<F2RPGt;xl^F`0Ez1nyU@~ZKg=XJ>IjMwL0 zcf1YW!@TRfw|c+reb=X}Pk~R9&qkj&eJ=Zk`lk8T_-^!l!}r@ZA#Kvy)V0~z=AxhI z*VC`YZ?oSKziWQK|Nr;%*Zt+!-G7k(F#mD>^Zp<HHu}Hj_yrgOmIeI!zrX+0!2fFC zzpnv8ao)sZWC<7JM1za`fQW!7yZ{kNi(WX@GJsE2dhryWj;V5&7|3gK8?5O~NT4ZL zE6CAWs*{avQ%42GKF}dBcy{qXX~x<mtj2zH^M0Dq@@w?2@s75NXn}2VzJm@m>8KVH zlvS1UpY&syl{La@ekG#v0r^2}D}^8(KN8H(rhy7Nvo_EuIrBh6gdA*;OoB6qt`*}W z<_)V)g27H8nQda(ONPJ`uyAz}hnMETL0I^Zcv!s|${##5zZGoXQV}uFA2F<U<Xqm1 zcw$y3?InRE3{U*SL1UD41}znhrf}#7Mv;P32XETDWxY1Z2pwL?W52W*(jR}ycOZLa z7WlWzF#E>#4w9m@^8<b7?HbD7Ve1PY+mJSL;LQyKArXcaWUz-@cI4*>#n=gLNgrXH zG=+E&Eoo1p@XVi(aN35(f~gHo)cp_;Ou;hIpxQm)FHdO7KSp~6l&+udxgo;SGbuGX zpiN}kiP9dnzHf2jaHwXD$BR7uA6VV&`H<ejGhu+y-#3D0%MVuB#!~C2G^wXKMu_fd zHVftLHa=^gcD`mmc+oP5k|$SGkEWInX`(5)8#S7elaVVyIZ1lblTsgNAL08J9V$mQ z=nOhh_QBPHNkau1NN_EYJ^c0$zfM(1ADFFYQ_J8G`-8nhM-T0^`IiG@pjaH1{MyK= zd1dS33{y>0HzqPV+VUX#(te2DfFO$73|yIu7V?g2JA_*fw;G4V5MaBNEAXAfkPkFw zlZJpUx<7o9zsWwF_OH(s2GfTP5%z+X_dD6R9fI-(p4|JYHjH<&nSe1E?l9wsjr6en zmHJ$|$6jNIpa+FG1Fn!!&f7u@7^K}UIRoWrW3(w)Cu?N0$!yX@7=v}ex@hB5kp@xI zp}SAllKyQiGtDylPBzaRAJo4@OwGudJ#TEm%J#*yw=GZT(?`g&^`^z#zFs0X1TDUw z;C7D8L{scttz<MCqI4P&_M~Nc`t}+X!X91qFyP}C_p>iy(tS8NEyJ@7K6l7<oNdR| z<RBbh#Dr%8O<L&5BGw%)wm+{vC++DdIEwEcP)~t!uqoISZA^{swry*?_BcIc4)Y7_ z(ItTE=PGj50_!*)qgF>F#-3_k4dUbMUEEKA(g#+`@f-(QKINky+ExZEo?owRl-{a5 zZokm-`uSglNR$n2StI-?ed>^nh+2v+g%TPH29uWJ8uZRh%6?+=+38>~t`n|<@j#mm z(x+|NIC~U(T?0k*3kYUs?b8@*^Cew?3p=F#xzZxE!}F#f2mQdrV4cP&MjOpKGex0{ zW(XgVA07Q^c0$!qR&laR{glG!=)AVamP;@7?Q3tgH?<#S4)bVJA06g{qsp(V@3?8G z9I9Maz7+N&uf80!R<9*oGGY>OoCyXrD1*lM0qnA|WA9g$UWPs*`z2?Cpam;@I`jmq z`*gSTDSO7go9(`{48Ekj59??5Iec&DHTK=M9$#KXnU&|2Nn)^cn|Pr&BU;g4lFbGq z8j#j3YPkW11ECSq;ahg@<|gpGv0$Ocx>}lj(*6=FnYQ%Q3$Xnp>m}VbvR*gZ?74Ar zVZn23(74|AAM9U3$cfOVWZWriM>z!LL**qgSvKNnLmOQ2;`<CQFq#6jk}gU_t0KXu zq-YulHE|<;TJTGT0vGexCkkPGEtBY|lE|*<g+`-n+{zNzZ<BArDmJ*|3tiirYJ0(w zCG6vt%d_SQLC~JlxvqRGDAFI;w{3`?&jgZAgE~UjgaibgsMAs(FjAA&VDdL2<-CvK zT>51D-9wRq>tg$44f8!qb2krdX5X;c&z3wo5!SzSi-pV@E<G_Mt~n?$cgX{@-eX@B z6+-spphGO5{qRo5CxK+J7gDyvldrDutmF1Yl;1^J`V2YX){vk<F2qofMI-eO1*#KG zS|b%cTgQrg4#SU!ycD*oWz(JykFSF4b3TWq&o;0vY+Fk*`<*><CSVFW*B79WMX)<9 z-ZkL68Ex$a<(N1C@%uZ*OB5x13i1F`EQs+_H(rIC*Vyqy{haQQ3nBUaf3p87Ju<ET z5SjgCe~;y@SOGb797K&D9jLyt6_xLlAB5G?=c;cHL*LFlW*aIRv<8=JCt^6X!F`Y0 z*Mk<0p7Au^U`yFoU19K)T))R|PfPNi$liegYy87@{`{ujt^NUlmf2bQ(1F4sQTgXb z*9_;Vn6cpO6EmV$tvI-azUB4i6VGfEc0-wWSyffOlvP#f*#0X!lyyRXxdz`$2crIr znznpu4F$o2Mwvx?lPdJj9XrS{At^e2Aig%;hx^fi$?P+B_7QkZ{PfdnH`&AXEAM_r z!=M}$5O2R@KlkaC3%H-Os>dNz`GUj)h-aMhy;kQ1=uO(AH`#|tcvE#L%-i8v_!z8K zCPDU}>Z2Fq^($3R=4w&v@Mxf%A+HL8I1a}w`XY@i>9`G|D<E{#!7(e?&2%Ukxr?ni zonHwyaV%^Yawp@XwZZT2%q)R{oZd_Dxu6x6JN#3i)91Q;Z|;3B%k1}I`i;}&{^oMM zpu9|8rN27(z_|w*K~!dBBp7YVR#kACt=&}wCF$(u@-YX*Q1)_3=Fazn*M5|7XUGOz zdr`FCFmZ&mAMLCy+64MY38ztGph0UiNOCffjV7Qp13VwMKdFzM)ZLp_JbIGVvhQnP z=AhBDrTy)36!q(Vu-UT#I_CnM)KAaceXn`^ZX=G<A4s5-Al*Q$o}@d+j`pk58mJ)( zhbpdT`r$6zfE^<m%sAm7GuZKbwGmD6h~eB|)}Ni)v>zr^vomlgcvL~Z@SLGuLf#wp zFHR+;;MTt=bFz)au<;$Cggyd2B7zES3sNHoiXYapVD=(>s9{%cKwf|S#7U2^Hc7!t z>iR%m=qs`h*vsq{1^hg%U7?WPfQ@b0c(!%X<(@&kt#BLrrbXE+^v16yR4*2&4aBKY zFlz9y82vH`y2L0`G`(HB26DS)SY=<<*hWgvHbUbTkf2Nod0pxP<!r~@^J6lgLN7$n zFm~BgARcS^#@8U^30|lOKD*%?`KR$bUqb@;3NygDk_(JB;1p~&2u48+#(5wrS~TNS z85Nt8+chU8I2sp$PrYW}s)cENS3U=QAA=b=Z`=P72-g=E-5bN6l)BYgTHat`sj2Wa zy*l%=?X2X)vT>kKXMV;8_6s|ADQLN2<KgqgxoEb^5v52RC|%~OX@WDE2jIN#L50!% z7XHLiU@nCT;r1++2A8ByH+dJ?SG0Woh2J#%B<3uA0b6h%_`2ke@69DXhEW3UeGQT> znBWiwW3)kvD>U^g>V{`SC)UTpoO{Crp@kjo(#(#s&!kP=`rLi0dAzj7c4hp!d)tB^ z2@{Tv8~#Ew8UewtF-AxiRsSA@D^b4I*Qv8T8n`AJm)(5gm56$cPEH*cKe=E23>dex z;OLpK7q)?1kyet;E>g24eaayF9!V;hzWUdDH)|TiHn1wVCTi%0T>GmQz17&clEsf) z<D1=l*x4t~2&2$P@_7ZlI`5MJoQVTPG*4OLOlXXnUZY}%XL*FupjEX=1@@`AA8hW} zb;$*(zG02M)V_MvYC4I2FZK<bVAiqPj)Srz!g0<;UEfqri&Zl485ofLPDYJLwK_wf ztTCFq14ZlC;we?i%$Vi<Z?LcSti1_ay1)Cw9CYrmX}<k7s~)>sdN=W*8Dl!U&jzvB zv4<encWA#6<7E5F_wbPJHpPj8+m)=;2{UB@M_d4Dr)o~i7fPWJY%+AjJ%fg?oPu!` z**+=5BN+OndIaj{z>8Pt2P|ze-8ecqq1*7ZAnD+!5x9x6vaMqZp@uHK*grFKQgXlk z^xlBtd(k%<mf+DZC_gCglkIXB)EDm|b#~YG&ohK4=Xa8}t(e<#(Y|v;J{^O6QRSL) zRn$qpAz!H3K%LryxO9p_pN|=;)<g%~qoFm0#SQjveoBM8_2D|U^|m#2$k(S0(l(FM z?DV7_xgNc|1MMHQ{8(Jre@;&E6gpp(8I)7Pi*mTD-&{LGz6XG0)JdQ&8mE}#Q6A?0 zX&vZnOTZ5MZ5a3mHM9gh$lhZkq-}E_ytkL#esDPiiDlY+_7XF$hr#Sq_Bh+OxF-yS zp<D*s8NMdGA@@KT_^gc9!9@;*K!-VY7@8B(O_NqCwC_t_&l^!6XYVD=K5~@xWt~{f zqIqxx-fH<WA)zTeJ{~bKWv{qZ?x^ytbF5+<E80LEvP+HVBGm=1*%XWv<Y+Hwmzy7? z>1zq8zI`mBZu2|z{IammKFW{#;;PTG;eK7ZO*BSHTNX@ads<RguN9t!#V@jj>)L|u zx8}-++1KpD-jiYUmLpTyL-r<iZ2v|WNAXiN0r@x}M9J-)e5n1%M_Ql`ogSgcg%*ix z!}3ytJYuZvG8xRIx$N>S>e+jwmoRX+pR{KAOt!v7yJ3@nCj08Wsgr}~=WuK1vKd$! zfTdre>QHxDe6#sJu5tO^lFu{F1vz?uf-7<_!1YQIXgegbbIi<^wukYD;}Y?Jx%8dU zna`-}a<+{vX|*zEC)i28Hitp@!_~RNA3ZC!lTFw^4u9m&dH2Hp!C5U@)EcDhl1_4Y zl1FqFY@spzTP_In**0tq+bhAoC)nrqKiGqh9)Q^tVB8<<ce_b*pgq-B+(g_0(JH^V z`N#K*e<Oil4AycF@t-6))o#wmPj{U(>%W$$W%QO_?Dpz%9d6AW^To5mZRtl<Hr#Td zZ}N8>e*_vtln&Q%5}2{ivP=9z%9C_~TtsQCJxrjs?(7A&7s^*aeE7V7mGtSK?VD2$ z=-|YN$Jp=~`{WI{yv4E2-}pD6FGNie5w{>ji&_*7CLJyr`N=~Cd^l_|ThGo9ri0<Z zwJd<eR+d04jA{DHzU80N=OIt~_h#4GKi9H_ETHL=qw9u5!Xsx!;!c6jukVWe@cS+2 zI1;(maQz;IM=ZEO$i7GuA1*B3Z2#tqeANvMN)45cch#GsM}(QWws$yy>S}>2hAJ=P zT(Ml%;@-wFCaKN@!LrCVh=|NIWK{9NA0R-!$ab+;gy{6KLRO))e&)D)2M=`uud`QU zpq)6wR&{q#362Jik0~DuJ)L?c{=qujtwvK44JIuPcrVb%jorW}BWV0E_RkQQ)b5L- z@w%a(c5jfr>Hk#ATK0KED8vY}*4+zxSXd2%LmSvzEpwmlr;hhy;t_T4%2yS7{vivF zGCs(SxC7G$ORigPvA7RMx9FRjZ|&F5GVI0i>|CVHzRZ4jdDz=S^W(;z@L4)$eCKXe z#^%BEn_-w3xO(lqU)ijI^u*e>_IE!SQu#1#4^r<b=-Wmfo&pQ#3dr8Sk?pjvQ)MKb zmDhz6E*X&r6cSwy9<K3`PtfCZmTlLdXmj3chuBQ&&xTZ2cC^9V_X`81#ifBt%N=&? zcoq~3rnW8Lv)4Dj1!h72u36p7BJLwXF`jR@eIzPBI)Fkn$15Y^snEV)>`hoP2|^5o zft@%;+=wUGb05JY5LnB`<iXEJ%+ofYZ+b^zVt?r^mv6%5EiP=$I{Xq!HhVxIPRdb6 zvnae+l5gL!+gh`WHnUUq>yty^SE%bXd-ff>rM!Y}lAalq>EUlm4YAm7**kle(}T4B z?kfXQJ<*xs42g8!P(FY+@!JUrSMzA^fyVwwin~756RLN)i&h_h{xNnsIc;E<5@Wlx znF|j+@vvk{%fJ(o;p0ZySGD|}Ig$R@a$YU@^I3&zLfEAc+NiCczc`>$C}_Fz>v^F! z?RFe@LxQpe>2GaK-;5(d9ShhwVB~kb9y@k?^`fM9#xY$7rX{n}4<9_VXqMDxR4?C* zH2bf1|B0Enb7~kl?(Q_Ti1#yY>cwEVh;uIAqqN0yBRn*U#zUiE9b6m|{h*;X+h^j4 zs2;n-2g{R3?C$(d;`j?q@qIs1+u|805mNA7C(i9=^{g}6U@R!X7gxioqFG(-;K;y` zK1n#0b6>GrD1`Y)2UoQoV31)xiv+V)D5ROixUizA-`hfa;SF48;_8R*bpqAZT(psY zF>A!xQ#5M~&sC(tFBP%iy)Go<A?EQV?GsSL{DKF=M@EhPWqKiJSP}bWru|w>JDQRD zD2sulnjLA<{6*>dJ^4uEH^n4&mpdT8c#Oo)vG}+R_CUk)04mX(B2BxriJ>#-Xc&)M zdLIw?3IfjB&r64FwXCkCU3~+7PYaU$hP?+^pJpp)514=|0OgXhSSS<qe2vWQPtfwS zF@e&j2aUA<A$O<JjzasW(k{X<i}7VPl9krRS|6rnTFU!%g>q2%TpodQ1z(Nf$qV2A zAUk+E=~yk@r74H)r|mb6<5|w6`D`&<ZeJtxG}VNQK^N?I*(AE(gT>*CRMSy9a^7<L zu9i!i&f~YL$O^8J?ZRPU0bfmNqeLOXXpS&NBYP4*6_h&}1OYyWd7gGdQx)y&_Z@pL zDG|Cpzhzb58^5tFi9%)j@vN?A?!Gu5c8Yx$7nb9@Ilm*!<^4&O+saPifZPr32K!4Z z^3@{lO88*#2A#SJmOB}5(J7fRwi33@b7<6<;x2=Bef!DcivGLKTuzs}9r|PM+~?Du zW&2xN_P>HVtl13OMfnVz6csg^<KNGI5+>t!(gFOG2=NEuNT#?74AvP08MlWrYHBFm zlWXebV`8x%o0t6qdU_7Ge>4evi__t?N?~u%q`IvA2bfRX(<`LeelTR!bl6;7#Xjy1 z@8Md*tPB)BmP^nUaIL|8EV>{XjN1h+0{YuYU7Nb3jtMBC$@?pU(<b@E#@NqD`<~fv zUuO?Kb&CE{0a5QfXg3@>gm19>9Al4io?Gx-@-rzCapGt~oLWAX0=ce@?FWqV(2vUO z?rm-i>^oIR&qsH#ebVaLV%KPCPB~vXV*A(FZF(5L2lrObTCqLl&P#`fkviE3=lYDw zPPxY(FW&aa$@c3H4Bj9Jb7$jM9_>b@%+dDf3pK*MajR0%rbvQv0?&`5kq>o`!a3nm zMIj@&ZNy_JJPZa)PL7<AIXoWDF6}gv%`kvx3#@(8W5z+YN!q%6xjopvbJG@D_Eo^* zXV&doGYQ`cd@&>D8jMu!>NLJ%;c}|`A1>t_V|aLeew4I%$s_l+elum(7n~2GoDl1U z&r}^_%mm*n@ezkT$JvPmO|-!Q;>;dBu*AF5n7oL$p?*`x+|1AdX6;BrU`|tfue6Xp ztYv%$VR~5w!{6f7_*uf~2zHhYvQ31?U-NBzXoe9t>|OBg#JfV{X0A(4o8EHL{wrlp zE+^AFW_Vu2IaskEBEh2V!+xlZ_!EVvBiP6GmbxnVX-}{drw*eC1_+BC>r*X13IjaL zb03a<1*@NH8~HYS?=F7eP|_}J)r-|Vj1LHleeQmA{iJvnP86=$ylJ|oX4A%vYJcN5 zI@|D@sw?Vxjq})+tH%q>uC=HJ7i#|HNm^W}b;7l%eTYE&;#%}N-M{aNBY37V_R)j* zHAcXXe_n`E<wLerSSbAJz<dAPEZX1!fQL^eNm!UW*57|ZQea>X9-x#0&<+Ai-1`|U zp(hR;ewuy33U@pSyFvFeV^;fc&_Bs;!o}auppAZxdY!2171vVShhkUafjJ-lxa|(l z$s8Utd}z=8pqtiaZtq=x)oI78>qk%RsHzkF<}u|*;VEIMbN#3>;F~LvuOGwl0NyAX z@%U!ZpbB>PGyL8UdQW5JY;)+uJK&r83hVc(u+*=*v)_nWVK>;t!SlAp6}3H7;q!-M z9NktT=mqHq97i})oB10H8mPlL%>&GiW8iZkP@Ez7c<;3hWXsvk^e>@4tDbHD^$afT zZ@hvYiS2)6)7-tRSQJKkg-?p<)JYwmr<E)8g0K_UkxrkXGns?i@E1wyK8(ht4=vug z=@n`9AM7Tb*)Kl~2Ife@$ef<`g%9{VwrNr5K6)gzKPzEl%mZPEgIA_}O*aUu9esss zNiEkTjRvEZuZ5^aUXXJ*C}_xlV|}1=;2WmN0X<&sR3gkXE@HutjPiR1ermL*#?$t1 z`lr2Y|F)W++46nkd11M5R2~1Wb)<>=IE_&-nH}p$jvWUsl0s*#75saR9G;Sr)#t;A zn|@iRD%sdYK^yz@4-MbcVM2OVxW2r@=q^JCe@TZGjkG`VRU~{evOO!B8{2mzY};b6 z-uby9<11MBx^?(DwhG7IVCAH+MtIdB6Vlb8Tg8doz+VcQ_!@6;pyetQEDTw(iOr#z zEPhF4IPR&A6ln!ZY0O(J@6Gy7=iy8wi~VrIqVM6Qby33{`e)xd^^dz7E>COy^T`2y zrTOoAft7DF6z{m(LG26{<?0N7M`tLcOKG8B&oqmpPXy%yMG;<7&t28iJ)F}yZWFF4 zjrZ4-1|f5Jmi?RSqsCpQUGdl~>oFaE=9HRPKk0(~=*ZDDTbP+(&i0+!kv6eCY^l%} zKa!ed_bW}%NU>S`%?Bt~l=%>cb3aNGioPTq-wAYt<XF%~8<Wf?YBDEl<Q^mAr!0yb z8TP>9ijc`23ky3=4yjoDfMjG_Csx+gv#nqElbQ_MU|f9}Evtud+YHTeUyhq8VPv+v zg!^djRkSz=rc1^#9uh7sn_C{Ye<Dnwg>TlYeAtnXJO>}z9)PcUXt1uWM%K!HVD1OB zA8y&SHy&6F<sr?SgXWNOSo}a}QN-e@aYeFUU%A<^jqOw!U^}-NnxuYTLwS8&<wPh) z^vKJn;w}2T^aa|3`d*KpR>}tb;GvH|Z|mrY9qg2}r#wCnac8$5$=5{qeoyp(Z8(Fd zZ}Is%K9e)?cYQZ7eS*pH&hL_XK7Y<}N{`=s{<q)Z|4-`v$M?Jc;oYx5eDNLl1>vkJ z3GPPm6(D{Sfa_$FPR94d^6<1A{1`5<NY9QHo9a@BV4??xMeEw9^=`L%TJ9>g0xx_m z=SySg1^PPgPZy3>ZQX59-#GV?+d`yhb&NlpSN>)EX-h6Z>TKP@HEb>I&NAkfwci1? zdq)I_0R_=duoVZ#hd&3)I<QI4j&4MkI7^?-`%zTBRgR0@@jbRDuK7BWWMm7Si2A0V zX!ZPcb96t-uV`yH-Ze6R9IU<oMMq=SnT@zhFq-Kf56Y)lNk(Pwaj>fq+U0z<Jfo!c zg%0Hd%4xeFen^`2(z+vT%k*x3;^6jyojaWG<JUDJ!p|>UQ<5aj=y3Q0d)r@Tyoz7o zy~^YzzpXCoe*TF}-}WK3%(QY+L)&pBA=1fSgMWX<+ZyC0NH#xjY2lmxQd}&4LZb42 zQ02cPF_KtfYAwOvGm9@I@%4ro-%mPTo2ai3aqZq(1{V6a%+gn~1D>C<GWK!kk@(oF z>}n4@F7K-g%Y7gu;m>lwu)ky2{)>fOpX&SQ@9f*a`GJD((4?O&PqM6`!{E?SJi#4{ zeQ^-a3iuv61kVb(k)Exk(fvK&M8t7zHeugjci@X%?3QrA+ds+k^uOi1r2^VMJK3<m zG%H7putC;DcKlYFWn|@<S!e$&(v^SDyKpc_Y1U4doSV~Q!H->Wk;OiEw5nZBhdF1| zw;s4_p@-1k>tPPYzv*!XZ>#)>@0|jbH}M**Y{hFk<u$y9Do60z9^oJ?pNQ9X_%)0U z%Q3Q1Ee|F-ED0uI%56O74#k@7)bdcoc9Dc4W_}IE@=z6LDArtp-_f+ik}wjae2Z6| z3iCQ)Bn0b+VVxs*ZLjRXw+>-gZXibW+Eu+KsMjQAKbEIpO#|trUi%<sBgs<!iC2si zC0$6GG7GPR)oX?_AK^?D&Q`Cv>UD^+0?UV~@No4yLcQiIby!}2l6E15YDtlL9i?7J ztJh-nI!3*gsMoQ0jZx{wsB~jUhFZeu#vpGe@ye;ks1#!erx-&x#Tb&WUJKMKrx-&x z#Tb-j8(ulx7{cks5KcFSaJn&s(~TjVZY<)L@j8-yjo%Dqq4s)UTN%Ab7HTY6)rlG5 zBgCx2DJq<T@E+1ft<wkL*GOL#?u+n6lBLR$rOJ|}YA=fnQ7&LP*I1Uyf0oLB7V<A+ zNr8Ih{Aa2BXQ`ZLshnr2oM)+=XQ`ZLshnq%A<&%+QLhD<-z7yz{cTdB!rU|VpuPC6 zNd4pIz7Cjwpr-DYu!N%D4t18}IWdWF!eXmB652|lvs`Xft|5_bJYFOhzuv|O7EwT) zKAIsaEFtVqURPn6my-)BtWnFatFVU(-&SFqhe<yGCk#XnA3I@u*NX?`9KR=C`+x(# zCvtPYjzkh*sk4qu+QV@ttby;{csz(+aPZ@a9!e)*9IlGfi##OUbHY9tKegNm`+|?? z;1kc~Ax`>EE%)NGIA!$a{9{}i$K%tgyp0N1tL6R(x6#C?a3I23O>Y%$+p2yL!v0R2 zx>n`w5N@LxtJV)w>o{<BXjP|UD;W1^SpPw_evAsMI`L@5vqvlZKCQ}qoc!lES*<nt z)T*XwG5S<n{j`Rv36)Lygt)k*5!MOKHI{|~YhzO{eUY`HvC3AbkB^OuYYpp%Sf=R{ zdUjV^bk{dwWqs4MdMj_WPhZerDYw>I8mjfS3Vokxw&n(XnXR_oQa7z%Y(ZsJqrSpc z*QB3fY1EfBSS?M~a(#1SRow)AQ>9fum_JJ8#kL0hum;<N21~6zDK=hT(O|39XCj+1 zxwZ*aWwD46gA7W^H1Nehg^3t+@C_y#h8)xq3kD(NW7vTOOUm)uK+1*97;1A8!-q}^ zF9<IRPmlr(SKt_$Fo0niPGV^os8EN$ScJ2&yb;TrvF-gQF$gD+IQ%7%5lC|aKCe-+ zb6QsX)nJWO#M`7|OhqiUcvnVxVR;cg=iv}lSXzho@koi|`gi4e9O4!gPXbP_-CNOa zbW<yH(kgRP`mZ?AV~a+_Wx<dP3&NcLQoLHRtOBt#U~a`{oY!e8r&g8r6qQmXmhf;6 zJ<7y2)TC-F3tQ^d+Rd2Pt9Z*1a^d3|c2MOdb=Zna!?8D$XqA>8dEolvdf{Ot_4u=5 z&+)$aGxjpX#d~!EKG!3rzr)P+ug8EBE*<X?j=M&sJV9+^!>fb3qpzD)NgVa`2sfkb z4(z;UnR-{Q%CA?g>R)@>qUw}$!`pE!Rw0K~$S1c%JxXH58jcc&74Ta3wZ^qxhjpf4 z?$VK-bVdxk4wu)}7yJ(Y=>R4S;r=(=3{vZGyURw1+qPpI=+Wl+{omUNA2poMztigd zzT}qDgg-6?myc_d>xRo|!@Fh`gNt4nme*r#hs|@l<82();}{wEj|)(19AiC>k{<Zu zHdc#RVo^#P{<yYdReP(&+=3K(AVtSmO~A=J4o6ZC6))$0suN!=%KBH^aM^x^+M`@j zmxXc*;P)=RxkTK$xs0Vq%O$~|?S*TsT5b1#Z!-=nvmhmIJzP@``}p@Z^*^x_7nVsV z3%84E#9xYZY-n-3KRB+bm`}v#wa&4}IdJ#^hedGxaBsmwxOkuQ-sbu!Aekf`^Wmfr z$7(9cL3j}Q$2?p(3`KY_LZdLx#^*!GFsz$~cX{ad(y`Y4_PJyrDJG+_Bn_WtsJJ5$ zAMcZB)QfA(>eW%keY#$?lL*pZ#lrmpuf@F?x0~`-e7bsm0+w?NjK+H0v-AGtGXTGv zfQdhgz$MR6EOpEy+^(xy-E;fr<Huns7R+&O`O|Y8t75nqFXo6DVqd(bxSw7}Tzr%d z#a7(=mgAibrEb6<w`Y!3U9Vx(H=ZF!V;tY#{New-!SDS+z}a8KH-fka#xr40JQwuF zwU;lRy8GdJECAPexO>5U3GTlU8}2~(zJYWg;kbL&t3r0dHD46&2%^!^bRk`F7uOxv z%dt3^_>fA#^<WYXFFZ5D=_dsTXK!2!_a*&M-2;&6LD)5E*oA|!t1_|Uv$5lIv4e+V z=M6(+7=dakz%Ix2Dt7;9?AkH7Y8^|)kq5|l6qH99@&Q|cisu7$A{u24b|_a#J;o05 zLC}P1;gN$=u`8!z+~5q19GrzwgLBASjBcB+#yT#-7`G)DeYgyx9ams%<0`TmqZikZ zwHWRAFj<fP%RnR>F#>KgNMtL<Lp};J*-my~yyN2-8M&M6A$!R_jFLP+4w5G^vJoQy zc|4sOL&xLkj*;id3*<#|oSXm+d5OGCPLWqIn(kHd8m@ZZzzE4VF-G!jXN=^#YJB85 zjEX#u>)?+t&hMf#=I=83j9kG8z-#0>k0j(Vff%Lv6-GsVgYl2IFaq*BjH&!VjnKS< zF_}M;Uz|~mJoXUdA$c4mMnDqqa7RA!_(o@JqZ-%9V;V7vQH@}9MK5*)y&AFTicoaM zBx1Z_cOGHLqYHUlA;wxHK{A-|8;zcj0==L&@UId3L4O#45rcyu71AIb215p9LKb90 z4t~};1iw7WgJCcnU%Tc*0Te<JjD%4z8j4{Il)zXR2M=H*p#@5z3_pam;#V0Hpc1NJ zB2+^S)IuHDpdKbc12jStG-G7q6pTBZ2Gij|m;p0k7Dj{5fw?db=EDM52#a7bEP<tJ zoaYKy39Dc=MkzX?86SrAY7D6}ZuC#Fq8K9zyYQvL9@q=}U_TtdV3#N0NjL<D@w=y^ z@Dx1VDsGg=jPe-K*3qFnA`~M*|0VLXRm3M;fREr~xCo!Xr*H`)J3oUfa22k>b$r!% z10yMK!k743_iOkD{t36>TlfxlEsiKqM-1pM_+h|r@H_kgciqvT3VtAuU$|0%?4$T0 z4aH-5M|>#trash{f2U9VX#mA<y=YtV7>^jG!8C-nqoFj6wx=CvIPFOFJbsjRB9Htv zb`;|}V`wbxLE~sVO`wT1i6&DM9y0Z$DYO^uP5aQkv>)wH2hf3Z5KX0NG@TBn88nk- z(QKMSbLkK|l;+W4bT~#T=hFgOh>@Zr=_opy7Sl1bgpQ@-=mT^-wa`*pM$4&{R?rEw zl2*})w3^n?T3SbKv>v}pY@m&_i8j;8bPAnHr_t&3K{|uZq_gO3I)~21_|y4x0bNKJ z(ZzHLT}qeH<ro>elCGkwF(!Kr*&@Z(HP_Vm*V*d$?gO_J4c4aShB~3PIbNu*iWl-K zYsK{D2Aih5)>77BtMjx?#tlxHt-&hSR+X3An&g3{4c5t4*`j8efwl>@I%~DY;>hK+ zG7Gkn%N<!-V~wS;Qj_kiWOY_bcRaN^vRq49bCXrBab&rU!WuObbCIH0!^sYHJg#$O zLmjp1)XX!lywuU!)8>NY5sr!tj%<XZeuE>+cN8|NnMXmHwY;jP#^TZB1mprowI(%_ z3L8*OQZv7L7P|0zHoG9X*nw@jnu*1n<LP*jGAy;V7O9}p+GG)iRaQxsn)*tMRBo+l zvS_UJja4<aI;pX0Lajw;vNQ|zl~umYb>&WFBXUpc)Up~&Er;qFo9nF&RkjAX-r9)h zJS`0kwkb8%iYAQ;HP?Hoxw=JlJS?|OsdGT3wx&u4)LdU)=i_WpURT;^^|CcIRq{Tu z)c91@H6d+lSrcw%y{(g)t0r4&taW8psnXWmX!XTDui=|YOHG}v$%|LUZD&nWy&EiT z^2i??AIJYVph5`5xq(FIqd43`t99a%TtH73km3SNF2L*plAS=33r~Wpd9sT{vI}#f z3r~WpB*9fD!G%Z7Ijc#o%84#E65N1`dV-6eL^t4il;k22@4}-NaLfrVR+HS7U6_+x z{3N;fNpfLU#p2DA-2%Gts3n@_`cnMYgVh@BL!L{HyP66|-q7T{Z)&W>Lk3B`YRaqC z+_M5L-CAC1o9g9&8nDMTO$}9+3C;D6yuo>2Ugx;4sgTR68p>*{o>g^|OVN2)n>gew zYpkt8JG7Kp(SRnqZ-mC?I=KQ5IBKjSzetVs$ck82(_AXyKUqW)<yDqiTV1(#EuL#Q zjLO=k6^vF-v$AQ`MDIEa|F?+^w)#r$f$F%YKr6+jo|cNLDpPzyQcoAuGeyqC9yce- znejc7lN?!cyn2_I=w++7);ajs40Jd*jm43Br*dhUYb$E3Q@zXX!(u8Q%w>4dq&r)n zOx!KX=?*VwRWmW2*R$fqJL7(9?+N!|F@x8bfESMpm%EwZ1iUlv*YmEt4~v<lmIkpB zFLG8>RZY27u2M5imXnt%CofqJUaA}(Im_v6s~ov^_I-@r6Ys+wIW9h`oq$g@P6pPx z8cSVyRhdVw>v4?>80rGhE2s`rNUxh9SnDQe@|+CWoDAhT7_zCE#|T%u1}EU1f1eHS z#`~~Xzy)sN0v9?2ZgvP<=)~Xb#9!#Z-|P^$&?#`UQ{a*JF?vsF1&?k8PrDCG=!YjX zdJW|MU3KB;OI@I5V7gkQu~^mIJ5Qa^9I)*^>}f%-XsxkUS>%!E7jb%=;>bp-Rplva z<~g#w%GzLUtZMX};)3MSj*8RN%y&{V;^Ffvy5e$AJS60U!#Y*9@VK5SN%5X|e2D#y zCxV_h?^^kpWTj72C3c(xZuG9Gn(Tso8WB^S>j54I)><rOW!AbTe|4s5RUkFl>THd^ zF0Rx&uYr8RQbC_|$9$#Uc%(NuN<Fh|PRJ*(wu%o6N9Dp+mA&$6trHy81FEq4pD0Kw z1#u8gX&NU5v6xSnNI~Str5sCry+zKo)RvZ8=#XYQw3&{oLVHuG(P34>h)SE3uTG)` zmS&BUvXEL?B@An<^5HmK6#bkJUH4w<eC*)ZIUPI1Lk3j9lk=-WZJQkuxtgklVkuUX zCh$pKoX(l%w|G8_tn-FawaPlq;GFfkW;(S>V{`B=G*sGTb>@#pU#>0$gfiq9LCMC| z<--xUi2416xQ`Qy%7l;ep?c$`HdaB^U~rB}NOVET@op%=4c&j5<St8gLnb$5c0&$l zi<pyBTxF&>H{_;aa?yxSa^s74V~KZTiFad3aAQeuV@YsfiA!+vm*B>i;N~yEjXA-M zIl+xN(TzFLjXBYcInk|yL^q8@H;qI$jYKz%L^q8@H;p7W4IH9;VnPiixoIT1X(YL6 z+}BHzn?{nGhI3NmSll#BZmvx37AAKKlbb7(yM@`!mD$aU+0BdD&5PNM+3dz_c4IcX zF`M0(d%7|Abj#b*O{1rqMo%}5o^BdF-86c-Y4mi{=;@}B;--<}rjg>Nk>aM2;--<} zrjg>Nk>aLdzK_L41NH0dt@t?C)A%?Sjrcehjrcehjrcehjrcehjrcehjrcg19Px2( i8u4x#_jyismBpnvTHsK1wl&2kCMWPyE&Qs5(EkG?-5@3a literal 0 HcmV?d00001 -- 2.17.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image 2021-01-06 10:28 [PATCH 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2021-01-06 10:31 ` [PATCH 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa @ 2021-01-06 10:32 ` Akira Yokosawa 2021-01-06 14:36 ` Akira Yokosawa 2021-01-07 13:49 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2 siblings, 1 reply; 10+ messages in thread From: Akira Yokosawa @ 2021-01-06 10:32 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa From 165d967a252652e2ef5af82ce62536dbcf314600 Mon Sep 17 00:00:00 2001 From: Akira Yokosawa <akiyks@gmail.com> Date: Wed, 6 Jan 2021 19:03:55 +0900 Subject: [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image The template Dockerfile and the usage explained is a tutorial level. Suggestions from Docker-savvy people are more than welcome. Signed-off-by: Akira Yokosawa <akiyks@gmail.com> --- FAQ-BUILD.txt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/FAQ-BUILD.txt b/FAQ-BUILD.txt index 2eeb9fbb..d4c18424 100644 --- a/FAQ-BUILD.txt +++ b/FAQ-BUILD.txt @@ -273,3 +273,25 @@ sudo updmap-sys --syncwithtrees --force sudo updmap-sys + +14. I want a stable environment to build perfbook.pdf. + Isn't some container image available in that regard? + + A. You can find a template Dockerfile under the docker/ + subdirectory. + A docker image built from it can be pulled by: + + docker pull akiyks/perfbook-build-env:focal + + It can be run with the command: + + docker run --rm -it -v <path to perfbook dir>:/work \ + akiyks/perfbook-build-env:focal bash + + Note: + The directory to be mounted to /work you give to the + "-v" option should be a newly cloned git repository. + You should avoid using any git command from the container + that might modify repository meta data and change their + owner. + Git operations should be done from the host side. -- 2.17.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image 2021-01-06 10:32 ` [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image Akira Yokosawa @ 2021-01-06 14:36 ` Akira Yokosawa 2021-01-06 23:29 ` Paul E. McKenney 0 siblings, 1 reply; 10+ messages in thread From: Akira Yokosawa @ 2021-01-06 14:36 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa On Wed, 6 Jan 2021 19:32:42 +0900, Akira Yokosawa wrote: > From 165d967a252652e2ef5af82ce62536dbcf314600 Mon Sep 17 00:00:00 2001 > From: Akira Yokosawa <akiyks@gmail.com> > Date: Wed, 6 Jan 2021 19:03:55 +0900 > Subject: [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image > > The template Dockerfile and the usage explained is a tutorial level. > Suggestions from Docker-savvy people are more than welcome. > > Signed-off-by: Akira Yokosawa <akiyks@gmail.com> > --- > FAQ-BUILD.txt | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/FAQ-BUILD.txt b/FAQ-BUILD.txt > index 2eeb9fbb..d4c18424 100644 > --- a/FAQ-BUILD.txt > +++ b/FAQ-BUILD.txt > @@ -273,3 +273,25 @@ > > sudo updmap-sys --syncwithtrees --force > sudo updmap-sys > + > +14. I want a stable environment to build perfbook.pdf. > + Isn't some container image available in that regard? > + > + A. You can find a template Dockerfile under the docker/ > + subdirectory. > + A docker image built from it can be pulled by: > + > + docker pull akiyks/perfbook-build-env:focal > + > + It can be run with the command: > + > + docker run --rm -it -v <path to perfbook dir>:/work \ > + akiyks/perfbook-build-env:focal bash If we add a "-u" option specifying host-side uid:gid to run the container, it is safe to do Git operations from inside the container. This is because the container does all the I/O to the mounted host directory. So the following note can be removed. I'll respin 2/2. Thanks, Akira > + > + Note: > + The directory to be mounted to /work you give to the > + "-v" option should be a newly cloned git repository. > + You should avoid using any git command from the container > + that might modify repository meta data and change their > + owner. > + Git operations should be done from the host side. > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image 2021-01-06 14:36 ` Akira Yokosawa @ 2021-01-06 23:29 ` Paul E. McKenney 0 siblings, 0 replies; 10+ messages in thread From: Paul E. McKenney @ 2021-01-06 23:29 UTC (permalink / raw) To: Akira Yokosawa; +Cc: perfbook On Wed, Jan 06, 2021 at 11:36:14PM +0900, Akira Yokosawa wrote: > On Wed, 6 Jan 2021 19:32:42 +0900, Akira Yokosawa wrote: > > From 165d967a252652e2ef5af82ce62536dbcf314600 Mon Sep 17 00:00:00 2001 > > From: Akira Yokosawa <akiyks@gmail.com> > > Date: Wed, 6 Jan 2021 19:03:55 +0900 > > Subject: [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image > > > > The template Dockerfile and the usage explained is a tutorial level. > > Suggestions from Docker-savvy people are more than welcome. > > > > Signed-off-by: Akira Yokosawa <akiyks@gmail.com> > > --- > > FAQ-BUILD.txt | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/FAQ-BUILD.txt b/FAQ-BUILD.txt > > index 2eeb9fbb..d4c18424 100644 > > --- a/FAQ-BUILD.txt > > +++ b/FAQ-BUILD.txt > > @@ -273,3 +273,25 @@ > > > > sudo updmap-sys --syncwithtrees --force > > sudo updmap-sys > > + > > +14. I want a stable environment to build perfbook.pdf. > > + Isn't some container image available in that regard? > > + > > + A. You can find a template Dockerfile under the docker/ > > + subdirectory. > > + A docker image built from it can be pulled by: > > + > > + docker pull akiyks/perfbook-build-env:focal > > + > > + It can be run with the command: > > + > > + docker run --rm -it -v <path to perfbook dir>:/work \ > > + akiyks/perfbook-build-env:focal bash > > If we add a "-u" option specifying host-side uid:gid to run the container, > it is safe to do Git operations from inside the container. > This is because the container does all the I/O to the mounted host directory. > So the following note can be removed. > > I'll respin 2/2. This does look like it would be very helpful to people trying to get their environment set up! Thanx, Paul > Thanks, Akira > > > + > > + Note: > > + The directory to be mounted to /work you give to the > > + "-v" option should be a newly cloned git repository. > > + You should avoid using any git command from the container > > + that might modify repository meta data and change their > > + owner. > > + Git operations should be done from the host side. > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A 2021-01-06 10:28 [PATCH 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2021-01-06 10:31 ` [PATCH 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa 2021-01-06 10:32 ` [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image Akira Yokosawa @ 2021-01-07 13:49 ` Akira Yokosawa 2021-01-07 13:51 ` [PATCH v2 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa ` (2 more replies) 2 siblings, 3 replies; 10+ messages in thread From: Akira Yokosawa @ 2021-01-07 13:49 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa Hi, This is the v2 of the patch set. The strange -nq build Paul thought he had encountered prompted me to prepare a Docker image for stable build environment. Such an environment can be helpful as a contingency plan when some package's update causes breakage in perfbook's build scripts, such as the build error recently reported by Dmitry and Felipe. This patch set adds a Dockerfile I used and a Q&A entry in FAQ-BUILD.txt. docker/ subdirectory also holds steel city comic font to be copied to the image. Changes v1 -> v2: o Add a few ARG commands in Dockerfile for custimizable uid and gid. o Entry #14 in FAQ-BUILD.txt recommends the use of -u option to use uid:gid of host side. o Changed dockerhub repository name to perfbook-build-focal. o Reference #14 from #5 in FAQ-BUILD.text Thanks, Akira -- Akira Yokosawa (2): Add files to build Docker image for perfbook build FAQ-BUILD: Add Q&A on Docker image FAQ-BUILD.txt | 38 +++++++++++++++++++++++++--- docker/Dockerfile | 21 +++++++++++++++ docker/steel-city-comic.regular.ttf | Bin 0 -> 23280 bytes 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 docker/Dockerfile create mode 100644 docker/steel-city-comic.regular.ttf -- 2.17.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/2 -perfbook] Add files to build Docker image for perfbook build 2021-01-07 13:49 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa @ 2021-01-07 13:51 ` Akira Yokosawa 2021-01-07 13:52 ` [PATCH v2 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image Akira Yokosawa 2021-01-07 17:54 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Paul E. McKenney 2 siblings, 0 replies; 10+ messages in thread From: Akira Yokosawa @ 2021-01-07 13:51 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa From 9a7692db7e7fcafb7ba9d084cc30f918a1d7cb61 Mon Sep 17 00:00:00 2001 From: Akira Yokosawa <akiyks@gmail.com> Date: Thu, 7 Jan 2021 20:53:27 +0900 Subject: [PATCH v2 1/2 -perfbook] Add files to build Docker image for perfbook build Contains (not so) minimal packages to build perfbook*.pdf Signed-off-by: Akira Yokosawa <akiyks@gmail.com> --- docker/Dockerfile | 21 +++++++++++++++++++++ docker/steel-city-comic.regular.ttf | Bin 0 -> 23280 bytes 2 files changed, 21 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/steel-city-comic.regular.ttf diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000..e2d23c77 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,21 @@ +FROM ubuntu:focal + +RUN apt-get update && apt-get install -y locales && \ + localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \ + rm -rf /var/lib/apt/lists/* +ENV LANG en_US.utf8 +RUN apt-get update && DEBIAN_FRONTEND=noninteractive TZ=UTC apt-get install -y tzdata && \ + rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y fig2ps inkscape xfig graphviz psutils \ + texlive-publishers texlive-pstricks texlive-science texlive-fonts-extra \ + make nano vim git && \ + rm -rf /var/lib/apt/lists/* +COPY steel-city-comic.regular.ttf /usr/local/share/fonts/ +RUN fc-cache /usr/local/share/fonts/ +ARG uid=1000 +ARG gid=1000 +ARG user=perfbook +ARG group=perfbook +RUN groupadd -g $gid $group && useradd -u $uid -g $gid -m $user +VOLUME /work +WORKDIR /work diff --git a/docker/steel-city-comic.regular.ttf b/docker/steel-city-comic.regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8e78fb3be367fa19516664d5086322cf0774c711 GIT binary patch literal 23280 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 literal 0 HcmV?d00001 -- 2.17.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image 2021-01-07 13:49 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2021-01-07 13:51 ` [PATCH v2 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa @ 2021-01-07 13:52 ` Akira Yokosawa 2021-01-07 17:54 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Paul E. McKenney 2 siblings, 0 replies; 10+ messages in thread From: Akira Yokosawa @ 2021-01-07 13:52 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa From a439bdb6aedf1ba06600c060e865d872580b0596 Mon Sep 17 00:00:00 2001 From: Akira Yokosawa <akiyks@gmail.com> Date: Wed, 6 Jan 2021 19:03:55 +0900 Subject: [PATCH v2 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image The template Dockerfile and the usage explained is a tutorial level. Suggestions from Docker-savvy people are more than welcome. Signed-off-by: Akira Yokosawa <akiyks@gmail.com> --- FAQ-BUILD.txt | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/FAQ-BUILD.txt b/FAQ-BUILD.txt index 2eeb9fbb..f6c720b8 100644 --- a/FAQ-BUILD.txt +++ b/FAQ-BUILD.txt @@ -36,7 +36,11 @@ find it? A. The "pdflatex" package is a variant of Don Knuth's - digital typesetting program. On Ubuntu Xenial, + digital typesetting program. + If you'd like to use a Docker container, See #14 below. + Otherwise, instructions follow. + + On Ubuntu Xenial, installing the following set of packages suffices: texlive-latex-base texlive-latex-extra psutils @@ -71,8 +75,10 @@ On other Linux distributions such as RHEL/CentOS and Scientific Linux, where support of TeX Live packages - is insufficient, installing upstream TeX Live should - be a reasonable choice. + is insufficient, using a Docker container is the easiest + choice for you. Again, see #14 below. + + Of course, you can install upstream TeX Live. See: https://www.tug.org/texlive/quickinstall.html NOTE: In doing so, you might end up in having @@ -273,3 +279,29 @@ sudo updmap-sys --syncwithtrees --force sudo updmap-sys + +14. I want a stable environment to build perfbook.pdf. + Isn't some container image available in that regard? + + A. You can find a template Dockerfile under the docker/ + subdirectory. + A docker image built from it can be pulled by: + + docker pull akiyks/perfbook-build-focal:latest + + It can be run with the command: + + docker run --rm -it -v <path to perfbook dir>:/work \ + -u $(id -u):$(id -g) \ + akiyks/perfbook-build-focal:latest bash + + Note: + The prebuilt Docker image assumes <uid:pid> = <1000:1000>. + If you have different ids, bash prompt will be in the + form of "I have no name!@abcdef012345:/work$". + There is no problem in building perfbook. + If you'd like, you can build a docker image on your own. + + cd docker + docker build -t <docker image tag> \ + --build-arg uid=$(id -u) --build-arg gid=$(id -g) . -- 2.17.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A 2021-01-07 13:49 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2021-01-07 13:51 ` [PATCH v2 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa 2021-01-07 13:52 ` [PATCH v2 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image Akira Yokosawa @ 2021-01-07 17:54 ` Paul E. McKenney 2021-01-07 22:44 ` Akira Yokosawa 2 siblings, 1 reply; 10+ messages in thread From: Paul E. McKenney @ 2021-01-07 17:54 UTC (permalink / raw) To: Akira Yokosawa; +Cc: perfbook On Thu, Jan 07, 2021 at 10:49:08PM +0900, Akira Yokosawa wrote: > Hi, > > This is the v2 of the patch set. > > The strange -nq build Paul thought he had encountered prompted me > to prepare a Docker image for stable build environment. > Such an environment can be helpful as a contingency plan when > some package's update causes breakage in perfbook's build scripts, > such as the build error recently reported by Dmitry and Felipe. > > This patch set adds a Dockerfile I used and a Q&A entry in > FAQ-BUILD.txt. > docker/ subdirectory also holds steel city comic font to be copied > to the image. > > Changes v1 -> v2: > o Add a few ARG commands in Dockerfile for custimizable uid and gid. > o Entry #14 in FAQ-BUILD.txt recommends the use of -u option to > use uid:gid of host side. > o Changed dockerhub repository name to perfbook-build-focal. > o Reference #14 from #5 in FAQ-BUILD.text > > Thanks, Akira Applied and pushed, thank you! I did the usual wordsmithing, so please let me know if I messed anything up. Showing my ignorance of Docker... My guess from reading the FAQ is that the new docker/Dockerfile is used to build a new docker image, and that it is not needed by those using your akiyks/perfbook-build-focal:latest. Is my guess correct? Thanx, Paul > -- > Akira Yokosawa (2): > Add files to build Docker image for perfbook build > FAQ-BUILD: Add Q&A on Docker image > > FAQ-BUILD.txt | 38 +++++++++++++++++++++++++--- > docker/Dockerfile | 21 +++++++++++++++ > docker/steel-city-comic.regular.ttf | Bin 0 -> 23280 bytes > 3 files changed, 56 insertions(+), 3 deletions(-) > create mode 100644 docker/Dockerfile > create mode 100644 docker/steel-city-comic.regular.ttf > > -- > 2.17.1 > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A 2021-01-07 17:54 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Paul E. McKenney @ 2021-01-07 22:44 ` Akira Yokosawa 0 siblings, 0 replies; 10+ messages in thread From: Akira Yokosawa @ 2021-01-07 22:44 UTC (permalink / raw) To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa On Thu, 7 Jan 2021 09:54:46 -0800, Paul E. McKenney wrote: > On Thu, Jan 07, 2021 at 10:49:08PM +0900, Akira Yokosawa wrote: >> Hi, >> >> This is the v2 of the patch set. >> >> The strange -nq build Paul thought he had encountered prompted me >> to prepare a Docker image for stable build environment. >> Such an environment can be helpful as a contingency plan when >> some package's update causes breakage in perfbook's build scripts, >> such as the build error recently reported by Dmitry and Felipe. >> >> This patch set adds a Dockerfile I used and a Q&A entry in >> FAQ-BUILD.txt. >> docker/ subdirectory also holds steel city comic font to be copied >> to the image. >> >> Changes v1 -> v2: >> o Add a few ARG commands in Dockerfile for custimizable uid and gid. >> o Entry #14 in FAQ-BUILD.txt recommends the use of -u option to >> use uid:gid of host side. >> o Changed dockerhub repository name to perfbook-build-focal. >> o Reference #14 from #5 in FAQ-BUILD.text >> >> Thanks, Akira > > Applied and pushed, thank you! I did the usual wordsmithing, so please > let me know if I messed anything up. Thank you! Now it looks perfect. > > Showing my ignorance of Docker... > > My guess from reading the FAQ is that the new docker/Dockerfile is > used to build a new docker image, and that it is not needed by those > using your akiyks/perfbook-build-focal:latest. Is my guess correct? You guessed quite right. One advantage of docker is that once you pulled my container image, large layers installing various packages are used unmodified in a new build. Building a image with an alternative <uid:gid> pair will take just a few seconds. Initial pull of the image can take several minutes or longer depending on the network bandwidth. For instructions to install Docker Engine on Ubuntu, see: https://docs.docker.com/engine/install/ubuntu/. The command in the FAQ assumes your user id belong to the "docker" group. Otherwise, every docker command needs "sudo". One thing you need to care is the disk capacity under /var/lib/docker. If you are behind a corporate proxy, you need to setup proxy for docker service. See: https://docs.docker.com/network/proxy/ Thanks, Akira > > Thanx, Paul > >> -- >> Akira Yokosawa (2): >> Add files to build Docker image for perfbook build >> FAQ-BUILD: Add Q&A on Docker image >> >> FAQ-BUILD.txt | 38 +++++++++++++++++++++++++--- >> docker/Dockerfile | 21 +++++++++++++++ >> docker/steel-city-comic.regular.ttf | Bin 0 -> 23280 bytes >> 3 files changed, 56 insertions(+), 3 deletions(-) >> create mode 100644 docker/Dockerfile >> create mode 100644 docker/steel-city-comic.regular.ttf >> >> -- >> 2.17.1 >> >> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-01-07 22:44 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-06 10:28 [PATCH 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2021-01-06 10:31 ` [PATCH 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa 2021-01-06 10:32 ` [PATCH 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image Akira Yokosawa 2021-01-06 14:36 ` Akira Yokosawa 2021-01-06 23:29 ` Paul E. McKenney 2021-01-07 13:49 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Akira Yokosawa 2021-01-07 13:51 ` [PATCH v2 1/2 -perfbook] Add files to build Docker image for perfbook build Akira Yokosawa 2021-01-07 13:52 ` [PATCH v2 2/2 -perfbook] FAQ-BUILD: Add Q&A on Docker image Akira Yokosawa 2021-01-07 17:54 ` [PATCH v2 0/2 -perfbook] Add Dockerfile and Q&A Paul E. McKenney 2021-01-07 22:44 ` Akira Yokosawa
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.