binary_package-lists 4.21 KB
Newer Older
1
2
#!/bin/sh

3
## live-build(7) - System Build Scripts
4
## Copyright (C) 2006-2013 Daniel Baumann <mail@daniel-baumann.ch>
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
13

set -e

# 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 'install local packages into binary')"
18
19
20
21
22
23
HELP=""
USAGE="${PROGRAM} [--force]"

Arguments "${@}"

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

27
Echo_message "Begin installing local package lists..."
28
29

# Requiring stage file
30
Require_stagefile .build/config .build/bootstrap
31
32

# Checking stage file
33
Check_stagefile .build/binary_package-lists
34
35
36
37
38
39
40

# Checking lock file
Check_lockfile .lock

# Creating lock file
Create_lockfile .lock

41
42
43
44
45
46
47
48
49
50
51
52
case "${LB_MODE}" in
	progress-linux)
		DISTS="installer/dists"
		POOL="installer/pool"
		;;

	*)
		DISTS="dists"
		POOL="pool"
		;;
esac

53
54
if ls config/package-lists/*.list > /dev/null 2>&1 || \
   ls config/package-lists/*.list.binary > /dev/null 2>&1
55
then
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
	case "${LB_BUILD_WITH_CHROOT}" in
		true)
			# Restoring cache
			Restore_cache cache/packages.chroot

			# Check depends
			Check_package chroot/usr/bin/apt-ftparchive apt-utils
			Check_package chroot/usr/bin/grep-aptavail dctrl-tools

			# Installing depends
			Install_package
			;;

		false)
			if [ ! -e /usr/bin/apt-ftparchive ]; then
				# apt-utils
				Echo_error "/usr/bin/apt-ftparchive - no such file."
				exit 1
			fi

			if [ ! -e /usr/bin/grep-aptavail ]; then
				# dctrl-tools
				Echo_error "/usr/bin/grep-aptavail - no such file."
				exit 1
			fi
			;;
	esac
83

84
85
86
87
88
89
90
	if [ -e "${LIVE_BUILD}/share/bin/Packages" ]
	then
		cp "${LIVE_BUILD}/share/bin/Packages" chroot/bin
	else
		cp /usr/share/live/build/bin/Packages chroot/bin
	fi

91
92
93
94
	mkdir -p chroot/binary.deb/archives/partial
	mv chroot/var/lib/dpkg/status chroot/var/lib/dpkg/status.tmp
	touch chroot/var/lib/dpkg/status

95
96
	for LIST in config/package-lists/*.list \
		    config/package-lists/*.list.binary
97
	do
98
99
100
101
		if [ -e "${LIST}" ]
		then
			# Generate package list
			Expand_packagelist "${LIST}" "config/package-lists" > chroot/root/"$(basename ${LIST})"
102

103
104
			# Downloading additional packages
			Chroot chroot "xargs --arg-file=/root/$(basename ${LIST}) apt-get ${APT_OPTIONS} -o Dir::Cache=/binary.deb --download-only install"
105

106
107
108
			# Remove package list
			rm chroot/root/"$(basename ${LIST})"
		fi
109
110
	done

111
	for FILE in chroot/binary.deb/archives/*.deb
112
113
	do
		SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')"
114
		SECTION="$(dpkg -f ${FILE} Section | awk '{ print $1 }')"
115
116
117
118
119
120
121
122

		if [ -z "${SOURCE}" ]
		then
			SOURCE="$(basename ${FILE} | awk -F_ '{ print $1 }')"
		fi

		case "${SOURCE}" in
			lib?*)
123
				LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')"
124
125
126
				;;

			*)
127
				LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')"
128
129
130
				;;
		esac

131
132
133
134
135
136
137
138
139
140
		if echo "${SECTION}" | grep -qs contrib
		then
			SECTION="contrib"
		elif echo "${SECTION}" | grep -qs non-free
		then
			SECTION="non-free"
		else
			SECTION="main"
		fi

141
		# Install directory
142
		mkdir -p binary/${POOL}/${SECTION}/"${LETTER}"/"${SOURCE}"
143
144

		# Move files
145
		mv "${FILE}" binary/${POOL}/${SECTION}/"${LETTER}"/"${SOURCE}"
146
147
148
	done

	cd binary
149

150
	for SECTION in ${POOL}/*
151
152
153
	do
		SECTION="$(basename ${SECTION})"

154
155
156
		mkdir -p ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LIVE_IMAGE_ARCHITECTURE}
		apt-ftparchive packages ${POOL}/${SECTION} > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LIVE_IMAGE_ARCHITECTURE}/Packages
		gzip -9 -c ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LIVE_IMAGE_ARCHITECTURE}/Packages > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LIVE_IMAGE_ARCHITECTURE}/Packages.gz
157
158
	done

159
160
	cd "${OLDPWD}"

161
162
	rm -f chroot/bin/Packages

163
164
165
	rm -rf chroot/binary.deb
	mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status

166
167
168
169
	case "${LB_BUILD_WITH_CHROOT}" in
		true)
			# Removing depends
			Remove_package
170

171
172
173
174
			# Saving cache
			Save_cache cache/packages.chroot
			;;
	esac
175

176
	# Creating stage file
177
	Create_stagefile .build/binary_package-lists
178
fi