nrelease - fix/improve livecd
[dragonfly.git] / tools / snapshots / doclean
... / ...
CommitLineData
1#!/bin/csh
2#
3# Create a working chroot for snapshot building
4#
5
6source config
7
8# slow and steady wins the race, don't interfere
9# with other stuff
10set ncpu = 1
11#set ncpu = `sysctl -n hw.ncpu`
12set pushdsilent
13set xdate = "date"
14
15# needed for ports 'ex' script execution
16#
17setenv TERM xterm
18
19echo "`$xdate` - SNAPSHOTS DOCLEAN BEGIN"
20
21# Options
22#
23foreach arg ( $argv )
24 switch ( $arg )
25 case "realquick":
26 set quick = 1
27 set realquick = 1
28 breaksw
29 case "quick":
30 set quick = 1
31 breaksw
32 default:
33 echo "Unknown option $arg"
34 echo "`$xdate` - SNAPSHOTS DOCLEAN END"
35 exit 1
36 endsw
37end
38
39# Remove environment
40#
41if ( "$build" == "" ) then
42 echo "build variable not set"
43 echo "`$xdate` - SNAPSHOTS DOCLEAN END"
44 exit 1
45endif
46
47if ( -e $build/root/usr/src/nrelease && -e $build/root/dev/null ) then
48 echo "`$xdate` - Cleanup previous nrelease"
49 chroot $build/root csh -c "cd /usr/src/nrelease; make -DNOPROFILE -DWITHOUT_SRCS clean"
50endif
51
52if ( -e $build/root/dev/null ) then
53 sync; sleep 1
54 echo "`$xdate` - Unmount devfs from $build/root/dev"
55 umount $build/root/dev
56 if ( $? > 0 ) then
57 echo "`$xdate` - Unable to umount $build/root/dev"
58 echo "`$xdate` - SNAPSHOTS DOCLEAN END"
59 exit 1
60 endif
61endif
62
63sync; sleep 1
64umount $build/root/usr/distfiles >& /dev/null
65umount $build/root/usr/src >& /dev/null
66umount $build/root/usr/dports >& /dev/null
67
68if ( $?quick == 0 ) then
69 echo "`$xdate` - Destroying root environment at $build/root"
70 sleep 5
71 rm -rf $build/root >& /dev/null
72 if ( -d $build/root ) then
73 chflags -R noschg $build/root
74 endif
75 rm -rf $build/root
76endif
77mkdir -p $build/distfiles
78mkdir -p $build/root
79mkdir -p $build/root/usr
80
81echo "`$xdate` - Log files are in $build/*.out"
82
83# Ignore quick/realquick options if there is no prior
84# installation
85#
86if ( ! -e $build/root/etc/networks ) then
87 unset realquick
88endif
89if ( ! -d $build/src ) then
90 unset quick
91 unset realquick
92endif
93if ( ! -d $build/dports ) then
94 unset quick
95 unset realquick
96endif
97
98# Clone the repos, create trakcing branches as necessary, checkout,
99# and update (using fetch)
100#
101# DragonFly sources
102#
103pushd $build
104
105if ( ! -d src ) then
106 echo "`$xdate` - Cloning $dflygit"
107 git clone -n $dflygit src
108endif
109pushd $build/src
110if ( "`git branch | fgrep $dfly_branch`" == "" ) then
111 echo "`$xdate` - Branching-src $dfly_branch"
112 git branch $dfly_branch origin/$dfly_branch
113endif
114echo "`$xdate` - Updating src"
115git checkout $dfly_branch
116git pull
117popd
118
119# Package sources
120#
121if ( ! -d dports ) then
122 echo "`$xdate` - Cloning $dportsgit"
123 git clone -n $dportsgit dports
124endif
125pushd $build/dports
126if ( "`git branch | fgrep $dports_branch`" == "" ) then
127 echo "`$xdate` - Branching-dports $dports_branch"
128 git branch $dports_branch origin/$dports_branch
129endif
130echo "`$xdate` - Updating dports"
131git checkout $dports_branch
132git pull
133popd
134
135# null mounts
136#
137mkdir -p $build/root/usr/src
138mkdir -p $build/root/usr/dports
139mkdir -p $build/root/usr/distfiles
140
141echo "`$xdate` - Mounting src, dports, distfiles"
142mount_null $build/src $build/root/usr/src
143mount_null $build/dports $build/root/usr/dports
144mount_null $build/distfiles $build/root/usr/distfiles
145
146popd
147# popped build
148
149# Install/upgrade environment
150#
151pushd $build/root/usr/src
152
153if ( $?realquick ) then
154 echo "`$xdate` - Not running build/quickworld - realquick mode"
155else
156if ( $?quick ) then
157 echo "`$xdate` - Starting quickworld, tail -f $build/build.out"
158 make -j $ncpu quickworld >& $build/build.out
159 if ( $? ) then
160 echo "`$xdate` - primary environment quickworld failed"
161 echo "`$xdate` - SNAPSHOTS DOCLEAN END"
162 exit 1
163 endif
164else
165 echo "`$xdate` - Starting buildworld, tail -f $build/build.out"
166 make -j $ncpu buildworld >& $build/build.out
167 if ( $? ) then
168 echo "`$xdate` - primary environment buildworld failed"
169 echo "`$xdate` - SNAPSHOTS DOCLEAN END"
170 exit 1
171 endif
172endif
173endif
174
175if ( $?realquick == 0 ) then
176 echo "`$xdate` - Installing the world, tail -f $build/install.out"
177 make installworld DESTDIR=$build/root >& $build/install.out
178 pushd etc
179 make distribution DESTDIR=$build/root >& $build/install.out
180 popd
181 echo "`$xdate` - Upgrading the world, tail -f $build/upgrade.out"
182 make upgrade DESTDIR=$build/root >& $build/upgrade.out
183endif
184
185# Setup the chroot environment, including packages nrelease needs to
186# build.
187#
188echo "`$xdate` - Setting up chroot environment in $build/root"
189echo "`$xdate` - Mounting devfs"
190if ( ! -e $build/root/dev/null ) then
191 mount_devfs dummy $build/root/dev
192endif
193
194#mkdir -m 1777 $build/root/tmp
195#mkdir -m 1777 $build/root/var/tmp
196
197if ( $?realquick == 0 ) then
198 echo "`$xdate` - Setting up ldd"
199 chroot $build/root /etc/rc.d/ldconfig start
200endif
201cp /etc/resolv.conf $build/root/etc/
202rm -rf $build/root/usr/obj/dports
203mkdir -p $build/root/usr/obj/dports
204
205cat > $build/root/etc/make.conf << EOF
206
207# set by doclean
208#
209git_UNSET=CONTRIB PERL DIALOG
210
211EOF
212
213if ( ! -e $build/root/usr/local/bin/bmake ) then
214 echo "`$xdate` - Bootstrapping dports, tail -f $build/bootstrap.out"
215 chroot $build/root csh -c "cd /usr/dports/devel/bmake; make all install" >& $build/bootstrap.out
216 if ( $? > 0 ) then
217 echo "`$xdate` - dports bootstrap had problems"
218 echo "`$xdate` - SNAPSHOTS DOCLEAN END"
219 exit 1
220 endif
221endif
222
223# The nrelease build needs cdrecord and git. Try to get the binary package
224# first and then build whatever else is needed from source. These packages
225# are not part of the nrelease snapshot build, they are used by nrelease
226# to do the build.
227#
228if ( ! -e $build/root/usr/local/bin/mkisofs ) then
229 echo "`$xdate` - Setting up cdrecord and friends, tail -f $build/nrelease1.out"
230 #chroot $build/root csh -c "pkg_radd cdrecord"
231 if ( ! -e $build/root/usr/local/bin/mkisofs ) then
232 echo "`$xdate` - Binary package not found, building from source"
233 chroot $build/root csh -c "cd /usr/dports/sysutils/cdrtools; make -DBATCH all install"
234 endif
235endif
236
237if ( ! -e $build/root/usr/local/bin/git ) then
238 echo "`$xdate` - Setting up git from dports, tail -f $build/nrelease2.out"
239 #chroot $build/root csh -c "pkg_radd git"
240 if ( ! -e $build/root/usr/local/bin/git ) then
241 echo "`$xdate` - Binary package not found, building from source"
242 chroot $build/root csh -c "cd /usr/dports/devel/git; make -DBATCH all install"
243 endif
244endif
245
246echo "`$xdate` - SNAPSHOTS DOCLEAN END"
247