source: live-build/trunk/fuentes/scripts/build/lb_binary_syslinux @ 900

Last change on this file since 900 was 900, checked in by kbut, 4 years ago

add original source

  • Property svn:executable set to *
File size: 9.4 KB
Line 
1#!/bin/sh
2
3## live-build(7) - System Build Scripts
4## Copyright (C) 2006-2012 Daniel Baumann <daniel@debian.org>
5##
6## This program 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.
9
10
11set -e
12
13# Including common functions
14( . "${LIVE_BUILD}/scripts/build.sh" > /dev/null 2>&1 || true ) || . /usr/lib/live/build.sh
15
16# Setting static variables
17DESCRIPTION="$(Echo 'installs syslinux into binary')"
18HELP=""
19USAGE="${PROGRAM} [--force]"
20
21Arguments "${@}"
22
23# Reading configuration files
24Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
25Set_defaults
26
27if [ "${LB_BOOTLOADER}" != "syslinux" ]
28then
29        exit 0
30fi
31
32Echo_message "Begin installing syslinux..."
33
34# Requiring stage file
35Require_stagefile .build/config .build/bootstrap
36
37# Checking stage file
38Check_stagefile .build/binary_syslinux
39
40# Checking lock file
41Check_lockfile .lock
42
43# Creating lock file
44Create_lockfile .lock
45
46# Check architecture
47Check_architectures amd64 i386
48Check_crossarchitectures
49
50# Assembling image specifics
51case "${LB_BINARY_IMAGES}" in
52        iso*)
53                _BOOTLOADER="isolinux"
54
55                case "${LB_MODE}" in
56                        progress)
57                                _TARGET="binary/boot"
58                                ;;
59
60                        *)
61                                _TARGET="binary/isolinux"
62                                ;;
63                esac
64                ;;
65
66        netboot)
67                _BOOTLOADER="pxelinux"
68                _TARGET="tftpboot"
69                ;;
70
71        hdd*|*)
72                _BOOTLOADER="syslinux"
73
74                case "${LB_MODE}" in
75                        progress)
76                                _TARGET="binary/boot"
77                                ;;
78
79                        *)
80                                _TARGET="binary/syslinux"
81                                ;;
82                esac
83                ;;
84esac
85
86# Checking depends
87case "${LB_BUILD_WITH_CHROOT}" in
88        true)
89                Check_package chroot/usr/bin/syslinux syslinux
90                Check_package chroot/usr/lib/syslinux syslinux-common
91
92                case "${LB_SYSLINUX_THEME}" in
93                        live-build)
94                                Check_package chroot/usr/bin/rsvg librsvg2-bin
95                                ;;
96
97                        *)
98                                Check_package chroot/usr/share/syslinux/themes/${LB_SYSLINUX_THEME} syslinux-themes-${LB_SYSLINUX_THEME}
99
100                                case "${LB_MODE}" in
101                                        ubuntu)
102                                                Check_package chroot/usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz gfxboot-theme-ubuntu
103                                                ;;
104                                esac
105                                ;;
106                esac
107                ;;
108
109        false)
110                if [ ! -e /usr/bin/syslinux ]
111                then
112                        # syslinux
113                        Echo_error "/usr/bin/syslinux - no such file."
114                        exit 1
115                fi
116
117                if [ ! -e /usr/lib/syslinux ]
118                then
119                        # syslinux-common
120                        Echo_error "/usr/lib/syslinux - no such directory"
121                        exit 1
122                fi
123
124                case "${LB_SYSLINUX_THEME}" in
125                        live-build)
126                                if [ ! -e /usr/bin/rsvg ]
127                                then
128                                        # librsvg2-bin
129                                        Echo_error "/usr/bin/rsvg - no such file"
130                                        exit 1
131                                fi
132                                ;;
133
134                        *)
135                                if [ ! -e /usr/share/syslinux/themes/${LB_SYSLINUX_THEME} ]
136                                then
137                                        # syslinux-theme
138                                        Echo_error "/usr/share/syslinux/themes/${LB_SYSLINUX_THEME} - no such directory."
139                                        exit 1
140                                fi
141                                ;;
142                esac
143                ;;
144esac
145
146# Restoring cache
147Restore_cache cache/packages.binary
148
149# Installing depends
150Install_package
151
152# FIXME: cleanup, unify, and extend themes for ${_BOOTLOADER}-live and ${_BOOTLOADER}-installer
153if [ "${LB_SYSLINUX_THEME}" = "live-build" ]
154then
155        if [ -e "config/bootloaders/${_BOOTLOADER}" ]
156        then
157                # Internal local copy
158                _SOURCE="config/bootloaders/${_BOOTLOADER}"
159        else
160                # Internal system copy
161                if [ -n "${LIVE_BUILD}" ]
162                then
163                        _SOURCE="${LIVE_BUILD}/bootloaders/${_BOOTLOADER}"
164                else
165                        _SOURCE="/usr/share/live/build/bootloaders/${_BOOTLOADER}"
166                fi
167        fi
168else
169        # External copy from chroot or system
170        _SOURCE="/usr/share/syslinux/themes/${LB_SYSLINUX_THEME}/${_BOOTLOADER}-live"
171fi
172
173# Copying files
174case "${LB_BUILD_WITH_CHROOT}" in
175        true)
176                mkdir -p $(dirname ${_TARGET})
177
178                # Copy in two steps since the theme can have absolute symlinks and would therefore not be dereferenced correctly
179                if [ "${LB_SYSLINUX_THEME}" = "live-build" ]
180                then
181                        cp -a ${_SOURCE} chroot/root
182                        Chroot chroot cp -aL /root/$(basename ${_SOURCE}) /root/$(basename ${_SOURCE}).tmp
183                        rm -rf chroot/$(basename ${_SOURCE})
184                else
185                        Chroot chroot cp -aL ${_SOURCE} /root/$(basename ${_SOURCE}).tmp
186                fi
187
188                case "${LB_MODE}" in
189                        ubuntu)
190                                Chroot chroot "tar xfz /usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz -C /root/$(basename ${_SOURCE}).tmp"
191                                ;;
192                esac
193
194                mv chroot/root/$(basename ${_SOURCE}).tmp ${_TARGET}
195                ;;
196
197        false)
198                mkdir -p ${_TARGET}
199
200                cp -aL ${_SOURCE}/* ${_TARGET}
201
202                case "${LB_MODE}" in
203                        ubuntu)
204                                tar xfz /usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz -C ${_TARGET}
205                                ;;
206                esac
207                ;;
208esac
209
210# Configuring files
211if [ -e "${_TARGET}/live.cfg.in" ]
212then
213        # This is all rather suboptimal.. needs prettifying at some point
214        _FLAVOURS="$(echo ${LB_LINUX_FLAVOURS} | wc -w)"
215
216        case "${_FLAVOURS}" in
217                1)
218                        mv binary/live/vmlinuz-* binary/live/vmlinuz
219                        mv binary/live/initrd.img-* binary/live/initrd.img
220
221                        sed -e "s|@FLAVOUR@|${LB_LINUX_FLAVOUR}|g" \
222                            -e "s|@KERNEL@|/live/vmlinuz|g" \
223                            -e "s|@INITRD@|/live/initrd.img|g" \
224                            -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
225                            -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
226                        "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
227
228                        rm -f "${_TARGET}/live.cfg.in"
229                        ;;
230
231                *)
232                        _NUMBER="0"
233
234                        for _FLAVOUR in ${LB_LINUX_FLAVOURS}
235                        do
236                                _NUMBER="$((${_NUMBER} + 1))"
237
238                                mv binary/live/vmlinuz-*-${_FLAVOUR} binary/live/vmlinuz${_NUMBER}
239                                mv binary/live/initrd.img-*-${_FLAVOUR} binary/live/initrd${_NUMBER}.img
240
241                                sed -e "s|@FLAVOUR@|${_FLAVOUR}|g" \
242                                    -e "s|@KERNEL@|/live/vmlinuz${_NUMBER}|g" \
243                                    -e "s|@INITRD@|/live/initrd${_NUMBER}.img|g" \
244                                    -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
245                                    -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
246                                "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
247                        done
248
249                        rm -f "${_TARGET}/live.cfg.in"
250                        ;;
251        esac
252elif [ -e "${_TARGET}/live.cfg" ]
253then
254        sed -i  -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
255                -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
256        ${_TARGET}/live.cfg
257
258        case "${LB_INITRAMFS}" in
259                casper)
260                        sed -i -e "s|boot=live|boot=casper|" \
261                            ${_SUFFIX}/live.cfg
262                        ;;
263        esac
264fi
265
266if [ -e ${_TARGET}/install.cfg ]
267then
268        sed -i -e "s|@LB_BOOTAPPEND_INSTALL@|${LB_BOOTAPPEND_INSTALL}|g" \
269        ${_TARGET}/install.cfg
270fi
271
272if [ -e "${_TARGET}/splash.svg.in" ]
273then
274        case "${LB_MODE}" in
275                progress)
276                        _PROJECT="Progress Linux"
277
278                        if ls config/package-lists/client-gnome.list*
279                        then
280                                _DESCRIPTION="Client GNOME"
281                        elif ls config/package-lists/client-lxde.list* > /dev/null 2>&1
282                        then
283                                _DESCRIPTION="Client LXDE"
284                        elif ls config/package-lists/server-lxc.list* > /dev/null 2>&1
285                        then
286                                _DESCRIPTION="Server LXC"
287                        else
288                                _DESCRIPTION="Standard"
289                        fi
290                        ;;
291
292                *)
293                        _PROJECT="Debian GNU/Linux"
294                        _DESCRIPTION=""
295                        ;;
296
297        esac
298
299        eval _VERSION="$`echo RELEASE_${LB_DISTRIBUTION}`"
300        _DISTRIBUTION="${LB_DISTRIBUTION}"
301        _ARCHITECTURE="${LB_ARCHITECTURES}"
302        _DATE=$(date -R)
303        _YEAR="$(date +%Y)"
304        _MONTH="$(date +%m)"
305        _DAY="$(date +%d)"
306        _HOUR="$(date +%H)"
307        _MINUTE="$(date +%M)"
308        _SECOND="$(date +%S)"
309        _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)"
310        _LIVE_BUILD_VERSION="$(lb --version)"
311        _LIVE_BOOT_VERSION="$(chroot chroot apt-cache policy live-boot | awk '/Installed: / { print $2 }')"
312        _LIVE_CONFIG_VERSION="$(chroot chroot apt-cache policy live-config | awk '/Installed: / { print $2 }')"
313        _LIVE_TOOLS_VERSION="$(chroot chroot apt-cache policy live-tools | awk '/Installed: / { print $2 }')"
314
315        sed     -e "s|@PROJECT@|${_PROJECT}|g" \
316                -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \
317                -e "s|@VERSION@|${_VERSION}|g" \
318                -e "s|@ARCHITECTURE@|${_ARCHITECTURE}|g" \
319                -e "s|@DESCRIPTION@|${_DESCRIPTION}|g" \
320                -e "s|@DATE@|${_DATE}|g" \
321                -e "s|@YEAR@|${_YEAR}|g" \
322                -e "s|@MONTH@|${_MONTH}|g" \
323                -e "s|@DAY@|${_DAY}|g" \
324                -e "s|@HOUR@|${_HOUR}|g" \
325                -e "s|@MINUTE@|${_MINUTE}|g" \
326                -e "s|@SECOND@|${_SECOND}|g" \
327                -e "s|@LINUX_VERSIONS@|${_LINUX_VERSIONS}|g" \
328                -e "s|@LIVE_BUILD_VERSION@|${_LIVE_BUILD_VERSION}|g" \
329                -e "s|@LIVE_BOOT_VERSION@|${_LIVE_BOOT_VERSION}|g" \
330                -e "s|@LIVE_CONFIG_VERSION@|${_LIVE_CONFIG_VERSION}|g" \
331                -e "s|@LIVE_TOOLS_VERSION@|${_LIVE_TOOLS_VERSION}|g" \
332        "${_TARGET}/splash.svg.in" > "${_TARGET}/splash.svg"
333
334        case "${LB_BUILD_WITH_CHROOT}" in
335                true)
336                        cp "${_TARGET}/splash.svg" chroot
337                        Chroot chroot "rsvg --format png --height 480 --width 640 splash.svg splash.png"
338                        mv chroot/splash.png "${_TARGET}"
339                        rm -f chroot/splash.svg
340                        ;;
341
342                false)
343                        rsvg --format png --height 480 --width 640 "${_TARGET}/splash.svg" "${_TARGET}/splash.png"
344                        ;;
345        esac
346
347        rm -f "${_TARGET}/splash.svg.in" "${_TARGET}/splash.svg"
348fi
349
350case "${LB_MODE}" in
351        progress)
352                for _FILE in "${_TARGET}/isolinux.bin" "${_TARGET}/isolinux.cfg" "${_TARGET}/syslinux.cfg"
353                do
354                        if [ -e "${_FILE}" ]
355                        then
356                                mv "${_FILE}" "${_TARGET}/$(echo ${_FILE} | sed -e 's|.*linux|boot|')"
357                        fi
358                done
359                ;;
360esac
361
362# Hack around the removal of support in gfxboot for reading from outside
363# the bootlogo archive.  This makes customisation harder and is not ideal.
364tmpdir="$(mktemp -d)"
365(cd "$tmpdir" && cpio -i) < ${_TARGET}/bootlogo
366cp -a -f        ${_TARGET}/*.fnt \
367                ${_TARGET}/*.hlp \
368                ${_TARGET}/*.jpg \
369                ${_TARGET}/*.pcx \
370                ${_TARGET}/*.tr \
371                ${_TARGET}/*.cfg \
372                $(test -e ${_TARGET}/lang && echo ${_TARGET}/lang) \
373                ${_TARGET}/langlist \
374                "$tmpdir/" || true
375(cd "$tmpdir" && ls -1 | cpio --quiet -o) > ${_TARGET}/bootlogo
376rm -rf "$tmpdir"
377
378case "${LB_BUILD_WITH_CHROOT}" in
379        true)
380                # Saving cache
381                Save_cache cache/packages.binary
382
383                # Removing depends
384                Remove_package
385                ;;
386esac
387
388# Creating stage file
389Create_stagefile .build/binary_syslinux
Note: See TracBrowser for help on using the repository browser.