debian-cd-clone/tools/update_tasks

168 lines
4.0 KiB
Plaintext
Raw Normal View History

#!/bin/sh
2008-06-07 00:27:20 +00:00
set -e
CODENAME="$1"
if [ -z "$CODENAME" ]; then
2008-06-07 00:31:58 +00:00
echo "usage: update_tasks CODENAME" >&2
exit 1
fi
2008-10-12 23:08:57 +00:00
if [ "$MIRROR"x = ""x ] ; then
echo "update_tasks needs to know where the mirror is" >&2
exit 1
fi
2008-10-12 23:54:01 +00:00
# Determine temp dir to use
2008-10-12 23:08:57 +00:00
if [ "$BDIR"x = ""x ] ; then
2008-10-12 23:54:01 +00:00
if [ "$TMPDIR"x != ""x ] ; then
BDIR=$TMPDIR
else
BDIR=/tmp
2008-10-12 23:08:57 +00:00
fi
2008-10-12 23:54:01 +00:00
echo "update_tasks not given a temp dir, using $BDIR" >&2
2008-10-12 23:08:57 +00:00
fi
2008-10-12 23:54:01 +00:00
if [ ! -d "$BDIR" ] ; then
echo "update_tasks: temp dir '$BDIR' does not exist" >&2
exit 1
fi
# Create temp dir and ensure cleanup
TDIR=$BDIR/update_tasks.$$
mkdir -p $TDIR
trap 'rm -rf $TDIR' EXIT HUP INT QUIT TERM
2008-10-12 23:08:57 +00:00
update_full_list () {
2008-06-07 00:31:58 +00:00
file=$1
tasklist=$2
pkgfile=$3
grep '\*' $file > $file.new
(grep -Ev "^(#.*)?[[:space:]]*$" $tasklist ; echo DONE ; cat $pkgfile) | mawk '
/DONE/ {
in_packages = 1
next
}
/.*/ {
if (!in_packages) {
tasklist[$1] = num_tasks
num_tasks++
}
}
/^Package: / {
if (in_packages) {
pkgname = $2
next
}
}
/^Task: / {
if (in_packages) {
2008-06-07 19:31:29 +00:00
# Parse the Tasks: line, splitting into array "these"
gsub("Task: ", "", $0)
gsub(",", "", $0)
split($0, these)
2008-06-07 19:31:29 +00:00
# And see if we have any matches
for (task in these) {
for (taskname in tasklist) {
if (these[task] == taskname) {
printf("%d:%s\n", tasklist[taskname], pkgname)
next
}
}
}
}
next
}' | sort -n | cut -d: -f2 >> $file.new
2008-06-07 00:31:58 +00:00
mv $file.new $file
}
update_essential_list () {
2008-06-07 00:31:58 +00:00
file=$1
tasklist=$2
desktoptask=$3
tasksel=$4
2008-06-07 00:31:58 +00:00
grep '\*' $file > $file.new
(grep -Ev "^(#.*)?[[:space:]]*$" $tasklist ;
echo DONE ;
cat $tasksel/usr/share/tasksel/debian-tasks.desc) | mawk -v DT=$3 '
/DONE/ {
in_tasks = 1
next
}
/^ / {
if (in_key) {
printf("%d:%s\n", tasklist[cur_task], $1)
next
}
}
/.*/ {
if (!in_tasks) {
tasklist[$1] = num_tasks
num_tasks++
}
if (in_key) {
in_key = 0
}
}
/^Task: / {
if (in_tasks) {
cur_task = $2
next
}
}
/^Key: / {
if (in_tasks) {
for (taskname in tasklist) {
if (taskname == cur_task) {
if ((cur_task != "gnome-desktop") &&
(cur_task != "kde-desktop") &&
(cur_task != "xfce-desktop")) {
in_key = 1
}
if (cur_task == DT) {
in_key = 1
}
}
}
}
next
}' | sort -s -n -k1 | cut -d: -f2 >> $file.new
2008-06-07 00:31:58 +00:00
mv $file.new $file
}
# We need to gunzip a copy of the appropriate Packages.gz file
# Assume i386, use the $CODENAME main Packages file
2008-10-12 23:54:01 +00:00
TMP_PKG=$TDIR/Packages
zcat $MIRROR/dists/$CODENAME/main/binary-i386/Packages.gz > $TMP_PKG
# Now grab the appropriate tasksel package
TASKSEL_DEB=$MIRROR/`mawk '
/^Package: tasksel-data$/ { found=1 }
/^Filename:/ { if (found==1) { print $2; exit } }' $TMP_PKG`
2008-10-12 23:54:01 +00:00
dpkg -x $TASKSEL_DEB $TDIR/tasksel
update_essential_list tasks/task-essential-$CODENAME \
tasks/task.list gnome-desktop \
2008-10-12 23:54:01 +00:00
$TDIR/tasksel
update_essential_list tasks/task-essential-$CODENAME-kde \
tasks/task.list.kde kde-desktop \
2008-10-12 23:54:01 +00:00
$TDIR/tasksel
update_essential_list tasks/task-essential-$CODENAME-xfce \
tasks/task.list.xfce xfce-desktop \
2008-10-12 23:54:01 +00:00
$TDIR/tasksel
update_full_list tasks/task-full-$CODENAME \
tasks/task.list $TMP_PKG
update_full_list tasks/task-full-$CODENAME-kde \
tasks/task.list.kde $TMP_PKG
update_full_list tasks/task-full-$CODENAME-xfce \
tasks/task.list.xfce $TMP_PKG