About me

Hey everyone! I’m Ayush Yadav, aka acidicneko, from India. I’m currently a pre-final-year student at the Indian Institute of Technology Jammu, majoring in Materials Science and Engineering. As much as I enjoy spending my time working with Fourier transforms of crystal lattice diffraction patterns, I also love programming and building things with code.

Project Summary

Over the last two months, I worked on adding packaging support for Debian and FreeBSD, as proposed in my original proposal. However, the scope of the project grew considerably in the second half of the program. Most of the deliverables promised in the proposal were completed even before the midterm evaluation. After talking with Chris, the scope was later expanded to replace waf with a custom tool, rtems-pkg, which now acts as the central API for Deployment.

Code written during coding period

Relevant links for the midterm evaluation are below:

Relevant links for the end-term evaluation are below:

Other Merge Requests:

Goals

Midterm Goals: Adding Debian and FreeBSD Packaging Support

Although my proposed timeline listed FreeBSD support as an end-term deliverable, I was able to complete it relatively easily, well before the midterm evaluation.

A detailed walkthrough of the entire process has been documented on this blog. It involved writing new template files, researching packaging metadata, and fixing bugs introduced along the way.

The biggest challenge I faced during this period was injecting distro-specific flags into the build environment. My mentor, Chris, helped me a great deal in getting past this hurdle.

A new command-line utility, rtems-pkg, was also added to Deployment to simplify the packaging process. It started out as a simple wrapper but eventually grew into something much bigger.

End-Term Goals: Replacing waf with rtems-pkg

This wasn’t originally planned, but it happened anyway. After finishing all my midterm and end-term goals early, my mentor asked whether it would be possible to develop rtems-pkg further and swap out waf entirely. After carefully researching what waf was doing under the hood, I confirmed it was possible.

Going forward, rtems-pkg serves as the central API for RTEMS Deployment. It provides a single CLI to package, generate package metadata files, and build different BSPs, considerably simplifying the user experience.

Previously, the waf workflow required manually invoking a packager-specific command to build the package after waf had generated the package metadata files from templates. rtems-pkg combines these two separate steps into one. Now, a user can simply provide the list of targets to build, the packager, the install prefix, and any additional build options — rtems-pkg takes care of generating the metadata files, invoking the appropriate packager binary, and producing the final package, all on its own.

What was done?

  • Debian and FreeBSD packaging support was successfully added to Deployment (as stated in the proposal).
  • waf was completely replaced by rtems-pkg (extended scope).

What wasn’t? Future Scope?

Though I achieved all the proposed goals, there are still a few gaps in the current rtems-pkg implementation. One being the user configuration stuff. With the waf approach it was possible to give custom config and change a few fields. Though totally possible even with the new rtems-pkg, it hasn’t been done due to time constraints. It would be nice to support user supplied configuration.

Other than that, it would be nice to have more packagers in rtems-pkg. A tutorial on adding new packagers was added to the deployment repository. Currently supported packagers are:

  • FreeBSD
  • Debian
  • RPM

Extending the list would be pretty awesome!

Discourse threads:

Final Words

Getting selected for Google Summer of Code 2026 was unexpected. I was genuinely surprised. It’s been a wonderful experience to work on something real, something that will actually be used by real people. I’ve always been fascinated by open source, and I’m grateful I got to give something back to it. Working with RTEMS has been an excellent experience overall.

I’d like to thank my mentor, Chris Johns. Even though he was strict at times, and scolded me more than once, and pushed me to rethink my implementations, I learned a great deal from him. He always nudged me back in the right direction whenever I drifted off course.

I’d also like to thank Gedare, who always listened patiently during our weekly meetings. Those meetings felt warm and welcoming. I was nervous to speak up at first and probably fumbled through my updates, but he always gave me the time and space to collect my thoughts and share them.

I’d definitely recommend that any student reading this blog consider contributing to RTEMS.