GSoC' 24: Migrate to scikit-build-core (Week 1 & 2)

GSoC' 24: Migrate to scikit-build-core (Week 1 & 2)

ยท

3 min read

Introduction

Hey there! I am Ankit Meda, a Google Summer of Code (GSoC) student developer under the PyBaMM, under the NumFocus umbrella organisation.

My project focuses on migrating PyBaMM's setuptools and wheel backend to a modern backend as scikit-build-core, along with CI/CD and other performance improvements.

After four long but exciting weeks of the program, I want to write about my experiences and thoughts on the progress so far :)

------------------------this is a picture of me writing the blog------------------------

Community Bonding

The community bonding was great! I met the core team at the monthly developers' meeting of PyBaMM, and later, I met with my mentors Agriya, Sarash and Arjun! Though I was a bit nervous initially, I warmed up quickly with them, and we all discussed the project's TO-DO list.

I fixed the documentation's CI workflow and then made a small change to MANIFEST.in file to add CMakeLists.txt in the source distribution. Along with these, I kept reading and making notes of scikit-build-core's documentation.

Week 1

In the first week, I worked on modifying pyproject.toml file to replace the old build system with the new one. Following the documentation and with the help of a few Google searches, I was able to patch most of this file, with only a few minor issues that I need to work on, mostly on completing configuring source file inclusion and other configurations.

I started working on the main setup.py file.

There are a few things that I had to address (from the TO-DO list), like making pybind11, and by extension, IDAKLU solver optional while installation, potentially through a command like pip install -e . -C build_idaklu=OFF.

I experimented with different things and settings and got a clearer idea of things to do.

Also, one of the tasks was to set the default_lib_dir to a folder in the cloned repository rather than the home directory. It was easy to change the path, but I need to test if I encounter any issues.

Things were going great, and I learned a lot daily, which is a big plus. I mainly worked on these two files, but alongside them, I worked on the noxfile.py whenever I was a bit bored from researching and learning.

Week 2

Following the first week, I am almost done with pyproject.toml and just some final tests and finishing touches are left.

Along with that, I also replaced a majority of setuptools install sessions with scikit-build-core in noxfile.py, but testing is needed to check if nox/pybamm encounters any problems. I plan to come back to this after I complete working on setup.py

I did work a fair part of setup.py by removing traces of setuptools and wheel, method by method.

Worked on removing the CustomInstall and replacing wheel dependence from bdist build. Here, the knowledge of building sdist and bdist wheels using scikit-build-core helped a lot. There is still some work to do on this part, mainly testing the process and performance.

I believe that I can open a pull request only if I cover the major parts of the migration. Otherwise, there would be a lot of issues with the CI build tests.

This week is almost over, and the following week holds even more exciting challenges and hurdles. The next post will be at the end of week 4.

Till then, goodbye and happy coding ๐Ÿ˜ธ

ย