Re: simple-cdd 0.2.0
On Tue, Jul 26, 2005 at 04:11:35PM -0600, Vagrant Cascadian wrote:
> local_packagtes is very limited. it doesn't download the packages,
> doesn't do dependency resolution,
That's a major problem for me. The packages I build do reply on Sarge
packages. Trying to manually track the dependencies has proven to be a
time-consuming and error-prone task.
> and you have to already have the
> packages available locally. you have to specify the full path to all
> the .deb files (well, actually you should be able to point to a
> directory containing .deb files, but i haven't tested that. sorry.)
>
> i tried to figure out how to get the LOCAL and LOCALDEBS features of
> debian-cd to work, with no luck.
>
> > * checkpackages has no idea about local_packages .
>
> i tried to fix this in svn. not sure if it works.
>
> > * checkpackages also has some bashism in it (my shell is bash, but the
> > script is /bin/sh)
dash is useful for that. '$()' is bash-specific.
I attach my version of the script.
Also grep for '$@' . You should use '"$@"' (with quotes) for everything
that is not a makefile, normally. Otherwise it will not handle
parameters with spaces inside gracefully.
qemu-test seems to have that.
>
> if you could be more specific, that would be helpful. checkbashisms
> didn't find anything.
>
> > * the debian-cd now barks off when creaing a disk about a syntax error
> > with '(' . Could not work around it yet.
>
> what version of debian-cd ? i have only tested with 2.2.22.
Me too. The following patch to /usr/share/debian-cd/Makefile fixes the
problem:
--- /usr/share/debian-cd/Makefile.orig 2005-07-26 21:35:35.000000000 +0300
+++ /usr/share/debian-cd/Makefile 2005-07-26 21:32:35.000000000 +0300
@@ -433,7 +433,7 @@
for i in $(BDIR)/*.packages; do \
num=$${i%%.packages}; num=$${num##$(BDIR)/}; \
dir=$(BDIR)/CD$$num; \
- echo -n $(BINDISKINFO) | sed 's/_NONUS//g' > $$dir/.disk/info; \
+ echo -n "$(BINDISKINFO)" | sed 's/_NONUS//g' > $$dir/.disk/info; \
echo '#define DISKNAME ' $(BINDISKINFOND) | sed 's/_NONUS//g' \
> $$dir/README.diskdefines; \
echo '#define TYPE binary' \
(double quotes around the argument of '-n')
Another note: in my distro I have originally opted to the same limited
partitioning preseeding as you use in the first version. In the second
version I preseed exactly the oposite of what you preseed:
d-i partman/confirm boolean true
This means that the user is asked two questions instead of one, but they
are both necessary, IMHO. This allows very convinient custom
partitioning. It also allows you to use a different tool to clear out
some disk space, and then install the custom distro there.
Any idea what to do to automate the packages selection?
I currently use apt-get (described in another thread) to automate this, and
this has proven to be rather useful.
--
Tzafrir Cohen icq#16849755 +972-50-7952406
tzafrir.cohen@xorcom.com http://www.xorcom.com
#!/bin/sh
# checks if the packages needed for a profile are in the debian mirror
. simple-cdd.conf
test -z "$CHECK_MIRROR" && CHECK_MIRROR="$MIRROR"
status=0
find_cmd="find $CHECK_MIRROR/pool/main/ $local_packages -type f"
for profile in default $profiles ; do
missing_packages=""
for a in `test -r profiles/$profile.packages && egrep -v ^# profiles/$profile.packages `; do
if ! $find_cmd -name ${a}_\*.deb >/dev/null
then missing_packages="$missing_packages $a"
fi
done
if [ -n "$missing_packages" ]; then
echo "ERROR: Packages missing from profile $profile : $missing_packages"
status=1#"$(($status + 1))" #what if 256 packages are missing?
fi
missing_downloads=""
for a in `test -r profiles/$profile.downloads && egrep -v ^# profiles/$profile.downloads `; do
if ! $find_cmd -name ${a}_\*.deb >/dev/null
then missing_downloads="$missing_downloads $a"
fi
done
if [ -n "$missing_downloads" ]; then
echo "WARNING: Extra packages missing from profile $profile : $missing_downloads"
fi
done
exit $status
Reply to: