You need to sign in or sign up before continuing.
binary_package-lists 5.09 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
#!/bin/sh

## live-build(7) - System Build Scripts
## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
##
## This program 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.


set -e

# Including common functions
[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh

# Setting static variables
DESCRIPTION="$(Echo 'install local packages into binary')"
HELP=""
USAGE="${PROGRAM} [--force]"

Arguments "${@}"

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

Echo_message "Begin installing local package lists..."

# Requiring stage file
Require_stagefile .build/config .build/bootstrap

# Checking stage file
Check_stagefile .build/binary_package-lists

# Checking lock file
Check_lockfile .lock

# Creating lock file
Create_lockfile .lock

case "${LB_MODE}" in
	progress-linux)
		DISTS="installer/dists"
		POOL="installer/pool"
		;;

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

if ls config/package-lists/*.list > /dev/null 2>&1 || \
   ls config/package-lists/*.list.binary > /dev/null 2>&1
then
	# Check depends
	Check_package host /usr/bin/apt-ftparchive apt-utils

	case "${LB_BUILD_WITH_CHROOT}" in
		true)
			# Restoring cache
			Restore_cache cache/packages.chroot

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

			# Installing depends
			Install_package
			;;

		false)
			Check_package host /usr/bin/grep-aptavail dctrl-tools
			;;
	esac

	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

	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

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

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

			# Remove package list
			rm chroot/root/"$(basename ${LIST})"
		fi
	done

	for FILE in chroot/binary.deb/archives/*.deb
	do
		if [ ! -e ${FILE} ]; then
			break # Do nothing if the package lists were empty...
		fi

		SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')"
		SECTION="$(dpkg -f ${FILE} Section | awk '{ print $1 }')"

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

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

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

		if echo "${SECTION}" | grep -qs contrib
		then
			SECTION="contrib"
		elif echo "${SECTION}" | grep -qs non-free
		then
			SECTION="non-free"
		else
			SECTION="main"
		fi

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

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

	cd binary

	for SECTION in ${POOL}/*
	do
		if [ ! -d "${SECTION}" ]; then
			break # Do nothing if the package lists were empty...
		fi

		SECTION="$(basename ${SECTION})"

		mkdir -p ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}
		apt-ftparchive packages ${POOL}/${SECTION} > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages
		gzip -9 -c ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages.gz
	done
#Added by I Sagar
	if [ -e ../chroot/etc/os-release ]
    then
        _VERSION="$(. ../chroot/etc/os-release && echo ${VERSION_ID})"
    fi

#Remove link file which makes apt-ftparchive fail
	rm -f dists/${LB_PARENT_DISTRIBUTION}/${LB_PARENT_DISTRIBUTION}
#Generate Release file
	apt-ftparchive  -o APT::FTPArchive::Release::Origin="Hamara Svastik" \
	-o APT::FTPArchive::Release::Label="Hamara Svastik" \
	-o APT::FTPArchive::Release::Suite="${LB_PARENT_DISTRIBUTION}" \
	-o APT::FTPArchive::Release::Version="${VERSION}" \
	-o APT::FTPArchive::Release::Codename="${LB_PARENT_DISTRIBUTION}" \
	-o APT::FTPArchive::Release::Date="$(date -R)" \
	-o APT::FTPArchive::Release::Architectures="${LB_ARCHITECTURES}" \
	-o APT::FTPArchive::Release::Components="${LB_PARENT_ARCHIVE_AREAS}" \
	-o APT::FTPArchive::Release::Description="Last updated: $(date -R)" \
	release dists/${LB_DISTRIBUTION} > dists/${LB_DISTRIBUTION}/Release
##
	cd "${OLDPWD}"

	rm -f chroot/bin/Packages

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

	case "${LB_BUILD_WITH_CHROOT}" in
		true)
			# Removing depends
			Remove_package

			# Saving cache
			Save_cache cache/packages.chroot
			;;
	esac

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