fix(coreos-base/dev-install): bump to latest version

this fixes a problem where
/build/amd-64-generic/etc/portage/make.profile was getting created which
introduced a package.provided file causing build_image to fail.
This commit is contained in:
Brandon Philips 2013-03-19 19:04:02 -07:00
parent 3738617d13
commit 06edb2afd7
4 changed files with 207 additions and 114 deletions

View File

@ -1,94 +0,0 @@
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
# This ebuild file installs the developer installer package. It:
# + Copies dev_install.
# + Copies some config files for emerge: make.defaults and make.conf.
# + Generates a list of packages installed (in base images).
# dev_install downloads and bootstraps emerge in base images without
# modifying the root filesystem.
EAPI="4"
CROS_WORKON_COMMIT="9a6f64de2cda21ad3f173c13298a53dcb5525cc3"
CROS_WORKON_TREE="a0a8dc61fac2ae0179f836e42406c569c2e2ca84"
CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
CROS_WORKON_LOCALNAME="dev"
SRCDIR="${CROS_WORKON_SRCROOT}/src/platform/${CROS_WORKON_LOCALNAME}/dev-install"
inherit cros-workon
DESCRIPTION="Chromium OS Developer Packages installer"
HOMEPAGE="http://www.chromium.org/chromium-os"
LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 arm x86"
IUSE=""
DEPEND="app-arch/tar
sys-apps/coreutils
sys-apps/grep
sys-apps/portage
sys-apps/sed"
# TODO(arkaitzr): remove dependency on tar if it's gonna be removed from the
# base image. Also modify dev_install.
RDEPEND="app-arch/tar
net-misc/curl
sys-apps/coreutils"
S=${WORKDIR}
src_unpack() {
local pkg pkgs BOARD="${BOARD:-${SYSROOT##/build/}}"
pkgs=(
# Generate a list of packages that go into the base image. These
# packages will be assumed to be installed by emerge in the target.
coreos
# Get the list of the packages needed to bootstrap emerge.
portage
# Get the list of dev and test packages.
coreos-dev
coreos-test
)
einfo "Ignore warnings below related to LD_PRELOAD/libsandbox.so"
for pkg in ${pkgs[@]} ; do
emerge-${BOARD} \
--pretend --quiet --emptytree --ignore-default-opts \
--root-deps=rdeps ${pkg} | \
egrep -o ' [[:alnum:]-]+/[^[:space:]/]+\b' | \
tr -d ' ' > ${pkg}.packages &
done
wait
# No virtual packages in package.provided.
grep -v "virtual/" coreos.packages > package.provided
python "${FILESDIR}"/filter.py || die
# Add the board specific binhost repository.
sed -e "s|BOARD|${BOARD}|g" "${SRCDIR}/repository.conf" > repository.conf
# Add dhcp to the list of packages installed since its installation will not
# complete (can not add dhcp group since /etc is not writeable). Bootstrap it
# instead.
grep "net-misc/dhcp-" coreoos-dev.packages >> package.provided
grep "net-misc/dhcp-" coreos-dev.packages >> bootstrap.packages
}
src_install() {
cd "${SRCDIR}"
exeinto /usr/bin
doexe dev_install
insinto /etc/portage
doins "${S}"/{bootstrap.packages,repository.conf}
insinto /etc/portage/make.profile
doins "${S}"/package.{installable,provided} make.{conf,defaults}
insinto /etc/env.d
doins 99devinstall
}

View File

@ -0,0 +1,138 @@
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
# This ebuild file installs the developer installer package. It:
# + Copies dev_install.
# + Copies some config files for emerge: make.defaults and make.conf.
# + Generates a list of packages installed (in base images).
# dev_install downloads and bootstraps emerge in base images without
# modifying the root filesystem.
EAPI="4"
CROS_WORKON_COMMIT="597ca1198129fab4b870618c74ae4d51b6b85e4a"
CROS_WORKON_TREE="ae6f2543c17e05c66b249852d15090e66a96c45f"
CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
CROS_WORKON_LOCALNAME="dev"
CROS_WORKON_OUTOFTREE_BUILD="1"
inherit cros-workon cros-board multiprocessing
DESCRIPTION="Chromium OS Developer Packages installer"
HOMEPAGE="http://www.chromium.org/chromium-os"
LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 arm x86"
IUSE="cros-debug"
DEPEND="app-arch/tar
sys-apps/coreutils
sys-apps/grep
sys-apps/portage
sys-apps/sed"
# TODO(arkaitzr): remove dependency on tar if it's gonna be removed from the
# base image. Also modify dev_install.
RDEPEND="app-arch/tar
net-misc/curl
sys-apps/coreutils"
src_prepare() {
SRCDIR="${S}/dev-install"
mkdir -p "$(cros-workon_get_build_dir)"
}
src_compile() {
cd "$(cros-workon_get_build_dir)"
local useflags pkg pkgs BOARD=$(get_current_board_with_variant)
# We need to pass down cros-debug automatically because this is often
# times toggled at the ./build_packages level. This is a hack of sorts,
# but covers the most common case.
useflags="${USE}"
use cros-debug || useflags+=" -cros-debug"
pkgs=(
# Generate a list of packages that go into the base image. These
# packages will be assumed to be installed by emerge in the target.
coreos
# Get the list of the packages needed to bootstrap emerge.
portage
# Get the list of dev and test packages.
coreos-dev
coreos-test
)
einfo "Ignore warnings below related to LD_PRELOAD/libsandbox.so"
multijob_init
for pkg in ${pkgs[@]} ; do
# The ebuild env will modify certain variables in ways that we
# do not care for. For example, PORTDIR_OVERLAY is modified to
# only point to the current tree which screws up the search of
# the board-specific overlays.
(
multijob_child_init
env -i PATH="${PATH}" PORTAGE_USERNAME="${PORTAGE_USERNAME}" USE="${useflags}" \
emerge-${BOARD} \
--pretend --quiet --emptytree --ignore-default-opts \
--root-deps=rdeps ${pkg} | \
egrep -o ' [[:alnum:]-]+/[^[:space:]/]+\b' | \
tr -d ' ' | \
sort > ${pkg}.packages
_pipestatus=${PIPESTATUS[*]}
[[ ${_pipestatus// } -eq 0 ]] || die "\`emerge-${BOARD} ${pkg}\` failed"
) &
multijob_post_fork
done
multijob_finish
# No virtual packages in package.provided. We store packages for
# package.provided in file coreos-base.packages as package.provided is a
# directory.
grep -v "virtual/" coreos.packages > coreos-base.packages
python "${FILESDIR}"/filter.py || die
# Add the board specific binhost repository.
sed -e "s|BOARD|${BOARD}|g" "${SRCDIR}/repository.conf" > repository.conf
# Add dhcp to the list of packages installed since its installation will not
# complete (can not add dhcp group since /etc is not writeable). Bootstrap it
# instead.
grep "net-misc/dhcp-" coreos-dev.packages >> coreos-base.packages
grep "net-misc/dhcp-" coreos-dev.packages >> bootstrap.packages
}
src_install() {
local build_dir=$(cros-workon_get_build_dir)
cd "${SRCDIR}"
dobin dev_install
insinto /usr/share/${PN}/portage
doins "${build_dir}"/{bootstrap.packages,repository.conf}
insinto /usr/share/${PN}/portage/make.profile
doins "${build_dir}"/package.installable make.{conf,defaults}
insinto /usr/share/${PN}/portage/make.profile/package.provided
doins "${build_dir}"/coreos-base.packages
insinto /etc/env.d
doins 99devinstall
}
pkg_preinst() {
if [[ $(cros_target) == "target_image" ]]; then
# We don't want to install these files into the normal /build/
# dir because we need different settings at build time vs what
# we want at runtime in release images. Thus, install the files
# into /usr/share but symlink them into /etc for the images.
local f srcdir="/usr/share/${PN}"
pushd "${ED}/${srcdir}" >/dev/null
for f in $(find -type f -printf '%P '); do
dosym "${srcdir}/${f}" "/etc/${f}"
done
popd >/dev/null
fi
}

View File

@ -11,9 +11,9 @@
EAPI="4"
CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
CROS_WORKON_LOCALNAME="dev"
SRCDIR="${CROS_WORKON_SRCROOT}/src/platform/${CROS_WORKON_LOCALNAME}/dev-install"
CROS_WORKON_OUTOFTREE_BUILD="1"
inherit cros-workon
inherit cros-workon cros-board multiprocessing
DESCRIPTION="Chromium OS Developer Packages installer"
HOMEPAGE="http://www.chromium.org/chromium-os"
@ -21,7 +21,7 @@ HOMEPAGE="http://www.chromium.org/chromium-os"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~arm ~x86"
IUSE=""
IUSE="cros-debug"
DEPEND="app-arch/tar
sys-apps/coreutils
@ -34,10 +34,21 @@ RDEPEND="app-arch/tar
net-misc/curl
sys-apps/coreutils"
S=${WORKDIR}
src_prepare() {
SRCDIR="${S}/dev-install"
mkdir -p "$(cros-workon_get_build_dir)"
}
src_unpack() {
local pkg pkgs BOARD="${BOARD:-${SYSROOT##/build/}}"
src_compile() {
cd "$(cros-workon_get_build_dir)"
local useflags pkg pkgs BOARD=$(get_current_board_with_variant)
# We need to pass down cros-debug automatically because this is often
# times toggled at the ./build_packages level. This is a hack of sorts,
# but covers the most common case.
useflags="${USE}"
use cros-debug || useflags+=" -cros-debug"
pkgs=(
# Generate a list of packages that go into the base image. These
@ -52,16 +63,31 @@ src_unpack() {
coreos-test
)
einfo "Ignore warnings below related to LD_PRELOAD/libsandbox.so"
multijob_init
for pkg in ${pkgs[@]} ; do
# The ebuild env will modify certain variables in ways that we
# do not care for. For example, PORTDIR_OVERLAY is modified to
# only point to the current tree which screws up the search of
# the board-specific overlays.
(
multijob_child_init
env -i PATH="${PATH}" PORTAGE_USERNAME="${PORTAGE_USERNAME}" USE="${useflags}" \
emerge-${BOARD} \
--pretend --quiet --emptytree --ignore-default-opts \
--root-deps=rdeps ${pkg} | \
egrep -o ' [[:alnum:]-]+/[^[:space:]/]+\b' | \
tr -d ' ' > ${pkg}.packages &
tr -d ' ' | \
sort > ${pkg}.packages
_pipestatus=${PIPESTATUS[*]}
[[ ${_pipestatus// } -eq 0 ]] || die "\`emerge-${BOARD} ${pkg}\` failed"
) &
multijob_post_fork
done
wait
# No virtual packages in package.provided.
grep -v "virtual/" coreos.packages > package.provided
multijob_finish
# No virtual packages in package.provided. We store packages for
# package.provided in file chromeos-base.packages as package.provided is a
# directory.
grep -v "virtual/" coreos.packages > coreos-base.packages
python "${FILESDIR}"/filter.py || die
@ -71,22 +97,40 @@ src_unpack() {
# Add dhcp to the list of packages installed since its installation will not
# complete (can not add dhcp group since /etc is not writeable). Bootstrap it
# instead.
grep "net-misc/dhcp-" coreos-dev.packages >> package.provided
grep "net-misc/dhcp-" coreos-dev.packages >> coreos-base.packages
grep "net-misc/dhcp-" coreos-dev.packages >> bootstrap.packages
}
src_install() {
local build_dir=$(cros-workon_get_build_dir)
cd "${SRCDIR}"
exeinto /usr/bin
doexe dev_install
dobin dev_install
insinto /etc/portage
doins "${S}"/{bootstrap.packages,repository.conf}
insinto /usr/share/${PN}/portage
doins "${build_dir}"/{bootstrap.packages,repository.conf}
insinto /etc/portage/make.profile
doins "${S}"/package.{installable,provided} make.{conf,defaults}
insinto /usr/share/${PN}/portage/make.profile
doins "${build_dir}"/package.installable make.{conf,defaults}
insinto /usr/share/${PN}/portage/make.profile/package.provided
doins "${build_dir}"/coreos-base.packages
insinto /etc/env.d
doins 99devinstall
}
pkg_preinst() {
if [[ $(cros_target) == "target_image" ]]; then
# We don't want to install these files into the normal /build/
# dir because we need different settings at build time vs what
# we want at runtime in release images. Thus, install the files
# into /usr/share but symlink them into /etc for the images.
local f srcdir="/usr/share/${PN}"
pushd "${ED}/${srcdir}" >/dev/null
for f in $(find -type f -printf '%P '); do
dosym "${srcdir}/${f}" "/etc/${f}"
done
popd >/dev/null
fi
}

View File

@ -15,16 +15,21 @@ f.close()
# After bootstrapping the package will be assumed
# to be installed by emerge.
prov_pkgs = [x for x in boot_pkgs if not x.startswith('virtual/')]
f = open('package.provided', 'a')
f = open('coreos-base.packages', 'a')
f.write(''.join(prov_pkgs))
f.close()
# Make a list of the packages that can be installed. Those packages
# are in coreos-dev or coreos-test and not coreos.
dev_pkgs = set(open('coreos-dev.packages', 'r').readlines())
#test_pkgs = set(open('coreos-test.packages', 'r').readlines())
test_pkgs = set()
test_pkgs = set(open('coreos-test.packages', 'r').readlines())
inst_pkgs = (dev_pkgs | test_pkgs) - cros_pkgs
# We have to keep virtuals because portage will complain if we list
# them in package.provided, but it still needs to install a binpkg
# for the new style virtuals.
inst_pkgs = inst_pkgs | set([x for x in cros_pkgs if x.startswith('virtual/')])
f = open('package.installable', 'w')
f.write(''.join(inst_pkgs))
f.close()