source_debian 2.88 KB
Newer Older
1
2
#!/bin/sh

3
4
5
6
7
8
9
## live-build(7) - System Build Scripts
## Copyright (C) 2006-2010 Daniel Baumann <daniel@debian.org>
##
## live-build comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
## This is free software, and you are welcome to redistribute it
## under certain conditions; see COPYING for details.

10
11
12

set -e

13
# Including common functions
14
. "${LH_BASE:-/usr/share/live/build}"/scripts/build.sh
15

16
# Setting static variables
17
DESCRIPTION="$(Echo 'debian sources')"
18
19
20
21
22
HELP=""
USAGE="${PROGRAM} [--force]"

Arguments "${@}"

23
# Reading configuration files
24
Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
25
26
Set_defaults

27
if [ "${LH_SOURCE}" != "true" ]
28
then
29
	exit 0
30
fi
31

32
33
Echo_message "Begin downloading sources..."

34
# Requiring stage file
35
Require_stagefile .stage/config .stage/bootstrap
36
37

# Checking stage file
38
Check_stagefile .stage/source_debian
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# Checking lock file
Check_lockfile .lock

# Creating lock file
Create_lockfile .lock

# Remove old sources
if [ -d source/debian ]
then
	rm -rf source/debian
fi

# Download sources
53
Chroot chroot "dpkg --get-selections" | awk '{ print $1 }' > source-selection.txt
54

55
cat >> source-selection.txt << EOF
56
57
58
59
${LH_BOOTLOADER}
live-helper
${LH_INITRAMFS}
dosfstools
60
genisoimage
61
62
63
parted
squashfs-tools
genext2fs
64
mtd-tools
65
66
67
EOF

case "${LH_ARCHITECTURE}" in
68
	amd64|i386)
69

70
cat >> source-selection.txt << EOF
71
72
73
74
75
mtools
syslinux
grub
EOF

76
		if [ "${LH_MEMTEST}" != "false" ] && [ "${LH_MEMTEST}" != "none" ]
77
		then
78
			echo "${LH_MEMTEST}" >> source-selection.txt
79
		fi
80
81
82
		;;

	powerpc)
83
		echo "yaboot" >> source-selection.txt
84
		;;
85

86
87
88
89
90
91
92
	sparc)

cat >> source-selection.txt << EOF
silo
sparc-utils
EOF

93
		;;
94
95
esac

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
if [ -n "${LH_TASKS}" ]
then
	echo "${LH_TASKSEL}" >> source-selection.txt
fi

MISSING=""

grep . source-selection.txt | \
while read PACKAGE
do
	if ! Chroot chroot "apt-get ${APT_OPTIONS} --download-only source ${PACKAGE}"
	then
		MISSING="${MISSING} ${PACKAGE}"
	fi
done

if [ -n "${MISSING}" ]
then
	cat > source/missing-source.txt << EOF
This file contains the list of binary packages that are installed on this live
system that do not have a corresponding source package.

EOF

	for PACKAGE in ${MISSING}
	do
		Chroot chroot "dpkg -l ${PACKAGE}" | tail -n1 >> source/missing-source.txt
	done
fi

rm -f source-selection.txt
127
128
129
130

# Sort sources
for DSC in chroot/*.dsc
do
131
132
133
134
	SOURCE="$(sed -n 's|^Source: ||p' ${DSC} 2>/dev/null || :)"
	# The sed may fail if multiple dsc files exist for same source, as the
	# first one to match will have already been moved.
	[ -n "$SOURCE" ] || continue
135
136
137

	case "${SOURCE}" in
		lib?*)
138
			LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')"
139
140
141
			;;

		*)
142
			LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')"
143
144
145
146
147
148
149
150
151
152
153
			;;
	esac

	# Install directory
	mkdir -p source/debian/"${LETTER}"/"${SOURCE}"

	# Move files
	mv chroot/"${SOURCE}"_* source/debian/"${LETTER}"/"${SOURCE}"
done

# Creating stage file
154
Create_stagefile .stage/source_debian