-
Notifications
You must be signed in to change notification settings - Fork 54
Package binary as a Python wheel #229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: devel
Are you sure you want to change the base?
Conversation
Modified the Makefile to add `setuptools` and `injectlib` targets, to add shared library. Plus add binary/wheel packaging.
Updated the initialization logic to prioritize locating the shared library in the bindings directory, for binary wheel distributions.
Reorganized setup.py for better modularity, replacing hardcoded variables with dynamically retrieved values. Introduced `get_libyamlscript_ext` for determining library extensions
The tricky part here is where I build and publish the wheels from. I need to explain the release process. It is partially automated and a bit involved. YAMLScript's I do all the releases by hand currently. I have a linux/intel laptop and I have 3 other machines for the other 3 platforms that I can ssh into. I run a command that looks like:
This runs The first 9 steps build and release the native artifacts to a new https://github.com/yaml/yamlscript/releases version section (for linux/intel). At this point I ssh into the other 3 machines and run:
When the Back on my linux/intel machine I press enter and the script continues with: Step 10 does the release of each language binding (including to pypi). Step 11 publishes the website. Then it is complete. For this we need to publish wheels somewhere in here. I suppose that could be a new step 9b that runs on all 4 machines. Hopefully we can soon fully automate this. Note I have a lot going on until June 1st so I might not be so active on this until then. If you are interested, another big thing YS needs is package manager installs, like brew and apt and yum and on and on. If you have any interest/time/expertise helping there would be awesome. |
Introduce `LibYAMLScriptExtensionBuilder` to ensure setuptools correctly tags wheels with platform/architecture-specific metadata.
Many thanks for this. Most helpful. My current approach in this PR is to add the wheel building part in a platform/arch-agnostic way. That means that when run under your current flow, it will additionally release a binary wheel, albeit for linux/intel only. We would then need to adapt your flow as you suggest (to run step 10 under the other platforms) and it should build/release bindings for those platforms too without any additional changes. |
OK, I'm now at the first stage I mentioned:
It would be cool if I could get the following feedback:
yamlscript-0.1.96-cp313-cp313-linux_x86_64.whl.gz |
Hi @ejohb Sorry for not noticing your progress on this. I'll try playing with it to publish a Linux/Intel wheel.
We are going to need to build and ship 4 different wheels... I'll see if I can at least publish the Linux/Intel one to PyPI and we can discuss from there. |
Yep no worries. Just to clarify that the current code should work with the full matrix now, albeit if you run |
abddba5
to
c0f8cfb
Compare
See #226