blob: c41576a1175ba90499e4c8e52c3ae627f73e9df0 [file] [log] [blame]
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -08001#!/bin/bash
2
David Jamese3d542a2010-09-24 16:21:19 -07003# Copyright (c) 2009,2010 The Chromium OS Authors. All rights reserved.
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -08004# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
jglasgowcc71f3a2010-03-12 14:30:21 -05007set -e
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -08008
jglasgowcc71f3a2010-03-12 14:30:21 -05009build=1
David Jamese3d542a2010-09-24 16:21:19 -070010if [ x$1 == x-n ]
11then
12 # eat the gmerge -n option to avoid passing it to emerge
13 build=0
14 shift
15fi
jglasgowcc71f3a2010-03-12 14:30:21 -050016
Chris Sosa605fe882010-04-22 17:01:32 -070017# Package name is the last argument.
18package_name=${!#}
19
David Jamese3d542a2010-09-24 16:21:19 -070020# If no package name is provided skip to emerge options.
21if [[ $package_name == -* ]]
Chris Sosa605fe882010-04-22 17:01:32 -070022then
jglasgowcc71f3a2010-03-12 14:30:21 -050023 build=0
24fi
25
26DEVKIT_URL=$(grep ^CHROMEOS_DEVSERVER /etc/lsb-release | cut -d = -f 2-)
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -080027BOARD_NAME=$(grep ^CHROMEOS_RELEASE_BOARD $dir/etc/lsb-release | cut -d = -f 2-)
28
29if [ -z $DEVKIT_URL ]
30then
31 echo "No devkit server specified in /etc/lsb-release"
32 exit 1
33fi
34
35if [ -z $BOARD_NAME ]
36then
37 echo "No board specified in /etc/lsb-release"
38 exit 1
39fi
40
41mount -o remount,rw /
jglasgowcc71f3a2010-03-12 14:30:21 -050042mkdir -p /etc/make.profile
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -080043
Frank Swiderskidc130812010-10-08 15:42:28 -070044# Re-mount /tmp as exec
45mount -o remount,exec /tmp
46
Mandeep Singh Bainesea6b7a52010-08-17 14:03:57 -070047# Delete the local binary package cache.
48sudo rm -rf /usr/portage/packages
49
jglasgowcc71f3a2010-03-12 14:30:21 -050050if [ $build == 1 ] ; then
Chris Sosa605fe882010-04-22 17:01:32 -070051 echo "Building $package_name"
52 ESCAPED_PACKAGE=$(python -c \
53 "import urllib; print urllib.quote('''$package_name''')")
jglasgowcc71f3a2010-03-12 14:30:21 -050054 ESCAPED_BOARD=$(python -c \
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -080055 "import urllib; print urllib.quote('''${BOARD_NAME}''')")
56
Chris Sosa605fe882010-04-22 17:01:32 -070057 wget $DEVKIT_URL/build \
58 --post-data="pkg=${ESCAPED_PACKAGE}&board=${ESCAPED_BOARD}"
jglasgowcc71f3a2010-03-12 14:30:21 -050059fi
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -080060
Chris Sosa605fe882010-04-22 17:01:32 -070061# Installing emerge into /usr/local installs make.globals needed in
62# /usr/local/etc rather than /etc.
63if [ ! -f /etc/make.globals ]
64then
65 if [ -f /usr/local/etc/make.globals ]
66 then
67 echo "Missing /etc/make.globals, copying over from /usr/local/etc"
68 sudo cp /usr/local/etc/make.globals /etc
69 else
70 echo "Missing /etc/make.globals and none in /usr/local/etc. Aborting."
71 exit 1
72 fi
73fi
74
75echo "Emerging $package_name"
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -080076
77export PORTAGE_BINHOST="${DEVKIT_URL}/static/pkgroot/${BOARD_NAME}/packages"
78export PORTAGE_TMPDIR=/tmp
Chris Sosa87510aa2010-06-28 16:10:00 -070079
80# Accept keywords only for stable ebuilds by default.
81if [ -z "$ACCEPT_KEYWORDS" ] ; then
Mandeep Singh Bainesea6b7a52010-08-17 14:03:57 -070082 ACCEPT_KEYWORDS='arm x86 ~arm ~x86'
Chris Sosa87510aa2010-06-28 16:10:00 -070083fi
84export ACCEPT_KEYWORDS
Ryan Cairnsdd1ceb82010-03-02 21:35:01 -080085
Mandeep Singh Baines44714d32010-08-26 16:08:54 -070086# Disable CONFIG_PROTECT.
87export CONFIG_PROTECT="-*"
88
David Jamese3d542a2010-09-24 16:21:19 -070089FEATURES="-sandbox" emerge --getbinpkgonly --usepkgonly "$@"
Frank Swiderskidc130812010-10-08 15:42:28 -070090
91# Re-mount /tmp as noexec
92mount -o remount,noexec /tmp