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

Re: Extremadura & Debian



Paul Wise left as an exercise for the reader:
> There may be other strategies that I'm not aware of too, some may mix
> and match parts of the above strategies or pull parts from other
> places such as deb-multimedia.org, Liquorix or Ubuntu.

In the hopes it might be useful to someone else, here's what I'm currently
doing for SprezzOS. Note that we're a purely rolling distro, with the ideal
that "releases" can be made at arbitrary times -- this post doesn't address
release management so much as it does tracking upstream packaging sources.

SprezzOS is made up of two source megarepositories:

 - SprezzOS-installer
 - SprezzOS-world

SprezzOS-installer is used to build installation media and udebs. It annoys
me, and will only take us astray. SprezzOS-world is what concerns us. Within
there, I've got:

 Makefile
 packaging/
 upstreams/
 \|- debian-unstable
  \|- svn
   |- git
   |- crap
  |- debian-experimental
  \|- svn
   |- git
   |- crap
  |- launchpad
   \- bzr
  |- the-mad-frenchman
   \- svn
  |- rogue-ppas

Ideally, packaging data is kept in a friendly source code control system,
and even more ideally identified by a valid Vcs-* line. When this is the
case, the upstream packaging is added as a submodule in the appropriate
{upstream}/{sccs} subdirectory. When upstream is not so kind as to keep
packaging in public source control, it's tossed into {upstream}/{crap}.
rogue-ppas represent packages sucked in from random ppas, for better or
worse, usually worse. these are all treated as crap upstream packaging.

the-mad-frenchman, obviously, represents Fortress Marillat. It it the only
known origin of compatibility level 5 errors and other strange beasts.

I do a daily-ish fetch across the upstreams, review changes, and merge them
into packaging/ on master as deemed fit (this is still largely an
abstraction -- we've not been around long enough to see many upstream
changes). Whether merged into packaging/ or not, I record the current
SprezzOS package version in the merge message. I've not yet dealt with a
migration from experimental to unstable, but expect it to result in moving
the submodule reference from experimental to unstable, after purging the
unstable reference. Modified packages are rebuilt, tested, and published.

I then do a uscan in packaging/, usually seeing a few upgrades each day
(today was a busy one due to GNOME). For a minimal-headcount distro like
SprezzOS (an army of one, baby!), it's pretty imperative that your
watchfiles be valid. I've fixed several dozen Debian watchfiles (and boy do
I have some choice words regarding uscan), and need submit these to the
DBTS. 

I've then a Makefile of...2254 lines thus far, most of them cut-and-paste of
three generations of building recipes. The most recent is basically:

	.PHONY: libxfce4ui
	libxfce4ui:$(LIBXFCE4UI)_$(ARCH).deb
	$(LIBXFCE4UI): $(SPREZZ)/libxfce4ui/debian/changelog
		mkdir $@
		cp -r $(<D) $@/
		cd $@ && uscan --force-download
		tar xjvf libxfce4ui-$(libxfce4ui_UPVER).tar.bz2 --strip-components=1 -C $@

about two hundred of these, combined with:

	include $(addprefix sprezzos-world/,$(PACKAGES))

	sprezzos-world/%: $(SPREZZ)/%/debian/changelog
		[ -d $(@D) ] || mkdir -p $(@D)
		( echo "# Automatically generated from $<" && \
		echo -n "$(@F)_VERSION:=" && \
		dpkg-parsechangelog -l$< | grep-dctrl -ensVersion -FSource . | cut -d: -f2- && \
		echo -n "$(shell echo $(@F) | tr [:lower:] [:upper:] | tr -d -):=$(@F)_" &&\
		dpkg-parsechangelog -l$< | grep-dctrl -ensVersion -FSource . | cut -d: -f2- && \
		echo -n "$(@F)_UPVER:=" && \
		dpkg-parsechangelog -l$< | grep-dctrl -ensVersion -FSource . | cut -d: -f2- | sed -e 's/[+-]SprezzOS[0-9]*//' \
		) > $@

and this is all really grotesque, but it gets the job done and allows
me to "maintain", about as well as one guy can, about...

	[skynet](137) $ apt-show-versions | grep SprezzOS | wc -l
	574
	[skynet](0) $ 

574 binary packages and counting, tracking their upstream development on close
to a daily basis.

Hope someone finds this useful!

-- 
nick black     http://www.sprezzatech.com -- unix and hpc consulting
to make an apple pie from scratch, you need first invent a universe.


Reply to: