aboutsummaryrefslogtreecommitdiff
path: root/Tools/portbuild/scripts/mkbindist
blob: 249ce6ef401f39b4baa4de906e82e76d988ae648 (plain) (blame)
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
#!/bin/sh

usage () {
  echo "usage: mkbindist <arch> <branch>"
  exit 1
}
if [ $# != 2 ]; then
  usage
fi

arch=$1
branch=$2
if [ "x$branch" != x4 -a "x$branch" != x4-exp -a "x$branch" != x5 -a "x$branch" != x5-exp -a "x$branch" != x6 -a "x$branch" != x7 ]; then
  usage
fi

pb=/var/portbuild
. ${pb}/${arch}/portbuild.conf

here=${pb}/${arch}/${branch}
. ${here}/mkbindist.conf

if [ ${buildworld} = "1" ]; then
    if ! ${pb}/scripts/makeworld ${arch} ${branch}; then
	exit 1
    fi
elif [ ${ftp} = "1" ]; then
    cd ${here}
    rm -rf bindist/ftp
    mkdir -p bindist/ftp
    cd bindist/ftp
    for i in ${ftpdists}; do
        /usr/bin/ftp -a "ftp://${ftpserver}${ftpurl}/${rel}/$i.??"
    done
    cd ${here}
fi

tmpdir=${here}/tmp

# just in case
umount -f ${tmpdir}/usr/src 2>/dev/null

# Clean up ${tmpdir}
rm -rf ${tmpdir} 2>/dev/null
if [ -d ${tmpdir} ]; then
    chflags -R noschg ${tmpdir}
    rm -rf ${tmpdir}
fi
mkdir -p ${tmpdir}

# Set up the tmpdir directory hierarchy
cd ${tmpdir}
mtree -deU -f ${here}/src/etc/mtree/BSD.root.dist -p ${tmpdir}/
mtree -deU -f ${here}/src/etc/mtree/BSD.var.dist -p ${tmpdir}/var
mtree -deU -f ${here}/src/etc/mtree/BSD.usr.dist -p ${tmpdir}/usr
mtree -deU -f ${here}/src/etc/mtree/BSD.local.dist -p ${tmpdir}/usr/local

# Copy the files into the tmpdir.  Use an existing built world, or the ftp
# files.
if [ "${ftp}" = 0 ]; then
    (cd ${worlddir}; find -dx . | \
	grep -v -E '^./usr/(X11R6|local|obj|opt|ports|src)' | \
	grep -v '^./home' | \
	grep -v '^./var/db/pkg' | \
	cpio -dump ${tmpdir})
else
    for i in ${ftpdists}; do
	cat ${here}/bindist/ftp/$(basename $i).?? | tar --unlink -xzpf -
    done
fi

cd ${tmpdir}

# Customize the tmpdir
rm -rf $(cat ${here}/bindist/delete)
mkdir -p $(cat ${here}/bindist/dirlist)
(cd ${here}/bindist/files; find -dx . | cpio -dump ${tmpdir})

# Post-processing of installed world

date '+%Y%m%d' > var/db/port.mkversion

rm -f kernel.GENERIC

mkdir ${tmpdir}/var/run

chroot ${tmpdir} /sbin/ldconfig /usr/lib
if [ "${arch}" = "i386" ]; then
    chroot ${tmpdir} /sbin/ldconfig -aout /usr/lib/aout
    rm -f /usr/lib/aout/lib*_p.a
fi

# Create the tarballs
mkdir -p ${here}/tarballs
cd ${tmpdir}
tar cf ${here}/tarballs/bindist.tar.new .
mv -f ${here}/tarballs/bindist.tar.new ${here}/tarballs/bindist.tar

# Clean up
cd ${here}
rm -rf ${tmpdir} 2>/dev/null
if [ -d ${tmpdir} ]; then
    chflags -R noschg ${tmpdir}
    rm -rf ${tmpdir}
fi