File: emdebian.buildd

package info (click to toggle)
emdebian-tools 1.4.3
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 1,112 kB
  • ctags: 274
  • sloc: perl: 6,297; xml: 4,828; sh: 1,902; php: 406; ansic: 189; makefile: 15
file content (177 lines) | stat: -rw-r--r-- 6,790 bytes parent folder | download
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
#  emdebian build chroot support script.
#
#  Copyright (C) 2007-2008  Neil Williams <codehelp@debian.org>
#
#  This package is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

mirror_style release
download_style apt

work_out_debs () {

required="base-files base-passwd bash bsdutils coreutils libacl1
libattr1 debconf debconf-i18n liblocale-gettext-perl libtext-wrapi18n-perl
libtext-charwidth-perl debianutils diff dpkg dselect libblkid1 e2fsprogs
e2fslibs libcomerr2 libss2 libuuid1 findutils grep gzip hostname libcap1
libc6 libdb1-compat libncurses5 libnewt0.52 libpam-modules
libpam-runtime libpam0g libperl5.10 libpopt0 login makedev mawk
mount ncurses-base ncurses-bin passwd perl-base procps sed libslang1-utf8
initscripts sysvinit sysv-rc tar util-linux whiptail libgcc1 libstdc++6"

base="adduser apt apt-cross apt-utils autoconf automake
build-essential cpio cpp cron dash debhelper debian-archive-keyring
devscripts dhcp3-client dialog dpatch dpkg-cross dpkg-dev emdebian-tools
fakeroot fdutils gawk gcc gcc-4.2-base gettext-base gnupg gpgv ifupdown
iputils-ping klogd libbz2-1.0 libc6-dev libclass-accessor-perl nano
libconfig-auto-perl libconfig-inifiles-perl libfile-homedir-perl
libgdbm3 libgnutls13 libldap-2.4-2 liblzo1 libpcap0.8 libpcre3
libsasl2-2 libselinux1 libsepol1 libslang2 libssl0.9.8 libtasn1-3
libtext-iconv-perl libtextwrap1 libusb-0.1-4 libwrap0 lsb-base
mktemp net-tools netbase openbsd-inetd perl perl-modules readline-common
sysklogd sysvinit-utils tcpd tzdata update-inetd wget zlib1g "

    without_package () {
        echo "$2" | tr ' ' '\n' | grep -v "^$1$" | tr '\n' ' '
    }
    subst_package () {
        echo "$3" | tr ' ' '\n' | sed "s/^$1$/$2/" | tr '\n' ' '
    }
}

first_stage_install () {
    extract $required

    mkdir -p "$TARGET/var/lib/dpkg"
    : >"$TARGET/var/lib/dpkg/status"
    echo >"$TARGET/var/lib/dpkg/available"

    setup_etc
    if [ ! -e "$TARGET/etc/fstab" ]; then
        echo '# UNCONFIGURED FSTAB FOR BASE SYSTEM' > "$TARGET/etc/fstab"
        chown 0.0 "$TARGET/etc/fstab"; chmod 644 "$TARGET/etc/fstab"
    fi
    conditional_cp /etc/resolv.conf "$TARGET"
    conditional_cp /etc/hostname "$TARGET"
    conditional_cp /etc/hosts "$TARGET"

    setup_devices

    x_feign_install () {
        local pkg="$1"
        local deb="$(debfor $pkg)"
        local ver="$(
            ar -p "$TARGET/$deb" control.tar.gz | zcat |
                tar -O -xf - control ./control 2>/dev/null |
                sed -ne 's/^Version: *//Ip' | head -n 1
        )"

        mkdir -p "$TARGET/var/lib/dpkg/info"

        echo \
"Package: $pkg
Version: $ver
Status: install ok installed" >> "$TARGET/var/lib/dpkg/status"

        touch "$TARGET/var/lib/dpkg/info/${pkg}.list"
    }

    x_feign_install dpkg
}

second_stage_install () {
    x_core_install () {
    smallyes '' | in_target dpkg --force-depends --install $(debfor "$@")
    }

    p () {
    baseprog="$(($baseprog + ${1:-1}))"
    }

    setup_proc
    in_target /sbin/ldconfig

    DEBIAN_FRONTEND=noninteractive
    DEBCONF_NONINTERACTIVE_SEEN=true
    export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN

    baseprog=0
    bases=40

    p; progress $baseprog $bases INSTBASE "Installing base system" #1
    info INSTCORE "Installing core packages..."
    echo 'APT::Install-Recommends "false";' >> $TARGET/etc/apt/apt.conf

    p; progress $baseprog $bases INSTBASE "Installing base system" #2
    ln -sf mawk $TARGET/usr/bin/awk
    x_core_install base-files base-passwd
    p; progress $baseprog $bases INSTBASE "Installing base system" #3
    x_core_install dpkg

    if [ ! -e "$TARGET/etc/localtime" ]; then
        ln -sf /usr/share/zoneinfo/UTC "$TARGET/etc/localtime"
    fi

    p; progress $baseprog $bases INSTBASE "Installing base system" #4
    x_core_install libc6

    p; progress $baseprog $bases INSTBASE "Installing base system" #5
    x_core_install perl-base
    p; progress $baseprog $bases INSTBASE "Installing base system" #6
    rm $TARGET/usr/bin/awk
    x_core_install mawk
    p; progress $baseprog $bases INSTBASE "Installing base system" #7
    x_core_install debconf

    info UNPACKREQ "Unpacking required packages..."

    p; progress $baseprog $bases INSTBASE "Installing base system" #8
    smallyes '' | repeat 5 in_target_failmsg UNPACK_REQ_FAIL_FIVE "Failure while unpacking required packages.  This will be attempted up to five times." "" dpkg --force-depends --unpack $(debfor $required)
    p 10; progress $baseprog $bases INSTBASE "Installing base system" #18

    info CONFREQ "Configuring required packages..."

    mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
    echo \
"#!/bin/sh
echo
echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > "$TARGET/sbin/start-stop-daemon"
    chmod 755 "$TARGET/sbin/start-stop-daemon"

    setup_dselect_method apt

    p; progress $baseprog $bases INSTBASE "Installing base system" #19
    smallyes '' | in_target_failmsg CONF_REQ_FAIL "Failure while configuring required packages." "" dpkg --configure --pending --force-configure-any --force-depends
    p 10; progress $baseprog $bases INSTBASE "Installing base system" #29

    info INSTBASE "Installing base packages..."

    p; progress $baseprog $bases INSTBASE "Installing base system" #30
    smallyes '' | repeat 5 in_target_failmsg INST_BASE_FAIL_FIVE "Failure while installing base packages.  This will be re-attempted up to five times." "" dpkg --force-auto-select --force-overwrite --force-confold --skip-same-version --unpack $(debfor $base)

    rm -f "$TARGET/usr/sbin/sendmail"
    ln -sf /bin/true "$TARGET/usr/sbin/sendmail"

    smallyes '' | repeat 5 in_target_failmsg CONF_BASE_FAIL_FIVE "Failure while configuring base packages.  This will be attempted 5 times." "" dpkg  --force-confold --skip-same-version  --configure -a

    rm -f "$TARGET/usr/sbin/sendmail"
    ln -sf exim4 "$TARGET/usr/sbin/sendmail"

    p 9; progress $baseprog $bases INSTBASE "Installing base system" #39

    mv "$TARGET/sbin/start-stop-daemon.REAL" "$TARGET/sbin/start-stop-daemon"

    progress $bases $bases INSTBASE "Installing base system" #40
    info BASESUCCESS "Base system installed successfully."
}