Browse code

Change pullsources.py to ask for user's permission before replaceing locally changed tar source file from replaced with official bintray copy. Updated bzip package SPEC that had conflict error after previous filysystem structure changes.

Touseef Liaqat authored on 2015/04/24 15:42:32
Showing 3 changed files
... ...
@@ -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])
... ...
@@ -11,8 +11,8 @@
11 11
 #	Some standard locations
12 12
 #
13 13
 %_sysconfdir		/etc
14
-%_lib			/lib
15
-%_lib64			/lib64
14
+%_lib			/usr/lib
15
+%_lib64			/usr/lib64
16 16
 %_prefix		/usr
17 17
 %_exec_prefix		/usr
18 18
 %_bindir		/usr/bin