Author: Mayank Singh

Simplifying Package Submission Progress (15 July – 22 July) – GSoC ’25

Hi, I am Mayank Singh, welcome back to this blog series on the progress of the new package submission prototype, if you aren’t familiar with the project, feel free to check out the previous blogpost here.

Extending Forgejo support

As Forgejo is expected to become the git forge for Fedora in future and based on community discussions. I thought it did be great to support Forgejo in this project.

packit-service supports both GitLab and GitHub thanks to OGR library. It provides a unified interface for interacting with git forges.
The library has a good support for GitHub and GitLab features but the Forgejo integration is still not quite on par with them, few important functions like adding comments and reactions are still missing.
I worked on adding the support for the necessary parts so that packit-service can work with Forgejo.
There are few bugs related to serialization in the code, which I plan to fix this week.

New Package Builds from New Pull Requests

I’ve added a simple handler to read from a new Pull Request and its description to parse packit commands. This allows users to trigger a build for a new package without needing a packit configuration file in the repository.

For example, adding this line the PR description will trigger a new build for this particular package name.

/packit copr-build package_name: <libexample>

The system dynamically constructs a minimal package config and feeds it into Packit’s internal build logic. Test jobs are expected to work as well, although this is yet to be fully verified.

The current implementation is a quick prototype that reuses as much of the existing packit-service logic as possible. There’s still more work to be done around building the full package context.
My mentor has also shared feedback suggesting a cleaner approach, which I’ll be iterating on in the next phase.

What’s Next?

  • Fix remaining serialization bugs.
  • Build and test the Testing Farm integration for running test jobs on the built packages.
  • Improve the source handling logic based on recent feedback.

Thanks for reading and stay tuned for more next week.

Simplifying Package Submission, Progress (22 July – 29 July) – GSoC ’25

This week in the project involved bug fixes, integration cleanup and small improvements.

Bug Fixes and Workarounds

A key function required for the Forgejo integration which is used to fetch files from repositories was broken in the current Fedora 42 release due to an upstream bug in Forgejo’s OpenAPI spec. While the bug is already fixed in newer versions, it couldn’t be backported cleanly due to dependency constraints.

To move forward, I upgraded the service to run on Fedora Rawhide. However, Rawhide had its own quirks, the celery package was broken. To work around this, I installed celery directly from PyPI instead, which resolved the issue for now.

There were also several issues related to how data was being passed between the celery tasks. In particular, raw comment objects from Forgejo events were being passed around, which are not JSON-serializable and caused failures. With help from my mentor, added fixes in the logic to ignore the problematic object from being included in the payload.

Improvements and features

Enabled the `fedora-review` tool for all COPR builds in the codebase by monkey-patching the API call to enable fedora-review, which is not available directly otherwise from the packit API. This allows us to get a list of tasks and requirements for Fedora packaging compliance for the corresponding build of the package.

As of now, COPR builds and testing of the builds work. I started working on status reporting, it’s still rough, and I attempted to get comments working, but I’ll need to add more support in the OGR library to implement commit status properly.

What’s Next?

  • Add support for Forgejo commit status API.
  • Comments about status and builds from the service
  • Add unit tests for the new functionality
  • Upstream Forgejo code to packit-service

Simplifying Package Submission Progress (8 July – 15 July) – GSoC ’25

Hi, I am Mayank Singh, welcome back to this blog series on the progress of the new package submission prototype, if you aren’t familiar with the project, feel free to check out the previous blogpost here.

Event Handling, Forgejo Support, and Source Management (July 8 – July 15)

This week was focused on the service’s forge and tackling the challenge of source management.

Migrating to Forgejo and Handling Events

Based on community feedback, advantages and assessing our requirements, I moved the service’s forge to Forgejo. This minimal, open-source alternative to GitHub and GitLab is simpler to self-host and has significantly smoothed out our testing process.

On the implementation front, I added support for parsing issue and push events in packit-service, which allow to support parsing commands from issue comments. That being done adding support for pull_request is only trivial now and have a solid understanding of packit-service‘s event model to trigger task execution.

Package Source Handling

I hit a technical dilemma when considering handling the case of packages with new dependencies in a single Pull Request and handle their sources. The workflow requires accessing the PR’s diff, resolving it into individual files, and submitting those sources to be built in COPR.

My initial solution to this problem was to create a dedicated organization in Forgejo where every new package would get its own repository to store its sources. However, my mentor advised against this model, we discussed and realized it would become too complex and non-intuitive to work with. Instead, he clarified the path forward to focus on simple packages for now and investigate how Packit already solves this by cloning the source repository.

What’s Next?

  • Enhancing Forgejo Integration: Implementing methods to allow the service to post comments and add reactions on Forgejo.
  • Implementing Source Fetching: Building the logic to fetch source files from Pull Requests for package builds.
  • Expanding Commands: Adding new commands and tasks to support this workflow.

Stay tuned, more things to share next week 🙂

Simplifying Fedora Package Submission Progress (27 June – 14 July) – GSoC ’25

Hi everyone, I am Mayank Singh, currently working on a new service for simplifying the Fedora Package Submission Process, if you’d like to know more check my previous post here.

Diving Deep into Packit Service

(27 June – 8 July):

I began working on the packit-service codebase as the foundation for our project. The first goal was to prototype the user flow by creating new APIs and handlers for functionalities like detecting new packages and linting.

Pretty early on, I hit a roadblock during a test run. When the service was deployed to listen for GitHub events, it wouldn’t reject any incoming events sent through the tunnel to the local deployment. After a lot of digging, I traced the issue to the Apache configuration in the mod_wsgi-express server. This server, responsible for serving the Flask-RESTx endpoints, was misbehaving and causing all the trouble.

Another hiccup was that the service was too heavy for my system to run locally in an OpenShift environment with GitHub. My mentor stepped in and suggested a helpful workaround, disable the unnecessary services for our use case and use GitLab instead in plain docker containers, as it’s much easier to spin up and test locally. Reported a few other problems in the deployment process for development regarding Bitwarden for secrets.

With those issues resolved, I went ahead and trimming the parts of the packit-service codebase that weren’t needed for onboarding new packages. This helped me better understand its event model and the use of Celery in task execution.

This week was mostly about reusing the existing packit-service codebase and resolving issues.

What’s Next?

With the hard parts of setup and architecture done, the next steps would be to:

  • Add new API endpoints and corresponding event types for task handling
  • Integrate the current setup with COPR for builds.
  • Begin work on testing and validation workflows

Stay tuned for more updates in the next blog post!

Simplifying Fedora Package Submission Progress Report – GSoC ’25

Student: Mayank Singh

  • Fedora Account: manky201

About Project

Hi everyone, I’m working on building a service to make it easier for packagers to submit new packages to Fedora, improving upon and staying in line with the current submission process. My main focus is to automate away trivial tasks, provide fast and clear feedback, and tightly integrate with Git-based workflows that developers are familiar with.

Continue reading

Copyright © 2025 Fedora Community Blog

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

Theme by Anders NorenUp ↑