Re: Procedures for creating and updating a package?
Hi!
> For a new package, what should I do once I feel that it is ready to be
> uploaded? Should I go ahead and create the project in
..
> Also, what's the right procedure for updating an existing package?
The only clearly "right" thing to do is what the Debian Policy says
because it has a clear process on how changes are voted on and it is
actively mantained and enforced. A lot of people have contributed to
the Developer's Reference, and certain generally agreed upon
conventions, such as how to salvage a package, are documented in it.
However it, the Debian website, the Debian wiki and various team
documents are not always actively maintained, so as somebody new to
Debian, you unfortunately will read a lot of docs only to discover
that things aren't actually as the docs say. Some docs are outdated
because nobody cared enough to maintain them. Others are outdated
because there is no formal voting or decision process defined, and
nobody knows who is actually authorized to update what, and people
feel safer writing an entirely new doc instead of trying to coordinate
on update existing ones.
Asking on a mailing list what the "latest" way to do something is
usually a good approach. As you are not a DD, you should find a
mentor, follow their guidance, and have them upload your stuff.
My personal process for creating new packages right now is to run
something along:
curl -LO https://salsa.debian.org/otto/dh-make-golang/-/jobs/7890897/artifacts/raw/debian/output/dh-make-golang_0.8+git20250727.a6fe7fa-1~otto+salsaci+20250729+35_amd64.deb
apt install -y ./dh-make-golang*.deb
dh-make-golang make -dep14 -pristine-tar -type library
-upstream_git_history -wrap-and-sort ast github.com/gonvenience/idem
git push
git checkout -b import/$(dpkg-parsechangelog -SVersion)
git add debian
git commit -m "Initial debian/ by dh-make-golang"
# iterate until packaging is correct
git push --verbose
# open MR for import/x branch to be merged into debian/latest
You can see a full example at
https://salsa.debian.org/go-team/packages/golang-github-gonvenience-idem/-/merge_requests/1.
The real work happened in
https://salsa.debian.org/go-team/packages/golang-github-gonvenience-idem/-/merge_requests/2,
which I uploaded to NEW on Sept 8th and it passed and entered Debian
unstable on Sept 28th.
As a new thing in Go team we now also have
https://salsa.debian.org/go-team/flight-deck for managing repos but
the place to start is still by running `dh-make-golang make`, and
adding a repo via Flight Deck or enrolling and existing one into it
can happen later.
For updating existing packages the process is much easier, just fork
the repo, gbp clone it locally, run gbp import-orig --uscan, fix what
is needed, gbp push to your fork and open a MR on the branch that had
the actual Debian changes (e.g. debian/latest or debian/sid). The DD
who uploads will merge by running locally gbp pull from your fork and
gbp push to the repo and gbp tag to upload.
You can find more examples of MRs I've reviewed and uploaded at
https://salsa.debian.org/dashboard/merge_requests?scope=all&state=all&reviewer_username=otto
Here are some recent and hopefully usefully explained posts relevant
to people trying to learn how Debian packaging (and git-buildpackage)
works:
https://optimizedbyotto.com/post/debian-source-package-git/ explains
the git-buildpackage branches
https://optimizedbyotto.com/post/debian-packaging-from-git/ explains
how to create the debian/latest branch when debianizing an upstream
project and submit a MR
https://optimizedbyotto.com/post/debian-salsa-merge-request-best-practices/
general tips on MRs
https://optimizedbyotto.com/post/debian-maintainer-habits/ general
tips on how to become a Debian Maintainer
https://optimizedbyotto.com/mentoring/ info about my mentoring
Reply to: