Yesterday, I did a bundle upload of all MATE 1.12 related packages to Debian unstable. Packages are currently building for the 22 architectures supported by Debian, build status can be viewed on the DDPO page of the Debian MATE Packaging Team [1]

Again a big thanks to the packaging team. Martin Wimpress amongst others did a fabulous job in bumping all packages towards the 1.12 release series before the Christmas holidays. Over the holidays, I was able to review his work (99% perfect) and upload all binary packages to a staging repository.

@Martin Wimpress: It is really time that we make a DM (Debian Maintainer) out of you!!!

After testing all MATE 1.12 packages on a Debian unstable system, I decided to do a bundle upload yesterday.

Lessons learned about bundling Debian uploads

It absolutely makes sense to hold back package uploads of a project like the MATE desktop until all relevant packages are reviewed, pre-built and tested.

When releasing MATE packages via the team's packaging Git [2], there are normally two actions to be taken on a package release:

commit "upload to unstable (debian/<pkg-version>)

tag that commit with "Debian release <pkg-version>

When reviewing so many Git projects, it is always problematic that people commit something else during the review phase. Especially, if the review work involves many packages (i.e., Git packaging repos) and requires several days or even weeks to get finished.

The simple solution for this is: Make the "upload to unstable" commit once the review is done and then directly push that to the Git packaging repo. However, wait with the tag until the package finally gets uploaded. I know, this sounds and actually is really trivial, but still the essential thing we learned from this bundle upload.

Once the upload-to-unstable-commit has been pushed, people can continue their work on the packaging Git. Newly added changes will end up in the next upload (not the one currently being prepared).

The upload at the end can be done using a simple script like the one pasted below [3]. For the correct functionality of the provided script make sure, that–until the release tag hasn't been made and pushed–you don't pull in changes from the server-side Git repo.

light+love + Happy New Year!!!

Mike

[1] https://qa.debian.org/developer.php?login=pkg-mate-team@lists.alioth.deb...

[2] http://anonscm.debian.org/cgit/pkg-mate/

[3]

#!/bin/bash PKG_BASE=~/debian/TEAMS/pkg-mate if echo $@ | grep -qE "\-\-dry\-run"; then DRY_RUN="echo " fi ALREADY_UPLOADED=' mate-common_1.12.0-1

caja-dropbox_1.12.0-1

' PKGS=' mate-desktop_1.12.1-1

mate-user-guide_1.12.0-1

libmatekbd_1.12.1-1

libmatemixer_1.12.1-1

libmateweather_1.12.1-1

mate-icon-theme_1.12.0-1

mate-backgrounds_1.12.0-1

mate-icon-theme-faenza_1.12.0+dfsg1-1

mate-polkit_1.12.0-1

marco_1.12.1-1

mate-desktop_1.12.1-1

caja_1.12.1-1

mate-settings-daemon_1.12.1-1

mate-session-manager_1.12.1-1

mate-menus_1.12.0-1

mate-panel_1.12.1-1

mate-themes_1.12.1+gtk3.18-1

mate-notification-daemon_1.12.1-1

mate-control-center_1.12.1-1

mate-screensaver_1.12.0-1

engrampa_1.12.0-1

mate-media_1.12.1-1

mate-power-manager_1.12.1-1

mate-system-monitor_1.12.1-1

mate-applets_1.12.1-1

python-caja_1.12.0-1

mate-utils_1.12.0-1

mate-user-share_1.12.0-1

pluma_1.12.1-1

eom_1.12.1-1

atril_1.12.2-1

mate-terminal_1-12-1

mate-sensors-applet_1.12.1-1

mate-netbook_1.12.0-1

mate-netspeed_1.12.0-1

mozo_1.12.0-1

caja-extensions_1.12.0-1 ' MANUAL_UPLOADS=' mate-desktop-environment_1.12.0+1 ' echo -e $PKGS | sed -e 's/_/ /'| while read pkg_name pkg_ver; do echo echo "##########" echo "# PACKAGE: $pkg_name ($pkg_ver)" echo "##########" $DRY_RUN cd $PKG_BASE/$pkg_name.pkg/$pkg_name $DRY_RUN git tag -s "debian/$pkg_ver" -m "Debian release $pkg_ver" $DRY_RUN git push --tags $DRY_RUN cd .. $DRY_RUN dput ${pkg_name}_${pkg_ver}_amd64.changes done