Simplifying release.sh script.

As the build system can now generate a full root file system,
there is no need to bootstrap the iso image by copying over
files from the currently system.

The SVN references have also been mostly taken out, as they are
not anymore valid. Some cleanup have been done to try to improve
the readability of the script.
This commit is contained in:
Lionel Sambuc 2012-11-27 11:48:49 +00:00
parent b73a0e570b
commit 3ba3608c5f

View file

@ -8,16 +8,10 @@ version_pretty="`sh tell_config OS_RELEASE . OS_VERSION | tr -dc 0-9.`"
version="`echo $version_pretty | tr . _`" version="`echo $version_pretty | tr . _`"
PACKAGEDIR=/usr/pkgsrc/packages/$version_pretty/`uname -m` PACKAGEDIR=/usr/pkgsrc/packages/$version_pretty/`uname -m`
XBIN=usr/xbin
XLIB=xlib
SRC=src SRC=src
REPO=git://git.minix3.org/minix REPO=git://git.minix3.org/minix
GITBRANCH=master GITBRANCH=master
LD_LIB="LD_LIBRARY_PATH=/lib:/usr/lib:/$XLIB"
BUILDPATH="PATH=/$XBIN:/usr/pkg/bin"
BUILDENV="$BUILDPATH $LD_LIB"
# List of packages included on installation media # List of packages included on installation media
PACKAGELIST=packages.install PACKAGELIST=packages.install
secs=`expr 32 '*' 64` secs=`expr 32 '*' 64`
@ -52,9 +46,6 @@ fi
set -- $* $RELOPTS set -- $* $RELOPTS
# SVN trunk repo
TRUNK=https://gforge.cs.vu.nl/svn/minix/trunk
export RELEASEDIR=/usr/r-staging export RELEASEDIR=/usr/r-staging
RELEASEMNTDIR=/usr/r RELEASEMNTDIR=/usr/r
RELEASEPACKAGE=${RELEASEDIR}/usr/install/packages RELEASEPACKAGE=${RELEASEDIR}/usr/install/packages
@ -69,7 +60,6 @@ BS=4096
HDEMU=0 HDEMU=0
COPY=0 COPY=0
JAILMODE=0 JAILMODE=0
SVNREV=""
REVTAG="" REVTAG=""
PACKAGES=1 PACKAGES=1
MINIMAL=0 MINIMAL=0
@ -87,11 +77,11 @@ fi
FILENAMEOUT="" FILENAMEOUT=""
while getopts "b:j:ls:pmMchu?r:f:L:e:" c while getopts "b:j:ls:pmMchu?f:L:e:" c
do do
case "$c" in case "$c" in
\?) \?)
echo "Usage: $0 [-l] [-p] [-c] [-h] [-m] [-M] [-r <tag>] [-u] [-f <filename>] [-s <username>] -j<jaildir> [-L <packageurl>] [-e <extras-path>]" >&2 echo "Usage: $0 [-l] [-p] [-c] [-h] [-m] [-M] [-u] [-f <filename>] [-s <username>] -j<jaildir> [-L <packageurl>] [-e <extras-path>]" >&2
exit 1 exit 1
;; ;;
b) b)
@ -103,15 +93,12 @@ do
HDEMU=1 HDEMU=1
;; ;;
c) c)
echo " * Copying, not SVN" echo " * Copying, not using GIT"
COPY=1 COPY=1
;; ;;
p) p)
PACKAGES=0 PACKAGES=0
;; ;;
r)
SVNREV=-r$OPTARG
;;
j) j)
RELEASEDIR=$OPTARG RELEASEDIR=$OPTARG
JAILMODE=1 JAILMODE=1
@ -182,33 +169,11 @@ fi
rm -rf $RELEASEDIR $RELEASEMNTDIR $IMG $ROOTIMAGE $CDFILES image* || true rm -rf $RELEASEDIR $RELEASEMNTDIR $IMG $ROOTIMAGE $CDFILES image* || true
mkdir -p $CDFILES || exit mkdir -p $CDFILES || exit
mkdir -p $RELEASEDIR $RELEASEMNTDIR mkdir -p $RELEASEDIR $RELEASEMNTDIR
mkdir -m 755 $RELEASEDIR/usr
mkdir -m 1777 $RELEASEDIR/tmp
mkdir -p $RELEASEDIR/tmp
mkdir -p $RELEASEDIR/usr/tmp
mkdir -p $RELEASEDIR/$XBIN
mkdir -p $RELEASEDIR/$XLIB
mkdir -p $RELEASEDIR/libexec
mkdir -p $RELEASEDIR/usr/bin
mkdir -p $RELEASEDIR/bin
mkdir -p $RELEASEPACKAGE mkdir -p $RELEASEPACKAGE
echo " * Transfering bootstrap dirs to $RELEASEDIR" ##########################################################################
echo " * Bootstrapping filesystem in $RELEASEDIR"
# Actual binaries ##########################################################################
cp -p /bin/* /usr/bin/* /usr/sbin/* /sbin/* $RELEASEDIR/$XBIN
cp -rp /bin/cat /bin/sh /bin/echo /bin/rm /bin/date /bin/ls $RELEASEDIR/bin
cp -rp /usr/bin/make /usr/bin/yacc /usr/bin/lex /usr/bin/install /usr/bin/m4 \
/usr/bin/grep /usr/bin/egrep /usr/bin/awk /usr/bin/sed $RELEASEDIR/usr/bin
# For dynamically linked binaries: put interpreter there the
# system's current crop of shared libraries so they'll run;
# once they're rebuilt they can be thrown out in favour of the
# new ones like $XBIN
cp -p /libexec/ld.elf_so $RELEASEDIR/libexec/
cp -p /lib/*.so* /usr/lib/*.so* $RELEASEDIR/$XLIB/
CONFIGHEADER=$RELEASEDIR/usr/src/include/minix/sys_config.h CONFIGHEADER=$RELEASEDIR/usr/src/include/minix/sys_config.h
copy_local_packages copy_local_packages
@ -253,18 +218,8 @@ fi
if [ "$USB" -eq 0 ] if [ "$USB" -eq 0 ]
then date >$RELEASEDIR/CD then date >$RELEASEDIR/CD
fi fi
echo " * Bootstrap /usr/share/mk files"
# Need /usr/share/mk in the new system to invoke make. Real ownerships
# and permissions will be set by its own src/share/mk/Makefile.
mkdir -p $RELEASEDIR/usr/share/mk
chmod 755 $RELEASEDIR/usr/share/mk
cp $RELEASEDIR/usr/src/share/mk/* $RELEASEDIR/usr/share/mk/
chown -R root $RELEASEDIR/usr/share/mk
rm -f $RELEASEDIR/usr/$SRC/releasetools/revision
mkdir -p $RELEASEDIR/etc
cp $RELEASEDIR/usr/src/etc/group $RELEASEDIR/etc
echo " * Make hierarchy" rm -f $RELEASEDIR/usr/$SRC/releasetools/revision
for p in $PREINSTALLED_PACKAGES for p in $PREINSTALLED_PACKAGES
do echo " * Pre-installing: $p from $PKG_ADD_URL" do echo " * Pre-installing: $p from $PKG_ADD_URL"
@ -277,7 +232,10 @@ fi
echo " * Resetting timestamps" echo " * Resetting timestamps"
find $RELEASEDIR | xargs touch find $RELEASEDIR | xargs touch
##########################################################################
echo " * Build" echo " * Build"
##########################################################################
cd $RELEASEDIR/usr/src cd $RELEASEDIR/usr/src
make distribution DESTDIR=$RELEASEDIR CHECKFLIST=no make distribution DESTDIR=$RELEASEDIR CHECKFLIST=no
@ -292,10 +250,11 @@ make cleandir
cd - cd -
echo " * Chroot build done" echo " * build done"
##########################################################################
echo " * Removing bootstrap files" echo " * Removing bootstrap files"
rm -rf $RELEASEDIR/$XBIN ##########################################################################
rm -rf $RELEASEDIR/$XLIB
# The build process leaves some file in $SRC as bin. # The build process leaves some file in $SRC as bin.
chown -R root $RELEASEDIR/usr/src* chown -R root $RELEASEDIR/usr/src*
cp issue.install $RELEASEDIR/etc/issue cp issue.install $RELEASEDIR/etc/issue
@ -331,7 +290,9 @@ then echo "Created new minix install in $RELEASEDIR."
exit 0 exit 0
fi fi
##########################################################################
echo " * Counting files" echo " * Counting files"
##########################################################################
extrakb=`du -ks $RELEASEDIR/usr/install | awk '{ print $1 }'` extrakb=`du -ks $RELEASEDIR/usr/install | awk '{ print $1 }'`
find $RELEASEDIR/usr | fgrep -v /install/ | wc -l >$RELEASEDIR/.usrfiles find $RELEASEDIR/usr | fgrep -v /install/ | wc -l >$RELEASEDIR/.usrfiles
find $RELEASEDIR -print -path $RELEASEDIR/usr -prune | wc -l >$RELEASEDIR/.rootfiles find $RELEASEDIR -print -path $RELEASEDIR/usr -prune | wc -l >$RELEASEDIR/.rootfiles
@ -354,7 +315,9 @@ usr=/dev/c0d7p0s2
usr_roflag=\"-r\"" > $RELEASEDIR/etc/fstab usr_roflag=\"-r\"" > $RELEASEDIR/etc/fstab
fi fi
##########################################################################
echo " * Mounting $TMPDISKROOT as $RELEASEMNTDIR" echo " * Mounting $TMPDISKROOT as $RELEASEMNTDIR"
##########################################################################
fitfs $RELEASEDIR $TMPDISKROOT 64 256 "$ROOTMB" fitfs $RELEASEDIR $TMPDISKROOT 64 256 "$ROOTMB"
ROOTBLOCKS=$blocks ROOTBLOCKS=$blocks
ROOTSECTS="`expr $blocks \* \( $BS / 512 \)`" ROOTSECTS="`expr $blocks \* \( $BS / 512 \)`"
@ -367,7 +330,9 @@ USRSECTS="`expr $blocks \* \( $BS / 512 \)`"
mkdir -m 755 $RELEASEMNTDIR/usr mkdir -m 755 $RELEASEMNTDIR/usr
mount $TMPDISKUSR $RELEASEMNTDIR/usr || exit mount $TMPDISKUSR $RELEASEMNTDIR/usr || exit
##########################################################################
echo " * Copying files from staging to image" echo " * Copying files from staging to image"
##########################################################################
synctree -f $RELEASEDIR $RELEASEMNTDIR > /dev/null || true synctree -f $RELEASEDIR $RELEASEMNTDIR > /dev/null || true
expr `df -k $TMPDISKUSR | tail -1 | awk '{ print $4 }'` - $extrakb >$RELEASEMNTDIR/.usrkb expr `df -k $TMPDISKUSR | tail -1 | awk '{ print $4 }'` - $extrakb >$RELEASEMNTDIR/.usrkb
@ -389,6 +354,9 @@ echo " * Unmounting $TMPDISKROOT from $RELEASEMNTDIR"
umount $TMPDISKROOT || exit umount $TMPDISKROOT || exit
rm -r $RELEASEMNTDIR rm -r $RELEASEMNTDIR
##########################################################################
echo " * Generating image files"
##########################################################################
dd if=$TMPDISKROOT of=$ROOTIMAGE bs=$BS count=$ROOTBLOCKS dd if=$TMPDISKROOT of=$ROOTIMAGE bs=$BS count=$ROOTBLOCKS
cp release/cd/* $CDFILES || true cp release/cd/* $CDFILES || true
echo "This is Minix version $version_pretty prepared `date`." >$CDFILES/VERSION.TXT echo "This is Minix version $version_pretty prepared `date`." >$CDFILES/VERSION.TXT
@ -440,6 +408,8 @@ if [ "$FILENAMEOUT" ]
then echo "$IMG" >$FILENAMEOUT then echo "$IMG" >$FILENAMEOUT
fi fi
##########################################################################
echo " * Freeing up memory used by ramdisks" echo " * Freeing up memory used by ramdisks"
##########################################################################
ramdisk 1 $TMPDISKROOT ramdisk 1 $TMPDISKROOT
ramdisk 1 $TMPDISKUSR ramdisk 1 $TMPDISKUSR