blob: 24bcd71714984af737ba03d0cbf06f3fefd0ca74 (
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
|
#!/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 ]; then
usage
fi
pb=/var/portbuild
. ${pb}/${arch}/portbuild.conf
here=${pb}/${arch}/${branch}
. ${here}/mkbindist.conf
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}
# FTP the snapshot tarball chunks if required
if [ "${ftp}" != 0 ]; 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
# 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 [ "${useworld}" = 1 ]; 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
# 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
#sed -e "s/%%KERNEL%%/${kernel}/g" ${here}/dokernel > ${tmpdir}/dokernel
# XXX Rebuild kernel for some reason. No idea why, and
# note that it's using the source tree which is cvs
# updated during the port build process, which is
# usually newer than the host environment and the chroot.
mount ${master}:${here}/src ${tmpdir}/usr/src
sleep 5 # XXX !!!
# Cater to different build locations of 4.x and 5.x
#if [ -d ${here}/src/sys/i386/compile ]; then
# chroot ${tmpdir} sh -c "cd /usr/src/sys/i386/conf && config ${kernel} && cd /sys/i386/compile/${kernel} && make depend -DNO_MODULES && make all install -DNO_MODULES"
#else
# chroot ${tmpdir} sh -c "cd /usr/src/sys/i386/conf && config ${kernel} && cd /sys/compile/${kernel} && make depend -DNO_MODULES && make all install -DNO_MODULES"
#fi
#chroot ${tmpdir} sh -c "cd /usr/src/sys/boot && make obj && make depend && make all install"
umount -f ${tmpdir}/usr/src
ln -sf ${tmpdir}/kernel.GENERIC ${tmpdir}/kernel
rm -rf ${tmpdir}/kernel.old ${tmpdir}/modules.old ${tmpdir}/boot/kernel.old
# Rebuild device nodes. Again, this was probably intended
# to make sure they're correct for the host kernel, not
# the chroot kernel, but it's using the wrong source tree.
if [ -f ${here}/src/etc/MAKEDEV ]; then
cp ${here}/src/etc/MAKEDEV ${tmpdir}/dev
else
cp ${here}/src/etc/etc.$(uname -m)/MAKEDEV ${tmpdir}/dev
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
|