8
8
from options import options
9
9
import os
10
10
import hashlib
11
+ import glob
11
12
12
13
13
14
class OneAPI :
@@ -18,6 +19,7 @@ def __init__(self):
18
19
19
20
self .install_package (
20
21
"base" ,
22
+ "2025.1.0+627" ,
21
23
"https://registrationcenter-download.intel.com/akdlm/IRC_NAS/cca951e1-31e7-485e-b300-fe7627cb8c08/intel-oneapi-base-toolkit-2025.1.0.651_offline.sh" ,
22
24
"98cad2489f2c90a2b328568a59371cf35855a3338643f61a9fc2d16a265d29f22feb2d673916dd7be18fa12a5e6d2475" ,
23
25
)
@@ -27,26 +29,41 @@ def generate_unique_oneapi_id(self, path):
27
29
hash_object = hashlib .md5 (path .encode ())
28
30
return hash_object .hexdigest ()
29
31
30
- def install_package (self , name , url , checksum ):
31
- package_path = os .path .join (self .oneapi_dir , name )
32
+ def check_install (self , version ):
33
+ logs_dir = os .path .join (self .oneapi_dir , "logs" )
34
+ pattern = f"{ logs_dir } /installer.install.intel.oneapi.lin.basekit.product,v={ version } *.log"
35
+ log_files = glob .glob (pattern )
36
+ success_line = f"Operation 'intel.oneapi.lin.basekit.product,v={ version } ' execution is finished with status Success."
37
+ for log_file in log_files :
38
+ try :
39
+ with open (log_file , "r" ) as f :
40
+ for line in f :
41
+ if success_line in line :
42
+ return True
43
+ except Exception :
44
+ continue
45
+ return False
46
+
47
+ def install_package (self , name , version , url , checksum ):
48
+ if self .check_install (version ):
49
+ print (f"{ name } version { version } already installed, skipping." )
50
+ return
51
+ package_name = f"package_{ name } _{ version } .sh"
52
+ package_path = os .path .join (self .oneapi_dir , f"{ package_name } " )
32
53
if Path (package_path ).exists ():
33
- print (
34
- f"{ package_path } exists, skipping installing oneAPI package { name } ..."
54
+ print (f"{ package_path } exists, skipping download of oneAPI package..." )
55
+ else :
56
+ package = download (
57
+ self .oneapi_dir , url , f"{ package_name } " , checksum = checksum
35
58
)
36
- return
37
-
38
- package = download (
39
- self .oneapi_dir , url , f"package_{ name } .sh" , checksum = checksum
40
- )
41
59
try :
42
- print (f"installing { name } " )
43
60
run (
44
- f"sh { package } -a -s --eula accept --install-dir { self .oneapi_dir } --instance { self .oneapi_instance_id } "
61
+ f"sh { package_path } -a -s --eula accept --install-dir { self .oneapi_dir } --instance { self .oneapi_instance_id } "
45
62
)
46
63
except :
47
- print ("oneAPI installation likely exists already" )
64
+ print (f"OneAPI { name } version { version } installation likely exists already" )
48
65
return
49
- print (f"{ name } installation complete" )
66
+ print (f"OneAPI { name } version { version } installation complete" )
50
67
51
68
def package_dir (self , package , dir ):
52
69
return os .path .join (self .oneapi_dir , package , "latest" , dir )
0 commit comments