openSUSE talk:Packaging for Leap
Leap 16.0
Leap 16.0 combines SUSE Linux Enterprise (SLE 16, also known as SLFO) packages with Community-contributed packages. Packaging for Leap follows a Git-based workflow, which differs slightly depending on whether the package originates from SLE or the community.
Git packaging workflow
For general documentation and examples, see: openSUSE:Git Packaging Workflow. Note: Some examples reference Tumbleweed, which has not yet fully switched to Git.
💡 OBS users
If you prefer the traditional OBS workflow instead of working purely with Git, take a look at:
- git-obs — a bridge between OBS and Git.
- `osc fork` — lets you fork and test packages while preserving the familiar OBS project structure.
Package sources
It's quite simple. Go to https://src.opensuse.org/pool.
Community Packages
- Use the `leap-x.y` branch (e.g., `leap-16.0`).
- There is no separate branch for Package Hub.
SLE/SLFO packages
- Use `slfo-main` or `slfo-x.y` branches.
- `slfo-x.y` is created after the Release Candidate (e.g., `slfo-1.2` corresponds to SLES 16.0).
These packages are owned by suse.com. Due to certification requirements, changes to these packages need to be handled internally at SUSE. Public requests for changes: https://code.opensuse.org/leap/features/issues.
Packages with both slfo-x.y and leap-x.y
Some packages have both slfo-x.y and leap-x.y branches. This means that we forked the SLES package in Leap. In such cases, use the leap-x.y branch.
Workflow for community packages
- Fork the package from the pool repository.
- Work on your changes in the `leap-x.y` branch (e.g., `leap-16.0`).
- Create a pull request against the same branch.
- The PR automatically links to build results.
Optional: Track your work in the public feature tracker for Leap, especially if:
- The update may affect SLFO packages (e.g., GIMP 3.0).
- The update is large (e.g., Plasma 6.1, Xfce 4.20).
Workflow for SLES/SLFO packages
- Create an issue in our public feature tracker for Leap. Use a descriptive title (e.g., GIMP 3.0) and list the required package updates.
- Issues are reviewed every Monday as part of our Public Feature Review meeting.
- User:Lkocman creates and links the corresponding jira.suse.com requests and/or SR requests with references like jsc#PED-123 or code-o-o/leap/features#123.
- Progress is tracked weekly at the Public Feature Review meeting.
Adding a new package to Leap from Factory
We plan to have a dedicated issue-based workflow in https://src.opensuse.org. However, that is not yet implemented.
Current process:
- Submit an issue to the Autobuild team to explicitly branch the package.
- Alternatively, contact the Release Team (`maxlin`, `lkocman`) to request the branch on your behalf.
- You can also use the Leap feature tracker, which we expect to be eventually migrated to src.opensuse.org as well.
Updating a Leap package from Factory
To update a Leap package with changes from openSUSE Factory:
- Fork the package from the pool.
- Check out the `leap-16.0` branch.
- Merge it with the factory branch.
- Push your changes.
Example:
# Fork gitea@src.opensuse.org:pool/libstrophe.git
git clone gitea@src.opensuse.org:$USER/libstrophe.git
cd libstrophe
git checkout -b leap-16.0
git merge factory # Merge with Factory
git push
- Create a pull request against the `leap-16.0` branch, for example, https://src.opensuse.org/pool/product-composer/pulls/2.
Updating a Leap package from your home project
Users who want to test their changes before creating a pull request can use osc fork, which covers both the git and OBS project parts.
osc fork openSUSE:Tools product-composer
Dropping a package from Leap
Remove the package submodule:
git rm # TBD
Notes for Leap 15.6
For previous releases, please refer to the instructions in Portal:Maintenance.