@@ -90,29 +90,53 @@ def get_git(self, p):
90
90
91
91
92
92
def get_data (self , url ):
93
- u = urllib .request .urlopen (url )
94
- data = u .read ()
95
- u .close ()
93
+ blocksize = 10 * 1024
94
+ resp = urllib .request .urlopen (url )
95
+ dlsize = int (resp .info ()['Content-Length' ])
96
+ print ('Download size:' , dlsize )
97
+ print ('Downloading: ' , end = '' )
98
+ sys .stdout .flush ()
99
+ printed_dots = 0
100
+ blocks = []
101
+ downloaded = 0
102
+ while True :
103
+ block = resp .read (blocksize )
104
+ if block == b'' :
105
+ break
106
+ downloaded += len (block )
107
+ blocks .append (block )
108
+ ratio = int (downloaded / dlsize * 10 )
109
+ while printed_dots < ratio :
110
+ print ('.' , end = '' )
111
+ sys .stdout .flush ()
112
+ printed_dots += 1
113
+ print ('' )
114
+ resp .close ()
115
+ return b'' .join (blocks )
116
+
117
+ def get_hash (self , data ):
96
118
h = hashlib .sha256 ()
97
119
h .update (data )
98
120
hashvalue = h .hexdigest ()
99
- return ( data , hashvalue )
121
+ return hashvalue
100
122
101
123
def download (self , p , packagename ):
102
124
ofname = os .path .join (self .cachedir , p .get ('source_filename' ))
103
125
if os .path .exists (ofname ):
104
126
mlog .log ('Using' , mlog .bold (packagename ), 'from cache.' )
105
127
return
106
128
srcurl = p .get ('source_url' )
107
- mlog .log ('Dowloading' , mlog .bold (packagename ), 'from' , srcurl )
108
- (srcdata , dhash ) = self .get_data (srcurl )
129
+ mlog .log ('Dowloading' , mlog .bold (packagename ), 'from' , mlog .bold (srcurl ))
130
+ srcdata = self .get_data (srcurl )
131
+ dhash = self .get_hash (srcdata )
109
132
expected = p .get ('source_hash' )
110
133
if dhash != expected :
111
134
raise RuntimeError ('Incorrect hash for source %s:\n %s expected\n %s actual.' % (packagename , expected , dhash ))
112
135
if p .has_patch ():
113
136
purl = p .get ('patch_url' )
114
137
mlog .log ('Downloading patch from' , mlog .bold (purl ))
115
- (pdata , phash ) = self .get_data (purl )
138
+ pdata = self .get_data (purl )
139
+ phash = self .get_hash (pdata )
116
140
expected = p .get ('patch_hash' )
117
141
if phash != expected :
118
142
raise RuntimeError ('Incorrect hash for patch %s:\n %s expected\n %s actual' % (packagename , expected , phash ))
0 commit comments