... | ... |
@@ -30,13 +30,12 @@ make VERBOSE=1 %{?_smp_mflags} |
30 | 30 |
make PREFIX=%{buildroot}/usr install |
31 | 31 |
install -vdm 0755 %{buildroot}/%{_lib} |
32 | 32 |
install -vdm 0755 %{buildroot}/bin |
33 |
-cp -v bzip2-shared %{buildroot}/bin/bzip2 |
|
34 | 33 |
cp -av libbz2.so* %{buildroot}/%{_lib} |
35 | 34 |
install -vdm 755 %{buildroot}%{_libdir} |
36 | 35 |
ln -sv ../../%{_lib}/libbz2.so.1.0 %{buildroot}%{_libdir}/libbz2.so |
37 | 36 |
rm -v %{buildroot}%{_bindir}/{bunzip2,bzcat} |
38 |
-ln -sv bzip2 %{buildroot}/bin/bunzip2 |
|
39 |
-ln -sv bzip2 %{buildroot}/bin/bzcat |
|
37 |
+ln -sv bzip2 %{buildroot}/usr/bin/bunzip2 |
|
38 |
+ln -sv bzip2 %{buildroot}/usr/bin/bzcat |
|
40 | 39 |
find %{buildroot} -name '*.a' -delete |
41 | 40 |
%check |
42 | 41 |
make -k check |& tee %{_specdir}/%{name}-check-log || %{nocheck} |
... | ... |
@@ -44,9 +43,8 @@ make -k check |& tee %{_specdir}/%{name}-check-log || %{nocheck} |
44 | 44 |
%postun -p /sbin/ldconfig |
45 | 45 |
%files |
46 | 46 |
%defattr(-,root,root) |
47 |
-/bin/bzip2 |
|
48 |
-/bin/bzcat |
|
49 |
-/bin/bunzip2 |
|
47 |
+%{_bindir}/bzcat |
|
48 |
+%{_bindir}/bunzip2 |
|
50 | 49 |
%{_bindir}/bzless |
51 | 50 |
%{_bindir}/bzgrep |
52 | 51 |
%{_bindir}/bzip2 |
... | ... |
@@ -42,12 +42,18 @@ class pullSources: |
42 | 42 |
f.close() |
43 | 43 |
return sha1.hexdigest() |
44 | 44 |
|
45 |
- def downloadFile(self, sources_dir, filename, sha1 = None): |
|
46 |
- file_path = os.path.join(sources_dir, filename) |
|
47 |
- # check if file exists and has the same sha1 |
|
48 |
- if os.path.isfile(file_path) and sha1 == self.getFileHash(file_path): |
|
49 |
- return file_path |
|
50 |
- |
|
45 |
+ def downloadExistingFilePrompt(self, filename): |
|
46 |
+ yes = ['yes', 'y'] |
|
47 |
+ no = ['no', 'n'] |
|
48 |
+ while True: |
|
49 |
+ prompt = "Found a different local copy of {0}. Do you want to replace it? [y/n]:".format(filename) |
|
50 |
+ answer = raw_input(prompt).lower() |
|
51 |
+ if answer in yes: |
|
52 |
+ return True |
|
53 |
+ elif answer in no: |
|
54 |
+ return False |
|
55 |
+ |
|
56 |
+ def downloadFile(self, filename, file_path): |
|
51 | 57 |
print 'Downloading %s...' % filename |
52 | 58 |
|
53 | 59 |
#form url: https://dl.bintray.com/vmware/photon_sources/1.0/<filename>. |
... | ... |
@@ -72,19 +78,31 @@ class pullSources: |
72 | 72 |
handle.write(block) |
73 | 73 |
return file_path |
74 | 74 |
|
75 |
+ def downloadFileHelper(self, package_name, package_path, package_sha1 = None): |
|
76 |
+ self.downloadFile(package_name, package_path) |
|
77 |
+ if package_sha1 != self.getFileHash(package_path): |
|
78 |
+ raise Exception('Invalid sha1 for package %s' % package_name) |
|
75 | 79 |
|
76 | 80 |
def pull(self, sources_dir): |
77 | 81 |
#Download the list of sources. |
78 |
- package_file_path = self.downloadFile(sources_dir, 'sha1-all') |
|
82 |
+ sha1_filename = 'sha1-all' |
|
83 |
+ sha1_file_path = os.path.join(sources_dir, sha1_filename) |
|
84 |
+ package_file_path = self.downloadFile(sha1_filename, sha1_file_path) |
|
79 | 85 |
with open(package_file_path) as f: |
80 | 86 |
packages = f.readlines() |
81 | 87 |
for package in packages: |
82 | 88 |
i = string.rindex(package, '-') |
89 |
+ |
|
83 | 90 |
package_name = string.strip(package[:i]) |
84 | 91 |
package_sha1 = string.strip(package[i+1:]) |
85 |
- package_path = self.downloadFile(sources_dir, package_name, package_sha1) |
|
86 |
- if package_sha1 != self.getFileHash(package_path): |
|
87 |
- raise Exception('Invalid sha1 for package %s' % package_name) |
|
92 |
+ package_path = os.path.join(sources_dir, package_name) |
|
93 |
+ |
|
94 |
+ if not os.path.isfile(package_path): |
|
95 |
+ self.downloadFileHelper(package_name, package_path, package_sha1) |
|
96 |
+ |
|
97 |
+ elif package_sha1 != self.getFileHash(package_path): |
|
98 |
+ if self.downloadExistingFilePrompt(package_name): |
|
99 |
+ self.downloadFileHelper(package_name, package_path, package_sha1) |
|
88 | 100 |
|
89 | 101 |
if __name__ == '__main__': |
90 | 102 |
usage = "Usage: %prog [options] <sources_dir>" |
... | ... |
@@ -98,4 +116,5 @@ if __name__ == '__main__': |
98 | 98 |
parser.error("Incorrect number of arguments") |
99 | 99 |
|
100 | 100 |
p = pullSources(options.config_path) |
101 |
+ print args[0] |
|
101 | 102 |
p.pull(args[0]) |