Hi,
Am Sonntag, den 06.04.2014, 11:13 +1000 schrieb Erik de Castro Lopo:
> > PS: If above description of the workflow is news to you, maybe I need to
> > talk more about it.
>
> Yes.
Ok, let me just log how I update the gtk packages. It’s 10:27 now :-)
# Update the planning repo
$ cd debian/pkg-haskell/repos/tools/all-packages
~/debian/pkg-haskell/repos/tools/all-packages $ darcs pull
~/debian/pkg-haskell/repos/tools/all-packages $ gvim all-packages.txt
~/debian/pkg-haskell/repos/tools/all-packages $ cabal update
~/debian/pkg-haskell/repos/tools/all-packages $ schroot -c haskell -- ./test-packages.pl
# gtk3 is new; this is somewhat manual
$ cd /tmp
/tmp $ cabal unpack gtk3
/tmp $ cd gtk3-0.12.5.6/
# Usually I would start with
# ~/debian/pkg-haskell/repos/tools/template-debian/
# but here I start with the existing gtk debian directory
/tmp/gtk3-0.12.5.6 $ darcs get ~/debian/pkg-haskell/repos/haskell-gtk debian
/tmp/gtk3-0.12.5.6 $ cd debian/
# Updating varioust stuff, start using X-Description
/tmp/gtk3-0.12.5.6/debian $ gvim *
/tmp/gtk3-0.12.5.6/debian $ darcs rec
/tmp/gtk3-0.12.5.6/debian $ darcs put darcs.debian.org:/darcs/pkg-haskell/haskell-gtk3
/tmp/gtk3-0.12.5.6/debian $ alioth
~ $ /darcs/pkg-haskell/tools/add-hooks.sh haskell-gtk3
~ $ exit
# Back to the normal flow
$ cd debian/pkg-haskell/repos/haskell-cairo/
~/debian/pkg-haskell/repos/haskell-cairo $ darcs pull
# Check the changes between current and latest (especially build depends)
~/debian/pkg-haskell/repos/haskell-cairo $ firefox "$(diff-upgrade.sh)"
# mass upgrade does the changelog entry, based on the latest on hackage
~/debian/pkg-haskell/repos/haskell-cairo $ mass-upgrade.sh .
# update control file accordingly
~/debian/pkg-haskell/repos/haskell-cairo $ gvim control
# add the changes to the new-release-commit done by mass-upgrade (just say y)
~/debian/pkg-haskell/repos/haskell-cairo $ darcs amend
# done: mark as ready to built:
~/debian/pkg-haskell/repos/haskell-cairo $ mass-release.sh .
# same for the other packages (gio, glib, gtk, pang)
# darcs diff in all-packages/ is my TODO-List
# gtk3 is new, so I just
~/debian/pkg-haskell/repos/haskell-pango $ cd ~/debian/pkg-haskell/repos
~/debian/pkg-haskell/repos $ darcs get darcs.debian.org:/darcs/pkg-haskell/haskell-gtk3
~/debian/pkg-haskell/repos $ mass-release.sh haskell-gtk3
# time to build (first parameter is the schroot to use, second the build directory)
~/debian/pkg-haskell/repos $ ../tools/mass-build.sh haskell ../build haskell-pango haskell-gio haskell-cairo haskell-glib haskell-gtk haskell-gtk3
# this
# 1. Checks which of the arguments are actually marked for release (others are ignored, so passing haskell-* is fine as well)
# 2. Creates source tarballs (directly from the repo and the original tarball, by manually calling dpkg-source, via debian2dsc.sh)
# 3. Runs edos-debbuildcheck to see if any packages can be built, based on unstable + locally built packages
# 4. Builds them
# 5a. If successful, runs "debcommit -r" in the repository, to commit the release and tag it.
# 5b. If not, reverts the release, i.e. sets it back to UNRELEASED.
# 6. Updates the Packages file in the build directory
# 7. Goes to step 3
# This time, I get
# Packages not yet buildable:
# haskell-glib haskell-cairo haskell-pango haskell-gio haskell-gtk haskell-gtk3
~/debian/pkg-haskell/repos $ less ../build/edos-failures.log
# I need to upgrade gtk2hs-buildtools (same steps as above)
# next try
~/debian/pkg-haskell/repos $ ../tools/mass-build.sh haskell ../build haskell-pango haskell-gio haskell-cairo haskell-glib haskell-gtk haskell-gtk3 gtk2hs-buildtools
# stuff builds...
# Now I get a failure in gtk2hs-buildtools, so it is no longer marked for release
~/debian/pkg-haskell/repos $ cd gtk2hs-buildtools
# fix
~/debian/pkg-haskell/repos/gtk2hs-buildtools $ vim rules
# commit (can also be done with debcommit if the change is mentioned in the changelog)
~/debian/pkg-haskell/repos/gtk2hs-buildtools $ darcs rec
~/debian/pkg-haskell/repos/gtk2hs-buildtools $ mass-release.sh .
~/debian/pkg-haskell/repos/gtk2hs-buildtools $ cd ..
~/debian/pkg-haskell/repos $ ../tools/mass-build.sh haskell ../build haskell-pango haskell-gio haskell-cairo haskell-glib haskell-gtk haskell-gtk3 gtk2hs-buildtools
# gtk2hs-buildtools builds, but the rest not (missing build-depends).
# Noticed that gtk2hs-buildtools has different version
# numbers than the embedded c2hs.
# Used http://hdiff.luite.com/cgit/gtk2hs-buildtools/ to figure out that
# 0.12.5.0 is the first that shipped c2hs-0.13.8
~/debian/pkg-haskell/repos $ gvim haskell-{pango,gio,cairo,glib,gtk,gtk3}/control
# add the change to the version bump commit
~/debian/pkg-haskell/repos $ for d in haskell-{pango,gio,cairo,glib,gtk}; do darcs amend --repodir=$d; done
# for gtk3 the latest patch was already pushed, so do not amend it
~/debian/pkg-haskell/repos $ darcs record --repodir=haskell-gtk3
~/debian/pkg-haskell/repos $ ../tools/mass-build.sh haskell ../build haskell-pango haskell-gio haskell-cairo haskell-glib haskell-gtk haskell-gtk3 gtk2hs-buildtools
# now everything builds, in the right order, using the built packages as
# build-depends, in a clean¹ schroot.
# While it builds
~/debian/pkg-haskell/repos/tools/all-packages $ darcs rec
~/debian/pkg-haskell/repos/tools/all-packages $ darcs push
# Build finished...
# Time to sign, upload and push, all automatically done by
~/debian/pkg-haskell/repos $ cd ../build/
# -k is key to sign (important when sponsoring), ../repos is path to the repository (to push), *.changes is what to upload
~/debian/pkg-haskell/build $ mass-upload.sh -k F0FBF51F ../repos/ *.changes
# it also renames the *.changes files, so this command is the same every time
# done, 11:31
Took me longer than anticipated, but packaging a new package is a bit
more work, and I had to do a few round trips to get the
gtk2hs-buildtools story right.
Greetings,
Joachim
¹ Well, I do have ghc already installed, this speeds up things.
--
Joachim "nomeata" Breitner
Debian Developer
nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata
Attachment:
signature.asc
Description: This is a digitally signed message part