Instead of gating only on --usepkg depend on both flags as a pair. This
keeps setup_board's behavior a little closer to build_packages. The
buildbot is using --nogetbinpkg to avoid pulling in existing packages
built by the SDK but setup_board is causing some to be pulled in anyway.
This makes it possible to toggle parallel_emerge just as other scripts
do. In other scripts update the help string to be more specific, the
--jobs option can be used to control parallelism.
A new board build root always starts with an empty package cache so if
binary packages are enabled downloading is required. The distinction can
be useful for passing to update_chroot since its cache isn't impacted so
the flag remains, just among the less used hidden ones.
The new toolchain utils define chost, portage profiles, and portage arch
per board. Replace the tricker logic from the old platform/dev repo and
switch to setting the profile with the standard eselect tool.
A few cleanups here and there, replacing echo with info and renames.
This was some scheme for building packages using the SDK profile instead
of the normal target board profiles. We use catalyst instead so remove
this dead code. Ordering cleaned up slightly as well.
We need to install baselayout with the build use flag as the very first
package in the new board sysroot to ensure the system's directory
structure is created correctly. This should resolve surprise failures
with the bootengine ebuild.
We've moved all of the chroot configs from /etc to /etc/portage but
setup_board was still symlinking to /etc. Fix the path so no one gets
mixed up by the two copies of the same file. Remove unused script that
also used to write to old location.
Already did this for catalyst builds but might as well do it for all.
With this competing builds on the same host should be a little
friendlier to each other.
This file mostly just defined BINHOSTs but I'd like to move that
completely into coreos-overlay as the SDK BINHOSTs have always been. It
also sourced src/overlays/overlay-amd64-generic/make.conf but I want to
move the few things it defined into coreos-overlay as well.
The one interesting thing this file did was to optionally define
ACCEPT_LICENSE but that can go into /etc/make.conf.board_setup instead.
Overall this takes a chunk out of the make.conf spaghetti. :)
As-is all of the various emerge wrapping scripts default to using
--getbinpkg whenever --usepkg is enabled. This means every single emerge
command made makes multiple synchronous HTTP requests to the upstream
binary package repository to get the latest package list. This gets
really frustrating when working remotely with limited network
connectivity. Using --usepkg with --nogetbinpkg will use locally cached
packages without making remote requests.
We currently rely on the fact some package happens to install into
/usr/local/bin and creates the dir for us. If that doesn't happen,
then we fail when generating local wrappers. So run mkdir first to
make sure everything is sane.
BUG=chromium-os:31039
TEST=`cbuildbot chromiumos-sdk` works
Change-Id: I42f9122e1a8aa7aa19a7efb17deaa6dd28e58582
Reviewed-on: https://gerrit.chromium.org/gerrit/41929
Reviewed-by: David James <davidjames@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Setting the flag will cause make.conf to set the ACCEPT_LICENSE
environment variable.
BUG=chromium-os:37312
TEST=remote trybots
Change-Id: Id478b7cfb8c37d363da46b1d74f33143e8ea159f
Reviewed-on: https://gerrit.chromium.org/gerrit/39801
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
https://gerrit.chromium.org/gerrit/#/c/38156 introduced a bug where
cross_get_version was moved to install_toolchain but was still
used in setup_board.
setup_board now saves whatever toolchain version is currently configured
and appends that information to the newly generated board config.
BUG=chromium-os:36865
TEST=remote trybot. manual - test case of existence/nonexistence of
board config file and existence/nonexistence of previous toolchain info.
Change-Id: I20e1794c12e7e60fdbbcd5a123ddc5c6bdf86b16
Reviewed-on: https://gerrit.chromium.org/gerrit/39132
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Ryan Cui <rcui@chromium.org>
Tested-by: Ryan Cui <rcui@chromium.org>
The current logic has a few libdirs hardcoded (lib & lib64). This fails
if the libdir is named something else (like libx32). Tweak the pkg-config
logic so it returns all pkg-config dirs found in the target. This won't
work if the target is multilib, but we don't have any plans to do that.
BUG=chromium-os:36866
TEST=`cbuildbot {amd64,arm,x86}-generic-full` worked
Change-Id: I1d856c86d279691e85e5794f429bd3da2eb28675
Reviewed-on: https://gerrit.chromium.org/gerrit/39050
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Move cross toolchain library install code out of setup_board to a
separate script, and have setup_board use it.
The install_toolchain script will be used by the builders to set up
a separate sysroot (distinct from the /build/<board> root), as part of
the Simplified Chrome Workflow (goto/simple-chrome).
BUG=chromium-os:36299
TEST=locally, trybots.
Change-Id: I88c355f1798da71ead9370a82365304dbf311504
Reviewed-on: https://gerrit.chromium.org/gerrit/38156
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Ryan Cui <rcui@chromium.org>
Tested-by: Ryan Cui <rcui@chromium.org>
When we stopped installing binutils into package.provided, we stopped
needing to check its version at all. While CL:30287 updated the file,
it left the latter in place. Scrub it now.
BUG=chromium-os:21330
TEST=`./setup_board --board=x86-generic` setup gcc/glibc in package.provided and worked
Change-Id: I5c5d7175f17fd2d4ad5231ed3f9f5ddee592aa63
Reviewed-on: https://gerrit.chromium.org/gerrit/37517
Reviewed-by: asharif <asharif@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
No need to setup these hooks in their own set of sudo commands,
so merge with the existing block to avoid another sudo.
Also install all hooks that are available in case we want to add
more in the future (we probably do).
BUG=None
TEST=`./setup_board --board=daisy --skip_chroot_upgrade --regen_configs` created install hooks
Change-Id: Idcd64afc32c81fcc2b4a712992c5ee0edf5ae0d4
Reviewed-on: https://gerrit.chromium.org/gerrit/36474
Reviewed-by: Brian Harring <ferringb@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
This CL adjusts all scripts to use cros_list_overlays from chromite
instead of cros_overlay_list.
BUG=chromium-os:35514
TEST=Trybot runs with all callers adjusted to use
cros_list_overlays instead of cros_overlay_list.
CQ-DEPEND=CL:36191
Change-Id: I6b147a64744015f6b199b2a00493e6f1e030376b
Reviewed-on: https://gerrit.chromium.org/gerrit/36167
Tested-by: David James <davidjames@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: David James <davidjames@chromium.org>
Now that all the wrapper logic is one function, we can merge some of the
sub-pieces (chown/chmod/messages) into single calls.
BUG=chromium-os:34519
TEST=`./setup_board --board=lumpy` output looked ok
Change-Id: If959b48877adfaaca121370495e15cf912deea37
Reviewed-on: https://gerrit.chromium.org/gerrit/33526
Reviewed-by: Brian Harring <ferringb@chromium.org>
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
This lets people run setup_board w/out re-installing the toolchain,
but otherwise setting up all the config files. This is useful when
people want to make overlay changes that don't affect the settings
but do affect file layout (like when moving from private to public
overlays).
BUG=chromium-os:34519
TEST=`cbuildbot {x86,amd64,arm}-generic-full chromiumos-sdk` worked
Change-Id: I6202073a74700379fe2b705d1ff3d6148b9723ec
Reviewed-on: https://gerrit.chromium.org/gerrit/33487
Reviewed-by: Brian Harring <ferringb@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
This gives a side speed up and a slight clean up.
While we're here, merge a few commands (like mkdirs).
BUG=chromium-os:34519
TEST=`./setup_board --board=lumpy` output looked ok
TEST=`cbuildbot {x86,amd64,arm}-generic-full chromiumos-sdk` worked
Change-Id: I8d03448e2df549e76d320cc23ab9d36242c3b118
Reviewed-on: https://gerrit.chromium.org/gerrit/33486
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Makes the code flow easier to follow, and makes it easier to skip
wrapper generation if we so desire.
BUG=chromium-os:34519
TEST=`./setup_board --board=lumpy` output looked ok
TEST=`cbuildbot {x86,amd64,arm}-generic-full chromiumos-sdk` worked
Change-Id: Ie7a1d387fb21a495c6a2da2c9147587743240929
Reviewed-on: https://gerrit.chromium.org/gerrit/33485
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
We don't have anything pulling this into the target, so there is no reason
to list it in package.provided. Further, this messes us up when we we do
want to install it into the target image (for debugging/etc...).
BUG=chromium-os:21330
TEST=`build_packages+build_image` for x86-alex did not install binutils
TEST=`cbuildbot {amd64,arm,x86}-generic-full` did not install binutils
TEST=`emerge-x86-alex binutils` worked
Change-Id: Ie43124a5e763e416508155ab6465a272e639905a
Reviewed-on: https://gerrit.chromium.org/gerrit/30287
Reviewed-by: asharif <asharif@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Rather than forcing all consumers of DEFAULT_BOARD to remember to call
get_default_board, just do it for them automatically.
BUG=None
TEST=`cbuildbot {arm,amd64,x86}-generic-full` works
TEST=`./build_packages --help` shows correct default
Change-Id: I8d6ccb83babb2764a50692318eb9193c45fb3b39
Reviewed-on: https://gerrit.chromium.org/gerrit/17868
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Make the following commands send stats to chromiumos-build-stats.appspot.com:
build_image
run_chroot_version_hooks
make_chroot
setup_board
update_chroot
BUG=chromium-os:33088
TEST=`cbuildbot --remote -p chromiumos/platform/crosutils alex-paladin`
confirm in the log that uploads succeded, and see them show up in queries
at chromiumos-build-stats.appspot.com.
Change-Id: I0280f91a3e7e0a0483c01c87072bc589003dbe95
Reviewed-on: https://gerrit.chromium.org/gerrit/28969
Tested-by: Matt Tennant <mtennant@chromium.org>
Reviewed-by: David James <davidjames@chromium.org>
Commit-Ready: Matt Tennant <mtennant@chromium.org>
We don't care about non-sdk targets when setting up the host boards,
so only load those for processing.
BUG=None
TEST=`cbuildbot chromiumos-sdk` passed
Change-Id: Ifa0f82a8c9704862a714fd9f35cbd11d809e295f
Reviewed-on: https://gerrit.chromium.org/gerrit/25626
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
If the board we're building includes extra toolchains that aren't part
of our official set, we need to make sure cros_setup_toolchains still
tries to set them up for us.
BUG=None
TEST=`cbuildbot chromiumos-sdk` works
TEST=`./setup_board --board=x32-generic` installs an extra toolchain
Change-Id: I85f70177f82bdf295eb2cd8668a031317a3b6e61
Reviewed-on: https://gerrit.chromium.org/gerrit/24336
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
We want to centralize toolchain.conf parsing in cros_setup_toolchains.
BUG=None
TEST=`cbuildbot chromiumos-sdk` worked
Change-Id: I650616725595388515c8b1acbf7479b9ddcdd44e
Reviewed-on: https://gerrit.chromium.org/gerrit/24334
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Rather than having a toolchain package we use for the cross-compilers and
installing a different one for the target build dir, use the same package.
This makes updating more logical as we only have to do it in one place.
BUG=chromium-os:24928
TEST=`cbuildbot amd64-generic-full` works
TEST=`cbuildbot arm-generic-full` works
TEST=`cbuildbot x86-generic-full` works
TEST=build_packages+build_image for x86-alex boots & works
Change-Id: Ib083c3d2eae75d6f5437203990599cdc837dd9dc
Reviewed-on: https://gerrit.chromium.org/gerrit/24722
Reviewed-by: Anush Elangovan <anush@google.com>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
With the migration to cros_setup_toolchains, we no longer pass down the
versions of binutils/gcc/etc..., so drop the explicit flags.
BUG=chromium-os:23032
TEST=`cbuildbot x86-generic-full` works
Change-Id: I87dbb449e3c413c44cd008fc43d3258a2111227b
Reviewed-on: https://gerrit.chromium.org/gerrit/24056
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Running these as root does not make sense. Furthermore, it will fail
on calling cros-workon, which sometimes fails but most certainly will
not give correct information anyway.
BUG=chromium-os:30384
TEST=run build_packages/setup_board with/without sudo
Change-Id: I0cba72334369e35ba0e864c53fd81037ee9e0efa
Reviewed-on: https://gerrit.chromium.org/gerrit/23003
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Zdenek Behan <zbehan@chromium.org>
Tested-by: Zdenek Behan <zbehan@chromium.org>
Resubmit of If62b4f3973f02fd8e1deed35864c824a02ab0c22
This will be safe to land after
I2c4e21ec7e8c0c0cf58947e2b0a3a9edf7617a09
The breakage was a timing issue paired with people not always syncing
the complete tree. No changes to the CL are needed.
It is now used for:
- make_chroot (cros_sdk --bootstrap)
- update_chroot
setup_board is stripped of redundant code which was deprecated by this.
Also stripped is some usepkg logic in make_chroot, as that is now
exclusively source-only.
BUG=chromium-os:23032
TEST=trybot chromiumos-sdk
Change-Id: Ib888cf2886218622d9cfeebb17b9cd4462d06c89
Reviewed-on: https://gerrit.chromium.org/gerrit/22578
Tested-by: Zdenek Behan <zbehan@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: asharif <asharif@chromium.org>
Commit-Ready: Zdenek Behan <zbehan@chromium.org>
Currently, if set -e spots a nonzero exit we basically have
no real debug information- it just stops immediately without stating
where or why. This forces our scripts to be stupidly verbose so
we can track roughly where they were, thus when they fail we can
use that information to localize the rough exit point.
Instead we should be traping that set -e induced exit and
outputing necessary debug information to run it down. This includes
outputing the relevant stack trace, or at least what we can get of
it.
The 'die' function is now enhanced to automatically dump the trace
that lead to it. For most consumers this is desired- however for
commandline parsing induced dies ("--board is missing" for example),
the trace is noise. For those cases, a 'die_notrace' function was
added that retains the original non-backtrace behaviour.
Example output via instrumenting cros_generate_breakpad_symbols
w/ the failing command '/bin/false' (nonzero exit code).
Before:
./cros_generate_breakpad_symbols monkeys --board=x86-alex
<no output at all, just exit code 1>
With this CL:
./cros_generate_breakpad_symbols monkeys --board=x86-alex
ERROR : script called: ./cros_generate_breakpad_symbols 'monkeys' '--board=x86-alex'
ERROR : Backtrace: (most recent call is last)
ERROR : file cros_generate_breakpad_symbols, line 207, called: main 'monkeys' '--board=x86-alex'
ERROR : file cros_generate_breakpad_symbols, line 163, called: die_err_trap '/bin/false' '1'
ERROR :
ERROR : Command failed:
ERROR : Command '/bin/false' exited with nonzero code: 1
BUG=chromium-os:30598
TEST=inject a failing command into a script, verify the output.
TEST=inject a 'command not found', verify the output
TEST=cbuildbot x86-generic-full --remote
TEST=cbuildbot arm-tegra2-full --remote
TEST=cbuildbot chromiumos-sdk --remote
Change-Id: I517ffde4d1bb7e2310a74f5a6455b53ba2dea86c
Reviewed-on: https://gerrit.chromium.org/gerrit/17225
Reviewed-by: Brian Harring <ferringb@chromium.org>
Tested-by: Brian Harring <ferringb@chromium.org>
Commit-Ready: Brian Harring <ferringb@chromium.org>
Resubmit of If62b4f3973f02fd8e1deed35864c824a02ab0c22
This will be safe to land after I2c4e21ec7e8c0c0cf58947e2b0a3a9edf7617a09
It is now used for:
- make_chroot (cros_sdk --bootstrap)
- update_chroot
setup_board is stripped of redundant code which was deprecated by this.
Also stripped is some usepkg logic in make_chroot, as that is now
exclusively source-only.
BUG=chromium-os:23032
TEST=trybot chromiumos-sdk
Change-Id: Ic908eac712ac097e5c2062d3be70177e172aa924
Reviewed-on: https://gerrit.chromium.org/gerrit/20191
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Zdenek Behan <zbehan@chromium.org>
Tested-by: Zdenek Behan <zbehan@chromium.org>
It is now used for:
- make_chroot (cros_sdk --bootstrap)
- update_chroot
setup_board is stripped of redundant code which was deprecated by this.
Also stripped is some usepkg logic in make_chroot, as that is now
exclusively source-only.
BUG=chromium-os:23032
TEST=trybot chromiumos-sdk
Change-Id: If62b4f3973f02fd8e1deed35864c824a02ab0c22
Reviewed-on: https://gerrit.chromium.org/gerrit/17910
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Tested-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Zdenek Behan <zbehan@chromium.org>
Now that the flags variable can be "[stable]", if we don't quote its
expansion, it can match files like "t" resulting in bad flags being
passed to crossdev.
BUG=None
TEST=`touch t; ./setup_board --board=x86-alex` no longer results in "tgcc"
Change-Id: I866e934776e2d47a2c99bd08964017014aace97f
Reviewed-on: https://gerrit.chromium.org/gerrit/19595
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
The update to support multiple toolchains missed one place -- selection
of gold as the linker. It would always handle just the default toolchain.
Fix up the logic so it always checks the current toolchain.
BUG=chromium-os:28548
TEST=`./setup_board --board=x86-alex` selected gold for x86_64 and i686 toolchains
Change-Id: I3c09e3a4fd91b68170fe255e37580a3c9f5f6feb
Reviewed-on: https://gerrit.chromium.org/gerrit/19226
Reviewed-by: Zdenek Behan <zbehan@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>