makepackage.sh revision 77c85c820fe4467a0856134e0c9e5c5790cd847e
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync#!/bin/sh
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# Sun VirtualBox
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# VirtualBox Solaris Guest Additions package creation script.
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync#
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# Copyright (C) 2008-2009 Sun Microsystems, Inc.
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync#
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# available from http://www.virtualbox.org. This file is free software;
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# you can redistribute it and/or modify it under the terms of the GNU
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# General Public License (GPL) as published by the Free Software
9458268e72c30309e7a723e3d1c5f8c3f69dcbabvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync#
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsync# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# Clara, CA 95054 USA or visit http://www.sun.com if you need
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# additional information or have any questions.
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync#
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync#
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# Usage:
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# makespackage.sh $(PATH_TARGET)/install packagename svnrev
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncif test -z "$3"; then
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync echo "Usage: $0 installdir packagename svnrev"
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync exit 1
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncfi
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncVBOX_INSTALLED_DIR=$1
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncVBOX_PKGFILENAME=$2
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncVBOX_SVN_REV=$3
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncVBOX_PKGNAME=SUNWvboxguest
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncVBOX_AWK=/usr/bin/awk
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncVBOX_GGREP=/usr/sfw/bin/ggrep
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncVBOX_AWK=/usr/bin/awk
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# check for GNU grep we use which might not ship with all Solaris
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncif test ! -f "$VBOX_GGREP" && test ! -h "$VBOX_GGREP"; then
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync echo "## GNU grep not found in $VBOX_GGREP."
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsync exit 1
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfi
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# bail out on non-zero exit status
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncset -e
625c607af2ec5549c016c35f80cb8741eafd774bvboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# Fixup filelist using awk, the parameters must be in awk syntax
625c607af2ec5549c016c35f80cb8741eafd774bvboxsync# params: filename condition action
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup()
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync{
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsync "$VBOX_AWK" 'NF == 6 && '"$2"' { '"$3"' } { print }' "$1" > "tmp-$1"
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync mv -f "tmp-$1" "$1"
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync}
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# prepare file list
9562e2d410460d8fae06fa24297f172fee1d1995vboxsynccd "$VBOX_INSTALLED_DIR"
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncecho 'i pkginfo=./vboxguest.pkginfo' > prototype
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncecho 'i postinstall=./postinstall.sh' >> prototype
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncecho 'i preremove=./preremove.sh' >> prototype
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncecho 'i space=./vboxguest.space' >> prototype
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncecho 'i depend=./vboxguest.depend' >> prototype
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncif test -f "./vboxguest.copyright"; then
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync echo 'i copyright=./vboxguest.copyright' >> prototype
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfi
625c607af2ec5549c016c35f80cb8741eafd774bvboxsyncfind . -print | $VBOX_GGREP -v -E 'prototype|makepackage.sh|vboxguest.pkginfo|postinstall.sh|preremove.sh|vboxguest.space|vboxguest.copyright' | pkgproto >> prototype
625c607af2ec5549c016c35f80cb8741eafd774bvboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# don't grok for the class files
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncfilelist_fixup prototype '$2 == "none"' '$5 = "root"; $6 = "bin"'
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncfilelist_fixup prototype '$2 == "none"' '$3 = "opt/VirtualBoxAdditions/"$3"="$3'
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# VBoxService requires suid
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxService=VBoxService"' '$4 = "4755"'
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxService=amd64/VBoxService"' '$4 = "4755"'
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# 32-bit vboxguest
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/vboxguest=vboxguest"' '$3 = "usr/kernel/drv/vboxguest=vboxguest"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# 64-bit vboxguest
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/vboxguest=amd64/vboxguest"' '$3 = "usr/kernel/drv/amd64/vboxguest=amd64/vboxguest"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# vboxguest module config file
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/vboxguest.conf=vboxguest.conf"' '$3 = "usr/kernel/drv/vboxguest.conf=vboxguest.conf"'
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# vboxfsmount binary (always 32-bit on combined package)
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/vboxfsmount=vboxfsmount"' '$3 = "etc/fs/vboxfs/mount=vboxfsmount"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# this is required for amd64-specific package where we do not build 32-bit binaries
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/vboxfsmount=amd64/vboxfsmount"' '$3 = "etc/fs/vboxfs/mount=amd64/vboxfsmount"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsync# crogl 32-bit opengl fixup
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxOGL.so=VBoxOGL.so"' '$3 = "usr/lib/VBoxOGL.so=VBoxOGL.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxOGLcrutil.so=VBoxOGLcrutil.so"' '$3 = "usr/lib/VBoxOGLcrutil.so=VBoxOGLcrutil.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxOGLfeedbackspu.so=VBoxOGLfeedbackspu.so"' '$3 = "usr/lib/VBoxOGLfeedbackspu.so=VBoxOGLfeedbackspu.so"; $6="sys"'
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxOGLpassthroughspu.so=VBoxOGLpassthroughspu.so"' '$3 = "usr/lib/VBoxOGLpassthroughspu.so=VBoxOGLpassthroughspu.so"; $6="sys"'
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxOGLarrayspu.so=VBoxOGLarrayspu.so"' '$3 = "usr/lib/VBoxOGLarrayspu.so=VBoxOGLarrayspu.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxOGLerrorspu.so=VBoxOGLerrorspu.so"' '$3 = "usr/lib/VBoxOGLerrorspu.so=VBoxOGLerrorspu.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/VBoxOGLpackspu.so=VBoxOGLpackspu.so"' '$3 = "usr/lib/VBoxOGLpackspu.so=VBoxOGLpackspu.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsync# crogl 64-bit opengl fixup
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxOGL.so=amd64/VBoxOGL.so"' '$3 = "usr/lib/amd64/VBoxOGL.so=amd64/VBoxOGL.so"; $6="sys"'
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxOGLcrutil.so=amd64/VBoxOGLcrutil.so"' '$3 = "usr/lib/amd64//VBoxOGLcrutil.so=amd64/VBoxOGLcrutil.so"; $6="sys"'
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxOGLfeedbackspu.so=amd64/VBoxOGLfeedbackspu.so"' '$3 = "usr/lib/amd64//VBoxOGLfeedbackspu.so=amd64/VBoxOGLfeedbackspu.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxOGLpassthroughspu.so=amd64/VBoxOGLpassthroughspu.so"' '$3 = "usr/lib/amd64//VBoxOGLpassthroughspu.so=amd64/VBoxOGLpassthroughspu.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxOGLarrayspu.so=amd64/VBoxOGLarrayspu.so"' '$3 = "usr/lib/amd64//VBoxOGLarrayspu.so=amd64/VBoxOGLarrayspu.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxOGLerrorspu.so=amd64/VBoxOGLerrorspu.so"' '$3 = "usr/lib/amd64//VBoxOGLerrorspu.so=amd64/VBoxOGLerrorspu.so"; $6="sys"'
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/amd64/VBoxOGLpackspu.so=amd64/VBoxOGLpackspu.so"' '$3 = "usr/lib/amd64//VBoxOGLpackspu.so=amd64/VBoxOGLpackspu.so"; $6="sys"'
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncfilelist_fixup prototype '$3 == "opt/VirtualBoxAdditions/vboxservice.xml=vboxservice.xml"' '$3 = "var/svc/manifest/system/virtualbox/vboxservice.xml=vboxservice.xml"'
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncecho " --- start of prototype ---"
9562e2d410460d8fae06fa24297f172fee1d1995vboxsynccat prototype
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncecho " --- end of prototype --- "
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync# explicitly set timestamp to shutup warning
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncVBOXPKG_TIMESTAMP=vboxguest`date '+%Y%m%d%H%M%S'`_r$VBOX_SVN_REV
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# create the package instance
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncpkgmk -p $VBOXPKG_TIMESTAMP -o -r .
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync# translate into package datastream
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncpkgtrans -s -o /var/spool/pkg `pwd`/$VBOX_PKGFILENAME "$VBOX_PKGNAME"
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
0e52499a0d557fe66f1bea625fe78d8d15e6238bvboxsyncrm -rf "/var/spool/pkg/$VBOX_PKGNAME"
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncexit $?
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync