# Copyright 2011 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This configuration file is intended to reside in the rootfs of pristine
# images. If the developer mode switch is enabled these settings will allow
# us to bootstrap emerge and allow to install packages in /usr/local. Rootfs
# will remain unmodified.

# Point everything to /usr/local.
ROOT=/usr/local

PORTDIR="${ROOT}/portage"

PKGDIR="${ROOT}/portage/packages"

DISTDIR="${ROOT}/portage/distfiles"

RPMDIR="${ROOT}/portage/rpm"

PORTAGE_TMPDIR="${ROOT}/tmp"

BUILD_PREFIX="${ROOT}/tmp/portage"

CONFIG_PROTECT="/usr/local/share/portage"

PORTAGE_WORKDIR_MODE="0700"

EMERGE_DEFAULT_OPTS="--getbinpkg --usepkgonly"

# use curl instead of wget since curl supports HTTPS with Subject Alternative
# Name (commondatastorage.googleapis.com for googleusercontent.com)
FETCHCOMMAND="/usr/bin/curl --connect-timeout 15 -# -o \${DISTDIR}/\${FILE} \${URI}"
RESUMECOMMAND="/usr/bin/curl --connect-timeout 15 -# -C - -o \${DISTDIR}/\${FILE}\${URI}"

IUSE_IMPLICIT="@IUSE_IMPLICIT@"
ARCH="@ARCH@"
ELIBC="@ELIBC@"
USERLAND="@USERLAND@"
KERNEL="@KERNEL@"
USE_EXPAND_IMPLICIT="@USE_EXPAND_IMPLICIT@"
ACCEPT_KEYWORDS="~${ARCH} ${ARCH}"
