From 4b55e557f21662473028b20df35ab64747be9d47 Mon Sep 17 00:00:00 2001 From: Mike Hiretsky Date: Mon, 11 Oct 2010 14:25:51 +0400 Subject: [PATCH] Many bugfix of terminate execute by InstallError. Fix return code by answer 'no' for question continue installation. Fix using translate for cl_fill_install module. Add check existing of command fdisk and parted. Add catch of exceptions for setInstallOption. Change order of getting TargetDistr and printInfo for corrent work with wrong pipe. Fix string for translate and update translate. --- i18n/cl_install_ru.mo | Bin 22299 -> 22378 bytes pym/cl_fill_install.py | 28 +++++++++++++++++++++++----- pym/cl_install.py | 22 ++++++++++++++-------- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/i18n/cl_install_ru.mo b/i18n/cl_install_ru.mo index 03c2541bd3d1a48007c3cc1fcc2e9fcac3b15900..5dfd87ee3c25ed8f67e85bc05d385752720496ce 100644 GIT binary patch delta 4633 zcmYk-32+wm9merr4q|{nB?sY6fV_c(U=qk-2qd5+2mv8nhDuQof*`aQVujSw1Xd7Y zDTi3@L*z)QTpRT1&^VmN+!EV`tLu^X_J*JMXif|L(iH|8w7W zXMM=m^&w7kbogdt`-Jo)CnL;!A!emrbk?k)n^`m-$6j~|WAHE79b55!?7~H|H*(6d zFawLRGge?aF2TN7hds<3YoZX#iQC>6t;oj`sHH0oz!V&YeXtypaV7fk0IDHZun3z` z_a*UARXh;&eIdr-WQ@moK^>YvfsbuvrwfmuD!7O~{0e!dwV`f|;VC(of%!NCb>AlR z<6)#{b`68~V*<&5|DTHv9PIN{MSt_cl0kue1qk6In)$si|5RYIMe(u?shp0hAQP+(@b!@UjL329~HDpz&ikD*; z?m^mMb@(GZhiYH|)#KZ!9=D=KD3Y5yU@}s-rJ=4HiF(d7Ov5T<`Iz$>1@5(z_yFEQ zt%?77=OY+5JtzfLQ8BV^tPB}VTY!3SEowyep{Aq}_1vqd`|cng`wzQt^!bAwajZ9m zQch%HKdeFOw*9CFUqC&$8C78m>cLUWhZ>TOnvxNiiAzyEK7<riuAhw9lG)Z+RY{pd?|8&ZgB*jVIabJ=MG)}Vd~ z_n@Za7^ zt*EK$%EPq!Gm$sh3Q!Fw)A;)-RB}Q+*noO%4x=ji9M$q>)Es|@>e+z)?&~uG2ZfmZ z1l5uCtYH1g>_v^#HKcF$1M2%^zSRABsCphvXZ%M|Si%XOVP|m?{vC&7L5BNVzXbW% zVRld9XWsdI=0$TpAN51C2G!6@ScYvl7Rv^>i*Gls;P@tH;}nNxs^V3s2h=0q*&Q5= zaWpdr$0MCE2i1^+SdO3KY#hwfbbbd8#Sd@;hH`T)Zp0)^$fZ&&L@jpb6$-lHBIaQm z>OpyY`zX%B5#WA=a>40P3 zP@oewfp6#FGK|G9QB&}}cRYmQ;F&fawYXNGMrsFY1e-8eG3vT(hEo;IMK!!0)zB|c zBhi6(H%ae*Dg{0^irwSr;1v8LYEfn|p{l3^d1Y-e_P}kZ#dRDRH2VzI;7$x@F^ag3&ZtETWYu1EFYJDiR=4>4RikF)Rx)c4cbX)Wx;BD{=hSOm4R z-Ygww;Z*PV9aPW1!bt2=#2bU%(V0e}l7hU7-LWstkHtdN11F*?tU*2$P zZjXDRzMqMD?_WYq?OxOf-b6mu#x4p+Ji_>^WfLE9=i~)sec4u=h##RIlsM8|Yz3%A zxd8QmM(_Luq%C$2<1n9hIuT2e7s2KukFxEUieI1>d02_#_9TlXp3I45s0;U?D)=kv zh8BDk<43!1!$D-a?Jlx@ErXS&j+7(o&sL-EJCDq!-N6}{LhHxj3haZ|9SZRjTJQzz z$gjmrT#kCsZPZZvxJyGh9~a^_d=l>~b$j@<=O$zj>@sS|JB@eO(h$`Bn^6tA>>WFy zJe|f_F0wwX8pH84>TNiOp%~A6XzmhlJI+A$_}{1@PMYNY;!VQI9M>TqYh|aA7|qFS ztnl28oOkR71&qNb)6wMgGUT^CyBuHsCL;CK~w#kJn?PE^JF zP*d83Nf^buJry%CSMUEy3jD^{+o;9%E%M4*)Q{bv9D_w1uR~4Ab!7A`g5lA~Ou>OT z6@Q7fsMoX&Gw@+*3&9$4lV}u|5N#c)-_DVDNFLFg>Y*=^lZ0gv?CmJbB8Q0<(kb#& za)7)=)Uf-Aw!Wk)SmI|J)fjCnT!Mey&ryDYIQ!UDlM|$Ui}VUNP$TjINg;!XdbE_Z zZ^tM+=pFb`i%Y|;Eslf{X4ZC)1*99fLYPJSNb}!7;dP=R*DJM=Xw#zXO*GW65G}Tz zWDC(&;bI>mFNtjd6{V26WqH$bgDnN%GY`)nR;799wI*P+)P|X z>b&Dlo}2JJuRH*mW}8c{k`kgVhpY>h%zlRbymC7WHUHY8$gfEgSxL05A(ceG)%oNo zNg&$Bk$Q5FoG0yDW_!VNK6d!Ob6TK!o3ycx&FLR3x_>~|y>e$fPM-CS82 delta 4558 zcmYk;3-p)s9S87lx=3_U=_1v?$R&Te=UOr}ln}XOlr*#%bBk2_Tcz4e!_p!~S?(IE z$^Cvw=GMV+$gmm5Wt_v=+z#98{rf$gv*$dY=k@)5f6w#1KhOXF(W++4RyAw-TgMhx z6~_j#ow%b_DczfuvTxgzmU6?^rF7(S_T(CN;s$o%`|QB)D%-hPvh?Pz9K(^=YRr5$^62R5=Vk7OU7#|AE8IdzGf)Ud-?P zxefPcR~}olsg$!MoMnMaZoHOhU^Tn*RjRXm#yr?uErZyD!+99<+&ngL8I7zw$lCMV zR{k??#Wrs4#jfn3{W4r4vpt>};bc0?+^YNr6eL zFf;fShj3dD=ecoAN788OpWog3XG)eSXw6%yAMU2vDo;}#Wh2v(e={TMAd?2iG8Ii` zHr@G5eG9lJ7qd5?=Wzb3D&L_;DMRH?%=~9_U8x{byOtT*I%cK7&S7UGP#B9zf z%t+2>IzEfL^AZl=n#%W>4s}*p?(4%0tUt5lqnac#W#gEJC$c$bP}^lT+w*FsgSRpx zzMmQKi_8qY%a;6x+N@QU`+BN0^$g}t97o%wOs88*(`6F7NZihBidU;2-exNLj%jFH z^JsgNMw-QPAXD)qW=3W*OR|Wmcm?y^qjZ)HE-m;uGmtMiHt&DyhEjG^FoD`CvzUsP zF%_?68eGp*{7 z#CUeH6SFp_GHW`U8QBtMb3MTZe$I5HQ@?u0wx_d}XpJ8Ssr`f^z<8l!*Q!8mK zALD-PxNH3zKc3Dq&*dcERh755E?M*anGelW zrlZ&KD89}^*|=MM^IgC>^0#pychk$Xds34`Dp)|jl}EV;Kjk3qsJl8}j$=A9hbMCt zr?7+CQhqM?;q|yF*EhIR{0O9 zj`BUTsfL)A%+MHS>SnOkFmvC#Oha8vXF5EIwoO^Y%)mXBuQ9Lhe|SvZ|ABHxD_Fp6 z#*IuvU(%ad`dQd+JcQX)Q)sfvLZ-tHaDRTwnH*tWZTxay5quBWrS;F8}v{Gk564`tSNJTrrH=qz`+ zY{f5_j+F!IOS1C;=HGrQ2P-(7vzQOZUzttz5wjV$JFs5CsZ9B~Ob1qS8-BnZ{Ejw$ z>F(wBXgQQwvPI11Uc(IJ9rodX(M|OmkF?d(!>gDFR`3e0qq9u>Vg3DHP8+vuWJc1_ zji%Qqt;qToWWywHaFusTCVaO zuVy>zlM&y-bl@c(#b!tNmz)#mEH}GkCcff8_VQyqoGHJUS*n}3OWyy-CAL@a33p_N z@%6RYgW0Xe(~V^{vy0ziD-PFsJC0!TW0?kyV%B~Jd-EY4%eOd~!@TQ0Ddlwb%=>@6 zgjcjY#7yPa9L13n>Pyl@vsKnIGt<&E?atP`kbBS@SnlGk{EW>wQ@kXyQFC98EyN>Y ztr#LEYQI)#TrILT8Era}^}0=DJ?|B#iDgoXOScA);<#P1(Db9DY1hXDl(#3V$-ooBGZ_oL1gB#PjYM{nhQ%`+cQ7m*5YYl zb<2A3C-Dd2W0}uzQ@K(ihc~MBPlb(J7Kv=O?Zj0g#~F3XvphunUbGVris!@}(N!!H zZN+?%FzvatSdXLK8 z`HL!jHqWinr|?B_f|xAEi+k$huYU?JS1?jsEBcBYPl$!JRQ(%piF8NttE%j#%ITFo zc!M~<%8z3w@$)LbCm$D=i47@B!NuY_F-GL*EbgzR>X+j%s>-+Gsp9t4E4Oala`ls4 NKI*ypwV{jq{tu2^*tY-x diff --git a/pym/cl_fill_install.py b/pym/cl_fill_install.py index f5f7f19..50ea826 100644 --- a/pym/cl_fill_install.py +++ b/pym/cl_fill_install.py @@ -15,6 +15,7 @@ # limitations under the License. import os +import sys import re from crypt import crypt import cl_overriding @@ -29,6 +30,11 @@ from cl_template import _terms from subprocess import PIPE, Popen from cl_install import convertDictOpt +from cl_lang import lang +tr = lang() +tr.setLocalDomain('cl_install') +tr.setLanguage(sys.modules[__name__]) + class fillVars(object, glob_attr): nonTransferedDirs = ["/","/bin", "/dev", "/etc", "/lib", "/lib32", "/lib64", @@ -134,10 +140,15 @@ class fillVars(object, glob_attr): curDevice = None # getting id - execStr = '/sbin/fdisk -l' + execProg = '/sbin/fdisk' + execStr = '%s -l'%execProg + if not path.exists(execProg): + cl_overriding.printERROR(_("Command not found '%s'")%execProg) + cl_overriding.exit(1) + execStr = '%s -l'%execProg res = self._runos(execStr,env={"LANG":"C"}) if res is False: - cl_overriding.printERROR("Cann't execute '%s'"%execStr) + cl_overriding.printERROR(_("Cann't execute '%s'")%execStr) cl_overriding.exit(1) partedLines = filter(lambda x: x.startswith('/dev/'), res or [] ) partedMatrix = map(lambda x: filter(lambda y: y and y!="*", @@ -149,10 +160,14 @@ class fillVars(object, glob_attr): disk_hash[part]['id'] = sysid # parse all parted lines started with Disk and started with number - execStr = '/usr/sbin/parted -l' + execProg = '/usr/sbin/parted' + execStr = '%s -l'%execProg + if not path.exists(execProg): + cl_overriding.printERROR(_("Command not found '%s'")%execProg) + cl_overriding.exit(1) res = self._runos(execStr,env={"LANG":"C"}) if res is False: - cl_overriding.printERROR("Cann't execute '%s'"%execStr) + cl_overriding.printERROR(_("Cann't execute '%s'")%execStr) cl_overriding.exit(1) partedLines = filter(lambda x: x.startswith("Disk") or x.strip()[:1].isdigit(), res ) @@ -174,9 +189,12 @@ class fillVars(object, glob_attr): disk_hash[partition]['size'] = parts[3] # fill format, name and uuid execStr = '/sbin/blkid' + if not path.exists(execStr): + cl_overriding.printERROR(_("Command not found '%s'")%execStr) + cl_overriding.exit(1) res = self._runos(execStr) if res is False: - cl_overriding.printERROR("Cann't execute '%s'"%execStr) + cl_overriding.printERROR(_("Cann't execute '%s'")%execStr) cl_overriding.exit(1) # map attribute name of blkid to disk_hash blkid_hash = {'LABEL':'name', diff --git a/pym/cl_install.py b/pym/cl_install.py index a4f55d4..1d9dbb3 100644 --- a/pym/cl_install.py +++ b/pym/cl_install.py @@ -804,7 +804,7 @@ class cl_install(color_print, SignalInterrupt): else: return dirsFiles - def printInfo(self,sourceDistr,targetDistr): + def printInfo(self): self.printSUCCESS(_("Installation") + " Calculate Linux") self.defaultPrint("%s\n"%_("System information")) self.printSUCCESS(_("Computer name")+": %s"% @@ -1278,11 +1278,15 @@ class cl_install(color_print, SignalInterrupt): def setInstallOptions(self, listDisks, listBinds, listSwaps, listUsers, mbrDisk): """Set install options (set users, disks and mbr""" - if self.setUsers(listUsers) and \ - self.setDisks(listDisks,listBinds,listSwaps) and \ - self.setMBR(mbrDisk): - return self.createListOptions() - else: + try: + if self.setUsers(listUsers) and \ + self.setDisks(listDisks,listBinds,listSwaps) and \ + self.setMBR(mbrDisk): + return self.createListOptions() + else: + return False + except InstallError,e: + self.printERROR(str(e).strip()) return False def getDeviceByField(self,field,value, secondPrefix="os_disk"): @@ -1788,13 +1792,14 @@ class cl_install(color_print, SignalInterrupt): rootPartIsFormat=rootPartCmdDict['isFormat'] rootPartSystemId=rootPartCmdDict['systemId'] + self.printInfo() + targetDistr = self.getTargetDistributive(rootPartdev, buildermode=builder, fileSystem=rootPartFileSystem, isFormat=rootPartIsFormat, systemId=rootPartSystemId) - self.printInfo(sourceDistr,targetDistr) distRep = DistributiveRepository() minver = "10.8" instver = \ @@ -1818,7 +1823,8 @@ the system") + " (yes/no)" self.defaultPrint("\n") raise KeyboardInterrupt if dialogRes in (None,False): - return True + self.printERROR(_("Interrupting the installation")) + return False # set Users passwords if self.clVars.Get('os_install_root_type') != "flash": changePwdUsers = \