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

Re: maintainer script factorization



On Fri, Feb 22, 2008 at 07:07:54PM +0100, Martin Fuzzey wrote:
> Hi all,
> 
> frequently maintainer scripts modify the same files and to avoid duplication
> of path names etc in all scripts I was wondering if they could be factorized
> anywhere.
> The obvious solution of installing something like
> /usr/share/package/common.sh and sourcing it in the maintainer scripts
> doesn't work as the package files may already have been removed.
> 
> Any ideas or is this impossible?
You can include some kind of common script and use .in files parsed as
with #DEBHELPER# or such.  Perhaps use cpp instead of sed for this, or
someone will suggest a better way yet.

./debian/maintscript-common:
# Begin debian/maintscript-common shell fragment
[...]
# End maintscript-common

./debian/postinst.in:
#! /bin/sh
#  Postinstallation script for foo
#MAINTSCRIPT-COMMON#
[...]

./debian/rules:
clean:
	dh_clean debian/postinst debian/preinst debian/postrm debian/prerm

binary:
	[...]

	set -e; cd debian; for m in postinst preinst postrm prerm; \
	do \
		f='maintscript-common'; \
		[ ! -e "$$m.in" ] && continue; \
		exec <"$$m.in" >"$$m"; \
		sed -e "s/^#MAINTSCRIPT-COMMON#$$//; T; r $$f"; \
	done

	[...]

	dh_installdeb

	[...]
		
Colin watson wrote about a scenario where he apparently needed to do
this:
http://lists.debian.org/debian-devel/2006/12/msg00647.html

Justin


Reply to: