3 ## live-build(7) - System Build Scripts
4 ## Copyright (C) 2006-2012 Daniel Baumann <daniel@debian.org>
6 ## live-build comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
7 ## This is free software, and you are welcome to redistribute it
8 ## under certain conditions; see COPYING for details.
13 # Including common functions
14 . "${LB_BASE:-/usr/share/live/build}"/scripts/build.sh
16 # Setting static variables
17 DESCRIPTION="$(Echo 'installs syslinux into binary')"
19 USAGE="${PROGRAM} [--force]"
23 # Reading configuration files
24 Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
27 if [ "${LB_BOOTLOADER}" != "syslinux" ]
32 Echo_message "Begin installing syslinux..."
34 # Requiring stage file
35 Require_stagefile .build/config .build/bootstrap
38 Check_stagefile .build/binary_syslinux
47 Check_architectures amd64 i386
48 Check_crossarchitectures
50 # Assembling image specifics
51 case "${LB_BINARY_IMAGES}" in
53 _BOOTLOADER="isolinux"
61 _TARGET="binary/isolinux"
67 _BOOTLOADER="pxelinux"
72 _BOOTLOADER="syslinux"
80 _TARGET="binary/syslinux"
87 case "${LB_BUILD_WITH_CHROOT}" in
89 Check_package chroot/usr/bin/syslinux syslinux
90 Check_package chroot/usr/lib/syslinux syslinux-common
92 case "${LB_SYSLINUX_THEME}" in
94 Check_package chroot/usr/bin/rsvg librsvg2-bin
98 Check_package chroot/usr/share/syslinux/themes/${LB_SYSLINUX_THEME} syslinux-themes-${LB_SYSLINUX_THEME}
102 Check_package chroot/usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz gfxboot-theme-ubuntu
110 if [ ! -e /usr/bin/syslinux ]
113 Echo_error "/usr/bin/syslinux - no such file."
117 if [ ! -e /usr/lib/syslinux ]
120 Echo_error "/usr/lib/syslinux - no such directory"
124 case "${LB_SYSLINUX_THEME}" in
126 if [ -e /usr/bin/rsvg ]
129 Echo_error "/usr/bin/rsvg - no such file"
135 if [ ! -e /usr/share/syslinux/themes/${LB_SYSLINUX_THEME} ]
138 Echo_error "/usr/share/syslinux/themes/${LB_SYSLINUX_THEME} - no such directory."
147 Restore_cache cache/packages.binary
152 # FIXME: cleanup, unify, and extend themes for ${_BOOTLOADER}-live and ${_BOOTLOADER}-installer
153 if [ "${LB_SYSLINUX_THEME}" = "live-build" ]
155 if [ -e "config/bootloaders/${_BOOTLOADER}" ]
157 # Internal local copy
158 _SOURCE="config/bootloaders/${_BOOTLOADER}"
160 # Internal system copy
161 _SOURCE="${LB_BASE:-/usr/share/live/build}/bootloaders/${_BOOTLOADER}"
164 # External copy from chroot or system
165 _SOURCE="/usr/share/syslinux/themes/${LB_SYSLINUX_THEME}/${_BOOTLOADER}-live"
169 mkdir -p $(dirname ${_TARGET})
171 case "${LB_BUILD_WITH_CHROOT}" in
173 # Copy in two steps since the theme can have absolute symlinks and would therefore not be dereferenced correctly
174 if [ "${LB_SYSLINUX_THEME}" = "live-build" ]
176 cp -a ${_SOURCE} chroot/root
177 Chroot chroot cp -aL /root/$(basename ${_SOURCE}) /root/$(basename ${_SOURCE}).tmp
178 rm -rf chroot/$(basename ${_SOURCE})
180 Chroot chroot cp -aL ${_SOURCE} /root/$(basename ${_SOURCE}).tmp
185 Chroot chroot "tar xfz /usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz -C /root/$(basename ${_SOURCE}).tmp"
189 mv chroot/root/$(basename ${_SOURCE}).tmp ${_TARGET}
193 cp -aL ${_SOURCE}/* ${_TARGET}
197 tar xfz /usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz -C ${_TARGET}
204 if [ -e "${_TARGET}/live.cfg.in" ]
206 # This is all rather suboptimal.. needs prettifying at some point
207 _FLAVOURS="$(echo ${LB_LINUX_FLAVOURS} | wc -w)"
209 case "${_FLAVOURS}" in
211 mv binary/live/vmlinuz-* binary/live/vmlinuz
212 mv binary/live/initrd.img-* binary/live/initrd.img
214 sed -e "s|@FLAVOUR@|${LB_LINUX_FLAVOUR}|g" \
215 -e "s|@KERNEL@|/live/vmlinuz|g" \
216 -e "s|@INITRD@|/live/initrd.img|g" \
217 -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
218 -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
219 "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
221 rm -f "${_TARGET}/live.cfg.in"
227 for _FLAVOUR in ${LB_LINUX_FLAVOURS}
229 _NUMBER="$((${_NUMBER} + 1))"
231 mv binary/live/vmlinuz-*-${_FLAVOUR} binary/live/vmlinuz${_NUMBER}
232 mv binary/live/initrd.img-*-${_FLAVOUR} binary/live/initrd${_NUMBER}.img
234 sed -e "s|@FLAVOUR@|${_FLAVOUR}|g" \
235 -e "s|@KERNEL@|/live/vmlinuz${_NUMBER}|g" \
236 -e "s|@INITRD@|/live/initrd${_NUMBER}.img|g" \
237 -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
238 -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
239 "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
242 rm -f "${_TARGET}/live.cfg.in"
245 elif [ -e "${_TARGET}/live.cfg" ]
247 sed -i -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
248 -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
252 if [ -e ${_TARGET}/install.cfg ]
254 sed -i -e "s|@LB_BOOTAPPEND_INSTALL@|${LB_BOOTAPPEND_INSTALL}|g" \
255 ${_TARGET}/install.cfg
258 if [ -e "${_TARGET}/splash.svg.in" ]
262 _PROJECT="Progress Linux"
264 if ls config/package-lists/client-gnome.list*
266 _DESCRIPTION="Client GNOME"
267 elif ls config/package-lists/client-lxde.list* > /dev/null 2>&1
269 _DESCRIPTION="Client LXDE"
270 elif ls config/package-lists/server-lxc.list* > /dev/null 2>&1
272 _DESCRIPTION="Server LXC"
274 _DESCRIPTION="Standard"
279 _PROJECT="Debian GNU/Linux"
285 eval _VERSION="$`echo RELEASE_${LB_DISTRIBUTION}`"
286 _DISTRIBUTION="${LB_DISTRIBUTION}"
287 _ARCHITECTURE="${LB_ARCHITECTURES}"
293 _MINUTE="$(date +%M)"
294 _SECOND="$(date +%S)"
295 _LINUX_VERSIONS="$(for _LINUX in chroot/boot/vmlinuz-* ; do chroot chroot apt-cache policy $(basename ${_LINUX} | sed -e 's|vmlinuz-|linux-image-|') | awk '/Installed: / { print $2 }' ; done | sort -u)"
296 _LIVE_BUILD_VERSIONS="$(chroot chroot apt-cache policy live-build | awk '/Installed: / { print $2 }')"
297 _LIVE_BOOT_VERSIONS="$(chroot chroot apt-cache policy live-boot | awk '/Installed: / { print $2 }')"
298 _LIVE_CONFIG_VERSION="$(chroot chroot apt-cache policy live-config | awk '/Installed: / { print $2 }')"
299 _LIVE_TOOLS_VERSION="$(chroot chroot apt-cache policy live-tools | awk '/Installed: / { print $2 }')"
301 sed -e "s|@PROJECT@|${_PROJECT}|g" \
302 -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \
303 -e "s|@VERSION@|${_VERSION}|g" \
304 -e "s|@ARCHITECTURE@|${_ARCHITECTURE}|g" \
305 -e "s|@DESCRIPTION@|${_DESCRIPTION}|g" \
306 -e "s|@DATE@|${_DATE}|g" \
307 -e "s|@YEAR@|${_YEAR}|g" \
308 -e "s|@MONTH@|${_MONTH}|g" \
309 -e "s|@DAY@|${_DAY}|g" \
310 -e "s|@HOUR@|${_HOUR}|g" \
311 -e "s|@MINUTE@|${_MINUTE}|g" \
312 -e "s|@SECOND@|${_SECOND}|g" \
313 -e "s|@LINUX_VERSIONS@|${_LINUX_VERSIONS}|g" \
314 -e "s|@LIVE_BUILD_VERSION@|${_LIVE_BUILD_VERSIONS}|g" \
315 -e "s|@LIVE_BOOT_VERSION@|${_LIVE_BOOT_VERSION}|g" \
316 -e "s|@LIVE_CONFIG_VERSION@|${_LIVE_CONFIG_VERSION}|g" \
317 -e "s|@LIVE_TOOLS_VERSION@|${_LIVE_TOOLS_VERSION}|g" \
318 "${_TARGET}/splash.svg.in" > "${_TARGET}/splash.svg"
320 case "${LB_BUILD_WITH_CHROOT}" in
322 cp "${_TARGET}/splash.svg" chroot
323 Chroot chroot "rsvg --format png --height 480 --width 640 splash.svg splash.png"
324 mv chroot/splash.png "${_TARGET}"
325 rm -f chroot/splash.svg
329 rsvg --format png --height 480 --width 640 "${_TARGET}/splash.svg" "${_TARGET}/splash.png"
333 rm -f "${_TARGET}/splash.svg.in" "${_TARGET}/splash.svg"
338 for _FILE in "${_TARGET}/isolinux.bin" "${_TARGET}/isolinux.cfg" "${_TARGET}/syslinux.cfg"
342 mv "${_FILE}" "${_TARGET}/$(echo ${_FILE} | sed -e 's|.*linux|boot|')"
348 case "${LB_BUILD_WITH_CHROOT}" in
351 Save_cache cache/packages.binary
358 # Creating stage file
359 Create_stagefile .build/binary_syslinux