[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

My workflow – a log (Was: Switch to git after all?)


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-
# Usually I would start with 
# ~/debian/pkg-haskell/repos/tools/template-debian/
# but here I start with the existing gtk debian directory
/tmp/gtk3- $ darcs get ~/debian/pkg-haskell/repos/haskell-gtk debian
/tmp/gtk3- $ cd debian/
# Updating varioust stuff, start using X-Description
/tmp/gtk3- $ gvim *
/tmp/gtk3- $ darcs rec
/tmp/gtk3- $ darcs put darcs.debian.org:/darcs/pkg-haskell/haskell-gtk3
/tmp/gtk3- $ 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
# 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.


¹ 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

Reply to: