Building openSUSE Packages Just Got Less Annoying
I spent three hours last October fighting with an OBS merge conflict. Just raw XML and tarballs refusing to cooperate. If you’ve maintained openSUSE packages for any length of time, you know exactly the kind of headache I’m talking about. The Open Build Service is a massive piece of infrastructure. It’s actually pretty stubborn when things go wrong.
And the new Git packaging workflow changes things entirely. We are finally using pull requests.
Moving Away From Raw osc Commands
They spun up a Gitea instance to sit in front of the build system. Instead of throwing source files directly at OBS and praying the build succeeds across fifteen different architectures, everything lives in Git now. You fork the repository, you commit your spec file changes, and you open a PR.
Just like normal software development — imagine that!
The real magic isn’t Gitea itself. It’s the automation bots sitting between Git and OBS. When you push a PR to a leap-x.y branch, the tooling catches it. It automatically stages the build and reports back.
I tested this last Thursday updating my fork of fd-find to version 10.1.0. Normally, I’d run osc build, wait for my local machine to choke on the chroot environment, fix whatever broke, and then push. This time, I just pushed the spec file bump to Gitea. The bot picked it up, triggered the OBS staging environment, and reported the build status right in the PR comments.
It cut my manual babysitting time from about 45 minutes down to maybe 3 minutes of actual work.
The Commit Message Gotcha
Well, there is one annoying quirk I found while migrating my workflow. If your commit message doesn’t strictly follow their expected format for changelog generation, the automation bot fails silently.
I sat there for twenty minutes wondering why OBS wasn’t picking up my PR before I realized I missed the required formatting. If you are starting with this new system, you’ll probably want to pay close attention to your git history.
# The OBS bot will ignore this and fail silently:
git commit -m "update fd-find to 10.1.0"
# You MUST format it properly for the changelog generator:
git commit -m "Update fd-find to 10.1.0
- Bump version to 10.1.0
- Drop obsolete patch for older glibc
- Update dependencies in vendor tarball"
They really need to add a linter or a pre-commit hook for that by Q1 2027. People are going to keep tripping over it.
Branching Makes Sense Now
The leap-x.y branching model makes backporting way easier too. I used to keep completely separate local directories for Tumbleweed and Leap packages. Absolute mess. I had symlinks pointing everywhere just to avoid duplicating source files.
But now it’s just standard Git operations. You check out leap-15.6, cherry-pick your fixes from the main branch, and push. The bot handles the OBS project routing.
I’m just glad I don’t have to manually edit .changes files in Vim quite as often. The old osc CLI isn’t dead—you still need it for weird edge cases and local debugging—but I’ll be touching it a lot less from now on.
