Codle commented on code in PR #12000:
URL: https://github.com/apache/tvm/pull/12000#discussion_r914094183
##########
python/setup.py:
##########
@@ -194,7 +194,15 @@ def is_pure(self):
curr_path = os.path.dirname(os.path.abspath(os.path.expanduser(__file__)))
for i, path in enumerate(LIB_LIST):
LIB_LIST[i] = os.path.relpath(path, curr_path)
- setup_kwargs = {"include_package_data": True, "data_files": [("tvm",
LIB_LIST)]}
+ LIB_DATA_FILES = []
+ if os.path.isfile(path):
+ LIB_DATA_FILES.append(os.path.relpath(path, curr_path))
+ if os.path.isdir(path):
+ for root, dirs, files in os.walk(path):
+ for filename in files:
+ file_path = os.path.join(root, filename)
+ LIB_DATA_FILES.append(os.path.relpath(file_path, curr_path))
+ setup_kwargs = {"include_package_data": True, "data_files": [("tvm",
LIB_DATA_FILES)]}
Review Comment:
Yes, you are right, the files are kept flat in the package. I try to find
out the best practice of packing non-package file in setup.py and this PR gives
my idea: https://github.com/pypa/sampleproject/issues/30
While include_package_data=True, the setup program will go to run command in
MANIFEST.in. This step is explained in
[setuptools/docs/references/keywords.rst](https://github.com/pypa/setuptools/blob/main/docs/references/keywords.rst)
> include_package_data: If set to True, this tells setuptools to
automatically include any data files it finds inside your package directories
that are specified by your MANIFEST.in file. For more information, see the
section on [:ref:`Including Data
Files`](https://github.com/pypa/setuptools/blob/0bd847c4aea839b3a75f4e3f09a36526453bd267/docs/references/keywords.rst#id23).
In the first PR: https://github.com/apache/tvm/pull/380 for data_files
field, I found the include_package_data was set to False in wheel packing. So
the detail of include_package_data may be ignored by the commiter.
Here is the result of unzipping .egg / .whl file:
.whl
```
dist
├── tvm
│ ├── __init__.py
│ ├── _ffi
│ ├── arith
│ ├── auto_scheduler
│ ├── autotvm
│ ├── configs
│ ├── contrib
│ ├── driver
│ ├── error.py
│ ├── exec
│ ├── generic.py
│ ├── ir
│ ├── libtvm.so
│ ├── libtvm_runtime.so
│ ├── meta_schedule
│ ├── micro
│ ├── parser
│ ├── relay
│ ├── rpc
│ ├── runtime
│ ├── script
│ ├── support.py
│ ├── target
│ ├── te
│ ├── testing
│ ├── tir
│ ├── topi
│ └── utils
├── tvm-0.9.dev1753+g6236f2cb6-cp38-cp38-linux_x86_64.whl
└── tvm-0.9.dev1753+g6236f2cb6.dist-info
├── METADATA
├── RECORD
├── WHEEL
├── entry_points.txt
└── top_level.txt
```
.egg
```
dist
├── EGG-INFO
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── entry_points.txt
│ ├── native_libs.txt
│ ├── not-zip-safe
│ ├── requires.txt
│ └── top_level.txt
├── tvm
│ ├── __init__.py
│ ├── _ffi
│ ├── arith
│ ├── auto_scheduler
│ ├── autotvm
│ ├── configs
│ ├── contrib
│ ├── driver
│ ├── error.py
│ ├── exec
│ ├── generic.py
│ ├── ir
│ ├── libtvm.so
│ ├── libtvm_runtime.so
│ ├── meta_schedule
│ ├── micro
│ ├── parser
│ ├── relay
│ ├── rpc
│ ├── runtime
│ ├── script
│ ├── support.py
│ ├── target
│ ├── te
│ ├── testing
│ ├── tir
│ ├── topi
│ └── utils
└── tvm-0.9.dev1754+g2a71c380e-py3.8-linux-x86_64.egg
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]