Browse code

Use pkg_info.json to find rpm files of a package when making cloud image. (bug 1865909)

Change-Id: I1d7e43f02cca9a66da2260dcb940a97a563748d9
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/2696
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Divya Thaluru <dthaluru@vmware.com>

xiaolin-vmware authored on 2017/05/19 03:47:47
Showing 3 changed files
... ...
@@ -242,26 +242,19 @@ class Installer(object):
242 242
         
243 243
     def copy_rpms(self):
244 244
         # prepare the RPMs list
245
-        rpms = []
246
-        for root, dirs, files in os.walk(self.rpm_path):
247
-            for name in files:
248
-                file = os.path.join(root, name)
249
-                size = os.path.getsize(file)
250
-                rpms.append({'filename': name, 'path': file, 'size': size})
245
+        json_pkg_to_rpm_map = JsonWrapper(self.install_config["pkg_to_rpm_map_file"])
246
+        pkg_to_rpm_map = json_pkg_to_rpm_map.read()
251 247
 
252 248
         self.rpms_tobeinstalled = []
253 249
         selected_packages = self.install_config['packages']
254
-        for package in selected_packages:
255
-            pattern = package + '-[0-9]*.rpm'
256
-            if (package == 'glibc'):
257
-                pattern2 = pattern
258
-            else:
259
-                pattern2 = package + '-[a-z][0-9]*.rpm'
260
-            for rpm in rpms:
261
-                if fnmatch.fnmatch(rpm['filename'], pattern) or fnmatch.fnmatch(rpm['filename'], pattern2):
262
-                    rpm['package'] = package
263
-                    self.rpms_tobeinstalled.append(rpm)
264
-                    break
250
+
251
+        for pkg in selected_packages: 
252
+            if pkg in pkg_to_rpm_map:
253
+                if not pkg_to_rpm_map[pkg]['rpm'] is None:
254
+                    name = pkg_to_rpm_map[pkg]['rpm']
255
+                    basename = os.path.basename(name)
256
+                    self.rpms_tobeinstalled.append({'filename': basename, 'path': name, 'package' : pkg})
257
+
265 258
         # Copy the rpms
266 259
         for rpm in self.rpms_tobeinstalled:
267 260
             shutil.copy(rpm['path'], self.photon_root + '/RPMS/')
... ...
@@ -227,6 +227,7 @@ if __name__ == '__main__':
227 227
             config['iso_system'] = False
228 228
             config['vmdk_install'] = False
229 229
 
230
+        config["pkg_to_rpm_map_file"] = options.pkg_to_rpm_map_file
230 231
         if 'password' in config:
231 232
             # crypt the password if needed
232 233
             if config['password']['crypted']:
... ...
@@ -59,7 +59,7 @@ if [ -n "$ADDITIONAL_RPMS_PATH" ]
59 59
     cp -f $ADDITIONAL_RPMS_PATH/* $PHOTON_STAGE_PATH/RPMS/additional/
60 60
 fi
61 61
 
62
-./photonInstaller.py -p $GENERATED_DATA_PATH/build_install_options_$IMG_NAME.json -r $PHOTON_STAGE_PATH/RPMS -v $WORKING_DIR/photon-${IMG_NAME} -o $GENERATED_DATA_PATH -f $VMDK_CONFIG_SAFE_FILE
62
+./photonInstaller.py -p $GENERATED_DATA_PATH/build_install_options_$IMG_NAME.json -r $PHOTON_STAGE_PATH/RPMS -v $WORKING_DIR/photon-${IMG_NAME} -o $GENERATED_DATA_PATH -d $PHOTON_STAGE_PATH/pkg_info.json -f $VMDK_CONFIG_SAFE_FILE
63 63
 cat $VMDK_CONFIG_SAFE_FILE
64 64
 rm $VMDK_CONFIG_SAFE_FILE
65 65