binary_package-lists 4.04 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
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
if ls config/package-lists/*.list > /dev/null 2>&1 || \
   ls config/package-lists/*.list.binary > /dev/null 2>&1
43
then
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
	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
71

72
73
74
75
76
77
78
	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

79
80
81
82
	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

83
84
	for LIST in config/package-lists/*.list \
		    config/package-lists/*.list.binary
85
	do
86
87
88
89
		if [ -e "${LIST}" ]
		then
			# Generate package list
			Expand_packagelist "${LIST}" "config/package-lists" > chroot/root/"$(basename ${LIST})"
90

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

94
95
96
			# Remove package list
			rm chroot/root/"$(basename ${LIST})"
		fi
97
98
	done

99
	for FILE in chroot/binary.deb/archives/*.deb
100
101
	do
		SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')"
102
		SECTION="$(dpkg -f ${FILE} Section | awk '{ print $1 }')"
103
104
105
106
107
108
109
110

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

		case "${SOURCE}" in
			lib?*)
111
				LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')"
112
113
114
				;;

			*)
115
				LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')"
116
117
118
				;;
		esac

119
120
121
122
123
124
125
126
127
128
		if echo "${SECTION}" | grep -qs contrib
		then
			SECTION="contrib"
		elif echo "${SECTION}" | grep -qs non-free
		then
			SECTION="non-free"
		else
			SECTION="main"
		fi

129
		# Install directory
130
		mkdir -p binary/pool/${SECTION}/"${LETTER}"/"${SOURCE}"
131
132

		# Move files
133
		mv "${FILE}" binary/pool/${SECTION}/"${LETTER}"/"${SOURCE}"
134
135
136
	done

	cd binary
137
138
139
140
141

	for SECTION in pool/*
	do
		SECTION="$(basename ${SECTION})"

142
143
144
		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
145
146
	done

147
148
	cd "${OLDPWD}"

149
150
	rm -f chroot/bin/Packages

151
152
153
	rm -rf chroot/binary.deb
	mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status

154
155
156
157
	case "${LB_BUILD_WITH_CHROOT}" in
		true)
			# Removing depends
			Remove_package
158

159
160
161
162
			# Saving cache
			Save_cache cache/packages.chroot
			;;
	esac
163

164
	# Creating stage file
165
	Create_stagefile .build/binary_package-lists
166
fi