2 ##############################################################################
3 # Copyright (c) 2015 Ericsson AB and others.
4 # stefan.k.berg@ericsson.com
5 # jonas.bjurel@ericsson.com
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
18 if [ -n "$TMP_HOSTMOUNT" ]; then
19 if [ -d "$TMP_HOSTMOUNT" ]; then
20 fusermount -u $TMP_HOSTMOUNT
25 if [ -d "$TMP_OLDISO" ]; then
26 fusermount -u $TMP_OLDISO
30 if [ -f "$CONF" ]; then
34 if [ -d "$TMP_ISOPUPPET" ]; then
40 ar p $1 control.tar.gz | tar xzO ./control | grep "^Package:.* " | sed 's/.* //'
41 if [ $PIPESTATUS -ne 0 ]; then
42 echo "Error in get_deb_name($1)"
48 ar p $1 control.tar.gz | tar xzO ./control | grep "^Version:.* " | sed 's/.* //'
49 if [ $PIPESTATUS -ne 0 ]; then
50 echo "Error in get_deb_rev($1)"
56 # Added logic for ".orig" files:
57 # 1. Is there an .orig file for the new file?
58 # 2. If the file is not present in base ISO -> Error!
59 # 3. If the file is changed i base ISO -> Error! (need manual rebase)
60 # 4. If there is no .orig file, but file is present in base ISO: Error!
65 pushd $NEWDIR >/dev/null
66 for f in $(find * -type f -name '*.orig')
69 oldfile=$OLDDIR/$(echo $f | sed 's/.orig$//')
70 newfile=$NEWDIR/$(echo $f | sed 's/.orig$//')
72 origfile=${newfile}.orig
73 # If no corresponding base file, error
74 if [ ! -f $oldfile ]; then
76 echo "Error: found ${newfile} but no"
77 echo "Error: ${oldfile}"
78 echo "Error: Manual rebase is needed!"
83 # If orig file differs from base file, error
84 if ! diff -q $origfile $oldfile > /dev/null; then
86 echo "Error: $origfile differs from"
87 echo "Error: $oldfile!"
88 echo "Error: Manual rebase is needed!"
96 # Check that there we're not overwriting oldfiles without having a ".orig" copy
97 for f in $(find * -type f ! -name '*.orig')
99 newfile=$NEWDIR/$(echo $f | sed 's/.orig$//')
100 origfile=${newfile}.orig
102 if [ -f $oldfile ]; then
103 if [ ! -f $origfile ]; then
105 echo "Error: Will overwrite $oldfile, but there is no"
106 echo "Error: $origfile!"
107 echo "Error: You need to create the `basename $origfile`!"
120 REPO=$DEST/var/www/nailgun/ubuntu/fuelweb/x86_64
122 ssh-copy-id root@$FUELHOST
123 sshfs root@1${FUELHOST}:/ $TMP_HOSTMOUNT
125 if [ -f $REPO/dists/xenial/main/binary-amd64/Packages.backup ]; then
126 echo "Error - found backup file for Packages!"
130 if [ -f $REPO/dists/xenial/main/binary-amd64/Packages.gz.backup ]; then
131 echo "Error - found backup file for Packages.gz!"
135 if [ -f $REPO/dists/xenial/Release.backup ]; then
136 echo "Error - found backup file for Release!"
140 if [ -d $DEST/etc/puppet.backup ]; then
141 echo "Error - found backup file for Puppet!"
145 cp $REPO/dists/xenial/main/binary-amd64/Packages $REPO/dists/xenial/main/binary-amd64/Packages.backup
146 cp $REPO/dists/xenial/main/binary-amd64/Packages.gz $REPO/dists/xenial/main/binary-amd64/Packages.gz.backup
147 cp $REPO/dists/xenial/Release $REPO/dists/xenial/Release.backup
148 cp -Rvp $DEST/etc/puppet $DEST/etc/puppet.backup
152 if [ -d $TOP/release/puppet/modules ]; then
153 echo "Installing into Puppet:"
154 cd $TOP/release/puppet/modules
155 if [ `ls -1 | wc -l` -gt 0 ]; then
159 cp -Rp $dir $DEST/etc/puppet/modules
175 echo "Preparing ISO..."
176 echo "Unpack of old ISO..."
177 if [ -d newiso ]; then
182 fusermount -u $TMP_OLDISO 2>/dev/null || cat /dev/null
183 fuseiso -p $ORIGISO $TMP_OLDISO
186 find . | cpio -pd $TOP/newiso
188 fusermount -u $TMP_OLDISO
190 chmod -R 755 $TOP/newiso
196 find . -name TRANS.TBL -exec rm {} \;
199 if [[ -z "$OPNFV_GIT_SHA" ]]; then
200 OPNFV_GIT_SHA=$(git rev-parse --verify HEAD)
203 mkisofs --quiet -r -V "$VOLUMEID" -publisher "$PUBLISHER" \
204 -p "$OPNFV_GIT_SHA" -J -R -b isolinux/isolinux.bin \
206 -boot-load-size 4 -boot-info-table \
209 -x "lost+found" -o $NEWISO .
213 isoinfo -d -i $NEWISO
216 # iso_copy_puppet: Create a new puppet-slave.tgz for the iso
218 echo "Installing into Puppet..."
219 mkdir -p $TMP_ISOPUPPET/release/puppet
220 cd $TMP_ISOPUPPET/release/puppet
221 tar xzf $DEST/puppet-slave.tgz
222 cd $TOP/release/puppet/modules
224 # Remove all .orig files before copying as they now have been verfied
226 if [ -d $TOP/release/puppet/modules ]; then
227 if [ `ls -1 | wc -l` -gt 0 ]; then
228 verify_orig_files $TMP_ISOPUPPET/release/puppet $TOP/release/puppet/modules
229 find $TOP/release/puppet/modules -type f -name '*.orig' -exec rm {} \;
230 for dir in $TOP/release/puppet/modules/*
233 cp -Rp $dir $TMP_ISOPUPPET/release/puppet
238 cd $TMP_ISOPUPPET/release/puppet
239 tar czf $DEST/puppet-slave.tgz .
241 rm -Rf $TMP_ISOPUPPET
244 # iso_modify_image: Add/patch files in the ISO root
245 iso_modify_image () {
246 # TODO: Add logic for ".orig" files (hey! make a function!), which would look
248 # 1. Is there an .orig file?
249 # 2. If the file is not present in origiso -> Error exit
250 # 3. If the file is changed in origiso -> Error exit (need manual rebase)
251 # 4. Otherwise continue, but don't copy orig file (or maybe we should?)
252 # ... and corresponding reverse logic:
253 # 1. If there is no .orig file, but file is present in origiso -> Error exit
254 echo "Modify ISO files (wild copy)..."
256 verify_orig_files $DEST $TOP/release/isoroot
257 # Remove all .orig files before copying as they now have been verfied
258 find $TOP/release/isoroot -type f -name '*.orig' -exec rm {} \;
260 cd $TOP/release/isoroot
263 # Add all Git info files
264 sort $TOP/gitinfo*.txt > $DEST/gitinfo.txt
265 cp $DEST/gitinfo.txt $REPORTFILE
277 echo "Copying Debian packages..."
278 cd $TOP/release/packages/ubuntu/pool/debian-installer
280 for udeb in `ls -1 | grep '\.udeb$'`
283 cp $udeb $REPO/pool/debian-installer
284 echo "Did not expect a package here, not supported"
288 cd $TOP/release/packages/ubuntu/pool/main
289 for deb in `ls -1 | grep '\.deb$'`
292 cp $deb $REPO/pool/main
293 echo "Did not expect a package here, not supported"
297 echo "Running Fuel package patch file"
298 pushd $REPO/pool/main > /dev/null
300 for line in `cat $TOP/apply_patches | grep -v "^#" | grep -v "^$"`; do
302 echo "Did not expect a line here, not supported"
304 ref=`echo $line | cut -d '>' -f 1`
305 origpkg=`echo $line| cut -d '>' -f 2`
306 url=`echo $line | cut -d '>' -f 3`
308 if [ -z "$origpkg" ]; then
309 echo "Error: No origpkg for patching"
313 if [ -z "$url" ]; then
314 echo "Error: No url for patching"
318 if [ -z "$ref" ]; then
319 echo "Error: No reference text for patching"
323 echo "CM: Patching Fuel package for $ref" | tee -a $REPORTFILE
324 echo "CM: Replacing package $origpkg with $url" | tee -a $REPORTFILE
325 oldrev=`get_deb_rev $origpkg`
328 topkg=`basename $url`
329 echo "CM: MD5 of new package:" | tee -a $REPORTFILE
330 md5sum $topkg | tee -a $REPORTFILE
332 patchname=`get_deb_name $topkg`
333 patchrev=`get_deb_rev $topkg`
334 echo "Correcting dependencies towards $patchname rev $patchrev - old rev $oldrev" | tee -a $REPORTFILE
335 $TOP/patch-packages/tools/correct_deps $patchname $oldrev $patchrev | tee -a $REPORTFILE
336 if [ $PIPESTATUS -ne 0 ]; then
341 printf "Done running Fuel patch file\n\n"
342 echo "Running add packages file"
343 for line in `cat $TOP/add_opnfv_packages | grep -v "^#" | grep -v "^$"`; do
345 echo "Did not expect a line here, not supported"
347 ref=`echo $line | cut -d '>' -f 1`
348 origpkg=`echo $line| cut -d '>' -f 2`
349 url=`echo $line | cut -d '>' -f 3`
351 if [ -z "$origpkg" ]; then
352 echo "Error: No origpkg for patching"
356 if [ -z "$url" ]; then
357 echo "Error: No url for patching"
361 if [ -z "$ref" ]; then
362 echo "Error: No reference text for patching"
366 if [ "$origpkg" != "NONE" ]; then
367 echo "CM: Patching added package for $ref" | tee -a $REPORTFILE
368 echo "CM: Replacing package $origpkg with $url" | tee -a $REPORTFILE
369 oldrev=`get_deb_rev $origpkg`
372 echo "CM: Adding previoulsy uninstalled package for $ref" tee -a $REPORTFILE
375 topkg=`basename $url`
376 echo "CM: MD5 of new package:" | tee -a $REPORTFILE
377 md5sum $topkg | tee -a $REPORTFILE
378 if [ "$origpkg" != "NONE" ]; then
379 patchname=`get_deb_name $topkg`
380 patchrev=`get_deb_rev $topkg`
381 echo "Correcting dependencies towards $patchname rev $patchrev - old rev $oldrev" | tee -a $REPORTFILE
382 $TOP/patch-packages/tools/correct_deps $patchname $oldrev $patchrev | tee -a $REPORTFILE
383 if [ $PIPESTATUS -ne 0 ]; then
388 printf "Done running add packages file\n\n"
392 if [ -f $TOP/patch-packages/release/patch-replacements ]; then
393 echo "Applying package patches" | tee -a $REPORTFILE
394 pushd $REPO/pool/main > /dev/null
395 echo "CM: I am now in $(pwd)"
396 printf "\n\n" | tee -a $REPORTFILE
397 for line in `cat $TOP/patch-packages/release/patch-replacements`
399 echo "Did not expect a line here, not supported"
401 echo "Processing $line ..."
402 frompkg=`echo $line | cut -d ">" -f 1`
403 topkg=`echo $line | cut -d ">" -f 2`
404 echo "CM: Applying patch to $frompkg" | tee -a $REPORTFILE
405 echo "CM: New package rev after patch: $topkg" | tee -a $REPORTFILE
407 if [ ! -f $frompkg ]; then
408 echo "Error: Can't find $frompkg in repo"
411 oldrev=`get_deb_rev $frompkg`
412 echo "Removing $frompkg from repo"
416 if [ ! -f $TOP/patch-packages/release/packages/$topkg ]; then
417 echo "Error: Can't find $topkg in patch release"
420 echo "Adding $topkg to repo"
421 pkg_dest=$(dirname $frompkg)
422 cp $TOP/patch-packages/release/packages/$topkg $pkg_dest/
425 pushd $pkg_dest > /dev/null
426 patchname=`get_deb_name $topkg`
427 patchrev=`get_deb_rev $topkg`
428 echo "Correcting dependencies towards $patchname rev $patchrev - old rev $oldrev" | tee -a $REPORTFILE
429 $TOP/patch-packages/tools/correct_deps $patchname $oldrev $patchrev | tee -a $REPORTFILE
430 if [ $PIPESTATUS -ne 0 ]; then
438 echo "Generating metadata..."
439 pushd $REPO > /dev/null
441 # The below methods are from 15B
442 APT_REL_CONF="$TOP/install/apt-ftparchive-release.conf"
443 APT_DEB_CONF="$TOP/install/apt-ftparchive-deb.conf"
444 APT_UDEB_CONF="$TOP/install/apt-ftparchive-udeb.conf"
446 echo Not running apt-ftparchive -c "${APT_REL_CONF}" generate "${APT_DEB_CONF}"
447 echo Not running apt-ftparchive generate "${APT_UDEB_CONF}"
449 # Fuel also needs this index file
450 # cat dists/xenial/main/binary-amd64/Packages | \
451 # awk '/^Package:/{pkg=$2}
452 # /^Version:/{print pkg ": \"" $2 "\""}' > ubuntu-versions.yaml
453 # cp ubuntu-versions.yaml $DEST
455 # apt-ftparchive -c "${APT_REL_CONF}" release dists/mos10.0/ > dists/mos10.0/Release
456 # gzip -9cf dists/mos10.0/Release > dists/mos10.0/Release.gz
463 #############################################################################
467 CONF=`mktemp /tmp/XXXXXXX`
471 if [ $MODE = "iso" ]; then
473 TMP_OLDISO=`mktemp -d /tmp/XXXXXXX`
474 TMP_ISOPUPPET=`mktemp -d /tmp/XXXXXXX`
478 REPORTFILE="${NEWISO}.txt"
479 echo "Opening reportfile at $REPORTFILE"
481 if [ ! -f $ORIGISO ]; then
482 echo "Can't find original iso at $ORIGISO"
489 echo "Unknown mode: $MODE"