1from setuptools
import setup, find_packages
6architecture_directory = [
'x86_64',
'armv7l',
'aarch64']
8package_directory =
'onert'
9packaging_directory = [
'build', package_directory +
'.egg-info']
10THIS_FILE_DIR = os.path.dirname(os.path.abspath(__file__))
11DEFAULT_PRODUCT_DIR = os.path.normpath(os.path.join(THIS_FILE_DIR,
"../../../Product"))
19 if arg.startswith(
'--plat-name'):
20 arg_split = arg.split(
'=')
22 if len(arg_split) == 2:
23 arg_arch = arg_split[1]
25 arch_idx = sys.argv.index(
'--plat-name')
26 arg_arch = sys.argv[arch_idx + 1]
28 for arch
in architecture_directory:
31 print(f
"Target architecture: {target_arch}")
32 if target_arch ==
'none':
33 print(f
"Unsupported target platform: {target_arch}")
36 if target_arch ==
'none':
37 print(f
"Need to set target platform by '--plat-name'")
41 for packaging_dir
in packaging_directory:
42 if os.path.exists(packaging_dir):
43 print(f
"Deleting existing directory '{packaging_dir}'...")
44 shutil.rmtree(packaging_dir)
47 if os.path.exists(package_directory):
48 print(f
"Deleting existing directory '{package_directory}'...")
49 shutil.rmtree(package_directory)
50 os.makedirs(package_directory)
51 print(f
"Created directory '{package_directory}'...")
54 PY_DIR = os.path.normpath(
55 os.path.join(THIS_FILE_DIR,
'../../../runtime/onert/api/python/package'))
56 for root, dirs, files
in os.walk(PY_DIR):
58 rel_path = os.path.relpath(root, PY_DIR)
59 dest_dir = os.path.join(THIS_FILE_DIR, package_directory)
60 dest_sub_dir = os.path.join(dest_dir, rel_path)
61 print(f
"dest_sub_dir '{dest_sub_dir}'")
64 os.makedirs(dest_sub_dir, exist_ok=
True)
68 if py_file.endswith(
".py"):
69 src_path = os.path.join(root, py_file)
71 shutil.copy(src_path, dest_sub_dir)
72 print(f
"Copied '{src_path}' to '{dest_sub_dir}'")
75 if os.path.exists(package_directory):
76 arch_path = os.path.join(package_directory, target_arch)
77 if os.path.exists(arch_path):
78 print(f
"Deleting existing directory '{arch_path}'...")
79 shutil.rmtree(arch_path)
82 arch_path = os.path.join(package_directory,
'native')
83 os.makedirs(arch_path)
84 print(f
"Created directory '{arch_path}'")
88 product_dir = os.environ.get(
"PRODUCT_DIR", DEFAULT_PRODUCT_DIR)
89 base_dir = product_dir
if product_dir != DEFAULT_PRODUCT_DIR
else os.path.join(
90 product_dir, target_arch +
'-linux.release/out')
92 if os.path.exists(os.path.join(base_dir,
"lib64")):
93 return os.path.join(base_dir,
"lib64")
94 elif os.path.exists(os.path.join(base_dir,
"lib32")):
95 return os.path.join(base_dir,
"lib32")
96 elif os.path.exists(os.path.join(base_dir,
"lib")):
97 return os.path.join(base_dir,
"lib")
99 raise FileNotFoundError(f
"No lib directory found in {base_dir}")
102 print(f
"so_base_dir '{so_base_dir}'")
104 for so
in os.listdir(so_base_dir):
105 if so.endswith(
".so"):
106 so_list.append(
'native/' + so)
107 src_path = os.path.join(so_base_dir, so)
108 tgt_path = os.path.join(arch_path, so)
109 shutil.copy(src_path, tgt_path)
110 print(f
"Copied {src_path} to {tgt_path}")
113 so_core_dir = os.path.join(so_base_dir,
'nnfw')
114 if os.path.exists(so_core_dir):
115 so_core_tgt_dir = os.path.join(arch_path,
'nnfw')
116 os.makedirs(so_core_tgt_dir)
117 for so
in os.listdir(so_core_dir):
118 if so.endswith(
".so"):
119 so_list.append(
'native/nnfw/' + so)
120 src_path = os.path.join(so_core_dir, so)
121 tgt_path = os.path.join(so_core_tgt_dir, so)
122 shutil.copy(src_path, tgt_path)
123 print(f
"Copied {src_path} to {tgt_path}")
126 so_backend_dir = os.path.join(so_base_dir,
'nnfw/backend')
127 if os.path.exists(so_backend_dir):
128 so_backend_tgt_dir = os.path.join(arch_path,
'nnfw/backend')
129 os.makedirs(so_backend_tgt_dir)
130 for so
in os.listdir(so_backend_dir):
131 if so.endswith(
".so"):
132 so_list.append(
'native/nnfw/backend/' + so)
133 src_path = os.path.join(so_backend_dir, so)
134 tgt_path = os.path.join(so_backend_tgt_dir, so)
135 shutil.copy(src_path, tgt_path)
136 print(f
"Copied {src_path} to {tgt_path}")
139 so_odc_dir = os.path.join(so_base_dir,
'nnfw/odc')
140 if os.path.exists(so_odc_dir):
141 so_odc_tgt_dir = os.path.join(arch_path,
'nnfw/odc')
142 os.makedirs(so_odc_tgt_dir)
143 for so
in os.listdir(so_odc_dir):
144 if so.endswith(
".so"):
145 so_list.append(
'native/nnfw/odc/' + so)
146 src_path = os.path.join(so_odc_dir, so)
147 tgt_path = os.path.join(so_odc_tgt_dir, so)
148 shutil.copy(src_path, tgt_path)
149 print(f
"Copied {src_path} to {tgt_path}")
151 print(
"Operation completed successfully.")
153except Exception
as e:
154 print(f
"An error occurred: {str(e)}")
160 description=
'onert API binding',
161 long_description=
'It provides onert Python api',
162 url=
'https://github.com/Samsung/ONE',
163 license=
'Apache-2.0, MIT, BSD-2-Clause, BSD-3-Clause, Mozilla Public License 2.0',
164 has_ext_modules=
lambda:
True,
165 packages=find_packages(),
166 package_data={package_directory: so_list},
167 install_requires=[
'numpy >= 1.19'])