From 06edb2afd7a7fe14f0102a62116fd5250e428201 Mon Sep 17 00:00:00 2001 From: Brandon Philips Date: Tue, 19 Mar 2013 19:04:02 -0700 Subject: [PATCH] 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. --- .../dev-install/dev-install-0.0.1-r418.ebuild | 94 ------------ .../dev-install/dev-install-0.0.1-r459.ebuild | 138 ++++++++++++++++++ .../dev-install/dev-install-9999.ebuild | 78 +++++++--- .../coreos-base/dev-install/files/filter.py | 11 +- 4 files changed, 207 insertions(+), 114 deletions(-) delete mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r418.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r459.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r418.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r418.ebuild deleted file mode 100644 index ca94189a99..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r418.ebuild +++ /dev/null @@ -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 -} - diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r459.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r459.ebuild new file mode 100644 index 0000000000..3ac5908131 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-0.0.1-r459.ebuild @@ -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 +} diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-9999.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-9999.ebuild index 992df10678..6cb1294072 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-9999.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/dev-install-9999.ebuild @@ -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 +} diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/files/filter.py b/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/files/filter.py index 9cff52b464..df3a20bdb1 100755 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/files/filter.py +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/dev-install/files/filter.py @@ -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()