-
Notifications
You must be signed in to change notification settings - Fork 50
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1509 from flatcar/t-lo/flatcar-3760-backport-buil…
…d-dev-packages flatcar 3760 backport build dev packages
- Loading branch information
Showing
3 changed files
with
104 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2023 by the Flatcar Maintainers. | ||
# Use of this source code is governed by the Apache 2.0 license. | ||
|
||
. "$(dirname "$0")/common.sh" || exit 1 | ||
|
||
# Script must run inside the chroot | ||
assert_inside_chroot | ||
assert_not_root_user | ||
|
||
# Dependencies and packages to include by default. | ||
packages_default=( "coreos-devel/board-packages" ) | ||
|
||
# Packages that are rdeps of the above but should not be included. | ||
# (mostly large packages, e.g. programming languages etc.) | ||
skip_packages_default="dev-lang/rust,virtual/rust,dev-lang/go,dev-lang/go-bootstrap,dev-go/go-md2man" | ||
|
||
|
||
# Developer-visible flags. | ||
DEFINE_string board "${DEFAULT_BOARD}" \ | ||
"The board to build packages for." | ||
DEFINE_string skip_packages "${skip_packages_default[@]}" \ | ||
"Comma-separated list of packages in the dependency tree to skip." | ||
DEFINE_boolean pretend "${FLAGS_FALSE}" \ | ||
"List packages that would be built but do not actually build." | ||
|
||
FLAGS_HELP="usage: $(basename $0) [flags] [packages] | ||
build_dev_binpkgs builds binary packages for all dependencies of [packages] | ||
that are not present in '/build/<board>/var/lib/portage/pkgs/'. | ||
Useful for publishing a complete set of packages to a binhost. | ||
[packages] defaults to '${packages_default}' if not specified. | ||
" | ||
|
||
# Parse command line | ||
FLAGS "$@" || exit 1 | ||
eval set -- "${FLAGS_ARGV}" | ||
|
||
# Die on any errors. | ||
switch_to_strict_mode | ||
|
||
if [[ $# -eq 0 ]]; then | ||
set -- "${packages_default[@]}" | ||
fi | ||
# -- | ||
|
||
function my_board_emerge() { | ||
PORTAGE_CONFIGROOT="/build/${FLAGS_board}" SYSROOT="${SYSROOT:-/build/${FLAGS_board}}" ROOT="/build/${FLAGS_board}" sudo -E emerge --root-deps=rdeps "${@}" | ||
} | ||
# -- | ||
|
||
pkg_build_list="$(mktemp)" | ||
pkg_skipped_list="${pkg_build_list}-skip" | ||
trap 'rm -f "${pkg_build_list}" "${pkg_skipped_list}"' EXIT | ||
|
||
info "Collecting list of binpkgs to build" | ||
|
||
my_board_emerge --pretend --root-deps=rdeps --emptytree ${@} \ | ||
| grep '\[ebuild' \ | ||
| sed 's/^\[[^]]\+\] \([^ :]\+\)*:.*/\1/' \ | ||
| while read pkg; do | ||
if [ -f "/build/${FLAGS_board}/var/lib/portage/pkgs/${pkg}.tbz2" ] ; then | ||
continue | ||
fi | ||
skip="" | ||
for s in ${FLAGS_skip_packages//,/ }; do | ||
if [[ ${pkg} = ${s}-* ]] ; then | ||
echo -n "${pkg} " >> "${pkg_skipped_list}" | ||
skip="true" | ||
break | ||
fi | ||
done | ||
[[ -z ${skip} ]] || continue | ||
echo "=${pkg}" | tee -a "${pkg_build_list}" | sed 's/^/ /' | ||
done | ||
# -- | ||
|
||
if [ -f "${pkg_skipped_list}" ] ; then | ||
info "Skipping binpkgs '$(cat "${pkg_skipped_list}")' because these are in the skip list." | ||
fi | ||
|
||
pretend="" | ||
if [[ "${FLAGS_pretend}" -eq "${FLAGS_TRUE}" ]]; then | ||
pretend="--pretend" | ||
fi | ||
|
||
my_board_emerge --buildpkg ${pretend} $(cat "${pkg_build_list}") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters