Skip to content

Commit

Permalink
[python] fix platform specific wheel to be spec compliant (#23703)
Browse files Browse the repository at this point in the history
* [python] fix platform specific wheel to be spec compliant

The current build approach causes bdist_wheel to store the shared library
in the purelib folder. However, a platform specific wheel should have
shared libraries in the platform specific folder, not in the purelib folder.

This has been discovered using `auditwheel check`:

```
RuntimeError: Invalid binary wheel, found the following shared library/libraries in purelib folder:
        _ChipDeviceCtrl.so
The wheel has to be platlib compliant in order to be repaired by auditwheel.
```

This makes the wheel pass `auditwheel check`.

* Restyled by autopep8

Co-authored-by: Restyled.io <commits@restyled.io>
  • Loading branch information
2 people authored and pull[bot] committed Mar 28, 2023
1 parent b40a1c0 commit b2ec5ff
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions src/controller/python/build-chip-wheel.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

from __future__ import absolute_import
from datetime import datetime
from setuptools import setup
from setuptools import setup, Distribution
from wheel.bdist_wheel import bdist_wheel

import argparse
Expand Down Expand Up @@ -56,6 +56,14 @@ def __init__(self, name):
self.name = name
self.installName = os.path.splitext(name)[0]

# Make sure wheel is not considered pure and avoid shared libraries in purelib
# folder.


class BinaryDistribution(Distribution):
def has_ext_modules(foo):
return True


packageName = args.package_name
libName = args.lib_name
Expand Down Expand Up @@ -103,13 +111,6 @@ def __init__(self, name):
os.rename(os.path.join(tmpDir, script.name),
os.path.join(tmpDir, script.installName))

# Define a custom version of the bdist_wheel command that configures the
# resultant wheel as platform-specific (i.e. not "pure").
class bdist_wheel_override(bdist_wheel):
def finalize_options(self):
bdist_wheel.finalize_options(self)
self.root_is_pure = False

requiredPackages = manifest['package_reqs']

#
Expand Down Expand Up @@ -164,9 +165,7 @@ def finalize_options(self):
'egg_base': tmpDir
}
},
cmdclass={
'bdist_wheel': bdist_wheel_override
} if libName else {},
distclass=BinaryDistribution if libName else None,
script_args=['clean', '--all', 'bdist_wheel']
)

Expand Down

0 comments on commit b2ec5ff

Please sign in to comment.