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