setup-buildenv.sh
author Guido Berhoerster <guido@berhoerster.name>
Wed, 26 Jan 2011 16:53:37 +0100
changeset 0 b10069f5bd70
child 3 c50f4ab9dab8
permissions -rwxr-xr-x
initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     1
#!/sbin/sh
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     2
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     3
set -e
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     4
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     5
export LC_ALL=C
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     6
export PATH=/usr/xpg6/bin:/usr/xpg4/bin:/usr/bin:/sbin:/usr/sbin
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     7
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     8
builduser="abuild"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
     9
CBE_SOURCE="desktop-cbe-mini-1.8.0.tar.bz2"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    10
SS_SOURCE="sunstudio12u1-patched-ii-2010Feb-sol-x86.tar.gz"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    11
TMPDIR="${TMPDIR:-/var/tmp}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    12
PKGS='system/xopen/xcu4
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    13
text/gnu-patch
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    14
text/gnu-grep
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    15
archiver/gnu-tar
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    16
developer/gcc-3
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    17
developer/build/make
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    18
system/header
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    19
package/svr4'
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    20
os_version="$(uname -v)"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    21
build_number="${os_version#oi_}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    22
basedir="${PWD}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    23
sourcedir="${basedir}/sources"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    24
patchdir="${basedir}/patches"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    25
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    26
error ()
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    27
{
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    28
    printf "error: %s\n" "$@" >&2
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    29
    exit 1
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    30
}
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    31
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    32
usage ()
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    33
{
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    34
    printf "usage: ${0##*/} [-b build_number] [-u username]" >&2
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    35
}
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    36
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    37
while getopts b:u: opt
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    38
do
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    39
    case "$opt" in
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    40
        b)      build_number="${OPTARG}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    41
                ;;
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    42
        u)      builduser="${OPTARG}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    43
                ;;
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    44
        \?)     usage
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    45
                exit 2
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    46
                ;;
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    47
    esac
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    48
done
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    49
shift $((OPTIND - 1))
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    50
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    51
if [ $# -gt 1 ]; then
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    52
    printf "usage: ${0##*/} [plugin]\n" >&2
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    53
elif [ $# -eq 1 ]; then
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    54
    plugin="${basedir}/plugins/$1.sh"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    55
    [ -f "${plugin}" ] || error "${plugin} does not exist"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    56
fi
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    57
[ -f "${sourcedir}/${CBE_SOURCE}" ] || error "missing CBE"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    58
[ -f "${sourcedir}/${SS_SOURCE}" ] || error "missing SunStudio"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    59
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    60
# install prerequisites
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    61
pkg install ${PKGS}
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    62
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    63
# create build user
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    64
if ! getent passwd ${builduser} >/dev/null; then
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    65
    mkdir -p /export/home || :
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    66
    useradd -b /export/home -m -s /usr/bin/bash ${builduser}
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    67
fi
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    68
if ! profiles | grep -q '^Primary Administrator$'; then
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    69
    usermod -P "Primary Administrator" ${builduser}
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    70
fi
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    71
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    72
# install SunStudio
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    73
(
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    74
    cd /opt
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    75
    tar xf "${sourcedir}/${SS_SOURCE}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    76
    ln -s sunstudio12.1 SUNWspro
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    77
)
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    78
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    79
# install CBE
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    80
(
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    81
    cd "${TMPDIR}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    82
    tar xf "${sourcedir}/${CBE_SOURCE}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    83
    cd ${CBE_SOURCE%.tar.bz2}
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    84
    for patchfile in ${patchdir}/*; do
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    85
        patch -p1 < ${patchfile}
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    86
    done
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    87
)
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    88
pkgrepo create ${TMPDIR}/repo_cbe
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    89
pkgrepo -s ${TMPDIR}/repo_cbe set publisher/prefix=cbe
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    90
svccfg -s pkg/server setprop pkg/inst_root=${TMPDIR}/repo_cbe
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    91
svccfg -s pkg/server setprop pkg/readonly=false
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    92
svcadm enable pkg/server
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    93
sleep 60 # allow server to come up
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    94
pkg set-publisher -O http://localhost:80/ cbe
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    95
pkg set-publisher --non-sticky -P cbe
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    96
su $builduser -c "mkdir ${TMPDIR}/packages_cbe && cd ${TMPDIR}/packages_cbe && mkdir BUILD PKGMAPS PKGS SOURCES SPECS SPKGS"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    97
su $builduser -c "[ -f /export/home/${builduser}/.pkgbuildmacros ] && cp /export/home/${builduser}/.pkgbuildmacros /export/home/${builduser}/.pkgbuildmacros.bak.$$ || :"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    98
su $builduser -c "printf '%%_topdir    %s\n' ${TMPDIR}/packages_cbe >/export/home/${builduser}/.pkgbuildmacros"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
    99
su $builduser -c "cd ${TMPDIR}/${CBE_SOURCE%.tar.bz2} && ./mini-cbe-install -n -c /opt/sunstudio12.1/bin/cc"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   100
su $builduser -c "[ -f /export/home/${builduser}/.pkgbuildmacros.bak.$$ ] && mv /export/home/${builduser}/.pkgbuildmacros.bak.$$ /export/home/${builduser}/.pkgbuildmacros || :"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   101
pkg set-publisher -P openindiana.org
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   102
pkg unset-publisher cbe
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   103
svcadm disable pkg/server
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   104
mkdir -p /opt/jdsbld/share
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   105
(
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   106
    cd /opt/jdsbld
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   107
    ln -s ../dtbld/bin .
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   108
    cd ./share
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   109
    ln -s ../../usr/share/aclocal .
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   110
)
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   111
# create log and packages directory
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   112
su $builduser -c "mkdir /export/home/${builduser}/logs"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   113
su $builduser -c "mkdir /export/home/${builduser}/packages/; cd /export/home/${builduser}/packages/; mkdir BUILD PKGMAPS PKGS SPECS SPKGS SOURCES"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   114
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   115
[ -n "${plugin}" ] && . "${plugin}"
b10069f5bd70 initial revision
Guido Berhoerster <guido@berhoerster.name>
parents:
diff changeset
   116