source: live-build/trunk/fuentes/functions/packagelists.sh @ 900

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

add original source

  • Property svn:executable set to *
File size: 2.8 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
11Expand_packagelist ()
12{
13        _LB_EXPAND_QUEUE="$(basename "${1}")"
14
15        shift
16
17        while [ -n "${_LB_EXPAND_QUEUE}" ]
18        do
19                _LB_LIST_NAME="$(echo ${_LB_EXPAND_QUEUE} | cut -d" " -f1)"
20                _LB_EXPAND_QUEUE="$(echo ${_LB_EXPAND_QUEUE} | cut -s -d" " -f2-)"
21                _LB_LIST_LOCATION=""
22                _LB_NESTED=0
23                _LB_ENABLED=1
24
25                for _LB_SEARCH_PATH in ${@}
26                do
27                        if [ -e "${_LB_SEARCH_PATH}/${_LB_LIST_NAME}" ]
28                        then
29                                _LB_LIST_LOCATION="${_LB_SEARCH_PATH}/${_LB_LIST_NAME}"
30                                break
31                        fi
32                done
33
34                if [ -z "${_LB_LIST_LOCATION}" ]
35                then
36                        echo "W: Unknown package list '${_LB_LIST_NAME}'" >&2
37                        continue
38                fi
39
40                while read _LB_LINE
41                do
42                        case "${_LB_LINE}" in
43                                \!*)
44                                        _EXEC="$(echo ${_LB_LINE} | sed -e 's|^!||')"
45
46                                        case "${LB_BUILD_WITH_CHROOT}" in
47                                                true)
48                                                        chroot chroot sh -c "${_EXEC}"
49                                                        ;;
50
51                                                false)
52                                                        eval ${_EXEC}
53                                                        ;;
54                                        esac
55                                        ;;
56
57                                \#if\ *)
58                                        if [ ${_LB_NESTED} -eq 1 ]
59                                        then
60                                                echo "E: Nesting conditionals is not supported" >&2
61                                                exit 1
62                                        fi
63                                        _LB_NESTED=1
64
65                                        _LB_NEEDLE="$(echo "${_LB_LINE}" | cut -d' ' -f3-)"
66                                        _LB_HAYSTACK="$(eval "echo \$LB_$(echo "${_LB_LINE}" | cut -d' ' -f2)")"
67
68                                        _LB_ENABLED=0
69                                        for _LB_NEEDLE_PART in ${_LB_NEEDLE}
70                                        do
71                                                for _LB_HAYSTACK_PART in ${_LB_HAYSTACK}
72                                                do
73                                                        if [ "${_LB_NEEDLE_PART}" = "${_LB_HAYSTACK_PART}" ]
74                                                        then
75                                                                _LB_ENABLED=1
76                                                        fi
77                                                done
78                                        done
79                                        ;;
80
81                                \#nif\ *)
82                                        if [ ${_LB_NESTED} -eq 1 ]
83                                        then
84                                                echo "E: Nesting conditionals is not supported" >&2
85                                                exit 1
86                                        fi
87                                        _LB_NESTED=1
88
89                                        _LB_NEEDLE="$(echo "${_LB_LINE}" | cut -d' ' -f3-)"
90                                        _LB_HAYSTACK="$(eval "echo \$LB_$(echo "${_LB_LINE}" | cut -d' ' -f2)")"
91
92                                        _LB_ENABLED=0
93                                        for _LB_NEEDLE_PART in ${_LB_NEEDLE}
94                                        do
95                                                for _LB_HAYSTACK_PART in ${_LB_HAYSTACK}
96                                                do
97                                                        if [ "${_LB_NEEDLE_PART}" != "${_LB_HAYSTACK_PART}" ]
98                                                        then
99                                                                _LB_ENABLED=1
100                                                        fi
101                                                done
102                                        done
103                                        ;;
104
105                                \#endif*)
106                                        _LB_NESTED=0
107                                        _LB_ENABLED=1
108                                        ;;
109
110                                \#*)
111                                        if [ ${_LB_ENABLED} -ne 1 ]
112                                        then
113                                                continue
114                                        fi
115
116                                        # Find includes
117                                        _LB_INCLUDES="$(echo "${_LB_LINE}" | sed -n \
118                                                -e 's|^#<include> \([^ ]*\)|\1|gp' \
119                                                -e 's|^#include <\([^ ]*\)>|\1|gp')"
120
121                                        # Add to queue
122                                        _LB_EXPAND_QUEUE="$(echo ${_LB_EXPAND_QUEUE} ${_LB_INCLUDES} |
123                                                sed -e 's|[ ]*$||' -e 's|^[ ]*||')"
124                                        ;;
125
126                                *)
127                                        if [ ${_LB_ENABLED} -eq 1 ]
128                                        then
129                                                echo "${_LB_LINE}"
130                                        fi
131                                        ;;
132
133                        esac
134                done < "${_LB_LIST_LOCATION}"
135        done
136}
Note: See TracBrowser for help on using the repository browser.