1
0
Fork 0
systemd/debian/README.source
Daniel Baumann 1bd927b9e1
Adding debian version 257.7-1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 18:07:46 +02:00

118 lines
4.2 KiB
Text

Building from source
--------------------
Install “git-buildpackage” and run the following steps:
gbp clone git+ssh://git.debian.org/git/pkg-systemd/systemd.git
cd systemd
gbp buildpackage
We recommend you use pbuilder to make sure you build in a clean environment:
gbp buildpackage --git-pbuilder
Changelog
---------
The systemd package uses gbp dch for automatically generating
debian/changelog entries from the corresponding git commits. This makes
cherry-picking, merging, and rebasing much simpler.
Thus, for any packaging change *don't* modify debian/changelog, just write a
meaningful git commit log with proper bug references (such as "Closes: #12345"
on the last line). For doing a release, run
gbp dch --auto
then beautify the generated debian/changelog, then run the usual "dch -r" and
"debcommit -ar --sign-tags".
Patch handling
--------------
Only patches that backport fixes merged upstream are allowed. Do not send
MRs or open bugs asking to take in out-of-tree or rejected patches, as such
requests will be immediately denied. One of the core design goals of systemd
is that the same implementation runs across all distributions. Customization
is done via configuration settings, not out-of-tree patches, which only add
technical debt and make updates slow and difficult.
The systemd package uses gbp pq for maintaining patches with a git-like
workflow in a "patch-queue/<branch>" local branch and then exporting them as
quilt series. For working on patches you run
gbp pq import --force
Then you are in the patch-queue branch and can git log, commit, cherry-pick
upstream commits, rebase, etc. there. After you are done, run
gbp pq export
which will put you back into master and update debian/patches/ (including
series). You need to git add etc. new patches, possibly other
packaging changes, and then git commit as usual.
systemd uses gbp pq's "topic" branches for organizing patches; for simplicity
(as this is the most common operation), upstream cherry-picks go into the
"empty" topic (i. e. directly into debian/patches/), while Debian specific
patches go into "Gbp-Pq: Topic debian" (i. e. debian/patches/debian/).
Rebasing patches to a new upstream version
------------------------------------------
gbp pq's "rebase" command does not work very conveniently as it fails on merge
conflicts. First, ensure you are in the master branch:
git checkout master # in case you aren't already
Now, do one of
(1) To import a new upstream release into the existing master branch for unstable,
do:
gbp pq import --force
gbp pq switch # switch back to master from patch-queue/master
gbp import-orig [...]
gbp pq switch # switch to patch-queue/master
git rebase master
(2) To import a new upstream release into a new branch for Debian experimental, do:
git branch experimental
git checkout experimental
editor debian/gbp.conf # set "debian-branch=experimental"
gbp import-orig [...]
git branch patch-queue/experimental patch-queue/master
git checkout patch-queue/experimental
git rebase experimental
Now resolve all the conflicts, skip obsolete patches, etc. When you are done, run
gbp pq export
Note that our debian/gbp.conf disables patch numbers.
Cherry-picking upstream patches
-------------------------------
You can add the systemd upstream branch as an additional remote to the Debian
packaging branch. Call it "github" or similar to avoid confusing it with the
already existing "upstream" branch from git-buildpackage:
git remote add github https://github.com/systemd/systemd.git
git fetch github -n
Now you can look at the upstream log and cherry-pick patches into the
patch-queue branch:
gbp pq import --force
git log github/master
git cherry-pick 123DEADBEEF
debian/git-cherry-pick is a nice tool to automate all that:
debian/git-cherry-pick 123DEADBEEF 987654 AFFE99
git checkout master # switch back from patch-queue branch
udeb packages
-------------
Packages for the installer (udebs) are built from a separate systemd-udeb
repository, so that the build in the main repository is not constrained by
udeb requirements, and so that udebs get updated less often, to reduce the
workload for the D-I team. Ensure that major version updates are uploaded
to unstable at the same time, to maintain rough parity.