Changeset 4645 for trunk


Ignore:
Timestamp:
Nov 3, 2020 6:19:08 PM (13 months ago)
Author:
toby
Message:

more workarounds for Mac svn checksum problem

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIctrlGUI.py

    r4632 r4645  
    50355035        print ('GSAS-II version on server: '+repos)
    50365036        if local == repos:
     5037            up,mod,lock = GSASIIpath.svnGetFileStatus()
     5038        else:
     5039            up = 0
     5040            mods = GSASIIpath.svnFindLocalChanges()
     5041            mod = len(mods)
     5042        if local == repos and up:
     5043            dlg = wx.MessageDialog(self.frame,
     5044                                   'You have the current version '+
     5045                                   ' of GSAS-II installed ('+repos+
     5046                                   '). However, '+str(up)+
     5047                                   ' file(s) still need to be updated.'+
     5048                                   ' Most likely a previous update failed to finish.'+
     5049                                   '\n\nPress OK to retry the update.'+
     5050                                   '\n\nIf this problem continues contact toby@anl.gov',
     5051                                   'Failed Update Likely',
     5052                                   wx.OK|wx.CANCEL)
     5053            if dlg.ShowModal() != wx.ID_OK:
     5054                dlg.Destroy()
     5055                return
     5056            else:
     5057                dlg.Destroy()
     5058            if lock: GSASIIpath.svnCleanup()
     5059        elif local == repos:
    50375060            dlg = wx.MessageDialog(self.frame,
    50385061                                   'GSAS-II is up-to-date. Version '+local+' is already loaded.',
     
    50425065            dlg.Destroy()
    50435066            return
    5044         mods = GSASIIpath.svnFindLocalChanges()
    5045         if mods:
     5067        if mod:
    50465068            dlg = wx.MessageDialog(self.frame,
    50475069                                   'You have version '+local+
    50485070                                   ' of GSAS-II installed, but the current version is '+repos+
    5049                                    '. However, '+str(len(mods))+
     5071                                   '. However, '+str(mod)+
    50505072                                   ' file(s) on your local computer have been modified.'
    50515073                                   ' Updating will attempt to merge your local changes with '
     
    50535075                                   'conflicts arise, local changes will be '
    50545076                                   'discarded. It is also possible that the '
    5055                                    'local changes my prevent GSAS-II from running. '
    5056                                    'Press OK to start an update if this is acceptable:',
     5077                                   'local changes may prevent GSAS-II from running. '
     5078                                   '\n\nPress OK to start an update if this is acceptable:',
    50575079                                   'Local GSAS-II Mods',
    50585080                                   wx.OK|wx.CANCEL)
     
    50745096            dlg.Destroy()
    50755097        print ('start updates')
    5076         dlg = wx.MessageDialog(self.frame,
    5077                                'Your project will now be saved, GSAS-II will exit and an update '
    5078                                'will be performed and GSAS-II will restart. Press Cancel to '
    5079                                'abort the update',
    5080                                'Start update?',
    5081                                wx.OK|wx.CANCEL)
    5082         if dlg.ShowModal() != wx.ID_OK:
     5098        if self.frame.GPXtree.GetCount() > 1:
     5099            dlg = wx.MessageDialog(self.frame,
     5100                               'Your project will now be saved, GSAS-II will exit and an update '+
     5101                               'will be performed and GSAS-II will restart. Press Cancel '+
     5102                               'in next dialog to avoid saving the project.',
     5103                               'Starting update',
     5104                               wx.OK)
     5105            dlg.ShowModal()
    50835106            dlg.Destroy()
    5084             return
    5085         dlg.Destroy()
    5086         if self.frame.GPXtree.GetCount() > 1:
    50875107            self.frame.OnFileSave(event)
    50885108            GPX = self.frame.GSASprojectfile
  • trunk/GSASIIdataGUI.py

    r4644 r4645  
    336336    # print (versions)
    337337    print ("Python module versions loaded:")
    338     print ("  Python:     %s"%sys.version.split()[0])
     338    print ("  Python:     %s from %s"%(sys.version.split()[0],sys.executable))
    339339    print ("  wx:         %s"%wx.__version__)
    340340    print ("  matplotlib: %s"%mpl.__version__)
  • trunk/GSASIIpath.py

    r4640 r4645  
    414414    if verbose: print(u"Performing svn cleanup at "+fpath)
    415415    cmd = [svn,'cleanup',fpath]
    416     if verbose:
    417         s = 'subversion command:\n  '
    418         for i in cmd: s += i + ' '
    419         print(s)
     416    if verbose: showsvncmd(cmd)       
    420417    s = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    421418    out,err = MakeByte2str(s.communicate())
     
    492489        print(out)
    493490
     491def showsvncmd(cmd):
     492    s = '\nsvn command:  '
     493    for i in cmd: s += i + ' '
     494    print(s)
     495
    494496def svnChecksumPatch(svn,fpath,verstr):
    495497    '''This performs a fix when svn cannot finish an update because of
     
    501503    cmd = ['svn','update','--set-depth','empty',
    502504               os.path.join(fpath,'bindist')]
     505    showsvncmd(cmd)       
    503506    s = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    504507    out,err = MakeByte2str(s.communicate())
    505508    #if err: print('error=',err)
     509    cmd = ['svn','switch',g2home+'/trunk/bindist',
     510               os.path.join(fpath,'bindist'),
     511               '--non-interactive', '--trust-server-cert', '--accept',
     512               'theirs-conflict', '--force', '-rHEAD', '--ignore-ancestry']
     513    showsvncmd(cmd)       
     514    s = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
     515    out,err = MakeByte2str(s.communicate())
    506516    DownloadG2Binaries(g2home,verbose=True)
    507517    cmd = ['svn','update','--set-depth','infinity',
    508518               os.path.join(fpath,'bindist')]
     519    showsvncmd(cmd)       
    509520    s = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    510521    out,err = MakeByte2str(s.communicate())
     
    516527        cmd += ['--trust-server-cert']
    517528    if proxycmds: cmd += proxycmds
    518     #print(cmd)
     529    showsvncmd(cmd)       
    519530    s = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    520531    out,err = MakeByte2str(s.communicate())
     
    660671    print ("Files installed at: "+loadpath)
    661672    return True
     673
     674def svnGetFileStatus(fpath=os.path.split(__file__)[0],version=None):
     675    '''Compare file status to repository (svn status -u)
     676
     677    :returns: updatecount,modcount,locked where
     678       updatecount is the number of files waiting to be updated from
     679       repository
     680       modcount is the number of files that have been modified locally
     681       locked  is the number of files tagged as locked
     682    '''
     683    import xml.etree.ElementTree as ET
     684    svn = whichsvn()
     685    if version is not None:
     686        vstr = '-r'+str(version)
     687    else:
     688        vstr = '-rHEAD'
     689    cmd = [svn,'st',fpath,'--xml','-u',vstr]
     690    if proxycmds: cmd += proxycmds
     691    s = subprocess.Popen(cmd,
     692                         stdout=subprocess.PIPE,stderr=subprocess.PIPE)
     693    out,err = MakeByte2str(s.communicate())
     694    if err:
     695        print ('out=%s'%out)
     696        print ('err=%s'%err)
     697        s = '\nsvn command:  '
     698        for i in cmd: s += i + ' '
     699        print(s)
     700        return None
     701
     702    locked = 0
     703    updatecount = 0
     704    modcount = 0
     705    x = ET.fromstring(out)
     706    for i0 in x.iter('entry'):
     707        filename = i0.attrib.get('path','?')
     708        wc_rev = ''
     709        status = ''
     710        switched = ''
     711        for i1 in i0.iter('wc-status'):
     712            wc_rev = i1.attrib.get('revision','')
     713            status = i1.attrib.get('item','')
     714            switched = i1.attrib.get('switched','')
     715            if i1.attrib.get('wc-locked',''): locked += 1
     716        if status == "unversioned": continue
     717        if switched == "true": continue
     718        if status == "modified":
     719            modcount += 1
     720        elif status == "normal":
     721            updatecount += 1
     722        file_rev = ''
     723        for i2 in i1.iter('commit'):
     724            file_rev = i2.attrib.get('revision','')
     725        local_status = ''
     726        for i1 in i0.iter('repos-status'):
     727            local_status = i1.attrib.get('item','')
     728        #print(filename,wc_rev,file_rev,status,local_status,switched)
     729    return updatecount,modcount,locked
    662730
    663731def GetBinaryPrefix():
Note: See TracChangeset for help on using the changeset viewer.