Commit 49431b99 authored by Otto Kekäläinen's avatar Otto Kekäläinen
Browse files

Update README.Maintainer to match current best practices

parent c17ab088
# README for Debian package maintainers # # README for Debian package maintainers
This file mostly applies to how the packaging work-flow works for the official This file mostly applies to how the packaging work-flow works for the official
Debian packages, but it may contain useful information also for anybody doing Debian packages, but it may contain useful information also for anybody doing
their own private .deb builds. their own private .deb builds.
## Version control
## Building from sources with git-buildpackage ## This package is maintained by the MariaDB/MySQL team in Debian using the
git-buildpackage tool and storing the git repositories on the Debian Gitlab
Clone sources with all branches instance Salsa. For details see https://salsa.debian.org/mariadb-team/.
sudo apt-get install git-buildpackage
gbp-clone --pristine-tar git://git.debian.org/git/pkg-mysql/mariadb-10.1.git
Alternatively use Github mirror at https://github.com/ottok/mariadb-10.1.git
On later runs make sure to have latest version of sources The official Ubuntu packages are also maintained by the same team using the same
gbp-pull --pristine-tar --force source repository.
### Ensuring git contents match what has been uploaded to Debian/Ubuntu
Build It is possible (but extremely rare) that somebody uploads a MariaDB package to
git-buildpackage --git-pristine-tar Debian/Ubuntu and either does not use git at all, or simply forgets to push the
same changes on git, or makes an error in tagging the release or something.
Therefore maintainers should check that the git contents match what has been
uploaded to Debian/Ubuntu before making new changes on git.
For a more elaborate setup with automatic build dependency installation and This can be done by using dgit. The example command below will fetch the latest
multi-target chroot usage check out how http://labs.seravo.fi/~otto/mariadb-repo/build.sh mariadb-10.0 package available in Ubuntu 16.04 (Xenial) base archive or security
uses git-buildpackage with pbuilder. archive (whichever has a newer version):
dgit -d ubuntu clone mariadb-10.0 xenial,-security
If the build fails the easiest way to clean up before a new run is You can then compare these two directories with a recursive diff.
git clean -fdx && git reset --hard
Another option is to manually check on packages.debian.org or packages.ubuntu.com
what is the latest version, and download and extract it on top of the existing
debian/ directory with:
curl -SL http://archive.ubuntu.com/ubuntu/pool/universe/m/mariadb-10.0/\
mariadb-10.0_10.0.34-0ubuntu0.16.04.1.debian.tar.xz -o - | tar xv --xz
### Tip ### The you can simply run `git diff` to see the report on differences.
Don't run the mysql-test-run test suite as part of build.
It takes a lot of time, and we will do a better test anyway in
Buildbot, running the test suite from installed .debs on a clean VM.
export DEB_BUILD_OPTIONS="nocheck" ## Building from sources with git-buildpackage ##
If you want to run the build in parallel on 2 CPUs and have verbose output, use:
export DEB_BUILD_OPTIONS="parallel=2 verbose"
The options above can also be combined freely to get required behaviour.
See README.Contribute for details.
## Importing initial sources from upstream the first fime ## ## Importing initial sources from upstream the first fime ##
...@@ -49,7 +48,7 @@ Create repository ...@@ -49,7 +48,7 @@ Create repository
cd mariadb-10.1 cd mariadb-10.1
git init git init
git branch upstream git branch upstream
git-import-orig --pristine-tar ../../upstream/mariadb-10.1.20 gbp import-orig --pristine-tar ../../upstream/mariadb-10.1.20
Fill in values prompted Fill in values prompted
What will be the source package name? [mariadb] mariadb-10.1 What will be the source package name? [mariadb] mariadb-10.1
...@@ -81,44 +80,63 @@ https://mariadb.com/kb/en/mariadb/development/release-notes/ ...@@ -81,44 +80,63 @@ https://mariadb.com/kb/en/mariadb/development/release-notes/
Download new source package Download new source package
cd pkg-mariadb-10.1 cd pkg-mariadb-10.1
uscan --verbose gbp import-orig --uscan --no-interactive --verbose
Enter git repository path and apply new sources Refresh patches
cd mariadb-10.1 while quilt push; do quilt refresh; done; quilt pop -a
git-import-orig --pristine-tar ../mariadb-10.1.20.tar.gz
Simple offsets will be updated automatically. If there are any rejects, inspect
the files and update the patches or discard the patch completely if you are
_sure_ that it has been applied upstream.
Generate new debian/changelog entry automatically with git-dch Generate new debian/changelog entry automatically with git-dch
git-dch -avR git-dch -avR
Manually merge what needs to be done Edit the details to match correct release
gedit debian/changelog &
Commit to git
git citool
Build and test locally to verify it works.
gbp buildpackage --git-pristine-tar
Alternatively you can use Docker with something like this:
mkdir ccache buildout
docker run -it -v "${PWD}/buildout":/tmp/build -v "${PWD}/ccache":/.ccache \
-v "${PWD}/$PKG":/tmp/build/source -w /tmp/build/source \
-e DEB_BUILD_OPTIONS="$DEB_BUILD_OPTIONS" -e CCACHE_DIR=/var/cache/ccache \
--user=1001 registry.gitlab.com/mariadb/mariadb.org-build-containers:$PKG-debian-sid-build-env \
gbp buildpackage --git-pristine-tar -us -uc | tee latest.build
Commit and push If needed, add commits or amend the ones you made until the package is in
git commit -am "Merged with upstream 10.1.20" perfect shape.
git push --all; git push --all github
git push --tags; git push --tags github
Note that in above if you want to sync to Github directly you need to have Then proceed to make a source only build
collaborator rights to the Github repo and you need to add it as a secondary gbp buildpackage -S
remote location with:
git remote add origin git@github.com:ottok/mariadb-10.1.git
To push to the git.debian.org repos you need to a member of the pkg-mysql team Test more with upload to Launchpad
at Alioth. It does not matter which repository you push to, eventually they are COMMIT_ID=`git log -n 1 --oneline | cut -d ' ' -f 1`
synced with each other anyway. PKG=mariadb-10.1
backportpackage --yes -u ppa:mysql-ubuntu/$PKG -d xenial -S ~`date '+%s'`.$COMMIT_ID $PKG*.dsc
When done, push to Salsa:
git push -v
### Maintaining patches ### Wait until the Salsa CI pipeline finishes. If it did not either spot any
regressions, proceed to tagging the commit:
git tag -s ...
git push --tags
Test that the patches still apply by running: Sign and upload to autobake for one final round of testing:
export QUILT_PATCHES=debian/patches dput autobake *.changes
quilt import
quilt push -a
If there are any rejects, inspect the files and update the patches. Once you are sure there are no regressions, finally upload to Debian
dput ftp-master *.changes
If there are simple offsets we can refresh the patches simply with: After the upload, check that everything is OK at
quilt pop -a * https://tracker.debian.org/mariadb-10.1 (Debian)
while quilt push; do quilt refresh; done * https://launchpad.net/ubuntu/+source/mariadb-10.1 (Ubuntu)
### Maintaining debian/copyright ### ### Maintaining debian/copyright ###
...@@ -138,10 +156,10 @@ those cleaned up. ...@@ -138,10 +156,10 @@ those cleaned up.
### Quality control ### ### Quality control ###
Run wrap-and-sort to style contents in debian/* Run wrap-and-sort to style contents in debian/*
wrap-and-sort wrap-and-sort -a -t -v
Once packages are done check their quality with Lintian Once packages are done check their quality with Lintian
lintian -EvIL +pedantic --color=always *.deb lintian -EvIL +pedantic --color=always *.changes
## Uploading to Ubuntu PPA for testing ## ## Uploading to Ubuntu PPA for testing ##
...@@ -154,8 +172,23 @@ These are good to have as environment variables (replace values with your own) ...@@ -154,8 +172,23 @@ These are good to have as environment variables (replace values with your own)
DEBFULLNAME="Otto Kekäläinen" DEBFULLNAME="Otto Kekäläinen"
export DEBEMAIL DEBFULLNAME export DEBEMAIL DEBFULLNAME
The run the commands to automatically change version and upload Then run the commands to automatically change version and upload
backportpackage -u ppa:mysql-ubuntu/mariadb -d precise -r *.dsc -S ~ppa1 -y backportpackage --yes -u ppa:mysql-ubuntu/$PKG -d xenial -S ~`date '+%s'`.$COMMIT_ID $PKG*.dsc
### Launchpad testing matrix
Since Launchpad only has Ubuntu releases, packages for specific Debian releases
needs to be tested on the Ubuntu release which most closely matches the Debian
release in question. The following matrix maps what package should be tested
where:
- 10.3 for sid on launchpad cosmic
- 10.1 for bionic on launchpad bionic
- 10.0 for xenial on launchpad xenial
- 10.1 for sid on launchpad cosmic
- 10.1 for stretch on launchpad xenial
- 10.0 for jessie on launhcpad trusty
- 5.5. for trusy on launchpad trusty
## Uploading to Ubuntu security releases ## ## Uploading to Ubuntu security releases ##
...@@ -170,6 +203,24 @@ that Ubuntu security team can apply upon the mix of previous debian/ contents ...@@ -170,6 +203,24 @@ that Ubuntu security team can apply upon the mix of previous debian/ contents
from Ubuntu archive and updated others from upstream. This would allow to use from Ubuntu archive and updated others from upstream. This would allow to use
git-buildpackage to produce test builds instead of plain 'fakeroot dpkg-buildpackage'. git-buildpackage to produce test builds instead of plain 'fakeroot dpkg-buildpackage'.
### Upload priority
Do the security uploads in this order for having the best chance of catching
regressions before they spread out to too many users.
Upload priority for 10.1
- debian sid
- debian stretch
- ubuntu bionic
for 10.0
- debian jessie
- ubuntu xenial
for 5.5
- ubuntu trusty
## Comparison to other distributions ## ## Comparison to other distributions ##
For tracking security release information, finding solutions for build errors For tracking security release information, finding solutions for build errors
...@@ -193,4 +244,3 @@ are due to a bug in GCC which has been reported to GCC and will become fixed ...@@ -193,4 +244,3 @@ are due to a bug in GCC which has been reported to GCC and will become fixed
eventually: eventually:
E array-bounds /??PKGBUILDDIR??/strings/decimal.c:300 (arm64, armel, armhf, i386, mips, mipsel, powerpc, ppc64el, sparc) E array-bounds /??PKGBUILDDIR??/strings/decimal.c:300 (arm64, armel, armhf, i386, mips, mipsel, powerpc, ppc64el, sparc)
E array-bounds /??PKGBUILDDIR??/strings/decimal.c:496 (arm64, armel, armhf, i386, mips, mipsel, powerpc, ppc64el, sparc) E array-bounds /??PKGBUILDDIR??/strings/decimal.c:496 (arm64, armel, armhf, i386, mips, mipsel, powerpc, ppc64el, sparc)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment