Updating an Existing Package
This article will go over updating a package that is already in the Solus package repositories.
Please look to see if an issue has been filed for the software update. If there is an existing request, please add a link to it in your pull request. Ex:
This PR resolves software update request https://github.com/getsolus/packages/issues/123
Update your clone of the packages repository
If you do not have a local clone set up yet, see Prepare for Packaging
Bring your local clone up to date. Run:
cd ~/solus-packages/packages/n/nano
git switch main
git pull
Switch to a new git branch
It's always a good idea to switch to a new git branch before beginning packaging work. This helps to separate your work from any new changes made to the package repository, which will allow you to more easily rebase any changes if needed. To do so run:
git switch -c update_nano
Updating a package
There are two types of package updates: a package bump, and moving a package to a different version.
Bumping a package is typically done when rebuilding against a changed dependency, such as imagemagick
needing to be rebuilt if libwebp
changes. It is also done if changes are being made to the package, such as adding new dependencies or other modifications which aren't a version update.
Bumping a package
Bumping can be achieved by running the bump
task, which increments the release number by 1.
go-task bump
Check to make sure that the result is as expected.
git diff package.yml
Certain packages with long descriptions might have their description messed up when this is run. Check if this happened, and fix it if necessary.
Using a different version
To update the package to a newer version, use the update
task.
This task takes two arguments, in the following order:
- Version
- Source URL
If you're updating the package to a newer version, naturally you would change both the version and source. If you're merely changing the source URL for the existing version, just pass the same version number and the new source URL.
Example:
go-task update -- 1.0 https://example.com/example-1.0.tar.xz
The MAINTAINERS.md
file
There must be a file called MAINTAINERS.md
using the template in Maintainership. Add it if it does not already exist. It should name the current maintainer(s) of the package.
Build the package
Build the package using go-task
. The default task will build the package against the Unstable repository, so you don't have to specify a task here.
go-task
Once your package has built successfully, you will need to test it.
Commit your changes
Check the changes in your files.
Add / remove files as necessary to the commit. Then, check your branch.
Double-check that everything looks correct and all of the files have been staged before committing.
git status
If all looks well, commit your changes.
git commit
Commit message format
With the switch to a single large package git repository, having a regular, easy-to-read, and standardized commit message format helps enable quick and efficient "at-a-glance" reading of git commit messages for packagers and Staff alike.
Each commit message should consist of a meaningful summary line (which starts with the package name), a blank line, and then the rest of the commit message body.
Note that [NFC]
(listed in an example below) is an abbreviation for "No Functional Change".
Package update
The following guidelines apply to the commit message body:
- Bullet point lists should start with a dash.
- Include a changelog with a brief list of updates from the upstream release notes, with no links or issue numbers.
- There may also be a section for Solus specific work (e.g. rebuild against x / rework to remove dependency).
- Optional: A link to the upstream release notes page.
git commit
on an initialized repository will automatically open your editor with the correct template.
Note that lines starting with a #
will be ignored by Git and do not need to be removed.
Important: Do not include issue numbers in changelogs. This will incorrectly link your issue to another one in our repository.
Example:
- #123 fixed a thing
If you want to intentionally link to another issue in this repository, the right way is to use our repository name:
Fixes getsolus/packages#issuenumber
Here is an example in our standard format:
foo: Update to 1.2.3
**Summary**
Bugfixes:
- Fixed a crash
- Something else
Enhancements:
- Implemented a feature
- Error when encountering a thing
Full release notes:
- [1.2.3](https://github.com/foo/foo/releases/tag/v1.2.3)
Other commit message format examples
In the cases where you are not updating a package to a new version, but simply applying a patch or fixing an existing version, the following commit messages are considered suitable:
- Add the
homepage
metadata key:package: Add homepage
- Fix a packaging issue (including adding a patch to fix the package)
package: Fix (...)
- Updating a README, monitoring.yml file or other stuff that does not directly change the package, meaning the package release number didn't need a bump:
package: [NFC] Add README.md and monitoring.yml
As stated previously, [NFC]
is an abbreviation of "No Functional Change".
For more information on suitable commit messages, please check the tooling central documentation.
Next, you'll submit a pull request for review.