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

  1. 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
  2. Change target from sid to unstable for .changes files to be perfect.
  3. Replace current git branch upstream with git-buildpackage pristine-tar format.
  4. 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.

  5. 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.
  6. Discuss with upstream to bump up the Debian policy version, rename *.files into *.install etc.
  7. 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.
  8. Talk with upstream about autobake.sh and possible removal or simplification to run same build process as Debian does.