Status

Debian

Downstream

Ubuntu waiting for Debian to progress:

Building

Example commands for git-buildpackage with pbuilder:

  ## Create pbuilder environment (change DISt and ARCH do make as many you want)
  export DIST=wheezy && export ARCH=amd64
  sudo apt-get install debian-archive-keyring
  git-pbuilder create --mirror http://ftp.fi.debian.org/debian/ --debootstrapopts --keyring=/usr/share/keyrings/debian-archive-keyring.gpg
  # Manually create and delete directories is pbuilder fails to do so, e.g. on re-launching 'create': sudo rm -rf /var/cache/pbuilder/ba*
  # Faster disk usage
  git-pbuilder login --save-after-login
  root@host:/# apt-get install eatmydata
  root@host:/# exit

  ## Build packages for series defined in DIST and ARCH
  mkdir $DIST-$ARCH
  cd $DIST-$ARCH
  git clone git://github.com/ottok/pkg-mariadb.git
  # Clean up parent dir from all files except the .orig.tar.gz file
  # which is always the same from build to build
  ls . | grep -v orig | grep -v pkg-mariadb | xargs rm
  cd pkg-mariadb
  git pull
  export DEB_BUILD_OPTIONS=nocheck
  time git-buildpackage --git-pbuilder --git-dist=$DIST --git-arch=$ARCH
  cd ..
  lintian --info -I -E --pedantic --color=auto *.changes
  cd ..
  dpkg-scanpackages $DIST-$ARCH/ /dev/null | gzip -9c > $DIST-$ARCH/Packages.gz
  dpkg-scansources $DIST-$ARCH/ /dev/null | gzip -9c > $DIST-$ARCH/Sources.gz
  cd $DIST-$ARCH
  # Finally upload to public testing server
  rsync -avz --delete-after *.gz *.build *.dsc *.changes *.deb labs:/home/otto/public_html/mariadb-repo/$DIST-$ARCH

  # Go Ping! when done
  paplay --volume=65536 /usr/share/sounds/freedesktop/stereo/complete.oga

  # Sign with Otto's key and upload
  debsign -k B7F7E4E1 *.changes
  dput mentors *.changes

Binaries for public testing

Latest test packages can be installed after adding the sources.list line corresponding to your distro:

  # Debian stable
  deb http://labs.seravo.fi/~otto/mariadb-repo/ wheezy-amd64/
  deb http://labs.seravo.fi/~otto/mariadb-repo/ wheezy-i386/

  # Debian unstable
  deb http://labs.seravo.fi/~otto/mariadb-repo/ sid-amd64/
  deb http://labs.seravo.fi/~otto/mariadb-repo/ sid-i386/

  # Ubuntu unstable
  deb http://labs.seravo.fi/~otto/mariadb-repo/ saucy-amd64/
  deb http://labs.seravo.fi/~otto/mariadb-repo/ saucy-i386/

The directory http://labs.seravo.fi/~otto/mariadb-repo/ is browseable and there you can also find build logs and source packages.

Same packages mirrored at Launchpad to provide standard Ubuntu PPA:

Packaging background

How MariaDB works

Regarding circular dependencies:

In the future it might be possible to run something like

   licensecheck --copyright -r . -c . | /usr/lib/cdbs/licensecheck2dep5 > /tmp/copyright

..but at the moment it does not work, so the license file is a hybrid with automation plus manual clean up.

Script license-reconcile can be used to lint the copyright file, but it cannot generate a correct file.

Related issue filed upstream: https://mariadb.atlassian.net/browse/MDEV-5483

TODO

Urgent items

  1. Rename git repo from pkg-mariadb to pkg-mariadb-5.5
  2. Replace current git branch upstream with git-buildpackage pristine-tar format. While at it, use new upstream file hash checker: As of devscripts 2.13.3, uscan now supports verifying cryptographic signatures on upstream source via the pgpsigurlmangle option in debian/watch. See uscan(1) for details and examples.

  3. Wait for .35 to be released by upstream. Then update packages directly to .35.
  4. MariaDB 5.5.34 upstream has introduced /usr/lib/mysql/plugin/dialog.so in libmariadbclient18, which conflicts with libmysqlclient18. Create a rename hack and ask for upstream to make a proper fix.
  5. SONAME is defined inside the shared library and to change if the build source itself must be updated. TODO: find the line where libmysqlclient18 is defined and make git-buildpackage patch to change it (or let upstream do it better, filed issue https://mariadb.atlassian.net/browse/MDEV-5482)

       $ objdump -x /usr/lib/x86_64-linux-gnu/libmariadbclient.so.18 | grep SONAME
         SONAME               libmysqlclient.so.18
  6. Test .35 and then upload .35 to Debian, also upload to Ubuntu and make sure all is OK for 14.04 release.

Long-term items

  1. Change target from sid to unstable for .changes files to be perfect.
  2. Review debian/patches, do we really need them? At least remove the temporary mysqld_safe-extrafix which was added only to satisfy dpkg-source nag.

  3. Figure out optimal way to add Ubuntu patches upon the Debian base and after that file issue upstream to get rid of debian/dists/(Debian|Ubuntu) folder.
  4. Figure out and document the optimal workflow to from importing upstream changes (using git-dch with correct parameters etc), committing, testing and all the way to uploading into Debian.
  5. Discuss with upstream to bump up the Debian policy version, rename *.files into *.install etc.
  6. Talk with upstream about autobake.sh and possible removal or simplification to run same build process as Debian does.
  7. Ask upstream to have one autobake run for our git also, so that we can benefit from the continuous integration system there https://mariadb.com/kb/en/package-testing-with-buildbot-and-kvm/

  8. In general, minimize delta with upstream to make maintenance and updates easier.
  9. Package MariaDB 10.0 for Debian
  10. Package MariaDB Galera Cluster for Debian