summaryrefslogtreecommitdiffstats
path: root/scripts/woody.buildd
blob: 9d61384e10f1ac29301a6b465de1f30fb50f5647 (plain)
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
mirror_style release
download_style apt
default_mirror http://archive.debian.org/debian
keyring /usr/share/keyrings/debian-archive-removed-keys.gpg
force_md5

LIBC=libc6
if [ "$ARCH" = "alpha" ] || [ "$ARCH" = "ia64" ]; then
  LIBC="libc6.1"
fi

work_out_debs () {

    required="base-files base-passwd bash bsdutils debianutils diff dpkg e2fsprogs fileutils findutils grep gzip hostname libc6 libcap1 libdb3 libgdbmg1 libncurses5 libpam-modules libpam-runtime libpam0g libperl5.6 libstdc++2.10-glibc2.2 login mawk mount ncurses-base ncurses-bin perl-base sed shellutils slang1 sysvinit tar textutils util-linux"

    base="apt binutils cpio cpp cpp-2.95 debconf dpkg-dev g++ g++-2.95 gcc gcc-2.95 libc6-dev libdb2 libstdc++2.10-dev make patch perl perl-modules"

    without_package () {
        echo "$2" | tr ' ' '\n' | grep -v "^$1$" | tr '\n' ' '
    }

    case $ARCH in
        "alpha")
            required="$(without_package "libc6" "$required") libc6.1"
	    base="$(without_package "libc6-dev" "$base") libc6.1-dev"
            ;;
        "arm")
            ;;
        "i386")
            ;;
        "ia64")
	    required="$(without_package "libc6" "$required") libc6.1 gcc-2.96-base libreadline4"
	    base="$(without_package "cpp-2.95" "$base") cpp-2.96"
	    base="$(without_package "gcc-2.95" "$base") gcc-2.96"
	    base="$(without_package "g++-2.95" "$base") g++-2.96"
	    base="$(without_package "libc6-dev" "$base") libc6.1-dev elilo efibootmgr dosfstools libparted1.4 parted"
            ;;
        "m68k")
            ;;
        "powerpc")
            ;;
        "sparc")
            ;;
        "mips")
            ;;
        "mipsel")
            ;;
        "hppa")
            ;;
        s390|s390x)
            ;;
	sh*)
	    ;;
        *)
            # who knows?
            ;;
    esac
}

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

    setup_devices

    x_feign_install () {
        local pkg="$1"
        local deb="$(debfor $pkg)"
        local ver="$(extract_deb_field "$TARGET/$deb" Version)"

        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
    export DEBIAN_FRONTEND

    baseprog=0
    bases=40

    p; progress $baseprog $bases INSTBASE "Installing base system" #1
    info INSTCORE "Installing core packages..."

    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 $LIBC

    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

    info UNPACKREQ "Unpacking required packages..."

    p; progress $baseprog $bases INSTBASE "Installing base system" #8
    smallyes '' | repeatn 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 '' | repeatn 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)

    smallyes '' | repeatn 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

    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."
}