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

3
## live-build(7) - System Build Scripts
4
## Copyright (C) 2006-2013 Daniel Baumann <daniel@debian.org>
5
##
6
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
7
8
9
## 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
[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/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 [ "${LB_SOURCE}" != "true" ]
28
then
29
	exit 0
30
fi
31

32
33
Echo_message "Begin downloading sources..."

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

# Checking stage file
38
Check_stagefile .build/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
${LB_BOOTLOADER}
57
live-build
58
xorriso
59
60
parted
squashfs-tools
61
mtd-tools
62
63
EOF

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
case "${LB_BINARY_FILESYSTEM}" in
	fat*)
		echo "dosfstools" >> source-selection.txt
		;;

	ntfs)
		case "${LB_PARENT_DISTRIBUTION}" in
			squeeze)
				echo "ntfsprogs" >> source-selection.txt
				;;

			*)
				echo "ntfs-3g" >> source-selection.txt
				;;
		esac
		;;
esac

82
case "${LB_ARCHITECTURES}" in
83
	amd64|i386)
84

85
cat >> source-selection.txt << EOF
86
87
88
89
90
mtools
syslinux
grub
EOF

91
		if [ "${LB_MEMTEST}" != "false" ] && [ "${LB_MEMTEST}" != "none" ]
92
		then
93
			echo "${LB_MEMTEST}" >> source-selection.txt
94
		fi
95
96
97
		;;

	powerpc)
98
		echo "yaboot" >> source-selection.txt
99
		;;
100

101
102
103
104
105
106
107
	sparc)

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

108
		;;
109
110
esac

111
if [ -n "${LB_TASKS}" ]
112
then
113
	echo "${LB_TASKSEL}" >> source-selection.txt
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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
142
143
144
145

# Sort sources
for DSC in chroot/*.dsc
do
146
147
148
149
	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
150
151
152

	case "${SOURCE}" in
		lib?*)
153
			LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')"
154
155
156
			;;

		*)
157
			LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')"
158
159
160
161
162
163
164
165
166
167
168
			;;
	esac

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

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

# Creating stage file
169
Create_stagefile .build/source_debian